react-public-components 1.2.8 → 1.2.9

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 (204) hide show
  1. package/README.md +181 -109
  2. package/dist/AnnouncementBar/index.cjs +3 -3
  3. package/dist/AnnouncementBar/index.js +2 -2
  4. package/dist/AudioPlayer/index.cjs +3 -3
  5. package/dist/AudioPlayer/index.js +2 -2
  6. package/dist/CeilingBox/index.cjs +2 -2
  7. package/dist/CeilingBox/index.js +1 -1
  8. package/dist/CodeSnippet/index.cjs +3 -3
  9. package/dist/CodeSnippet/index.js +2 -2
  10. package/dist/CollapseBox/index.cjs +3 -3
  11. package/dist/CollapseBox/index.js +2 -2
  12. package/dist/ColorPicker/index.cjs +5 -5
  13. package/dist/ColorPicker/index.js +2 -2
  14. package/dist/ContextMenu/index.cjs +3 -3
  15. package/dist/ContextMenu/index.js +2 -2
  16. package/dist/CopyButton/index.cjs +3 -3
  17. package/dist/CopyButton/index.js +2 -2
  18. package/dist/CronPicker/index.cjs +4 -4
  19. package/dist/CronPicker/index.js +3 -3
  20. package/dist/DebounceSelect/index.cjs +3 -3
  21. package/dist/DebounceSelect/index.js +2 -2
  22. package/dist/DisabledBox/index.cjs +3 -3
  23. package/dist/DisabledBox/index.js +2 -2
  24. package/dist/DragSortList/index.cjs +3 -3
  25. package/dist/DragSortList/index.js +2 -2
  26. package/dist/FilePreviewer/index.cjs +4 -4
  27. package/dist/FilePreviewer/index.js +2 -2
  28. package/dist/Fullscreen/index.cjs +3 -3
  29. package/dist/Fullscreen/index.js +2 -2
  30. package/dist/GuidedTour/index.cjs +3 -3
  31. package/dist/GuidedTour/index.js +2 -2
  32. package/dist/ImageCropper/index.cjs +3 -3
  33. package/dist/ImageCropper/index.js +2 -2
  34. package/dist/InfiniteScrollList/index.cjs +3 -3
  35. package/dist/InfiniteScrollList/index.js +2 -2
  36. package/dist/JsonEditor/index.cjs +4 -4
  37. package/dist/JsonEditor/index.js +3 -3
  38. package/dist/KeyValEditor/index.cjs +3 -3
  39. package/dist/KeyValEditor/index.js +2 -2
  40. package/dist/LazyLoadBox/index.cjs +3 -3
  41. package/dist/LazyLoadBox/index.js +1 -1
  42. package/dist/PasswordStrength/index.cjs +4 -4
  43. package/dist/PasswordStrength/index.js +2 -2
  44. package/dist/PdfViewer/index.cjs +3 -3
  45. package/dist/PdfViewer/index.js +2 -2
  46. package/dist/PeriodSelect/index.cjs +4 -4
  47. package/dist/PeriodSelect/index.js +1 -1
  48. package/dist/QrCodeCard/index.cjs +3 -3
  49. package/dist/QrCodeCard/index.js +2 -2
  50. package/dist/SensitiveMask/index.cjs +5 -5
  51. package/dist/SensitiveMask/index.js +3 -3
  52. package/dist/Splitter/index.cjs +3 -3
  53. package/dist/Splitter/index.js +2 -2
  54. package/dist/TagInput/index.cjs +3 -3
  55. package/dist/TagInput/index.js +2 -2
  56. package/dist/TextEllipsis/index.cjs +4 -4
  57. package/dist/TextEllipsis/index.js +3 -3
  58. package/dist/TreeTransfer/index.cjs +3 -3
  59. package/dist/TreeTransfer/index.js +2 -2
  60. package/dist/VideoPlayer/index.cjs +3 -3
  61. package/dist/VideoPlayer/index.js +2 -2
  62. package/dist/{chunk-56VELHCH.js → chunk-2SEHUMQH.js} +3 -3
  63. package/dist/{chunk-56VELHCH.js.map → chunk-2SEHUMQH.js.map} +1 -1
  64. package/dist/{chunk-2INP6NM4.js → chunk-3WLGM74R.js} +3 -3
  65. package/dist/{chunk-2INP6NM4.js.map → chunk-3WLGM74R.js.map} +1 -1
  66. package/dist/{chunk-2IDVNTKR.js → chunk-537T6BR3.js} +32 -8
  67. package/dist/chunk-537T6BR3.js.map +1 -0
  68. package/dist/{chunk-XUAHWX6B.js → chunk-5QEXX32M.js} +3 -3
  69. package/dist/{chunk-XUAHWX6B.js.map → chunk-5QEXX32M.js.map} +1 -1
  70. package/dist/{chunk-ETFLLRTO.js → chunk-5XTIASJH.js} +3 -3
  71. package/dist/{chunk-ETFLLRTO.js.map → chunk-5XTIASJH.js.map} +1 -1
  72. package/dist/{chunk-TNZ2OLGW.cjs → chunk-6KODABJW.cjs} +4 -4
  73. package/dist/{chunk-TNZ2OLGW.cjs.map → chunk-6KODABJW.cjs.map} +1 -1
  74. package/dist/{chunk-ZWKUHYTV.cjs → chunk-6WCWYSFU.cjs} +6 -6
  75. package/dist/{chunk-ZWKUHYTV.cjs.map → chunk-6WCWYSFU.cjs.map} +1 -1
  76. package/dist/{chunk-Y54KVULF.js → chunk-7FGE7NRH.js} +11 -4
  77. package/dist/chunk-7FGE7NRH.js.map +1 -0
  78. package/dist/{chunk-VJOO2DG3.cjs → chunk-7NXCDDBT.cjs} +8 -8
  79. package/dist/{chunk-VJOO2DG3.cjs.map → chunk-7NXCDDBT.cjs.map} +1 -1
  80. package/dist/{chunk-VYPIRVL4.js → chunk-7W7PCWMM.js} +2 -2
  81. package/dist/chunk-7W7PCWMM.js.map +1 -0
  82. package/dist/{chunk-TUEVILTA.cjs → chunk-BKHKPZ6O.cjs} +5 -5
  83. package/dist/{chunk-TUEVILTA.cjs.map → chunk-BKHKPZ6O.cjs.map} +1 -1
  84. package/dist/{chunk-AXPVN2OO.js → chunk-BXLUH6FE.js} +3 -3
  85. package/dist/{chunk-AXPVN2OO.js.map → chunk-BXLUH6FE.js.map} +1 -1
  86. package/dist/{chunk-PYCSRJSF.cjs → chunk-CWG7A5DS.cjs} +7 -7
  87. package/dist/{chunk-PYCSRJSF.cjs.map → chunk-CWG7A5DS.cjs.map} +1 -1
  88. package/dist/{chunk-YP4XTMK3.cjs → chunk-DTJEY3BC.cjs} +4 -4
  89. package/dist/{chunk-YP4XTMK3.cjs.map → chunk-DTJEY3BC.cjs.map} +1 -1
  90. package/dist/{chunk-2EIAWXFA.cjs → chunk-DWG4FUDX.cjs} +5 -5
  91. package/dist/{chunk-2EIAWXFA.cjs.map → chunk-DWG4FUDX.cjs.map} +1 -1
  92. package/dist/{chunk-IF4XAUV3.js → chunk-E6EJLQL7.js} +3 -3
  93. package/dist/{chunk-IF4XAUV3.js.map → chunk-E6EJLQL7.js.map} +1 -1
  94. package/dist/{chunk-RFTYEXKU.js → chunk-EMQHYD3G.js} +6 -14
  95. package/dist/chunk-EMQHYD3G.js.map +1 -0
  96. package/dist/{chunk-O4EABET3.js → chunk-ERPKXNWM.js} +10 -4
  97. package/dist/chunk-ERPKXNWM.js.map +1 -0
  98. package/dist/{chunk-QRZ2GVVJ.js → chunk-FJ33L5D7.js} +3 -3
  99. package/dist/{chunk-QRZ2GVVJ.js.map → chunk-FJ33L5D7.js.map} +1 -1
  100. package/dist/{chunk-4KMVABTM.js → chunk-FQHPCK3S.js} +4 -6
  101. package/dist/chunk-FQHPCK3S.js.map +1 -0
  102. package/dist/{chunk-OLLVIQPL.js → chunk-FT2XGH4D.js} +3 -3
  103. package/dist/{chunk-OLLVIQPL.js.map → chunk-FT2XGH4D.js.map} +1 -1
  104. package/dist/{chunk-EMT4NUI5.js → chunk-G76ELHWZ.js} +3 -3
  105. package/dist/{chunk-EMT4NUI5.js.map → chunk-G76ELHWZ.js.map} +1 -1
  106. package/dist/{chunk-QU33CY3M.cjs → chunk-IHUBENM6.cjs} +6 -14
  107. package/dist/chunk-IHUBENM6.cjs.map +1 -0
  108. package/dist/{chunk-M4FZJALR.js → chunk-J3C46E6G.js} +4 -4
  109. package/dist/{chunk-M4FZJALR.js.map → chunk-J3C46E6G.js.map} +1 -1
  110. package/dist/{chunk-UIU6VCEQ.cjs → chunk-JLW5ISIR.cjs} +6 -3
  111. package/dist/chunk-JLW5ISIR.cjs.map +1 -0
  112. package/dist/{chunk-UAUP5TJK.cjs → chunk-K4LVWWEE.cjs} +5 -5
  113. package/dist/{chunk-UAUP5TJK.cjs.map → chunk-K4LVWWEE.cjs.map} +1 -1
  114. package/dist/{chunk-P5CS7V4W.js → chunk-KJ537QZS.js} +3 -3
  115. package/dist/{chunk-P5CS7V4W.js.map → chunk-KJ537QZS.js.map} +1 -1
  116. package/dist/{chunk-U2EBNBGK.cjs → chunk-KSXCVQU3.cjs} +4 -4
  117. package/dist/{chunk-U2EBNBGK.cjs.map → chunk-KSXCVQU3.cjs.map} +1 -1
  118. package/dist/{chunk-LFGBZXQH.cjs → chunk-KWL5465Y.cjs} +4 -4
  119. package/dist/{chunk-LFGBZXQH.cjs.map → chunk-KWL5465Y.cjs.map} +1 -1
  120. package/dist/{chunk-TUDLE3RT.cjs → chunk-KYM35LPD.cjs} +13 -15
  121. package/dist/chunk-KYM35LPD.cjs.map +1 -0
  122. package/dist/{chunk-RN5WU7KA.cjs → chunk-L76JMQUH.cjs} +7 -7
  123. package/dist/{chunk-RN5WU7KA.cjs.map → chunk-L76JMQUH.cjs.map} +1 -1
  124. package/dist/{chunk-AHTRLNYK.cjs → chunk-LPDHDZTA.cjs} +5 -5
  125. package/dist/{chunk-AHTRLNYK.cjs.map → chunk-LPDHDZTA.cjs.map} +1 -1
  126. package/dist/{chunk-JHVPDKBM.cjs → chunk-LRUSUUPJ.cjs} +6 -6
  127. package/dist/{chunk-JHVPDKBM.cjs.map → chunk-LRUSUUPJ.cjs.map} +1 -1
  128. package/dist/{chunk-MQJBUHDB.js → chunk-MWVME3UR.js} +3 -3
  129. package/dist/{chunk-MQJBUHDB.js.map → chunk-MWVME3UR.js.map} +1 -1
  130. package/dist/{chunk-OONBZRPV.cjs → chunk-N4UF72SJ.cjs} +4 -4
  131. package/dist/{chunk-OONBZRPV.cjs.map → chunk-N4UF72SJ.cjs.map} +1 -1
  132. package/dist/{chunk-EKDJPOA3.cjs → chunk-NKLHMUGB.cjs} +5 -5
  133. package/dist/{chunk-EKDJPOA3.cjs.map → chunk-NKLHMUGB.cjs.map} +1 -1
  134. package/dist/{chunk-M3GQ7RCV.cjs → chunk-NZNNDZW4.cjs} +4 -4
  135. package/dist/{chunk-M3GQ7RCV.cjs.map → chunk-NZNNDZW4.cjs.map} +1 -1
  136. package/dist/{chunk-UZB7GOEI.cjs → chunk-OLIPC6HC.cjs} +4 -4
  137. package/dist/{chunk-UZB7GOEI.cjs.map → chunk-OLIPC6HC.cjs.map} +1 -1
  138. package/dist/{chunk-PTFKE67K.js → chunk-OOH3YSNC.js} +3 -3
  139. package/dist/{chunk-PTFKE67K.js.map → chunk-OOH3YSNC.js.map} +1 -1
  140. package/dist/{chunk-Q7OVUH5K.js → chunk-OXBOWSLR.js} +3 -3
  141. package/dist/{chunk-Q7OVUH5K.js.map → chunk-OXBOWSLR.js.map} +1 -1
  142. package/dist/{chunk-EDNBPLUS.js → chunk-P7P3UVGN.js} +3 -3
  143. package/dist/{chunk-EDNBPLUS.js.map → chunk-P7P3UVGN.js.map} +1 -1
  144. package/dist/{chunk-ANTFNDH4.js → chunk-Q2M3ZE7E.js} +3 -3
  145. package/dist/{chunk-ANTFNDH4.js.map → chunk-Q2M3ZE7E.js.map} +1 -1
  146. package/dist/{chunk-W5JA3YTT.js → chunk-Q3Z6OWKR.js} +3 -3
  147. package/dist/{chunk-W5JA3YTT.js.map → chunk-Q3Z6OWKR.js.map} +1 -1
  148. package/dist/{chunk-R4V3EJVP.cjs → chunk-QMLDK2DL.cjs} +32 -8
  149. package/dist/chunk-QMLDK2DL.cjs.map +1 -0
  150. package/dist/{chunk-PUMVD7CP.js → chunk-QVTQQB6M.js} +3 -3
  151. package/dist/{chunk-PUMVD7CP.js.map → chunk-QVTQQB6M.js.map} +1 -1
  152. package/dist/{chunk-ZCBT56AG.js → chunk-RBX6VEKI.js} +3 -3
  153. package/dist/{chunk-ZCBT56AG.js.map → chunk-RBX6VEKI.js.map} +1 -1
  154. package/dist/{chunk-4TMBGQQE.cjs → chunk-S35SIDXQ.cjs} +5 -5
  155. package/dist/{chunk-4TMBGQQE.cjs.map → chunk-S35SIDXQ.cjs.map} +1 -1
  156. package/dist/{chunk-CURWX7OY.js → chunk-SCVOSNWF.js} +3 -3
  157. package/dist/{chunk-CURWX7OY.js.map → chunk-SCVOSNWF.js.map} +1 -1
  158. package/dist/{chunk-ZXMFWVE4.cjs → chunk-SG7Z432O.cjs} +11 -5
  159. package/dist/chunk-SG7Z432O.cjs.map +1 -0
  160. package/dist/{chunk-FZH5FL7X.cjs → chunk-THZFDBJM.cjs} +12 -5
  161. package/dist/chunk-THZFDBJM.cjs.map +1 -0
  162. package/dist/{chunk-HKALWFWZ.cjs → chunk-TWL3QEFV.cjs} +5 -5
  163. package/dist/{chunk-HKALWFWZ.cjs.map → chunk-TWL3QEFV.cjs.map} +1 -1
  164. package/dist/{chunk-XLOGMDAQ.js → chunk-U4VZGKQV.js} +3 -3
  165. package/dist/{chunk-XLOGMDAQ.js.map → chunk-U4VZGKQV.js.map} +1 -1
  166. package/dist/{chunk-EJYTTSW6.js → chunk-VAU4USHW.js} +3 -3
  167. package/dist/{chunk-EJYTTSW6.js.map → chunk-VAU4USHW.js.map} +1 -1
  168. package/dist/{chunk-JNA5AQ2K.js → chunk-VY4XERM4.js} +3 -3
  169. package/dist/{chunk-JNA5AQ2K.js.map → chunk-VY4XERM4.js.map} +1 -1
  170. package/dist/{chunk-V55FEQYU.cjs → chunk-W52O3Y2I.cjs} +2 -2
  171. package/dist/chunk-W52O3Y2I.cjs.map +1 -0
  172. package/dist/{chunk-7ZBA4NHH.cjs → chunk-W7LZVHTA.cjs} +4 -4
  173. package/dist/{chunk-7ZBA4NHH.cjs.map → chunk-W7LZVHTA.cjs.map} +1 -1
  174. package/dist/{chunk-5Q7THN6M.js → chunk-WLAHW5RF.js} +6 -3
  175. package/dist/chunk-WLAHW5RF.js.map +1 -0
  176. package/dist/{chunk-IPS7PC3M.cjs → chunk-X5X4YABT.cjs} +13 -13
  177. package/dist/{chunk-IPS7PC3M.cjs.map → chunk-X5X4YABT.cjs.map} +1 -1
  178. package/dist/{chunk-WKF4C6TJ.js → chunk-XLPOXPOV.js} +3 -3
  179. package/dist/{chunk-WKF4C6TJ.js.map → chunk-XLPOXPOV.js.map} +1 -1
  180. package/dist/{chunk-QP3RKA4J.cjs → chunk-XM6J7F5X.cjs} +4 -4
  181. package/dist/{chunk-QP3RKA4J.cjs.map → chunk-XM6J7F5X.cjs.map} +1 -1
  182. package/dist/{chunk-ED3ZG2VX.cjs → chunk-ZR56U55S.cjs} +5 -5
  183. package/dist/{chunk-ED3ZG2VX.cjs.map → chunk-ZR56U55S.cjs.map} +1 -1
  184. package/dist/{chunk-77ANKL4K.cjs → chunk-ZRNAJCZI.cjs} +8 -8
  185. package/dist/{chunk-77ANKL4K.cjs.map → chunk-ZRNAJCZI.cjs.map} +1 -1
  186. package/dist/index.cjs +71 -71
  187. package/dist/index.js +31 -31
  188. package/dist/src/icons.d.ts +6 -6
  189. package/dist/src/index.d.ts +2 -2
  190. package/package.json +1 -1
  191. package/dist/chunk-2IDVNTKR.js.map +0 -1
  192. package/dist/chunk-4KMVABTM.js.map +0 -1
  193. package/dist/chunk-5Q7THN6M.js.map +0 -1
  194. package/dist/chunk-FZH5FL7X.cjs.map +0 -1
  195. package/dist/chunk-O4EABET3.js.map +0 -1
  196. package/dist/chunk-QU33CY3M.cjs.map +0 -1
  197. package/dist/chunk-R4V3EJVP.cjs.map +0 -1
  198. package/dist/chunk-RFTYEXKU.js.map +0 -1
  199. package/dist/chunk-TUDLE3RT.cjs.map +0 -1
  200. package/dist/chunk-UIU6VCEQ.cjs.map +0 -1
  201. package/dist/chunk-V55FEQYU.cjs.map +0 -1
  202. package/dist/chunk-VYPIRVL4.js.map +0 -1
  203. package/dist/chunk-Y54KVULF.js.map +0 -1
  204. package/dist/chunk-ZXMFWVE4.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../ContextMenu/index.tsx"],"names":["useState","useRef","useEffect","jsx","jsxs","RightOutlined","ReactDOM"],"mappings":"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","file":"chunk-U2EBNBGK.cjs","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport ReactDOM from 'react-dom';\nimport { RightOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface ContextMenuItem {\n\t/** 菜单项唯一标识 */\n\tkey: string;\n\t/** 菜单项展示文本或节点 */\n\tlabel?: ReactNode;\n\t/** 菜单项前置图标 */\n\ticon?: ReactNode;\n\t/** 是否为分割线 */\n\ttype?: 'divider';\n\t/** 是否禁用 */\n\tdisabled?: boolean;\n\t/** 是否为警示/危险操作(红色显示) */\n\tdanger?: boolean;\n\t/** 快捷键提示(如 '⌘ C' / 'Ctrl+C') */\n\tshortcut?: string;\n\t/** 二级子菜单项列表 */\n\tchildren?: ContextMenuItem[];\n\t/** 点击菜单项回调 */\n\tonClick?: (item: ContextMenuItem, e: React.MouseEvent) => void;\n}\n\nexport interface ContextMenuProps {\n\t/** 菜单项列表配置 */\n\titems: ContextMenuItem[];\n\t/** 被右键激活的目标子组件/容器 */\n\tchildren: ReactNode;\n\t/** 是否禁用右键上下文菜单 */\n\tdisabled?: boolean;\n\t/** 菜单显隐状态改变回调 */\n\tonOpenChange?: (open: boolean) => void;\n\t/** 自定义菜单类名 */\n\tmenuClassName?: string;\n\t/** 自定义菜单样式 */\n\tmenuStyle?: CSSProperties;\n\t/** 自定义外层包裹类名 */\n\tclassName?: string;\n\t/** 自定义外层包裹样式 */\n\tstyle?: CSSProperties;\n}\n\ninterface Position {\n\tx: number;\n\ty: number;\n}\n\nconst ContextMenu: React.FC<ContextMenuProps> = ({\n\titems,\n\tchildren,\n\tdisabled = false,\n\tonOpenChange,\n\tmenuClassName = '',\n\tmenuStyle,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [visible, setVisible] = useState<boolean>(false);\n\tconst [position, setPosition] = useState<Position>({ x: 0, y: 0 });\n\tconst menuRef = useRef<HTMLDivElement>(null);\n\n\tconst handleContextMenu = (e: React.MouseEvent) => {\n\t\tif (disabled) return;\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tconst mouseX = e.clientX;\n\t\tconst mouseY = e.clientY;\n\n\t\t// 初始设置位置\n\t\tsetPosition({ x: mouseX, y: mouseY });\n\t\tsetVisible(true);\n\t\tonOpenChange?.(true);\n\t};\n\n\t// 菜单渲染后自适应调整边界,防止溢出视口\n\tuseEffect(() => {\n\t\tif (!visible || !menuRef.current) return;\n\t\tconst menuEl = menuRef.current;\n\t\tconst rect = menuEl.getBoundingClientRect();\n\n\t\tlet adjustedX = position.x;\n\t\tlet adjustedY = position.y;\n\n\t\t// 水平防溢出\n\t\tif (position.x + rect.width > window.innerWidth) {\n\t\t\tadjustedX = window.innerWidth - rect.width - 8;\n\t\t}\n\n\t\t// 垂直防溢出\n\t\tif (position.y + rect.height > window.innerHeight) {\n\t\t\tadjustedY = window.innerHeight - rect.height - 8;\n\t\t}\n\n\t\tif (adjustedX !== position.x || adjustedY !== position.y) {\n\t\t\tsetPosition({ x: Math.max(8, adjustedX), y: Math.max(8, adjustedY) });\n\t\t}\n\t}, [visible]);\n\n\t// 点击外部、按 ESC、页面滚动时关闭菜单\n\tuseEffect(() => {\n\t\tif (!visible) return;\n\n\t\tconst handleClose = (e: MouseEvent | KeyboardEvent) => {\n\t\t\tif (e instanceof KeyboardEvent && e.key !== 'Escape') return;\n\t\t\tsetVisible(false);\n\t\t\tonOpenChange?.(false);\n\t\t};\n\n\t\tconst handleScroll = () => {\n\t\t\tsetVisible(false);\n\t\t\tonOpenChange?.(false);\n\t\t};\n\n\t\tdocument.addEventListener('mousedown', handleClose);\n\t\tdocument.addEventListener('keydown', handleClose);\n\t\twindow.addEventListener('scroll', handleScroll, true);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', handleClose);\n\t\t\tdocument.removeEventListener('keydown', handleClose);\n\t\t\twindow.removeEventListener('scroll', handleScroll, true);\n\t\t};\n\t}, [visible, onOpenChange]);\n\n\t// 渲染菜单项(递归支持二级子菜单)\n\tconst renderMenuItem = (item: ContextMenuItem) => {\n\t\tif (item.type === 'divider') {\n\t\t\treturn <div key={item.key} className=\"rpc_context_menu_divider\" />;\n\t\t}\n\n\t\tconst hasSub = item.children && item.children.length > 0;\n\n\t\tconst handleItemClick = (e: React.MouseEvent) => {\n\t\t\tif (item.disabled || hasSub) return;\n\t\t\te.stopPropagation();\n\t\t\titem.onClick?.(item, e);\n\t\t\tsetVisible(false);\n\t\t\tonOpenChange?.(false);\n\t\t};\n\n\t\tconst itemClassNames = [\n\t\t\t'rpc_context_menu_item',\n\t\t\titem.danger ? 'rpc_context_menu_item_danger' : '',\n\t\t\titem.disabled ? 'rpc_context_menu_item_disabled' : '',\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\treturn (\n\t\t\t<div key={item.key} className={itemClassNames} onClick={handleItemClick}>\n\t\t\t\t{item.icon && <span className=\"rpc_context_menu_item_icon\">{item.icon}</span>}\n\t\t\t\t<span className=\"rpc_context_menu_item_label\">{item.label}</span>\n\t\t\t\t{item.shortcut && <span className=\"rpc_context_menu_item_shortcut\">{item.shortcut}</span>}\n\t\t\t\t{hasSub && <RightOutlined className=\"rpc_context_menu_item_arrow\" />}\n\n\t\t\t\t{/* 二级子菜单 */}\n\t\t\t\t{hasSub && (\n\t\t\t\t\t<div className=\"rpc_context_menu_submenu\">\n\t\t\t\t\t\t{item.children!.map((sub) => renderMenuItem(sub))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t};\n\n\tconst menuContent =\n\t\tvisible && typeof document !== 'undefined'\n\t\t\t? ReactDOM.createPortal(\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={menuRef}\n\t\t\t\t\t\tclassName={`rpc_context_menu_panel ${menuClassName}`}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tleft: `${position.x}px`,\n\t\t\t\t\t\t\ttop: `${position.y}px`,\n\t\t\t\t\t\t\t...menuStyle,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonContextMenu={(e) => e.preventDefault()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{items.map((item) => renderMenuItem(item))}\n\t\t\t\t\t</div>,\n\t\t\t\t\tdocument.body,\n\t\t\t\t)\n\t\t\t: null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`rpc_context_menu ${className}`}\n\t\t\tstyle={style}\n\t\t\tonContextMenu={handleContextMenu}\n\t\t>\n\t\t\t{children}\n\t\t\t{menuContent}\n\t\t</div>\n\t);\n};\n\nexport default ContextMenu;\n"]}
1
+ {"version":3,"sources":["../ContextMenu/index.tsx"],"names":["useState","useRef","useEffect","jsx","jsxs","RightOutlined","ReactDOM"],"mappings":"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","file":"chunk-KSXCVQU3.cjs","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport ReactDOM from 'react-dom';\nimport { RightOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface ContextMenuItem {\n\t/** 菜单项唯一标识 */\n\tkey: string;\n\t/** 菜单项展示文本或节点 */\n\tlabel?: ReactNode;\n\t/** 菜单项前置图标 */\n\ticon?: ReactNode;\n\t/** 是否为分割线 */\n\ttype?: 'divider';\n\t/** 是否禁用 */\n\tdisabled?: boolean;\n\t/** 是否为警示/危险操作(红色显示) */\n\tdanger?: boolean;\n\t/** 快捷键提示(如 '⌘ C' / 'Ctrl+C') */\n\tshortcut?: string;\n\t/** 二级子菜单项列表 */\n\tchildren?: ContextMenuItem[];\n\t/** 点击菜单项回调 */\n\tonClick?: (item: ContextMenuItem, e: React.MouseEvent) => void;\n}\n\nexport interface ContextMenuProps {\n\t/** 菜单项列表配置 */\n\titems: ContextMenuItem[];\n\t/** 被右键激活的目标子组件/容器 */\n\tchildren: ReactNode;\n\t/** 是否禁用右键上下文菜单 */\n\tdisabled?: boolean;\n\t/** 菜单显隐状态改变回调 */\n\tonOpenChange?: (open: boolean) => void;\n\t/** 自定义菜单类名 */\n\tmenuClassName?: string;\n\t/** 自定义菜单样式 */\n\tmenuStyle?: CSSProperties;\n\t/** 自定义外层包裹类名 */\n\tclassName?: string;\n\t/** 自定义外层包裹样式 */\n\tstyle?: CSSProperties;\n}\n\ninterface Position {\n\tx: number;\n\ty: number;\n}\n\nconst ContextMenu: React.FC<ContextMenuProps> = ({\n\titems,\n\tchildren,\n\tdisabled = false,\n\tonOpenChange,\n\tmenuClassName = '',\n\tmenuStyle,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [visible, setVisible] = useState<boolean>(false);\n\tconst [position, setPosition] = useState<Position>({ x: 0, y: 0 });\n\tconst menuRef = useRef<HTMLDivElement>(null);\n\n\tconst handleContextMenu = (e: React.MouseEvent) => {\n\t\tif (disabled) return;\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tconst mouseX = e.clientX;\n\t\tconst mouseY = e.clientY;\n\n\t\t// 初始设置位置\n\t\tsetPosition({ x: mouseX, y: mouseY });\n\t\tsetVisible(true);\n\t\tonOpenChange?.(true);\n\t};\n\n\t// 菜单渲染后自适应调整边界,防止溢出视口\n\tuseEffect(() => {\n\t\tif (!visible || !menuRef.current) return;\n\t\tconst menuEl = menuRef.current;\n\t\tconst rect = menuEl.getBoundingClientRect();\n\n\t\tlet adjustedX = position.x;\n\t\tlet adjustedY = position.y;\n\n\t\t// 水平防溢出\n\t\tif (position.x + rect.width > window.innerWidth) {\n\t\t\tadjustedX = window.innerWidth - rect.width - 8;\n\t\t}\n\n\t\t// 垂直防溢出\n\t\tif (position.y + rect.height > window.innerHeight) {\n\t\t\tadjustedY = window.innerHeight - rect.height - 8;\n\t\t}\n\n\t\tif (adjustedX !== position.x || adjustedY !== position.y) {\n\t\t\tsetPosition({ x: Math.max(8, adjustedX), y: Math.max(8, adjustedY) });\n\t\t}\n\t}, [visible]);\n\n\t// 点击外部、按 ESC、页面滚动时关闭菜单\n\tuseEffect(() => {\n\t\tif (!visible) return;\n\n\t\tconst handleClose = (e: MouseEvent | KeyboardEvent) => {\n\t\t\tif (e instanceof KeyboardEvent && e.key !== 'Escape') return;\n\t\t\tsetVisible(false);\n\t\t\tonOpenChange?.(false);\n\t\t};\n\n\t\tconst handleScroll = () => {\n\t\t\tsetVisible(false);\n\t\t\tonOpenChange?.(false);\n\t\t};\n\n\t\tdocument.addEventListener('mousedown', handleClose);\n\t\tdocument.addEventListener('keydown', handleClose);\n\t\twindow.addEventListener('scroll', handleScroll, true);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', handleClose);\n\t\t\tdocument.removeEventListener('keydown', handleClose);\n\t\t\twindow.removeEventListener('scroll', handleScroll, true);\n\t\t};\n\t}, [visible, onOpenChange]);\n\n\t// 渲染菜单项(递归支持二级子菜单)\n\tconst renderMenuItem = (item: ContextMenuItem) => {\n\t\tif (item.type === 'divider') {\n\t\t\treturn <div key={item.key} className=\"rpc_context_menu_divider\" />;\n\t\t}\n\n\t\tconst hasSub = item.children && item.children.length > 0;\n\n\t\tconst handleItemClick = (e: React.MouseEvent) => {\n\t\t\tif (item.disabled || hasSub) return;\n\t\t\te.stopPropagation();\n\t\t\titem.onClick?.(item, e);\n\t\t\tsetVisible(false);\n\t\t\tonOpenChange?.(false);\n\t\t};\n\n\t\tconst itemClassNames = [\n\t\t\t'rpc_context_menu_item',\n\t\t\titem.danger ? 'rpc_context_menu_item_danger' : '',\n\t\t\titem.disabled ? 'rpc_context_menu_item_disabled' : '',\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join(' ');\n\n\t\treturn (\n\t\t\t<div key={item.key} className={itemClassNames} onClick={handleItemClick}>\n\t\t\t\t{item.icon && <span className=\"rpc_context_menu_item_icon\">{item.icon}</span>}\n\t\t\t\t<span className=\"rpc_context_menu_item_label\">{item.label}</span>\n\t\t\t\t{item.shortcut && <span className=\"rpc_context_menu_item_shortcut\">{item.shortcut}</span>}\n\t\t\t\t{hasSub && <RightOutlined className=\"rpc_context_menu_item_arrow\" />}\n\n\t\t\t\t{/* 二级子菜单 */}\n\t\t\t\t{hasSub && (\n\t\t\t\t\t<div className=\"rpc_context_menu_submenu\">\n\t\t\t\t\t\t{item.children!.map((sub) => renderMenuItem(sub))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t};\n\n\tconst menuContent =\n\t\tvisible && typeof document !== 'undefined'\n\t\t\t? ReactDOM.createPortal(\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={menuRef}\n\t\t\t\t\t\tclassName={`rpc_context_menu_panel ${menuClassName}`}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tleft: `${position.x}px`,\n\t\t\t\t\t\t\ttop: `${position.y}px`,\n\t\t\t\t\t\t\t...menuStyle,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonContextMenu={(e) => e.preventDefault()}\n\t\t\t\t\t>\n\t\t\t\t\t\t{items.map((item) => renderMenuItem(item))}\n\t\t\t\t\t</div>,\n\t\t\t\t\tdocument.body,\n\t\t\t\t)\n\t\t\t: null;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`rpc_context_menu ${className}`}\n\t\t\tstyle={style}\n\t\t\tonContextMenu={handleContextMenu}\n\t\t>\n\t\t\t{children}\n\t\t\t{menuContent}\n\t\t</div>\n\t);\n};\n\nexport default ContextMenu;\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkR4V3EJVP_cjs = require('./chunk-R4V3EJVP.cjs');
3
+ var chunkQMLDK2DL_cjs = require('./chunk-QMLDK2DL.cjs');
4
4
  var react = require('react');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
 
@@ -109,7 +109,7 @@ var TreeTransfer = ({
109
109
  type: "button",
110
110
  className: "rpc_tree_transfer_del_btn",
111
111
  onClick: () => handleRemove(key),
112
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.CloseOutlined, {})
112
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.CloseOutlined, {})
113
113
  }
114
114
  )
115
115
  ] }, key)) })
@@ -119,5 +119,5 @@ var TreeTransfer = ({
119
119
  var TreeTransfer_default = TreeTransfer;
120
120
 
121
121
  exports.TreeTransfer_default = TreeTransfer_default;
122
- //# sourceMappingURL=chunk-LFGBZXQH.cjs.map
123
- //# sourceMappingURL=chunk-LFGBZXQH.cjs.map
122
+ //# sourceMappingURL=chunk-KWL5465Y.cjs.map
123
+ //# sourceMappingURL=chunk-KWL5465Y.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../TreeTransfer/index.tsx"],"names":["useState","useMemo","jsxs","jsx","CloseOutlined"],"mappings":"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","file":"chunk-LFGBZXQH.cjs","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":["useState","useMemo","jsxs","jsx","CloseOutlined"],"mappings":"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","file":"chunk-KWL5465Y.cjs","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,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkR4V3EJVP_cjs = require('./chunk-R4V3EJVP.cjs');
3
+ var chunkQMLDK2DL_cjs = require('./chunk-QMLDK2DL.cjs');
4
4
  var React = require('react');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
 
@@ -159,9 +159,7 @@ function openInCodePen(code, config = {}) {
159
159
  "https://unpkg.com/react-dom@18/umd/react-dom.production.min.js",
160
160
  "https://unpkg.com/react-public-components/dist/index.umd.js"
161
161
  ].join(";"),
162
- css_external: [
163
- "https://unpkg.com/react-public-components/dist/index.css"
164
- ].join(";")
162
+ css_external: ["https://unpkg.com/react-public-components/dist/index.css"].join(";")
165
163
  };
166
164
  const input = document.createElement("input");
167
165
  input.type = "hidden";
@@ -312,7 +310,7 @@ var CodeSnippet = ({
312
310
  className: "rpc_code_snippet_action_btn",
313
311
  title: "\u5728 CodeSandbox \u4E2D\u6253\u5F00\u5E76\u5728\u7EBF\u8FD0\u884C",
314
312
  onClick: () => handleActionClick("codesandbox"),
315
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.CodeSandboxOutlined, {})
313
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.CodeSandboxOutlined, {})
316
314
  },
317
315
  "codesandbox"
318
316
  );
@@ -324,7 +322,7 @@ var CodeSnippet = ({
324
322
  className: "rpc_code_snippet_action_btn",
325
323
  title: "\u5728 CodePen \u4E2D\u6253\u5F00\u5E76\u6F14\u7EC3",
326
324
  onClick: () => handleActionClick("codepen"),
327
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.CodePenOutlined, {})
325
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.CodePenOutlined, {})
328
326
  },
329
327
  "codepen"
330
328
  );
@@ -336,7 +334,7 @@ var CodeSnippet = ({
336
334
  className: "rpc_code_snippet_action_btn",
337
335
  title: "\u5728 StackBlitz \u4E2D\u6781\u901F\u542F\u52A8",
338
336
  onClick: () => handleActionClick("stackblitz"),
339
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.ThunderboltOutlined, {})
337
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.ThunderboltOutlined, {})
340
338
  },
341
339
  "stackblitz"
342
340
  );
@@ -348,7 +346,7 @@ var CodeSnippet = ({
348
346
  className: "rpc_code_snippet_action_btn",
349
347
  title: "\u5728\u72EC\u7ACB\u65B0\u6807\u7B7E\u9875\u4E2D\u5168\u5C4F\u8FD0\u884C",
350
348
  onClick: () => handleActionClick("external"),
351
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.ExportOutlined, {})
349
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.ExportOutlined, {})
352
350
  },
353
351
  "external"
354
352
  );
@@ -360,7 +358,7 @@ var CodeSnippet = ({
360
358
  className: `rpc_code_snippet_action_btn ${copied ? "rpc_code_snippet_action_copied" : ""}`,
361
359
  title: copied ? "\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F\uFF01" : "\u590D\u5236\u4EE3\u7801",
362
360
  onClick: () => handleActionClick("copy"),
363
- children: copied ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.CheckOutlined, { style: { color: "#52c41a" } }) : /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.CopyOutlined, {})
361
+ children: copied ? /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.CheckOutlined, { style: { color: "#52c41a" } }) : /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.CopyOutlined, {})
364
362
  },
365
363
  "copy"
366
364
  );
@@ -372,7 +370,7 @@ var CodeSnippet = ({
372
370
  className: `rpc_code_snippet_action_btn ${!isCollapsed ? "rpc_code_snippet_action_active" : ""}`,
373
371
  title: isCollapsed ? "\u5C55\u5F00\u4EE3\u7801" : "\u6536\u8D77\u4EE3\u7801",
374
372
  onClick: () => handleActionClick("collapse"),
375
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.CodeOutlined, {})
373
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.CodeOutlined, {})
376
374
  },
377
375
  "collapse"
378
376
  );
@@ -402,16 +400,16 @@ var CodeSnippet = ({
402
400
  showLineNumbers && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rpc_code_snippet_line_numbers", children: lines.map((_, idx) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_code_snippet_line_no", children: idx + 1 }, idx)) }),
403
401
  /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "rpc_code_snippet_content", children: /* @__PURE__ */ jsxRuntime.jsx("code", { children: currentCode }) }),
404
402
  showActions && copyable && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_code_snippet_floating_copy", onClick: handleCopy, title: "\u590D\u5236\u4EE3\u7801", children: [
405
- copied ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.CheckOutlined, { style: { color: "#52c41a" } }) : /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.CopyOutlined, {}),
403
+ copied ? /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.CheckOutlined, { style: { color: "#52c41a" } }) : /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.CopyOutlined, {}),
406
404
  /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 11, marginLeft: 4 }, children: currentLanguage })
407
405
  ] })
408
406
  ] }),
409
407
  (showCollapseFooter || collapsible) && !isCollapsed && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_code_snippet_footer", onClick: handleToggleCollapse, children: [
410
- /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.UpOutlined, { style: { marginRight: 6, fontSize: 12 } }),
408
+ /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.UpOutlined, { style: { marginRight: 6, fontSize: 12 } }),
411
409
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "\u6536\u8D77\u4EE3\u7801" })
412
410
  ] }),
413
411
  (showCollapseFooter || collapsible) && isCollapsed && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_code_snippet_footer", onClick: handleToggleCollapse, children: [
414
- /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.DownOutlined, { style: { marginRight: 6, fontSize: 12 } }),
412
+ /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.DownOutlined, { style: { marginRight: 6, fontSize: 12 } }),
415
413
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "\u5C55\u5F00\u4EE3\u7801" })
416
414
  ] })
417
415
  ]
@@ -425,5 +423,5 @@ exports.openInCodePen = openInCodePen;
425
423
  exports.openInCodeSandbox = openInCodeSandbox;
426
424
  exports.openInNewTab = openInNewTab;
427
425
  exports.openInStackBlitz = openInStackBlitz;
428
- //# sourceMappingURL=chunk-TUDLE3RT.cjs.map
429
- //# sourceMappingURL=chunk-TUDLE3RT.cjs.map
426
+ //# sourceMappingURL=chunk-KYM35LPD.cjs.map
427
+ //# sourceMappingURL=chunk-KYM35LPD.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../CodeSnippet/sandbox.ts","../CodeSnippet/index.tsx"],"names":["useState","jsxs","jsx","React","CodeSandboxOutlined","CodePenOutlined","ThunderboltOutlined","ExportOutlined","CheckOutlined","CopyOutlined","CodeOutlined","UpOutlined","DownOutlined"],"mappings":"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","file":"chunk-KYM35LPD.cjs","sourcesContent":["/**\n * 在线沙箱 (StackBlitz / CodeSandbox / CodePen) 一键调起工具\n * 零第三方 UI 库依赖,原生运行 react-public-components\n */\n\nexport interface SandboxConfig {\n\ttitle?: string;\n\tdescription?: string;\n\tdependencies?: Record<string, string>;\n\tdevDependencies?: Record<string, string>;\n}\n\nconst defaultPackageJson = (\n\tdependencies: Record<string, string> = {},\n\tdevDependencies: Record<string, string> = {},\n) => ({\n\tname: 'react-public-components-demo',\n\tversion: '1.0.0',\n\tdescription: 'Interactive demo generated by react-public-components',\n\tmain: 'src/index.tsx',\n\tdependencies: {\n\t\treact: '^18.3.1',\n\t\t'react-dom': '^18.3.1',\n\t\t'react-public-components': 'latest',\n\t\t...dependencies,\n\t},\n\tdevDependencies: {\n\t\t'@types/react': '^18.3.3',\n\t\t'@types/react-dom': '^18.3.0',\n\t\ttypescript: '^5.5.0',\n\t\t...devDependencies,\n\t},\n});\n\nconst defaultHtml = `<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <title>React Public Components Demo</title>\n <link rel=\"stylesheet\" href=\"https://unpkg.com/react-public-components/dist/index.css\" />\n <style>\n * { box-sizing: border-box; }\n body { margin: 0; padding: 24px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; background: #f8fafc; }\n </style>\n</head>\n<body>\n <div id=\"root\"></div>\n</body>\n</html>`;\n\nconst defaultIndexTsx = `import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport 'react-public-components/dist/index.css';\nimport App from './App';\n\nconst container = document.getElementById('root');\nif (container) {\n const root = createRoot(container);\n root.render(\n <React.StrictMode>\n <App />\n </React.StrictMode>\n );\n}`;\n\n/**\n * 在 StackBlitz 中打开项目(极速、免注册、支持完整 TSX 编译)\n */\nexport function openInStackBlitz(code: string, config: SandboxConfig = {}) {\n\tconst form = document.createElement('form');\n\tform.method = 'POST';\n\tform.action = 'https://stackblitz.com/run';\n\tform.target = '_blank';\n\tform.style.display = 'none';\n\n\tconst pkg = defaultPackageJson(config.dependencies, config.devDependencies);\n\n\tconst fields: Record<string, string> = {\n\t\t'project[title]': config.title || 'react-public-components Demo',\n\t\t'project[description]': config.description || 'Live Component Demo',\n\t\t'project[template]': 'create-react-app',\n\t\t'project[files][package.json]': JSON.stringify(pkg, null, 2),\n\t\t'project[files][public/index.html]': defaultHtml,\n\t\t'project[files][src/index.tsx]': defaultIndexTsx,\n\t\t'project[files][src/App.tsx]': code,\n\t\t'project[files][tsconfig.json]': JSON.stringify(\n\t\t\t{\n\t\t\t\tcompilerOptions: {\n\t\t\t\t\ttarget: 'es5',\n\t\t\t\t\tlib: ['dom', 'dom.iterable', 'esnext'],\n\t\t\t\t\tallowJs: true,\n\t\t\t\t\tskipLibCheck: true,\n\t\t\t\t\tesModuleInterop: true,\n\t\t\t\t\tallowSyntheticDefaultImports: true,\n\t\t\t\t\tstrict: true,\n\t\t\t\t\tforceConsistentCasingInFileNames: true,\n\t\t\t\t\tnoFallthroughCasesInSwitch: true,\n\t\t\t\t\tmodule: 'esnext',\n\t\t\t\t\tmoduleResolution: 'node',\n\t\t\t\t\tresolveJsonModule: true,\n\t\t\t\t\tisolatedModules: true,\n\t\t\t\t\tnoEmit: true,\n\t\t\t\t\tjsx: 'react-jsx',\n\t\t\t\t},\n\t\t\t\tinclude: ['src'],\n\t\t\t},\n\t\t\tnull,\n\t\t\t2,\n\t\t),\n\t};\n\n\tObject.entries(fields).forEach(([key, val]) => {\n\t\tconst input = document.createElement('input');\n\t\tinput.type = 'hidden';\n\t\tinput.name = key;\n\t\tinput.value = val;\n\t\tform.appendChild(input);\n\t});\n\n\tdocument.body.appendChild(form);\n\tform.submit();\n\tdocument.body.removeChild(form);\n}\n\n/**\n * 在 CodeSandbox 中打开项目\n */\nexport function openInCodeSandbox(code: string, config: SandboxConfig = {}) {\n\tconst pkg = defaultPackageJson(config.dependencies, config.devDependencies);\n\n\tconst files = {\n\t\t'package.json': {\n\t\t\tcontent: JSON.stringify(pkg, null, 2),\n\t\t},\n\t\t'public/index.html': {\n\t\t\tcontent: defaultHtml,\n\t\t},\n\t\t'src/index.tsx': {\n\t\t\tcontent: defaultIndexTsx,\n\t\t},\n\t\t'src/App.tsx': {\n\t\t\tcontent: code,\n\t\t},\n\t};\n\n\tfetch('https://codesandbox.io/api/v1/sandboxes/define?json=1', {\n\t\tmethod: 'POST',\n\t\theaders: {\n\t\t\t'Content-Type': 'application/json',\n\t\t\tAccept: 'application/json',\n\t\t},\n\t\tbody: JSON.stringify({ files }),\n\t})\n\t\t.then((res) => res.json())\n\t\t.then((data) => {\n\t\t\tif (data && data.sandbox_id) {\n\t\t\t\twindow.open(`https://codesandbox.io/s/${data.sandbox_id}`, '_blank');\n\t\t\t}\n\t\t})\n\t\t.catch(() => {\n\t\t\t// 降级使用 StackBlitz 打开\n\t\t\topenInStackBlitz(code, config);\n\t\t});\n}\n\n/**\n * 在 CodePen 中打开演练场\n */\nexport function openInCodePen(code: string, config: SandboxConfig = {}) {\n\tconst form = document.createElement('form');\n\tform.method = 'POST';\n\tform.action = 'https://codepen.io/pen/define/';\n\tform.target = '_blank';\n\tform.style.display = 'none';\n\n\tlet cleanJs = code\n\t\t.replace(/import\\s+[\\s\\S]*?from\\s+['\"][^'\"]+['\"];?/g, '')\n\t\t.replace(/export\\s+default\\s+App;?/g, '')\n\t\t.replace(/export\\s+default\\s+/g, '');\n\n\tcleanJs +=\n\t\t'\\n\\nconst root = ReactDOM.createRoot(document.getElementById(\"root\"));\\nroot.render(<App />);';\n\n\tconst data = {\n\t\ttitle: config.title || 'react-public-components Demo',\n\t\tdescription: config.description || 'Live Component Demo',\n\t\thtml: '<div id=\"root\"></div>',\n\t\tjs: cleanJs,\n\t\tjs_pre_processor: 'babel',\n\t\tcss: 'body { margin: 0; padding: 24px; font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif; background: #f8fafc; }',\n\t\tjs_external: [\n\t\t\t'https://unpkg.com/react@18/umd/react.production.min.js',\n\t\t\t'https://unpkg.com/react-dom@18/umd/react-dom.production.min.js',\n\t\t\t'https://unpkg.com/react-public-components/dist/index.umd.js',\n\t\t].join(';'),\n\t\tcss_external: ['https://unpkg.com/react-public-components/dist/index.css'].join(';'),\n\t};\n\n\tconst input = document.createElement('input');\n\tinput.type = 'hidden';\n\tinput.name = 'data';\n\tinput.value = JSON.stringify(data);\n\tform.appendChild(input);\n\n\tdocument.body.appendChild(form);\n\tform.submit();\n\tdocument.body.removeChild(form);\n}\n\n/**\n * 在新标签页中独立打开运行\n */\nexport function openInNewTab(code: string, title: string = 'Demo Preview') {\n\tconst newWin = window.open('', '_blank');\n\tif (!newWin) return;\n\n\tconst htmlContent = `<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\" />\n <title>${title}</title>\n <link rel=\"stylesheet\" href=\"https://unpkg.com/react-public-components/dist/index.css\" />\n <script src=\"https://unpkg.com/react@18/umd/react.production.min.js\"></script>\n <script src=\"https://unpkg.com/react-dom@18/umd/react-dom.production.min.js\"></script>\n <script src=\"https://unpkg.com/@babel/standalone/babel.min.js\"></script>\n <style>\n * { box-sizing: border-box; }\n body { margin: 0; padding: 24px; background: #f8fafc; font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif; }\n #root { background: #fff; padding: 32px; border-radius: 12px; box-shadow: 0 4px 16px rgba(0,0,0,0.06); max-width: 900px; margin: 0 auto; }\n </style>\n</head>\n<body>\n <div id=\"root\"></div>\n <script type=\"text/babel\">\n const { useState, useEffect, useRef, useMemo, useCallback } = React;\n \n ${code\n\t\t\t.replace(/import\\s+[\\s\\S]*?from\\s+['\"][^'\"]+['\"];?/g, '')\n\t\t\t.replace(/export\\s+default\\s+App;?/g, '')\n\t\t\t.replace(/export\\s+default\\s+/g, '')}\n\n if (typeof App !== 'undefined') {\n const root = ReactDOM.createRoot(document.getElementById('root'));\n root.render(<App />);\n }\n </script>\n</body>\n</html>`;\n\n\tnewWin.document.open();\n\tnewWin.document.write(htmlContent);\n\tnewWin.document.close();\n}\n","import React, { useState, ReactNode, CSSProperties } from 'react';\nimport {\n\tCodeSandboxOutlined,\n\tCodePenOutlined,\n\tThunderboltOutlined,\n\tCodeOutlined,\n\tExportOutlined,\n\tCopyOutlined,\n\tCheckOutlined,\n\tUpOutlined,\n\tDownOutlined,\n} from '../src/icons';\nimport {\n\topenInCodeSandbox,\n\topenInCodePen,\n\topenInStackBlitz,\n\topenInNewTab,\n\tSandboxConfig,\n} from './sandbox';\nimport './index.less';\n\nexport type CodeSnippetTheme = 'dark' | 'light';\n\nexport interface CodeTabItem {\n\tkey: string;\n\tlabel: ReactNode;\n\tcode: string;\n\tlanguage?: string;\n}\n\nexport type BuiltinAction =\n\t'codesandbox' | 'codepen' | 'stackblitz' | 'copy' | 'external' | 'collapse';\n\nexport interface CodeSnippetProps {\n\t/** 代码文本内容(单代码模式) */\n\tcode?: string;\n\t/** 编程语言标识,默认为 'tsx' */\n\tlanguage?: string;\n\t/** 代码块主题风格:'dark' 暗色(默认) / 'light' 亮色 */\n\ttheme?: CodeSnippetTheme;\n\t/** 顶部自定义标题或说明标签(不传时展示大写的 language) */\n\ttitle?: ReactNode;\n\t/** 是否显示代码行号,默认为 false */\n\tshowLineNumbers?: boolean;\n\t/** 是否展示一键复制按钮,默认为 true */\n\tcopyable?: boolean;\n\t/** 多语言/多版本 Tabs 切换(如 TypeScript / JavaScript) */\n\ttabs?: CodeTabItem[];\n\t/** 当前激活的 Tab key(受控) */\n\tactiveTabKey?: string;\n\t/** 默认激活的 Tab key */\n\tdefaultActiveTabKey?: string;\n\t/** Tab 切换回调 */\n\tonTabChange?: (key: string) => void;\n\t/** 是否展示上方经典操作工具栏(CodeSandbox、CodePen、StackBlitz、外部打开、复制、代码展开折叠) */\n\tshowActions?: boolean;\n\t/** 自定义操作栏按钮列表 */\n\tactions?: (BuiltinAction | ReactNode)[];\n\t/** 点击操作按钮时的回调函数 */\n\tonAction?: (actionKey: string) => void;\n\t/** 沙箱自定义配置(标题、依赖库等) */\n\tsandboxConfig?: SandboxConfig;\n\t/** 外部独立运行的完整页面 URL(若传则 external 按钮直接打开此链接,不传则自动在新窗口动态构建运行) */\n\texternalUrl?: string;\n\t/** 是否支持折叠/展开代码 */\n\tcollapsible?: boolean;\n\t/** 默认是否折叠 */\n\tdefaultCollapsed?: boolean;\n\t/** 当前是否折叠(受控) */\n\tcollapsed?: boolean;\n\t/** 折叠状态切换回调 */\n\tonCollapseChange?: (collapsed: boolean) => void;\n\t/** 是否展示底部的“收起 / 展开代码”控制条,默认为 false */\n\tshowCollapseFooter?: boolean;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst CodeSnippet: React.FC<CodeSnippetProps> = ({\n\tcode: singleCode = '',\n\tlanguage: defaultLang = 'tsx',\n\ttheme = 'dark',\n\ttitle,\n\tshowLineNumbers = false,\n\tcopyable = true,\n\ttabs,\n\tactiveTabKey: controlledTabKey,\n\tdefaultActiveTabKey,\n\tonTabChange,\n\tshowActions = false,\n\tactions = ['codesandbox', 'codepen', 'stackblitz', 'external', 'copy', 'collapse'],\n\tonAction,\n\tsandboxConfig,\n\texternalUrl,\n\tcollapsible = false,\n\tdefaultCollapsed = false,\n\tcollapsed: controlledCollapsed,\n\tonCollapseChange,\n\tshowCollapseFooter = false,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst hasTabs = Array.isArray(tabs) && tabs.length > 0;\n\tconst [internalTabKey, setInternalTabKey] = useState<string>(\n\t\tdefaultActiveTabKey ?? (hasTabs ? tabs[0].key : ''),\n\t);\n\tconst activeKey = controlledTabKey !== undefined ? controlledTabKey : internalTabKey;\n\n\tconst [internalCollapsed, setInternalCollapsed] = useState<boolean>(defaultCollapsed);\n\tconst isCollapsed = controlledCollapsed !== undefined ? controlledCollapsed : internalCollapsed;\n\n\tconst [copied, setCopied] = useState<boolean>(false);\n\n\t// 获取当前展示的代码与语言\n\tconst currentTab = hasTabs ? tabs.find((t) => t.key === activeKey) || tabs[0] : null;\n\tconst currentCode = currentTab ? currentTab.code : singleCode;\n\tconst currentLanguage = currentTab ? currentTab.language || defaultLang : defaultLang;\n\n\tconst handleCopy = async () => {\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(currentCode);\n\t\t\tsetCopied(true);\n\t\t\tsetTimeout(() => setCopied(false), 1500);\n\t\t\tonAction?.('copy');\n\t\t} catch {\n\t\t\t// fallback\n\t\t}\n\t};\n\n\tconst handleToggleCollapse = () => {\n\t\tconst next = !isCollapsed;\n\t\tif (controlledCollapsed === undefined) {\n\t\t\tsetInternalCollapsed(next);\n\t\t}\n\t\tonCollapseChange?.(next);\n\t\tonAction?.('collapse');\n\t};\n\n\tconst handleActionClick = (action: string) => {\n\t\tconst config: SandboxConfig = {\n\t\t\ttitle: typeof title === 'string' ? title : 'react-public-components Demo',\n\t\t\t...sandboxConfig,\n\t\t};\n\n\t\tif (action === 'codesandbox') {\n\t\t\topenInCodeSandbox(currentCode, config);\n\t\t} else if (action === 'codepen') {\n\t\t\topenInCodePen(currentCode, config);\n\t\t} else if (action === 'stackblitz') {\n\t\t\topenInStackBlitz(currentCode, config);\n\t\t} else if (action === 'external') {\n\t\t\tif (externalUrl) {\n\t\t\t\twindow.open(externalUrl, '_blank');\n\t\t\t} else {\n\t\t\t\topenInNewTab(currentCode, config.title || 'Demo Preview');\n\t\t\t}\n\t\t} else if (action === 'copy') {\n\t\t\thandleCopy();\n\t\t\treturn;\n\t\t} else if (action === 'collapse') {\n\t\t\thandleToggleCollapse();\n\t\t\treturn;\n\t\t}\n\t\tonAction?.(action);\n\t};\n\n\tconst handleTabClick = (key: string) => {\n\t\tif (controlledTabKey === undefined) {\n\t\t\tsetInternalTabKey(key);\n\t\t}\n\t\tonTabChange?.(key);\n\t};\n\n\tconst lines = currentCode.split('\\n');\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`rpc_code_snippet rpc_code_snippet_${theme} ${\n\t\t\t\tisCollapsed ? 'rpc_code_snippet_collapsed' : ''\n\t\t\t} ${className}`}\n\t\t\tstyle={style}\n\t\t>\n\t\t\t{/* 1. 顶部操作工具栏(图1红色区域) */}\n\t\t\t{showActions && (\n\t\t\t\t<div className=\"rpc_code_snippet_actions_bar\">\n\t\t\t\t\t<div className=\"rpc_code_snippet_actions_list\">\n\t\t\t\t\t\t{actions.map((act, index) => {\n\t\t\t\t\t\t\tif (typeof act !== 'string') {\n\t\t\t\t\t\t\t\treturn <React.Fragment key={index}>{act}</React.Fragment>;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tswitch (act) {\n\t\t\t\t\t\t\t\tcase 'codesandbox':\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey=\"codesandbox\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"rpc_code_snippet_action_btn\"\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"在 CodeSandbox 中打开并在线运行\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleActionClick('codesandbox')}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<CodeSandboxOutlined />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcase 'codepen':\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey=\"codepen\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"rpc_code_snippet_action_btn\"\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"在 CodePen 中打开并演练\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleActionClick('codepen')}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<CodePenOutlined />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcase 'stackblitz':\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey=\"stackblitz\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"rpc_code_snippet_action_btn\"\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"在 StackBlitz 中极速启动\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleActionClick('stackblitz')}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<ThunderboltOutlined />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcase 'external':\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey=\"external\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"rpc_code_snippet_action_btn\"\n\t\t\t\t\t\t\t\t\t\t\ttitle=\"在独立新标签页中全屏运行\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleActionClick('external')}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<ExportOutlined />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcase 'copy':\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey=\"copy\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={`rpc_code_snippet_action_btn ${\n\t\t\t\t\t\t\t\t\t\t\t\tcopied ? 'rpc_code_snippet_action_copied' : ''\n\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t\ttitle={copied ? '已复制到剪贴板!' : '复制代码'}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleActionClick('copy')}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{copied ? <CheckOutlined style={{ color: '#52c41a' }} /> : <CopyOutlined />}\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tcase 'collapse':\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\tkey=\"collapse\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={`rpc_code_snippet_action_btn ${\n\t\t\t\t\t\t\t\t\t\t\t\t!isCollapsed ? 'rpc_code_snippet_action_active' : ''\n\t\t\t\t\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\t\t\t\t\ttitle={isCollapsed ? '展开代码' : '收起代码'}\n\t\t\t\t\t\t\t\t\t\t\tonClick={() => handleActionClick('collapse')}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<CodeOutlined />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 2. 标签页切换栏(TypeScript / JavaScript) */}\n\t\t\t{hasTabs && (\n\t\t\t\t<div className=\"rpc_code_snippet_tabs_bar\">\n\t\t\t\t\t{tabs.map((tab) => (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tkey={tab.key}\n\t\t\t\t\t\t\tclassName={`rpc_code_snippet_tab_item ${\n\t\t\t\t\t\t\t\ttab.key === activeKey ? 'rpc_code_snippet_tab_active' : ''\n\t\t\t\t\t\t\t}`}\n\t\t\t\t\t\t\tonClick={() => handleTabClick(tab.key)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{tab.label}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 3. 经典标题栏(无 showActions 时显示) */}\n\t\t\t{!showActions && (\n\t\t\t\t<div className=\"rpc_code_snippet_top_bar\">\n\t\t\t\t\t<div className=\"rpc_code_snippet_dots\">\n\t\t\t\t\t\t<span className=\"rpc_code_snippet_dot rpc_code_snippet_dot_red\" />\n\t\t\t\t\t\t<span className=\"rpc_code_snippet_dot rpc_code_snippet_dot_yellow\" />\n\t\t\t\t\t\t<span className=\"rpc_code_snippet_dot rpc_code_snippet_dot_green\" />\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<span className=\"rpc_code_snippet_lang\">{title ?? currentLanguage}</span>\n\n\t\t\t\t\t{copyable ? (\n\t\t\t\t\t\t<button type=\"button\" className=\"rpc_code_snippet_copy_btn\" onClick={handleCopy}>\n\t\t\t\t\t\t\t{copied ? '✓ 已复制' : '复制'}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<span />\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 4. 代码内容主体 */}\n\t\t\t{!isCollapsed && (\n\t\t\t\t<div className=\"rpc_code_snippet_body\">\n\t\t\t\t\t{showLineNumbers && (\n\t\t\t\t\t\t<div className=\"rpc_code_snippet_line_numbers\">\n\t\t\t\t\t\t\t{lines.map((_, idx) => (\n\t\t\t\t\t\t\t\t<span key={idx} className=\"rpc_code_snippet_line_no\">\n\t\t\t\t\t\t\t\t\t{idx + 1}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<pre className=\"rpc_code_snippet_content\">\n\t\t\t\t\t\t<code>{currentCode}</code>\n\t\t\t\t\t</pre>\n\t\t\t\t\t{showActions && copyable && (\n\t\t\t\t\t\t<div className=\"rpc_code_snippet_floating_copy\" onClick={handleCopy} title=\"复制代码\">\n\t\t\t\t\t\t\t{copied ? <CheckOutlined style={{ color: '#52c41a' }} /> : <CopyOutlined />}\n\t\t\t\t\t\t\t<span style={{ fontSize: 11, marginLeft: 4 }}>{currentLanguage}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{/* 5. 底部收起/展开控制条 */}\n\t\t\t{(showCollapseFooter || collapsible) && !isCollapsed && (\n\t\t\t\t<div className=\"rpc_code_snippet_footer\" onClick={handleToggleCollapse}>\n\t\t\t\t\t<UpOutlined style={{ marginRight: 6, fontSize: 12 }} />\n\t\t\t\t\t<span>收起代码</span>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t{(showCollapseFooter || collapsible) && isCollapsed && (\n\t\t\t\t<div className=\"rpc_code_snippet_footer\" onClick={handleToggleCollapse}>\n\t\t\t\t\t<DownOutlined style={{ marginRight: 6, fontSize: 12 }} />\n\t\t\t\t\t<span>展开代码</span>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default CodeSnippet;\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkR4V3EJVP_cjs = require('./chunk-R4V3EJVP.cjs');
3
+ var chunkQMLDK2DL_cjs = require('./chunk-QMLDK2DL.cjs');
4
4
  var react = require('react');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
 
@@ -8,10 +8,10 @@ var formatDimension = (value) => {
8
8
  if (value === void 0 || value === null) return void 0;
9
9
  return typeof value === "number" ? `${value}px` : value;
10
10
  };
11
- var ChevronLeft = () => /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.LeftOutlined, {});
12
- var ChevronRight = () => /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.RightOutlined, {});
13
- var ChevronUp = () => /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.UpOutlined, {});
14
- var ChevronDown = () => /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.DownOutlined, {});
11
+ var ChevronLeft = () => /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.LeftOutlined, {});
12
+ var ChevronRight = () => /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.RightOutlined, {});
13
+ var ChevronUp = () => /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.UpOutlined, {});
14
+ var ChevronDown = () => /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.DownOutlined, {});
15
15
  var CollapsibleBox = ({
16
16
  children,
17
17
  title = "\u5185\u5BB9\u533A\u57DF",
@@ -102,5 +102,5 @@ var CollapsibleBox = ({
102
102
  var CollapseBox_default = CollapsibleBox;
103
103
 
104
104
  exports.CollapseBox_default = CollapseBox_default;
105
- //# sourceMappingURL=chunk-RN5WU7KA.cjs.map
106
- //# sourceMappingURL=chunk-RN5WU7KA.cjs.map
105
+ //# sourceMappingURL=chunk-L76JMQUH.cjs.map
106
+ //# sourceMappingURL=chunk-L76JMQUH.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../CollapseBox/index.tsx"],"names":["jsx","LeftOutlined","RightOutlined","UpOutlined","DownOutlined","useState","jsxs"],"mappings":"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","file":"chunk-RN5WU7KA.cjs","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":["jsx","LeftOutlined","RightOutlined","UpOutlined","DownOutlined","useState","jsxs"],"mappings":"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","file":"chunk-L76JMQUH.cjs","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,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkR4V3EJVP_cjs = require('./chunk-R4V3EJVP.cjs');
3
+ var chunkQMLDK2DL_cjs = require('./chunk-QMLDK2DL.cjs');
4
4
  var react = require('react');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
 
@@ -120,8 +120,8 @@ var Fullscreen = react.forwardRef(
120
120
  }, [mode, isFullscreen, exit]);
121
121
  const positionClass = `rpc_fullscreen_container_action_btn_${buttonPosition.replace("-", "_")}`;
122
122
  const isWebFsActive = mode === "web" && isFullscreen;
123
- const currentEnterIcon = enterIcon != null ? enterIcon : /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.FullscreenOutlined, {});
124
- const currentExitIcon = exitIcon != null ? exitIcon : /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.FullscreenExitOutlined, {});
123
+ const currentEnterIcon = enterIcon != null ? enterIcon : /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.FullscreenOutlined, {});
124
+ const currentExitIcon = exitIcon != null ? exitIcon : /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.FullscreenExitOutlined, {});
125
125
  return /* @__PURE__ */ jsxRuntime.jsxs(
126
126
  "div",
127
127
  {
@@ -157,5 +157,5 @@ Fullscreen.displayName = "Fullscreen";
157
157
  var Fullscreen_default = Fullscreen;
158
158
 
159
159
  exports.Fullscreen_default = Fullscreen_default;
160
- //# sourceMappingURL=chunk-AHTRLNYK.cjs.map
161
- //# sourceMappingURL=chunk-AHTRLNYK.cjs.map
160
+ //# sourceMappingURL=chunk-LPDHDZTA.cjs.map
161
+ //# sourceMappingURL=chunk-LPDHDZTA.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../Fullscreen/index.tsx"],"names":["forwardRef","useRef","useState","useCallback","useImperativeHandle","useEffect","jsx","FullscreenOutlined","FullscreenExitOutlined","jsxs"],"mappings":"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","file":"chunk-AHTRLNYK.cjs","sourcesContent":["import React, {\n\tuseState,\n\tuseRef,\n\tuseEffect,\n\tuseCallback,\n\tuseImperativeHandle,\n\tforwardRef,\n\tReactNode,\n\tCSSProperties,\n} from 'react';\nimport { FullscreenOutlined, FullscreenExitOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface FullscreenRef {\n\t/** 进入全屏 */\n\tenter: () => Promise<void>;\n\t/** 退出全屏 */\n\texit: () => Promise<void>;\n\t/** 切换全屏状态 */\n\ttoggle: () => Promise<void>;\n\t/** 当前是否处于全屏状态 */\n\tisFullscreen: boolean;\n\t/** 当前目标容器 DOM 元素 */\n\tgetElement: () => HTMLElement | null;\n}\n\nexport type FullscreenMode = 'browser' | 'web';\nexport type FullscreenButtonPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';\n\nexport interface FullscreenRenderProps {\n\tisFullscreen: boolean;\n\tenter: () => Promise<void>;\n\texit: () => Promise<void>;\n\ttoggle: () => Promise<void>;\n}\n\nexport interface FullscreenProps {\n\t/** 子元素或 Render Props 函数 */\n\tchildren?: ReactNode | ((props: FullscreenRenderProps) => ReactNode);\n\t/** 全屏模式:'browser' 原生浏览器全屏,'web' 网页内最大化置顶 */\n\tmode?: FullscreenMode;\n\t/** 自定义目标全屏元素(不传时默认为当前包裹的容器元素,传 document.documentElement 时为整页全屏) */\n\ttarget?: HTMLElement | (() => HTMLElement | null) | null;\n\t/** 受控全屏状态 */\n\tfullscreen?: boolean;\n\t/** 默认全屏状态 */\n\tdefaultFullscreen?: boolean;\n\t/** 全屏状态变化回调 */\n\tonChange?: (isFullscreen: boolean) => void;\n\t/** 是否在容器角落展示快速全屏切换悬浮按钮,默认 false */\n\tshowButton?: boolean;\n\t/** 悬浮按钮对齐位置,默认 'top-right' */\n\tbuttonPosition?: FullscreenButtonPosition;\n\t/** 悬浮按钮的自定义 Tooltip 提示或图标 */\n\tenterIcon?: ReactNode;\n\texitIcon?: ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst Fullscreen = forwardRef<FullscreenRef, FullscreenProps>(\n\t(\n\t\t{\n\t\t\tchildren,\n\t\t\tmode = 'browser',\n\t\t\ttarget,\n\t\t\tfullscreen: controlledFullscreen,\n\t\t\tdefaultFullscreen = false,\n\t\t\tonChange,\n\t\t\tshowButton = false,\n\t\t\tbuttonPosition = 'top-right',\n\t\t\tenterIcon,\n\t\t\texitIcon,\n\t\t\tclassName = '',\n\t\t\tstyle,\n\t\t},\n\t\tref,\n\t) => {\n\t\tconst containerRef = useRef<HTMLDivElement>(null);\n\t\tconst [internalFullscreen, setInternalFullscreen] = useState<boolean>(defaultFullscreen);\n\t\tconst isControlled = controlledFullscreen !== undefined;\n\t\tconst isFullscreen = isControlled ? controlledFullscreen : internalFullscreen;\n\n\t\tconst getTargetElement = useCallback((): HTMLElement | null => {\n\t\t\tif (typeof target === 'function') {\n\t\t\t\treturn target();\n\t\t\t}\n\t\t\tif (target) {\n\t\t\t\treturn target;\n\t\t\t}\n\t\t\treturn containerRef.current;\n\t\t}, [target]);\n\n\t\t// 进入全屏\n\t\tconst enter = useCallback(async () => {\n\t\t\tconst el = getTargetElement();\n\t\t\tif (!el) return;\n\n\t\t\tif (mode === 'browser') {\n\t\t\t\tif (el.requestFullscreen) {\n\t\t\t\t\tawait el.requestFullscreen();\n\t\t\t\t} else if ((el as any).webkitRequestFullscreen) {\n\t\t\t\t\tawait (el as any).webkitRequestFullscreen();\n\t\t\t\t} else if ((el as any).msRequestFullscreen) {\n\t\t\t\t\tawait (el as any).msRequestFullscreen();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!isControlled) {\n\t\t\t\t\tsetInternalFullscreen(true);\n\t\t\t\t}\n\t\t\t\tonChange?.(true);\n\t\t\t}\n\t\t}, [mode, getTargetElement, isControlled, onChange]);\n\n\t\t// 退出全屏\n\t\tconst exit = useCallback(async () => {\n\t\t\tif (mode === 'browser') {\n\t\t\t\tif (document.fullscreenElement || (document as any).webkitFullscreenElement) {\n\t\t\t\t\tif (document.exitFullscreen) {\n\t\t\t\t\t\tawait document.exitFullscreen();\n\t\t\t\t\t} else if ((document as any).webkitExitFullscreen) {\n\t\t\t\t\t\tawait (document as any).webkitExitFullscreen();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!isControlled) {\n\t\t\t\t\tsetInternalFullscreen(false);\n\t\t\t\t}\n\t\t\t\tonChange?.(false);\n\t\t\t}\n\t\t}, [mode, isControlled, onChange]);\n\n\t\t// 切换全屏\n\t\tconst toggle = useCallback(async () => {\n\t\t\tif (isFullscreen) {\n\t\t\t\tawait exit();\n\t\t\t} else {\n\t\t\t\tawait enter();\n\t\t\t}\n\t\t}, [isFullscreen, enter, exit]);\n\n\t\t// 暴露 Imperative Ref\n\t\tuseImperativeHandle(\n\t\t\tref,\n\t\t\t() => ({\n\t\t\t\tenter,\n\t\t\t\texit,\n\t\t\t\ttoggle,\n\t\t\t\tisFullscreen,\n\t\t\t\tgetElement: getTargetElement,\n\t\t\t}),\n\t\t\t[enter, exit, toggle, isFullscreen, getTargetElement],\n\t\t);\n\n\t\t// 监听浏览器原生全屏事件\n\t\tuseEffect(() => {\n\t\t\tif (mode !== 'browser') return;\n\n\t\t\tconst handleFullscreenChange = () => {\n\t\t\t\tconst currentFsEl =\n\t\t\t\t\tdocument.fullscreenElement ||\n\t\t\t\t\t(document as any).webkitFullscreenElement ||\n\t\t\t\t\t(document as any).mozFullScreenElement ||\n\t\t\t\t\t(document as any).msFullscreenElement;\n\n\t\t\t\tconst targetEl = getTargetElement();\n\t\t\t\tconst isActive =\n\t\t\t\t\tcurrentFsEl !== null &&\n\t\t\t\t\t(currentFsEl === targetEl || targetEl === document.documentElement);\n\n\t\t\t\tif (!isControlled) {\n\t\t\t\t\tsetInternalFullscreen(isActive);\n\t\t\t\t}\n\t\t\t\tonChange?.(isActive);\n\t\t\t};\n\n\t\t\tdocument.addEventListener('fullscreenchange', handleFullscreenChange);\n\t\t\tdocument.addEventListener('webkitfullscreenchange', handleFullscreenChange);\n\t\t\tdocument.addEventListener('mozfullscreenchange', handleFullscreenChange);\n\t\t\tdocument.addEventListener('MSFullscreenChange', handleFullscreenChange);\n\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener('fullscreenchange', handleFullscreenChange);\n\t\t\t\tdocument.removeEventListener('webkitfullscreenchange', handleFullscreenChange);\n\t\t\t\tdocument.removeEventListener('mozfullscreenchange', handleFullscreenChange);\n\t\t\t\tdocument.removeEventListener('MSFullscreenChange', handleFullscreenChange);\n\t\t\t};\n\t\t}, [mode, getTargetElement, isControlled, onChange]);\n\n\t\t// Web 模拟全屏模式下的 ESC 监听\n\t\tuseEffect(() => {\n\t\t\tif (mode !== 'web' || !isFullscreen) return;\n\n\t\t\tconst handleKeyDown = (e: KeyboardEvent) => {\n\t\t\t\tif (e.key === 'Escape') {\n\t\t\t\t\texit();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\twindow.addEventListener('keydown', handleKeyDown);\n\t\t\treturn () => {\n\t\t\t\twindow.removeEventListener('keydown', handleKeyDown);\n\t\t\t};\n\t\t}, [mode, isFullscreen, exit]);\n\n\t\tconst positionClass = `rpc_fullscreen_container_action_btn_${buttonPosition.replace('-', '_')}`;\n\t\tconst isWebFsActive = mode === 'web' && isFullscreen;\n\n\t\tconst currentEnterIcon = enterIcon ?? <FullscreenOutlined />;\n\t\tconst currentExitIcon = exitIcon ?? <FullscreenExitOutlined />;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={containerRef}\n\t\t\t\tclassName={`rpc_fullscreen_container ${\n\t\t\t\t\tisFullscreen ? 'rpc_fullscreen_container_fullscreen' : ''\n\t\t\t\t} ${isWebFsActive ? 'rpc_fullscreen_container_web_fullscreen' : ''} ${className}`}\n\t\t\t\tstyle={{\n\t\t\t\t\t...(isFullscreen ? { backgroundColor: '#ffffff' } : {}),\n\t\t\t\t\t...style,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{/* 右上角/指定角落的快捷切换按钮 */}\n\t\t\t\t{showButton && (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName={`rpc_fullscreen_container_action_btn ${positionClass}`}\n\t\t\t\t\t\tonClick={toggle}\n\t\t\t\t\t\ttitle={isFullscreen ? '退出全屏 (ESC)' : '全屏显示'}\n\t\t\t\t\t>\n\t\t\t\t\t\t{isFullscreen ? currentExitIcon : currentEnterIcon}\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\n\t\t\t\t{typeof children === 'function'\n\t\t\t\t\t? children({\n\t\t\t\t\t\t\tisFullscreen,\n\t\t\t\t\t\t\tenter,\n\t\t\t\t\t\t\texit,\n\t\t\t\t\t\t\ttoggle,\n\t\t\t\t\t\t})\n\t\t\t\t\t: children}\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nFullscreen.displayName = 'Fullscreen';\n\nexport default Fullscreen;\n"]}
1
+ {"version":3,"sources":["../Fullscreen/index.tsx"],"names":["forwardRef","useRef","useState","useCallback","useImperativeHandle","useEffect","jsx","FullscreenOutlined","FullscreenExitOutlined","jsxs"],"mappings":"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","file":"chunk-LPDHDZTA.cjs","sourcesContent":["import React, {\n\tuseState,\n\tuseRef,\n\tuseEffect,\n\tuseCallback,\n\tuseImperativeHandle,\n\tforwardRef,\n\tReactNode,\n\tCSSProperties,\n} from 'react';\nimport { FullscreenOutlined, FullscreenExitOutlined } from '../src/icons';\nimport './index.less';\n\nexport interface FullscreenRef {\n\t/** 进入全屏 */\n\tenter: () => Promise<void>;\n\t/** 退出全屏 */\n\texit: () => Promise<void>;\n\t/** 切换全屏状态 */\n\ttoggle: () => Promise<void>;\n\t/** 当前是否处于全屏状态 */\n\tisFullscreen: boolean;\n\t/** 当前目标容器 DOM 元素 */\n\tgetElement: () => HTMLElement | null;\n}\n\nexport type FullscreenMode = 'browser' | 'web';\nexport type FullscreenButtonPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';\n\nexport interface FullscreenRenderProps {\n\tisFullscreen: boolean;\n\tenter: () => Promise<void>;\n\texit: () => Promise<void>;\n\ttoggle: () => Promise<void>;\n}\n\nexport interface FullscreenProps {\n\t/** 子元素或 Render Props 函数 */\n\tchildren?: ReactNode | ((props: FullscreenRenderProps) => ReactNode);\n\t/** 全屏模式:'browser' 原生浏览器全屏,'web' 网页内最大化置顶 */\n\tmode?: FullscreenMode;\n\t/** 自定义目标全屏元素(不传时默认为当前包裹的容器元素,传 document.documentElement 时为整页全屏) */\n\ttarget?: HTMLElement | (() => HTMLElement | null) | null;\n\t/** 受控全屏状态 */\n\tfullscreen?: boolean;\n\t/** 默认全屏状态 */\n\tdefaultFullscreen?: boolean;\n\t/** 全屏状态变化回调 */\n\tonChange?: (isFullscreen: boolean) => void;\n\t/** 是否在容器角落展示快速全屏切换悬浮按钮,默认 false */\n\tshowButton?: boolean;\n\t/** 悬浮按钮对齐位置,默认 'top-right' */\n\tbuttonPosition?: FullscreenButtonPosition;\n\t/** 悬浮按钮的自定义 Tooltip 提示或图标 */\n\tenterIcon?: ReactNode;\n\texitIcon?: ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst Fullscreen = forwardRef<FullscreenRef, FullscreenProps>(\n\t(\n\t\t{\n\t\t\tchildren,\n\t\t\tmode = 'browser',\n\t\t\ttarget,\n\t\t\tfullscreen: controlledFullscreen,\n\t\t\tdefaultFullscreen = false,\n\t\t\tonChange,\n\t\t\tshowButton = false,\n\t\t\tbuttonPosition = 'top-right',\n\t\t\tenterIcon,\n\t\t\texitIcon,\n\t\t\tclassName = '',\n\t\t\tstyle,\n\t\t},\n\t\tref,\n\t) => {\n\t\tconst containerRef = useRef<HTMLDivElement>(null);\n\t\tconst [internalFullscreen, setInternalFullscreen] = useState<boolean>(defaultFullscreen);\n\t\tconst isControlled = controlledFullscreen !== undefined;\n\t\tconst isFullscreen = isControlled ? controlledFullscreen : internalFullscreen;\n\n\t\tconst getTargetElement = useCallback((): HTMLElement | null => {\n\t\t\tif (typeof target === 'function') {\n\t\t\t\treturn target();\n\t\t\t}\n\t\t\tif (target) {\n\t\t\t\treturn target;\n\t\t\t}\n\t\t\treturn containerRef.current;\n\t\t}, [target]);\n\n\t\t// 进入全屏\n\t\tconst enter = useCallback(async () => {\n\t\t\tconst el = getTargetElement();\n\t\t\tif (!el) return;\n\n\t\t\tif (mode === 'browser') {\n\t\t\t\tif (el.requestFullscreen) {\n\t\t\t\t\tawait el.requestFullscreen();\n\t\t\t\t} else if ((el as any).webkitRequestFullscreen) {\n\t\t\t\t\tawait (el as any).webkitRequestFullscreen();\n\t\t\t\t} else if ((el as any).msRequestFullscreen) {\n\t\t\t\t\tawait (el as any).msRequestFullscreen();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!isControlled) {\n\t\t\t\t\tsetInternalFullscreen(true);\n\t\t\t\t}\n\t\t\t\tonChange?.(true);\n\t\t\t}\n\t\t}, [mode, getTargetElement, isControlled, onChange]);\n\n\t\t// 退出全屏\n\t\tconst exit = useCallback(async () => {\n\t\t\tif (mode === 'browser') {\n\t\t\t\tif (document.fullscreenElement || (document as any).webkitFullscreenElement) {\n\t\t\t\t\tif (document.exitFullscreen) {\n\t\t\t\t\t\tawait document.exitFullscreen();\n\t\t\t\t\t} else if ((document as any).webkitExitFullscreen) {\n\t\t\t\t\t\tawait (document as any).webkitExitFullscreen();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!isControlled) {\n\t\t\t\t\tsetInternalFullscreen(false);\n\t\t\t\t}\n\t\t\t\tonChange?.(false);\n\t\t\t}\n\t\t}, [mode, isControlled, onChange]);\n\n\t\t// 切换全屏\n\t\tconst toggle = useCallback(async () => {\n\t\t\tif (isFullscreen) {\n\t\t\t\tawait exit();\n\t\t\t} else {\n\t\t\t\tawait enter();\n\t\t\t}\n\t\t}, [isFullscreen, enter, exit]);\n\n\t\t// 暴露 Imperative Ref\n\t\tuseImperativeHandle(\n\t\t\tref,\n\t\t\t() => ({\n\t\t\t\tenter,\n\t\t\t\texit,\n\t\t\t\ttoggle,\n\t\t\t\tisFullscreen,\n\t\t\t\tgetElement: getTargetElement,\n\t\t\t}),\n\t\t\t[enter, exit, toggle, isFullscreen, getTargetElement],\n\t\t);\n\n\t\t// 监听浏览器原生全屏事件\n\t\tuseEffect(() => {\n\t\t\tif (mode !== 'browser') return;\n\n\t\t\tconst handleFullscreenChange = () => {\n\t\t\t\tconst currentFsEl =\n\t\t\t\t\tdocument.fullscreenElement ||\n\t\t\t\t\t(document as any).webkitFullscreenElement ||\n\t\t\t\t\t(document as any).mozFullScreenElement ||\n\t\t\t\t\t(document as any).msFullscreenElement;\n\n\t\t\t\tconst targetEl = getTargetElement();\n\t\t\t\tconst isActive =\n\t\t\t\t\tcurrentFsEl !== null &&\n\t\t\t\t\t(currentFsEl === targetEl || targetEl === document.documentElement);\n\n\t\t\t\tif (!isControlled) {\n\t\t\t\t\tsetInternalFullscreen(isActive);\n\t\t\t\t}\n\t\t\t\tonChange?.(isActive);\n\t\t\t};\n\n\t\t\tdocument.addEventListener('fullscreenchange', handleFullscreenChange);\n\t\t\tdocument.addEventListener('webkitfullscreenchange', handleFullscreenChange);\n\t\t\tdocument.addEventListener('mozfullscreenchange', handleFullscreenChange);\n\t\t\tdocument.addEventListener('MSFullscreenChange', handleFullscreenChange);\n\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener('fullscreenchange', handleFullscreenChange);\n\t\t\t\tdocument.removeEventListener('webkitfullscreenchange', handleFullscreenChange);\n\t\t\t\tdocument.removeEventListener('mozfullscreenchange', handleFullscreenChange);\n\t\t\t\tdocument.removeEventListener('MSFullscreenChange', handleFullscreenChange);\n\t\t\t};\n\t\t}, [mode, getTargetElement, isControlled, onChange]);\n\n\t\t// Web 模拟全屏模式下的 ESC 监听\n\t\tuseEffect(() => {\n\t\t\tif (mode !== 'web' || !isFullscreen) return;\n\n\t\t\tconst handleKeyDown = (e: KeyboardEvent) => {\n\t\t\t\tif (e.key === 'Escape') {\n\t\t\t\t\texit();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\twindow.addEventListener('keydown', handleKeyDown);\n\t\t\treturn () => {\n\t\t\t\twindow.removeEventListener('keydown', handleKeyDown);\n\t\t\t};\n\t\t}, [mode, isFullscreen, exit]);\n\n\t\tconst positionClass = `rpc_fullscreen_container_action_btn_${buttonPosition.replace('-', '_')}`;\n\t\tconst isWebFsActive = mode === 'web' && isFullscreen;\n\n\t\tconst currentEnterIcon = enterIcon ?? <FullscreenOutlined />;\n\t\tconst currentExitIcon = exitIcon ?? <FullscreenExitOutlined />;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={containerRef}\n\t\t\t\tclassName={`rpc_fullscreen_container ${\n\t\t\t\t\tisFullscreen ? 'rpc_fullscreen_container_fullscreen' : ''\n\t\t\t\t} ${isWebFsActive ? 'rpc_fullscreen_container_web_fullscreen' : ''} ${className}`}\n\t\t\t\tstyle={{\n\t\t\t\t\t...(isFullscreen ? { backgroundColor: '#ffffff' } : {}),\n\t\t\t\t\t...style,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{/* 右上角/指定角落的快捷切换按钮 */}\n\t\t\t\t{showButton && (\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName={`rpc_fullscreen_container_action_btn ${positionClass}`}\n\t\t\t\t\t\tonClick={toggle}\n\t\t\t\t\t\ttitle={isFullscreen ? '退出全屏 (ESC)' : '全屏显示'}\n\t\t\t\t\t>\n\t\t\t\t\t\t{isFullscreen ? currentExitIcon : currentEnterIcon}\n\t\t\t\t\t</button>\n\t\t\t\t)}\n\n\t\t\t\t{typeof children === 'function'\n\t\t\t\t\t? children({\n\t\t\t\t\t\t\tisFullscreen,\n\t\t\t\t\t\t\tenter,\n\t\t\t\t\t\t\texit,\n\t\t\t\t\t\t\ttoggle,\n\t\t\t\t\t\t})\n\t\t\t\t\t: children}\n\t\t\t</div>\n\t\t);\n\t},\n);\n\nFullscreen.displayName = 'Fullscreen';\n\nexport default Fullscreen;\n"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkUAUP5TJK_cjs = require('./chunk-UAUP5TJK.cjs');
4
- var chunkR4V3EJVP_cjs = require('./chunk-R4V3EJVP.cjs');
3
+ var chunkK4LVWWEE_cjs = require('./chunk-K4LVWWEE.cjs');
4
+ var chunkQMLDK2DL_cjs = require('./chunk-QMLDK2DL.cjs');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
7
 
@@ -70,15 +70,15 @@ var SensitiveMask = ({
70
70
  className: "rpc_sensitive_mask_action_btn",
71
71
  onClick: handleToggle,
72
72
  title: masked ? "\u70B9\u51FB\u67E5\u770B\u660E\u6587" : "\u70B9\u51FB\u9690\u85CF",
73
- children: masked ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.EyeOutlined, {}) : /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.EyeInvisibleOutlined, {})
73
+ children: masked ? /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.EyeOutlined, {}) : /* @__PURE__ */ jsxRuntime.jsx(chunkQMLDK2DL_cjs.EyeInvisibleOutlined, {})
74
74
  }
75
75
  ),
76
- copyable && /* @__PURE__ */ jsxRuntime.jsx(chunkUAUP5TJK_cjs.CopyButton_default, { mode: "icon", text, tooltip: "\u590D\u5236\u660E\u6587" })
76
+ copyable && /* @__PURE__ */ jsxRuntime.jsx(chunkK4LVWWEE_cjs.CopyButton_default, { mode: "icon", text, tooltip: "\u590D\u5236\u660E\u6587" })
77
77
  ] });
78
78
  };
79
79
  var SensitiveMask_default = SensitiveMask;
80
80
 
81
81
  exports.SensitiveMask_default = SensitiveMask_default;
82
82
  exports.maskSensitiveText = maskSensitiveText;
83
- //# sourceMappingURL=chunk-JHVPDKBM.cjs.map
84
- //# sourceMappingURL=chunk-JHVPDKBM.cjs.map
83
+ //# sourceMappingURL=chunk-LRUSUUPJ.cjs.map
84
+ //# sourceMappingURL=chunk-LRUSUUPJ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../SensitiveMask/index.tsx"],"names":["useState","useMemo","jsx","EyeOutlined","EyeInvisibleOutlined","CopyButton_default"],"mappings":"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","file":"chunk-JHVPDKBM.cjs","sourcesContent":["import React, { useState, useMemo, CSSProperties } from 'react';\nimport { EyeOutlined, EyeInvisibleOutlined } from '../src/icons';\nimport CopyButton from '../CopyButton';\nimport './index.less';\n\nexport type SensitiveType = 'phone' | 'idcard' | 'email' | 'bankcard' | 'custom';\n\nexport interface SensitiveMaskProps {\n\t/** 原始敏感文本 */\n\ttext: string;\n\t/** 脱敏类型:'phone' | 'idcard' | 'email' | 'bankcard' | 'custom',默认为 'phone' */\n\ttype?: SensitiveType;\n\t/** 默认是否脱敏遮蔽,默认为 true */\n\tdefaultMasked?: boolean;\n\t/** 遮罩字符,默认为 '*' */\n\tmaskSymbol?: string;\n\t/** 自定义保留头部明文字符数(仅 type='custom' 有效) */\n\tunmaskedStart?: number;\n\t/** 自定义保留尾部明文字符数(仅 type='custom' 有效) */\n\tunmaskedEnd?: number;\n\t/** 是否支持切换明文/密文查看,默认为 true */\n\ttoggleable?: boolean;\n\t/** 是否支持一键复制,默认为 false */\n\tcopyable?: boolean;\n\t/** 切换明文时的拦截回调(返回 false 可阻止切换,支持异步鉴权) */\n\tonToggle?: (nextMasked: boolean) => boolean | Promise<boolean>;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\n// 格式化脱敏文本\nexport function maskSensitiveText(\n\traw: string,\n\ttype: SensitiveType = 'phone',\n\tmaskSymbol: string = '*',\n\tstartCount?: number,\n\tendCount?: number,\n): string {\n\tif (!raw) return '';\n\n\tswitch (type) {\n\t\tcase 'phone':\n\t\t\tif (raw.length <= 7) return raw;\n\t\t\treturn raw.slice(0, 3) + maskSymbol.repeat(4) + raw.slice(-4);\n\t\tcase 'idcard':\n\t\t\tif (raw.length <= 10) return raw;\n\t\t\treturn raw.slice(0, 6) + maskSymbol.repeat(Math.max(1, raw.length - 10)) + raw.slice(-4);\n\t\tcase 'bankcard':\n\t\t\tif (raw.length <= 8) return raw;\n\t\t\treturn (\n\t\t\t\traw.slice(0, 4) +\n\t\t\t\t' ' +\n\t\t\t\tmaskSymbol.repeat(4) +\n\t\t\t\t' ' +\n\t\t\t\tmaskSymbol.repeat(4) +\n\t\t\t\t' ' +\n\t\t\t\traw.slice(-4)\n\t\t\t);\n\t\tcase 'email': {\n\t\t\tconst atIndex = raw.indexOf('@');\n\t\t\tif (atIndex <= 1) return raw;\n\t\t\tconst name = raw.slice(0, atIndex);\n\t\t\tconst domain = raw.slice(atIndex);\n\t\t\tconst maskedName =\n\t\t\t\tname[0] +\n\t\t\t\tmaskSymbol.repeat(Math.max(1, name.length - 2)) +\n\t\t\t\t(name.length > 2 ? name.slice(-1) : '');\n\t\t\treturn maskedName + domain;\n\t\t}\n\t\tcase 'custom': {\n\t\t\tconst start = startCount !== undefined ? startCount : 2;\n\t\t\tconst end = endCount !== undefined ? endCount : 2;\n\t\t\tif (raw.length <= start + end) return raw;\n\t\t\treturn (\n\t\t\t\traw.slice(0, start) +\n\t\t\t\tmaskSymbol.repeat(Math.max(1, raw.length - start - end)) +\n\t\t\t\traw.slice(-end)\n\t\t\t);\n\t\t}\n\t\tdefault:\n\t\t\treturn raw;\n\t}\n}\n\nconst SensitiveMask: React.FC<SensitiveMaskProps> = ({\n\ttext = '',\n\ttype = 'phone',\n\tdefaultMasked = true,\n\tmaskSymbol = '*',\n\tunmaskedStart,\n\tunmaskedEnd,\n\ttoggleable = true,\n\tcopyable = false,\n\tonToggle,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [masked, setMasked] = useState<boolean>(defaultMasked);\n\n\tconst maskedText = useMemo(() => {\n\t\treturn maskSensitiveText(text, type, maskSymbol, unmaskedStart, unmaskedEnd);\n\t}, [text, type, maskSymbol, unmaskedStart, unmaskedEnd]);\n\n\tconst displayText = masked ? maskedText : text;\n\n\tconst handleToggle = async (e: React.MouseEvent) => {\n\t\te.stopPropagation();\n\t\tconst nextState = !masked;\n\t\tif (onToggle) {\n\t\t\tconst allowed = await onToggle(nextState);\n\t\t\tif (allowed === false) return;\n\t\t}\n\t\tsetMasked(nextState);\n\t};\n\n\treturn (\n\t\t<span className={`rpc_sensitive_mask ${className}`} style={style}>\n\t\t\t<span className=\"rpc_sensitive_mask_text\">{displayText}</span>\n\n\t\t\t{toggleable && (\n\t\t\t\t<span\n\t\t\t\t\tclassName=\"rpc_sensitive_mask_action_btn\"\n\t\t\t\t\tonClick={handleToggle}\n\t\t\t\t\ttitle={masked ? '点击查看明文' : '点击隐藏'}\n\t\t\t\t>\n\t\t\t\t\t{masked ? <EyeOutlined /> : <EyeInvisibleOutlined />}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t{copyable && <CopyButton mode=\"icon\" text={text} tooltip=\"复制明文\" />}\n\t\t</span>\n\t);\n};\n\nexport default SensitiveMask;\n"]}
1
+ {"version":3,"sources":["../SensitiveMask/index.tsx"],"names":["useState","useMemo","jsx","EyeOutlined","EyeInvisibleOutlined","CopyButton_default"],"mappings":"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","file":"chunk-LRUSUUPJ.cjs","sourcesContent":["import React, { useState, useMemo, CSSProperties } from 'react';\nimport { EyeOutlined, EyeInvisibleOutlined } from '../src/icons';\nimport CopyButton from '../CopyButton';\nimport './index.less';\n\nexport type SensitiveType = 'phone' | 'idcard' | 'email' | 'bankcard' | 'custom';\n\nexport interface SensitiveMaskProps {\n\t/** 原始敏感文本 */\n\ttext: string;\n\t/** 脱敏类型:'phone' | 'idcard' | 'email' | 'bankcard' | 'custom',默认为 'phone' */\n\ttype?: SensitiveType;\n\t/** 默认是否脱敏遮蔽,默认为 true */\n\tdefaultMasked?: boolean;\n\t/** 遮罩字符,默认为 '*' */\n\tmaskSymbol?: string;\n\t/** 自定义保留头部明文字符数(仅 type='custom' 有效) */\n\tunmaskedStart?: number;\n\t/** 自定义保留尾部明文字符数(仅 type='custom' 有效) */\n\tunmaskedEnd?: number;\n\t/** 是否支持切换明文/密文查看,默认为 true */\n\ttoggleable?: boolean;\n\t/** 是否支持一键复制,默认为 false */\n\tcopyable?: boolean;\n\t/** 切换明文时的拦截回调(返回 false 可阻止切换,支持异步鉴权) */\n\tonToggle?: (nextMasked: boolean) => boolean | Promise<boolean>;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\n// 格式化脱敏文本\nexport function maskSensitiveText(\n\traw: string,\n\ttype: SensitiveType = 'phone',\n\tmaskSymbol: string = '*',\n\tstartCount?: number,\n\tendCount?: number,\n): string {\n\tif (!raw) return '';\n\n\tswitch (type) {\n\t\tcase 'phone':\n\t\t\tif (raw.length <= 7) return raw;\n\t\t\treturn raw.slice(0, 3) + maskSymbol.repeat(4) + raw.slice(-4);\n\t\tcase 'idcard':\n\t\t\tif (raw.length <= 10) return raw;\n\t\t\treturn raw.slice(0, 6) + maskSymbol.repeat(Math.max(1, raw.length - 10)) + raw.slice(-4);\n\t\tcase 'bankcard':\n\t\t\tif (raw.length <= 8) return raw;\n\t\t\treturn (\n\t\t\t\traw.slice(0, 4) +\n\t\t\t\t' ' +\n\t\t\t\tmaskSymbol.repeat(4) +\n\t\t\t\t' ' +\n\t\t\t\tmaskSymbol.repeat(4) +\n\t\t\t\t' ' +\n\t\t\t\traw.slice(-4)\n\t\t\t);\n\t\tcase 'email': {\n\t\t\tconst atIndex = raw.indexOf('@');\n\t\t\tif (atIndex <= 1) return raw;\n\t\t\tconst name = raw.slice(0, atIndex);\n\t\t\tconst domain = raw.slice(atIndex);\n\t\t\tconst maskedName =\n\t\t\t\tname[0] +\n\t\t\t\tmaskSymbol.repeat(Math.max(1, name.length - 2)) +\n\t\t\t\t(name.length > 2 ? name.slice(-1) : '');\n\t\t\treturn maskedName + domain;\n\t\t}\n\t\tcase 'custom': {\n\t\t\tconst start = startCount !== undefined ? startCount : 2;\n\t\t\tconst end = endCount !== undefined ? endCount : 2;\n\t\t\tif (raw.length <= start + end) return raw;\n\t\t\treturn (\n\t\t\t\traw.slice(0, start) +\n\t\t\t\tmaskSymbol.repeat(Math.max(1, raw.length - start - end)) +\n\t\t\t\traw.slice(-end)\n\t\t\t);\n\t\t}\n\t\tdefault:\n\t\t\treturn raw;\n\t}\n}\n\nconst SensitiveMask: React.FC<SensitiveMaskProps> = ({\n\ttext = '',\n\ttype = 'phone',\n\tdefaultMasked = true,\n\tmaskSymbol = '*',\n\tunmaskedStart,\n\tunmaskedEnd,\n\ttoggleable = true,\n\tcopyable = false,\n\tonToggle,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst [masked, setMasked] = useState<boolean>(defaultMasked);\n\n\tconst maskedText = useMemo(() => {\n\t\treturn maskSensitiveText(text, type, maskSymbol, unmaskedStart, unmaskedEnd);\n\t}, [text, type, maskSymbol, unmaskedStart, unmaskedEnd]);\n\n\tconst displayText = masked ? maskedText : text;\n\n\tconst handleToggle = async (e: React.MouseEvent) => {\n\t\te.stopPropagation();\n\t\tconst nextState = !masked;\n\t\tif (onToggle) {\n\t\t\tconst allowed = await onToggle(nextState);\n\t\t\tif (allowed === false) return;\n\t\t}\n\t\tsetMasked(nextState);\n\t};\n\n\treturn (\n\t\t<span className={`rpc_sensitive_mask ${className}`} style={style}>\n\t\t\t<span className=\"rpc_sensitive_mask_text\">{displayText}</span>\n\n\t\t\t{toggleable && (\n\t\t\t\t<span\n\t\t\t\t\tclassName=\"rpc_sensitive_mask_action_btn\"\n\t\t\t\t\tonClick={handleToggle}\n\t\t\t\t\ttitle={masked ? '点击查看明文' : '点击隐藏'}\n\t\t\t\t>\n\t\t\t\t\t{masked ? <EyeOutlined /> : <EyeInvisibleOutlined />}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t{copyable && <CopyButton mode=\"icon\" text={text} tooltip=\"复制明文\" />}\n\t\t</span>\n\t);\n};\n\nexport default SensitiveMask;\n"]}
@@ -1,4 +1,4 @@
1
- import { PauseCircleOutlined, PlayCircleOutlined, FullscreenExitOutlined, FullscreenOutlined } from './chunk-2IDVNTKR.js';
1
+ import { PauseCircleOutlined, PlayCircleOutlined, FullscreenExitOutlined, FullscreenOutlined } from './chunk-537T6BR3.js';
2
2
  import { useRef, useState } from 'react';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
 
@@ -225,5 +225,5 @@ var VideoPlayer = ({
225
225
  var VideoPlayer_default = VideoPlayer;
226
226
 
227
227
  export { VideoPlayer_default };
228
- //# sourceMappingURL=chunk-MQJBUHDB.js.map
229
- //# sourceMappingURL=chunk-MQJBUHDB.js.map
228
+ //# sourceMappingURL=chunk-MWVME3UR.js.map
229
+ //# sourceMappingURL=chunk-MWVME3UR.js.map