react-public-components 1.2.3 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/dist/AudioPlayer/index.cjs +3 -3
  2. package/dist/AudioPlayer/index.js +2 -2
  3. package/dist/CodeSnippet/index.cjs +3 -2
  4. package/dist/CodeSnippet/index.css +157 -0
  5. package/dist/CodeSnippet/index.css.map +1 -1
  6. package/dist/CodeSnippet/index.d.ts +40 -4
  7. package/dist/CodeSnippet/index.js +2 -1
  8. package/dist/CodeSnippet/sandbox.d.ts +26 -0
  9. package/dist/CollapseBox/index.cjs +3 -3
  10. package/dist/CollapseBox/index.js +2 -2
  11. package/dist/ColorPicker/index.cjs +5 -5
  12. package/dist/ColorPicker/index.js +2 -2
  13. package/dist/ContextMenu/index.cjs +3 -3
  14. package/dist/ContextMenu/index.js +2 -2
  15. package/dist/CopyButton/index.cjs +3 -3
  16. package/dist/CopyButton/index.js +2 -2
  17. package/dist/CronPicker/index.cjs +4 -4
  18. package/dist/CronPicker/index.js +3 -3
  19. package/dist/DebounceSelect/index.cjs +3 -3
  20. package/dist/DebounceSelect/index.js +2 -2
  21. package/dist/DisabledBox/index.cjs +3 -3
  22. package/dist/DisabledBox/index.js +2 -2
  23. package/dist/DragSortList/index.cjs +3 -2
  24. package/dist/DragSortList/index.css +82 -13
  25. package/dist/DragSortList/index.css.map +1 -1
  26. package/dist/DragSortList/index.d.ts +8 -2
  27. package/dist/DragSortList/index.js +2 -1
  28. package/dist/FilePreviewer/index.cjs +4 -4
  29. package/dist/FilePreviewer/index.js +2 -2
  30. package/dist/Fullscreen/index.cjs +3 -3
  31. package/dist/Fullscreen/index.js +2 -2
  32. package/dist/GuidedTour/index.cjs +3 -3
  33. package/dist/GuidedTour/index.js +2 -2
  34. package/dist/ImageCropper/index.cjs +3 -3
  35. package/dist/ImageCropper/index.js +2 -2
  36. package/dist/InfiniteScrollList/index.cjs +3 -3
  37. package/dist/InfiniteScrollList/index.js +2 -2
  38. package/dist/JsonEditor/index.cjs +4 -4
  39. package/dist/JsonEditor/index.js +3 -3
  40. package/dist/KeyValEditor/index.cjs +3 -3
  41. package/dist/KeyValEditor/index.js +2 -2
  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/QrCodeCard/index.cjs +3 -3
  47. package/dist/QrCodeCard/index.css +122 -32
  48. package/dist/QrCodeCard/index.css.map +1 -1
  49. package/dist/QrCodeCard/index.d.ts +10 -2
  50. package/dist/QrCodeCard/index.js +2 -2
  51. package/dist/SensitiveMask/index.cjs +5 -5
  52. package/dist/SensitiveMask/index.js +3 -3
  53. package/dist/Splitter/index.cjs +3 -3
  54. package/dist/Splitter/index.js +2 -2
  55. package/dist/TagInput/index.cjs +3 -3
  56. package/dist/TagInput/index.js +2 -2
  57. package/dist/TextEllipsis/index.cjs +4 -4
  58. package/dist/TextEllipsis/index.js +3 -3
  59. package/dist/TreeTransfer/index.cjs +3 -3
  60. package/dist/TreeTransfer/index.js +2 -2
  61. package/dist/VideoPlayer/index.cjs +3 -3
  62. package/dist/VideoPlayer/index.js +2 -2
  63. package/dist/{chunk-GV2RRQ2S.cjs → chunk-2EIAWXFA.cjs} +5 -5
  64. package/dist/{chunk-GV2RRQ2S.cjs.map → chunk-2EIAWXFA.cjs.map} +1 -1
  65. package/dist/{chunk-ISUXPTLV.js → chunk-2IDVNTKR.js} +93 -3
  66. package/dist/chunk-2IDVNTKR.js.map +1 -0
  67. package/dist/{chunk-6FVAQECF.js → chunk-2INP6NM4.js} +3 -3
  68. package/dist/{chunk-6FVAQECF.js.map → chunk-2INP6NM4.js.map} +1 -1
  69. package/dist/chunk-4KMVABTM.js +419 -0
  70. package/dist/chunk-4KMVABTM.js.map +1 -0
  71. package/dist/{chunk-VS2YVJOB.cjs → chunk-4TMBGQQE.cjs} +5 -5
  72. package/dist/{chunk-VS2YVJOB.cjs.map → chunk-4TMBGQQE.cjs.map} +1 -1
  73. package/dist/{chunk-PJB7ADK6.js → chunk-56VELHCH.js} +3 -3
  74. package/dist/{chunk-PJB7ADK6.js.map → chunk-56VELHCH.js.map} +1 -1
  75. package/dist/{chunk-4BDO5TJH.cjs → chunk-77ANKL4K.cjs} +8 -8
  76. package/dist/{chunk-4BDO5TJH.cjs.map → chunk-77ANKL4K.cjs.map} +1 -1
  77. package/dist/{chunk-OCN7L2ID.cjs → chunk-7ZBA4NHH.cjs} +4 -4
  78. package/dist/{chunk-OCN7L2ID.cjs.map → chunk-7ZBA4NHH.cjs.map} +1 -1
  79. package/dist/{chunk-MY4M7HVW.cjs → chunk-AHTRLNYK.cjs} +5 -5
  80. package/dist/{chunk-MY4M7HVW.cjs.map → chunk-AHTRLNYK.cjs.map} +1 -1
  81. package/dist/{chunk-WEOMKZC6.js → chunk-ANTFNDH4.js} +3 -3
  82. package/dist/{chunk-WEOMKZC6.js.map → chunk-ANTFNDH4.js.map} +1 -1
  83. package/dist/{chunk-EGZSSZBX.js → chunk-AXPVN2OO.js} +3 -3
  84. package/dist/{chunk-EGZSSZBX.js.map → chunk-AXPVN2OO.js.map} +1 -1
  85. package/dist/{chunk-LLWK5VKA.js → chunk-CURWX7OY.js} +3 -3
  86. package/dist/{chunk-LLWK5VKA.js.map → chunk-CURWX7OY.js.map} +1 -1
  87. package/dist/{chunk-WZRUBHS3.cjs → chunk-ED3ZG2VX.cjs} +5 -5
  88. package/dist/{chunk-WZRUBHS3.cjs.map → chunk-ED3ZG2VX.cjs.map} +1 -1
  89. package/dist/{chunk-BZXMWKD2.js → chunk-EDNBPLUS.js} +3 -3
  90. package/dist/{chunk-BZXMWKD2.js.map → chunk-EDNBPLUS.js.map} +1 -1
  91. package/dist/{chunk-MC3NERDH.js → chunk-EJYTTSW6.js} +3 -3
  92. package/dist/{chunk-MC3NERDH.js.map → chunk-EJYTTSW6.js.map} +1 -1
  93. package/dist/{chunk-3UNZXPOT.cjs → chunk-EKDJPOA3.cjs} +5 -5
  94. package/dist/{chunk-3UNZXPOT.cjs.map → chunk-EKDJPOA3.cjs.map} +1 -1
  95. package/dist/{chunk-XWXFENGT.js → chunk-EMT4NUI5.js} +3 -3
  96. package/dist/{chunk-XWXFENGT.js.map → chunk-EMT4NUI5.js.map} +1 -1
  97. package/dist/{chunk-HFPWBZID.js → chunk-ETFLLRTO.js} +3 -3
  98. package/dist/{chunk-HFPWBZID.js.map → chunk-ETFLLRTO.js.map} +1 -1
  99. package/dist/chunk-FZH5FL7X.cjs +167 -0
  100. package/dist/chunk-FZH5FL7X.cjs.map +1 -0
  101. package/dist/{chunk-6UKUAYN3.cjs → chunk-HKALWFWZ.cjs} +5 -5
  102. package/dist/{chunk-6UKUAYN3.cjs.map → chunk-HKALWFWZ.cjs.map} +1 -1
  103. package/dist/{chunk-IBOCJ2ZS.js → chunk-IF4XAUV3.js} +3 -3
  104. package/dist/{chunk-IBOCJ2ZS.js.map → chunk-IF4XAUV3.js.map} +1 -1
  105. package/dist/{chunk-MNY5P5EG.cjs → chunk-IPS7PC3M.cjs} +13 -13
  106. package/dist/{chunk-MNY5P5EG.cjs.map → chunk-IPS7PC3M.cjs.map} +1 -1
  107. package/dist/{chunk-V4O325BX.cjs → chunk-JHVPDKBM.cjs} +6 -6
  108. package/dist/{chunk-V4O325BX.cjs.map → chunk-JHVPDKBM.cjs.map} +1 -1
  109. package/dist/{chunk-6IXVUD2M.js → chunk-JNA5AQ2K.js} +3 -3
  110. package/dist/{chunk-6IXVUD2M.js.map → chunk-JNA5AQ2K.js.map} +1 -1
  111. package/dist/{chunk-NJIYP6SC.cjs → chunk-LFGBZXQH.cjs} +4 -4
  112. package/dist/{chunk-NJIYP6SC.cjs.map → chunk-LFGBZXQH.cjs.map} +1 -1
  113. package/dist/{chunk-ZLWY7QS2.cjs → chunk-M3GQ7RCV.cjs} +4 -4
  114. package/dist/{chunk-ZLWY7QS2.cjs.map → chunk-M3GQ7RCV.cjs.map} +1 -1
  115. package/dist/{chunk-AFR7V4A4.js → chunk-M4FZJALR.js} +4 -4
  116. package/dist/{chunk-AFR7V4A4.js.map → chunk-M4FZJALR.js.map} +1 -1
  117. package/dist/{chunk-CT66HLZ5.js → chunk-MQJBUHDB.js} +3 -3
  118. package/dist/{chunk-CT66HLZ5.js.map → chunk-MQJBUHDB.js.map} +1 -1
  119. package/dist/{chunk-V7IUSCQS.js → chunk-OLLVIQPL.js} +3 -3
  120. package/dist/{chunk-V7IUSCQS.js.map → chunk-OLLVIQPL.js.map} +1 -1
  121. package/dist/{chunk-2DIU347W.cjs → chunk-OONBZRPV.cjs} +4 -4
  122. package/dist/{chunk-2DIU347W.cjs.map → chunk-OONBZRPV.cjs.map} +1 -1
  123. package/dist/{chunk-56TD4LDC.js → chunk-P5CS7V4W.js} +3 -3
  124. package/dist/{chunk-56TD4LDC.js.map → chunk-P5CS7V4W.js.map} +1 -1
  125. package/dist/{chunk-HUXPCMNP.js → chunk-PTFKE67K.js} +3 -3
  126. package/dist/{chunk-HUXPCMNP.js.map → chunk-PTFKE67K.js.map} +1 -1
  127. package/dist/{chunk-PUTAVQJZ.js → chunk-PUMVD7CP.js} +3 -3
  128. package/dist/{chunk-PUTAVQJZ.js.map → chunk-PUMVD7CP.js.map} +1 -1
  129. package/dist/{chunk-KXZM322K.cjs → chunk-PYCSRJSF.cjs} +7 -7
  130. package/dist/{chunk-KXZM322K.cjs.map → chunk-PYCSRJSF.cjs.map} +1 -1
  131. package/dist/{chunk-PUJJHD22.js → chunk-Q7OVUH5K.js} +3 -3
  132. package/dist/{chunk-PUJJHD22.js.map → chunk-Q7OVUH5K.js.map} +1 -1
  133. package/dist/{chunk-2UCTE6YN.cjs → chunk-QP3RKA4J.cjs} +4 -4
  134. package/dist/{chunk-2UCTE6YN.cjs.map → chunk-QP3RKA4J.cjs.map} +1 -1
  135. package/dist/{chunk-OKCQZO5E.js → chunk-QRZ2GVVJ.js} +3 -3
  136. package/dist/{chunk-OKCQZO5E.js.map → chunk-QRZ2GVVJ.js.map} +1 -1
  137. package/dist/{chunk-MBOWSS4B.cjs → chunk-R4V3EJVP.cjs} +98 -2
  138. package/dist/chunk-R4V3EJVP.cjs.map +1 -0
  139. package/dist/{chunk-4OXVTRYV.cjs → chunk-RN5WU7KA.cjs} +7 -7
  140. package/dist/{chunk-4OXVTRYV.cjs.map → chunk-RN5WU7KA.cjs.map} +1 -1
  141. package/dist/{chunk-WWXBH57R.cjs → chunk-TNZ2OLGW.cjs} +4 -4
  142. package/dist/{chunk-WWXBH57R.cjs.map → chunk-TNZ2OLGW.cjs.map} +1 -1
  143. package/dist/chunk-TUDLE3RT.cjs +429 -0
  144. package/dist/chunk-TUDLE3RT.cjs.map +1 -0
  145. package/dist/{chunk-B7NN6SZD.cjs → chunk-TUEVILTA.cjs} +5 -5
  146. package/dist/{chunk-B7NN6SZD.cjs.map → chunk-TUEVILTA.cjs.map} +1 -1
  147. package/dist/{chunk-ZUW3XLZQ.cjs → chunk-U2EBNBGK.cjs} +4 -4
  148. package/dist/{chunk-ZUW3XLZQ.cjs.map → chunk-U2EBNBGK.cjs.map} +1 -1
  149. package/dist/{chunk-JAW7Q2YC.cjs → chunk-UAUP5TJK.cjs} +5 -5
  150. package/dist/{chunk-JAW7Q2YC.cjs.map → chunk-UAUP5TJK.cjs.map} +1 -1
  151. package/dist/{chunk-2MDYHFLH.cjs → chunk-UZB7GOEI.cjs} +4 -4
  152. package/dist/{chunk-2MDYHFLH.cjs.map → chunk-UZB7GOEI.cjs.map} +1 -1
  153. package/dist/{chunk-ZNFW6L3E.cjs → chunk-VJOO2DG3.cjs} +8 -8
  154. package/dist/{chunk-ZNFW6L3E.cjs.map → chunk-VJOO2DG3.cjs.map} +1 -1
  155. package/dist/{chunk-JECYRODB.js → chunk-W5JA3YTT.js} +3 -3
  156. package/dist/{chunk-JECYRODB.js.map → chunk-W5JA3YTT.js.map} +1 -1
  157. package/dist/{chunk-QZZGBUW4.js → chunk-WKF4C6TJ.js} +3 -3
  158. package/dist/{chunk-QZZGBUW4.js.map → chunk-WKF4C6TJ.js.map} +1 -1
  159. package/dist/{chunk-64LBDDZU.js → chunk-XLOGMDAQ.js} +3 -3
  160. package/dist/{chunk-64LBDDZU.js.map → chunk-XLOGMDAQ.js.map} +1 -1
  161. package/dist/chunk-XUAHWX6B.js +153 -0
  162. package/dist/chunk-XUAHWX6B.js.map +1 -0
  163. package/dist/chunk-Y54KVULF.js +161 -0
  164. package/dist/chunk-Y54KVULF.js.map +1 -0
  165. package/dist/{chunk-NUTVJGVT.cjs → chunk-YP4XTMK3.cjs} +4 -4
  166. package/dist/{chunk-NUTVJGVT.cjs.map → chunk-YP4XTMK3.cjs.map} +1 -1
  167. package/dist/{chunk-MGUNFP6P.js → chunk-ZCBT56AG.js} +3 -3
  168. package/dist/{chunk-MGUNFP6P.js.map → chunk-ZCBT56AG.js.map} +1 -1
  169. package/dist/chunk-ZWKUHYTV.cjs +155 -0
  170. package/dist/chunk-ZWKUHYTV.cjs.map +1 -0
  171. package/dist/index.cjs +74 -58
  172. package/dist/index.css +361 -45
  173. package/dist/index.css.map +1 -1
  174. package/dist/index.js +27 -27
  175. package/dist/src/icons.d.ts +18 -0
  176. package/dist/src/index.d.ts +3 -1
  177. package/package.json +1 -1
  178. package/dist/chunk-5VSEUDVY.js +0 -45
  179. package/dist/chunk-5VSEUDVY.js.map +0 -1
  180. package/dist/chunk-EOGYWPX7.cjs +0 -47
  181. package/dist/chunk-EOGYWPX7.cjs.map +0 -1
  182. package/dist/chunk-EQ7S5SYM.js +0 -67
  183. package/dist/chunk-EQ7S5SYM.js.map +0 -1
  184. package/dist/chunk-FYFL4PFD.cjs +0 -69
  185. package/dist/chunk-FYFL4PFD.cjs.map +0 -1
  186. package/dist/chunk-ISUXPTLV.js.map +0 -1
  187. package/dist/chunk-JEDW76LI.cjs +0 -107
  188. package/dist/chunk-JEDW76LI.cjs.map +0 -1
  189. package/dist/chunk-MBOWSS4B.cjs.map +0 -1
  190. package/dist/chunk-XOMV26WS.js +0 -105
  191. package/dist/chunk-XOMV26WS.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkJAW7Q2YC_cjs = require('./chunk-JAW7Q2YC.cjs');
3
+ var chunkUAUP5TJK_cjs = require('./chunk-UAUP5TJK.cjs');
4
4
  var React = require('react');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
 
@@ -75,7 +75,7 @@ var TextEllipsis = ({
75
75
  }
76
76
  ),
77
77
  expandable && (isOverflow || expanded) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_text_ellipsis_action_btn", onClick: handleToggleExpand, children: expanded ? expandedBtnText : collapsedBtnText }),
78
- copyable && rawText && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_text_ellipsis_suffix", children: /* @__PURE__ */ jsxRuntime.jsx(chunkJAW7Q2YC_cjs.CopyButton_default, { mode: "icon", text: rawText, tooltip: false }) }),
78
+ copyable && rawText && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_text_ellipsis_suffix", children: /* @__PURE__ */ jsxRuntime.jsx(chunkUAUP5TJK_cjs.CopyButton_default, { mode: "icon", text: rawText, tooltip: false }) }),
79
79
  suffix && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_text_ellipsis_suffix", children: suffix }),
80
80
  shouldShowTooltip && tooltipText && /* @__PURE__ */ jsxRuntime.jsx(
81
81
  "div",
@@ -91,5 +91,5 @@ var TextEllipsis = ({
91
91
  var TextEllipsis_default = TextEllipsis;
92
92
 
93
93
  exports.TextEllipsis_default = TextEllipsis_default;
94
- //# sourceMappingURL=chunk-WWXBH57R.cjs.map
95
- //# sourceMappingURL=chunk-WWXBH57R.cjs.map
94
+ //# sourceMappingURL=chunk-TNZ2OLGW.cjs.map
95
+ //# sourceMappingURL=chunk-TNZ2OLGW.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../TextEllipsis/index.tsx"],"names":["useState","useRef","useEffect","_a","React","jsxs","jsx","CopyButton_default"],"mappings":"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","file":"chunk-WWXBH57R.cjs","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport CopyButton from '../CopyButton';\nimport './index.less';\n\nexport interface TextEllipsisExpandConfig {\n\t/** 展开按钮文案,默认为 '展开' */\n\tcollapsedText?: ReactNode;\n\t/** 收起按钮文案,默认为 '收起' */\n\texpandedText?: ReactNode;\n\t/** 默认是否展开 */\n\tdefaultExpanded?: boolean;\n\t/** 展开状态改变回调 */\n\tonExpandChange?: (expanded: boolean) => void;\n}\n\nexport interface TextEllipsisProps {\n\t/** 显示的文本或节点 */\n\tchildren: ReactNode;\n\t/** 最大显示行数,超过则截断,默认为 1 */\n\tlines?: number;\n\t/** 是否支持展开/收起,可传 boolean 或配置对象 */\n\texpandable?: boolean | TextEllipsisExpandConfig;\n\t/** Tooltip 浮层展示配置:'auto' 仅在溢出截断时展示、true 始终在 hover 时展示、false 禁用 */\n\ttooltip?: 'auto' | boolean | ReactNode;\n\t/** 是否显示复制按钮 */\n\tcopyable?: boolean;\n\t/** 前缀节点 */\n\tprefix?: ReactNode;\n\t/** 后缀节点 */\n\tsuffix?: ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst TextEllipsis: React.FC<TextEllipsisProps> = ({\n\tchildren,\n\tlines = 1,\n\texpandable = false,\n\ttooltip = 'auto',\n\tcopyable = false,\n\tprefix,\n\tsuffix,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst expandConfig = typeof expandable === 'object' ? expandable : {};\n\tconst [expanded, setExpanded] = useState<boolean>(expandConfig.defaultExpanded ?? false);\n\tconst [isOverflow, setIsOverflow] = useState<boolean>(false);\n\tconst [isHovered, setIsHovered] = useState<boolean>(false);\n\tconst textRef = useRef<HTMLDivElement>(null);\n\n\t// 检测文本是否发生溢出截断\n\tconst checkOverflow = () => {\n\t\tconst el = textRef.current;\n\t\tif (!el) return;\n\t\tif (lines === 1) {\n\t\t\tsetIsOverflow(el.scrollWidth > el.clientWidth);\n\t\t} else {\n\t\t\tsetIsOverflow(el.scrollHeight > el.clientHeight);\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tcheckOverflow();\n\t\twindow.addEventListener('resize', checkOverflow);\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', checkOverflow);\n\t\t};\n\t}, [children, lines, expanded]);\n\n\tconst handleToggleExpand = (e: React.MouseEvent) => {\n\t\te.stopPropagation();\n\t\tconst nextState = !expanded;\n\t\tsetExpanded(nextState);\n\t\texpandConfig.onExpandChange?.(nextState);\n\t};\n\n\t// 提取纯文本用于复制和默认 Tooltip\n\tconst rawText =\n\t\ttypeof children === 'string' || typeof children === 'number' ? String(children) : '';\n\n\t// 判断是否展示 Tooltip\n\tconst shouldShowTooltip =\n\t\t!expanded &&\n\t\t(tooltip === true ||\n\t\t\t(tooltip === 'auto' && isOverflow) ||\n\t\t\t(typeof tooltip === 'string' && tooltip.length > 0));\n\n\tconst tooltipText =\n\t\ttypeof tooltip === 'string' || React.isValidElement(tooltip) ? tooltip : rawText;\n\n\tconst collapsedBtnText = expandConfig.collapsedText ?? '展开';\n\tconst expandedBtnText = expandConfig.expandedText ?? '收起';\n\n\tconst isSingleLine = lines <= 1;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`rpc_text_ellipsis ${className}`}\n\t\t\tstyle={style}\n\t\t\tonMouseEnter={() => setIsHovered(true)}\n\t\t\tonMouseLeave={() => setIsHovered(false)}\n\t\t>\n\t\t\t{prefix && <span className=\"rpc_text_ellipsis_prefix\">{prefix}</span>}\n\n\t\t\t<div\n\t\t\t\tref={textRef}\n\t\t\t\tclassName={`rpc_text_ellipsis_content_wrap ${\n\t\t\t\t\texpanded\n\t\t\t\t\t\t? 'rpc_text_ellipsis_expanded'\n\t\t\t\t\t\t: isSingleLine\n\t\t\t\t\t\t\t? 'rpc_text_ellipsis_single_line'\n\t\t\t\t\t\t\t: 'rpc_text_ellipsis_multi_line'\n\t\t\t\t}`}\n\t\t\t\tstyle={{\n\t\t\t\t\tWebkitLineClamp: expanded ? undefined : lines > 1 ? lines : undefined,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\n\t\t\t{expandable && (isOverflow || expanded) && (\n\t\t\t\t<span className=\"rpc_text_ellipsis_action_btn\" onClick={handleToggleExpand}>\n\t\t\t\t\t{expanded ? expandedBtnText : collapsedBtnText}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t{copyable && rawText && (\n\t\t\t\t<span className=\"rpc_text_ellipsis_suffix\">\n\t\t\t\t\t<CopyButton mode=\"icon\" text={rawText} tooltip={false} />\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t{suffix && <span className=\"rpc_text_ellipsis_suffix\">{suffix}</span>}\n\n\t\t\t{shouldShowTooltip && tooltipText && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={`rpc_text_ellipsis_tooltip ${\n\t\t\t\t\t\tisHovered ? 'rpc_text_ellipsis_tooltip_visible' : ''\n\t\t\t\t\t}`}\n\t\t\t\t>\n\t\t\t\t\t{tooltipText}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default TextEllipsis;\n"]}
1
+ {"version":3,"sources":["../TextEllipsis/index.tsx"],"names":["useState","useRef","useEffect","_a","React","jsxs","jsx","CopyButton_default"],"mappings":"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","file":"chunk-TNZ2OLGW.cjs","sourcesContent":["import React, { useState, useRef, useEffect, ReactNode, CSSProperties } from 'react';\nimport CopyButton from '../CopyButton';\nimport './index.less';\n\nexport interface TextEllipsisExpandConfig {\n\t/** 展开按钮文案,默认为 '展开' */\n\tcollapsedText?: ReactNode;\n\t/** 收起按钮文案,默认为 '收起' */\n\texpandedText?: ReactNode;\n\t/** 默认是否展开 */\n\tdefaultExpanded?: boolean;\n\t/** 展开状态改变回调 */\n\tonExpandChange?: (expanded: boolean) => void;\n}\n\nexport interface TextEllipsisProps {\n\t/** 显示的文本或节点 */\n\tchildren: ReactNode;\n\t/** 最大显示行数,超过则截断,默认为 1 */\n\tlines?: number;\n\t/** 是否支持展开/收起,可传 boolean 或配置对象 */\n\texpandable?: boolean | TextEllipsisExpandConfig;\n\t/** Tooltip 浮层展示配置:'auto' 仅在溢出截断时展示、true 始终在 hover 时展示、false 禁用 */\n\ttooltip?: 'auto' | boolean | ReactNode;\n\t/** 是否显示复制按钮 */\n\tcopyable?: boolean;\n\t/** 前缀节点 */\n\tprefix?: ReactNode;\n\t/** 后缀节点 */\n\tsuffix?: ReactNode;\n\t/** 自定义类名 */\n\tclassName?: string;\n\t/** 自定义样式 */\n\tstyle?: CSSProperties;\n}\n\nconst TextEllipsis: React.FC<TextEllipsisProps> = ({\n\tchildren,\n\tlines = 1,\n\texpandable = false,\n\ttooltip = 'auto',\n\tcopyable = false,\n\tprefix,\n\tsuffix,\n\tclassName = '',\n\tstyle,\n}) => {\n\tconst expandConfig = typeof expandable === 'object' ? expandable : {};\n\tconst [expanded, setExpanded] = useState<boolean>(expandConfig.defaultExpanded ?? false);\n\tconst [isOverflow, setIsOverflow] = useState<boolean>(false);\n\tconst [isHovered, setIsHovered] = useState<boolean>(false);\n\tconst textRef = useRef<HTMLDivElement>(null);\n\n\t// 检测文本是否发生溢出截断\n\tconst checkOverflow = () => {\n\t\tconst el = textRef.current;\n\t\tif (!el) return;\n\t\tif (lines === 1) {\n\t\t\tsetIsOverflow(el.scrollWidth > el.clientWidth);\n\t\t} else {\n\t\t\tsetIsOverflow(el.scrollHeight > el.clientHeight);\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tcheckOverflow();\n\t\twindow.addEventListener('resize', checkOverflow);\n\t\treturn () => {\n\t\t\twindow.removeEventListener('resize', checkOverflow);\n\t\t};\n\t}, [children, lines, expanded]);\n\n\tconst handleToggleExpand = (e: React.MouseEvent) => {\n\t\te.stopPropagation();\n\t\tconst nextState = !expanded;\n\t\tsetExpanded(nextState);\n\t\texpandConfig.onExpandChange?.(nextState);\n\t};\n\n\t// 提取纯文本用于复制和默认 Tooltip\n\tconst rawText =\n\t\ttypeof children === 'string' || typeof children === 'number' ? String(children) : '';\n\n\t// 判断是否展示 Tooltip\n\tconst shouldShowTooltip =\n\t\t!expanded &&\n\t\t(tooltip === true ||\n\t\t\t(tooltip === 'auto' && isOverflow) ||\n\t\t\t(typeof tooltip === 'string' && tooltip.length > 0));\n\n\tconst tooltipText =\n\t\ttypeof tooltip === 'string' || React.isValidElement(tooltip) ? tooltip : rawText;\n\n\tconst collapsedBtnText = expandConfig.collapsedText ?? '展开';\n\tconst expandedBtnText = expandConfig.expandedText ?? '收起';\n\n\tconst isSingleLine = lines <= 1;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={`rpc_text_ellipsis ${className}`}\n\t\t\tstyle={style}\n\t\t\tonMouseEnter={() => setIsHovered(true)}\n\t\t\tonMouseLeave={() => setIsHovered(false)}\n\t\t>\n\t\t\t{prefix && <span className=\"rpc_text_ellipsis_prefix\">{prefix}</span>}\n\n\t\t\t<div\n\t\t\t\tref={textRef}\n\t\t\t\tclassName={`rpc_text_ellipsis_content_wrap ${\n\t\t\t\t\texpanded\n\t\t\t\t\t\t? 'rpc_text_ellipsis_expanded'\n\t\t\t\t\t\t: isSingleLine\n\t\t\t\t\t\t\t? 'rpc_text_ellipsis_single_line'\n\t\t\t\t\t\t\t: 'rpc_text_ellipsis_multi_line'\n\t\t\t\t}`}\n\t\t\t\tstyle={{\n\t\t\t\t\tWebkitLineClamp: expanded ? undefined : lines > 1 ? lines : undefined,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\n\t\t\t{expandable && (isOverflow || expanded) && (\n\t\t\t\t<span className=\"rpc_text_ellipsis_action_btn\" onClick={handleToggleExpand}>\n\t\t\t\t\t{expanded ? expandedBtnText : collapsedBtnText}\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t{copyable && rawText && (\n\t\t\t\t<span className=\"rpc_text_ellipsis_suffix\">\n\t\t\t\t\t<CopyButton mode=\"icon\" text={rawText} tooltip={false} />\n\t\t\t\t</span>\n\t\t\t)}\n\n\t\t\t{suffix && <span className=\"rpc_text_ellipsis_suffix\">{suffix}</span>}\n\n\t\t\t{shouldShowTooltip && tooltipText && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={`rpc_text_ellipsis_tooltip ${\n\t\t\t\t\t\tisHovered ? 'rpc_text_ellipsis_tooltip_visible' : ''\n\t\t\t\t\t}`}\n\t\t\t\t>\n\t\t\t\t\t{tooltipText}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\nexport default TextEllipsis;\n"]}
@@ -0,0 +1,429 @@
1
+ 'use strict';
2
+
3
+ var chunkR4V3EJVP_cjs = require('./chunk-R4V3EJVP.cjs');
4
+ var React = require('react');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var React__default = /*#__PURE__*/_interopDefault(React);
10
+
11
+ // CodeSnippet/sandbox.ts
12
+ var defaultPackageJson = (dependencies = {}, devDependencies = {}) => ({
13
+ name: "react-public-components-demo",
14
+ version: "1.0.0",
15
+ description: "Interactive demo generated by react-public-components",
16
+ main: "src/index.tsx",
17
+ dependencies: {
18
+ react: "^18.3.1",
19
+ "react-dom": "^18.3.1",
20
+ "react-public-components": "latest",
21
+ ...dependencies
22
+ },
23
+ devDependencies: {
24
+ "@types/react": "^18.3.3",
25
+ "@types/react-dom": "^18.3.0",
26
+ typescript: "^5.5.0",
27
+ ...devDependencies
28
+ }
29
+ });
30
+ var defaultHtml = `<!DOCTYPE html>
31
+ <html lang="zh-CN">
32
+ <head>
33
+ <meta charset="utf-8" />
34
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
35
+ <title>React Public Components Demo</title>
36
+ <link rel="stylesheet" href="https://unpkg.com/react-public-components/dist/index.css" />
37
+ <style>
38
+ * { box-sizing: border-box; }
39
+ body { margin: 0; padding: 24px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; background: #f8fafc; }
40
+ </style>
41
+ </head>
42
+ <body>
43
+ <div id="root"></div>
44
+ </body>
45
+ </html>`;
46
+ var defaultIndexTsx = `import React from 'react';
47
+ import { createRoot } from 'react-dom/client';
48
+ import 'react-public-components/dist/index.css';
49
+ import App from './App';
50
+
51
+ const container = document.getElementById('root');
52
+ if (container) {
53
+ const root = createRoot(container);
54
+ root.render(
55
+ <React.StrictMode>
56
+ <App />
57
+ </React.StrictMode>
58
+ );
59
+ }`;
60
+ function openInStackBlitz(code, config = {}) {
61
+ const form = document.createElement("form");
62
+ form.method = "POST";
63
+ form.action = "https://stackblitz.com/run";
64
+ form.target = "_blank";
65
+ form.style.display = "none";
66
+ const pkg = defaultPackageJson(config.dependencies, config.devDependencies);
67
+ const fields = {
68
+ "project[title]": config.title || "react-public-components Demo",
69
+ "project[description]": config.description || "Live Component Demo",
70
+ "project[template]": "create-react-app",
71
+ "project[files][package.json]": JSON.stringify(pkg, null, 2),
72
+ "project[files][public/index.html]": defaultHtml,
73
+ "project[files][src/index.tsx]": defaultIndexTsx,
74
+ "project[files][src/App.tsx]": code,
75
+ "project[files][tsconfig.json]": JSON.stringify(
76
+ {
77
+ compilerOptions: {
78
+ target: "es5",
79
+ lib: ["dom", "dom.iterable", "esnext"],
80
+ allowJs: true,
81
+ skipLibCheck: true,
82
+ esModuleInterop: true,
83
+ allowSyntheticDefaultImports: true,
84
+ strict: true,
85
+ forceConsistentCasingInFileNames: true,
86
+ noFallthroughCasesInSwitch: true,
87
+ module: "esnext",
88
+ moduleResolution: "node",
89
+ resolveJsonModule: true,
90
+ isolatedModules: true,
91
+ noEmit: true,
92
+ jsx: "react-jsx"
93
+ },
94
+ include: ["src"]
95
+ },
96
+ null,
97
+ 2
98
+ )
99
+ };
100
+ Object.entries(fields).forEach(([key, val]) => {
101
+ const input = document.createElement("input");
102
+ input.type = "hidden";
103
+ input.name = key;
104
+ input.value = val;
105
+ form.appendChild(input);
106
+ });
107
+ document.body.appendChild(form);
108
+ form.submit();
109
+ document.body.removeChild(form);
110
+ }
111
+ function openInCodeSandbox(code, config = {}) {
112
+ const pkg = defaultPackageJson(config.dependencies, config.devDependencies);
113
+ const files = {
114
+ "package.json": {
115
+ content: JSON.stringify(pkg, null, 2)
116
+ },
117
+ "public/index.html": {
118
+ content: defaultHtml
119
+ },
120
+ "src/index.tsx": {
121
+ content: defaultIndexTsx
122
+ },
123
+ "src/App.tsx": {
124
+ content: code
125
+ }
126
+ };
127
+ fetch("https://codesandbox.io/api/v1/sandboxes/define?json=1", {
128
+ method: "POST",
129
+ headers: {
130
+ "Content-Type": "application/json",
131
+ Accept: "application/json"
132
+ },
133
+ body: JSON.stringify({ files })
134
+ }).then((res) => res.json()).then((data) => {
135
+ if (data && data.sandbox_id) {
136
+ window.open(`https://codesandbox.io/s/${data.sandbox_id}`, "_blank");
137
+ }
138
+ }).catch(() => {
139
+ openInStackBlitz(code, config);
140
+ });
141
+ }
142
+ function openInCodePen(code, config = {}) {
143
+ const form = document.createElement("form");
144
+ form.method = "POST";
145
+ form.action = "https://codepen.io/pen/define/";
146
+ form.target = "_blank";
147
+ form.style.display = "none";
148
+ let cleanJs = code.replace(/import\s+[\s\S]*?from\s+['"][^'"]+['"];?/g, "").replace(/export\s+default\s+App;?/g, "").replace(/export\s+default\s+/g, "");
149
+ cleanJs += '\n\nconst root = ReactDOM.createRoot(document.getElementById("root"));\nroot.render(<App />);';
150
+ const data = {
151
+ title: config.title || "react-public-components Demo",
152
+ description: config.description || "Live Component Demo",
153
+ html: '<div id="root"></div>',
154
+ js: cleanJs,
155
+ js_pre_processor: "babel",
156
+ css: 'body { margin: 0; padding: 24px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; background: #f8fafc; }',
157
+ js_external: [
158
+ "https://unpkg.com/react@18/umd/react.production.min.js",
159
+ "https://unpkg.com/react-dom@18/umd/react-dom.production.min.js",
160
+ "https://unpkg.com/react-public-components/dist/index.umd.js"
161
+ ].join(";"),
162
+ css_external: [
163
+ "https://unpkg.com/react-public-components/dist/index.css"
164
+ ].join(";")
165
+ };
166
+ const input = document.createElement("input");
167
+ input.type = "hidden";
168
+ input.name = "data";
169
+ input.value = JSON.stringify(data);
170
+ form.appendChild(input);
171
+ document.body.appendChild(form);
172
+ form.submit();
173
+ document.body.removeChild(form);
174
+ }
175
+ function openInNewTab(code, title = "Demo Preview") {
176
+ const newWin = window.open("", "_blank");
177
+ if (!newWin) return;
178
+ const htmlContent = `<!DOCTYPE html>
179
+ <html>
180
+ <head>
181
+ <meta charset="utf-8" />
182
+ <title>${title}</title>
183
+ <link rel="stylesheet" href="https://unpkg.com/react-public-components/dist/index.css" />
184
+ <script src="https://unpkg.com/react@18/umd/react.production.min.js"></script>
185
+ <script src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script>
186
+ <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
187
+ <style>
188
+ * { box-sizing: border-box; }
189
+ body { margin: 0; padding: 24px; background: #f8fafc; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; }
190
+ #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; }
191
+ </style>
192
+ </head>
193
+ <body>
194
+ <div id="root"></div>
195
+ <script type="text/babel">
196
+ const { useState, useEffect, useRef, useMemo, useCallback } = React;
197
+
198
+ ${code.replace(/import\s+[\s\S]*?from\s+['"][^'"]+['"];?/g, "").replace(/export\s+default\s+App;?/g, "").replace(/export\s+default\s+/g, "")}
199
+
200
+ if (typeof App !== 'undefined') {
201
+ const root = ReactDOM.createRoot(document.getElementById('root'));
202
+ root.render(<App />);
203
+ }
204
+ </script>
205
+ </body>
206
+ </html>`;
207
+ newWin.document.open();
208
+ newWin.document.write(htmlContent);
209
+ newWin.document.close();
210
+ }
211
+ var CodeSnippet = ({
212
+ code: singleCode = "",
213
+ language: defaultLang = "tsx",
214
+ theme = "dark",
215
+ title,
216
+ showLineNumbers = false,
217
+ copyable = true,
218
+ tabs,
219
+ activeTabKey: controlledTabKey,
220
+ defaultActiveTabKey,
221
+ onTabChange,
222
+ showActions = false,
223
+ actions = ["codesandbox", "codepen", "stackblitz", "external", "copy", "collapse"],
224
+ onAction,
225
+ sandboxConfig,
226
+ externalUrl,
227
+ collapsible = false,
228
+ defaultCollapsed = false,
229
+ collapsed: controlledCollapsed,
230
+ onCollapseChange,
231
+ showCollapseFooter = false,
232
+ className = "",
233
+ style
234
+ }) => {
235
+ const hasTabs = Array.isArray(tabs) && tabs.length > 0;
236
+ const [internalTabKey, setInternalTabKey] = React.useState(
237
+ defaultActiveTabKey != null ? defaultActiveTabKey : hasTabs ? tabs[0].key : ""
238
+ );
239
+ const activeKey = controlledTabKey !== void 0 ? controlledTabKey : internalTabKey;
240
+ const [internalCollapsed, setInternalCollapsed] = React.useState(defaultCollapsed);
241
+ const isCollapsed = controlledCollapsed !== void 0 ? controlledCollapsed : internalCollapsed;
242
+ const [copied, setCopied] = React.useState(false);
243
+ const currentTab = hasTabs ? tabs.find((t) => t.key === activeKey) || tabs[0] : null;
244
+ const currentCode = currentTab ? currentTab.code : singleCode;
245
+ const currentLanguage = currentTab ? currentTab.language || defaultLang : defaultLang;
246
+ const handleCopy = async () => {
247
+ try {
248
+ await navigator.clipboard.writeText(currentCode);
249
+ setCopied(true);
250
+ setTimeout(() => setCopied(false), 1500);
251
+ onAction == null ? void 0 : onAction("copy");
252
+ } catch (e) {
253
+ }
254
+ };
255
+ const handleToggleCollapse = () => {
256
+ const next = !isCollapsed;
257
+ if (controlledCollapsed === void 0) {
258
+ setInternalCollapsed(next);
259
+ }
260
+ onCollapseChange == null ? void 0 : onCollapseChange(next);
261
+ onAction == null ? void 0 : onAction("collapse");
262
+ };
263
+ const handleActionClick = (action) => {
264
+ const config = {
265
+ title: typeof title === "string" ? title : "react-public-components Demo",
266
+ ...sandboxConfig
267
+ };
268
+ if (action === "codesandbox") {
269
+ openInCodeSandbox(currentCode, config);
270
+ } else if (action === "codepen") {
271
+ openInCodePen(currentCode, config);
272
+ } else if (action === "stackblitz") {
273
+ openInStackBlitz(currentCode, config);
274
+ } else if (action === "external") {
275
+ if (externalUrl) {
276
+ window.open(externalUrl, "_blank");
277
+ } else {
278
+ openInNewTab(currentCode, config.title || "Demo Preview");
279
+ }
280
+ } else if (action === "copy") {
281
+ handleCopy();
282
+ return;
283
+ } else if (action === "collapse") {
284
+ handleToggleCollapse();
285
+ return;
286
+ }
287
+ onAction == null ? void 0 : onAction(action);
288
+ };
289
+ const handleTabClick = (key) => {
290
+ if (controlledTabKey === void 0) {
291
+ setInternalTabKey(key);
292
+ }
293
+ onTabChange == null ? void 0 : onTabChange(key);
294
+ };
295
+ const lines = currentCode.split("\n");
296
+ return /* @__PURE__ */ jsxRuntime.jsxs(
297
+ "div",
298
+ {
299
+ className: `rpc_code_snippet rpc_code_snippet_${theme} ${isCollapsed ? "rpc_code_snippet_collapsed" : ""} ${className}`,
300
+ style,
301
+ children: [
302
+ showActions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rpc_code_snippet_actions_bar", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rpc_code_snippet_actions_list", children: actions.map((act, index) => {
303
+ if (typeof act !== "string") {
304
+ return /* @__PURE__ */ jsxRuntime.jsx(React__default.default.Fragment, { children: act }, index);
305
+ }
306
+ switch (act) {
307
+ case "codesandbox":
308
+ return /* @__PURE__ */ jsxRuntime.jsx(
309
+ "button",
310
+ {
311
+ type: "button",
312
+ className: "rpc_code_snippet_action_btn",
313
+ title: "\u5728 CodeSandbox \u4E2D\u6253\u5F00\u5E76\u5728\u7EBF\u8FD0\u884C",
314
+ onClick: () => handleActionClick("codesandbox"),
315
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.CodeSandboxOutlined, {})
316
+ },
317
+ "codesandbox"
318
+ );
319
+ case "codepen":
320
+ return /* @__PURE__ */ jsxRuntime.jsx(
321
+ "button",
322
+ {
323
+ type: "button",
324
+ className: "rpc_code_snippet_action_btn",
325
+ title: "\u5728 CodePen \u4E2D\u6253\u5F00\u5E76\u6F14\u7EC3",
326
+ onClick: () => handleActionClick("codepen"),
327
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.CodePenOutlined, {})
328
+ },
329
+ "codepen"
330
+ );
331
+ case "stackblitz":
332
+ return /* @__PURE__ */ jsxRuntime.jsx(
333
+ "button",
334
+ {
335
+ type: "button",
336
+ className: "rpc_code_snippet_action_btn",
337
+ title: "\u5728 StackBlitz \u4E2D\u6781\u901F\u542F\u52A8",
338
+ onClick: () => handleActionClick("stackblitz"),
339
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.ThunderboltOutlined, {})
340
+ },
341
+ "stackblitz"
342
+ );
343
+ case "external":
344
+ return /* @__PURE__ */ jsxRuntime.jsx(
345
+ "button",
346
+ {
347
+ type: "button",
348
+ className: "rpc_code_snippet_action_btn",
349
+ title: "\u5728\u72EC\u7ACB\u65B0\u6807\u7B7E\u9875\u4E2D\u5168\u5C4F\u8FD0\u884C",
350
+ onClick: () => handleActionClick("external"),
351
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.ExportOutlined, {})
352
+ },
353
+ "external"
354
+ );
355
+ case "copy":
356
+ return /* @__PURE__ */ jsxRuntime.jsx(
357
+ "button",
358
+ {
359
+ type: "button",
360
+ className: `rpc_code_snippet_action_btn ${copied ? "rpc_code_snippet_action_copied" : ""}`,
361
+ title: copied ? "\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F\uFF01" : "\u590D\u5236\u4EE3\u7801",
362
+ onClick: () => handleActionClick("copy"),
363
+ children: copied ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.CheckOutlined, { style: { color: "#52c41a" } }) : /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.CopyOutlined, {})
364
+ },
365
+ "copy"
366
+ );
367
+ case "collapse":
368
+ return /* @__PURE__ */ jsxRuntime.jsx(
369
+ "button",
370
+ {
371
+ type: "button",
372
+ className: `rpc_code_snippet_action_btn ${!isCollapsed ? "rpc_code_snippet_action_active" : ""}`,
373
+ title: isCollapsed ? "\u5C55\u5F00\u4EE3\u7801" : "\u6536\u8D77\u4EE3\u7801",
374
+ onClick: () => handleActionClick("collapse"),
375
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.CodeOutlined, {})
376
+ },
377
+ "collapse"
378
+ );
379
+ default:
380
+ return null;
381
+ }
382
+ }) }) }),
383
+ hasTabs && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rpc_code_snippet_tabs_bar", children: tabs.map((tab) => /* @__PURE__ */ jsxRuntime.jsx(
384
+ "div",
385
+ {
386
+ className: `rpc_code_snippet_tab_item ${tab.key === activeKey ? "rpc_code_snippet_tab_active" : ""}`,
387
+ onClick: () => handleTabClick(tab.key),
388
+ children: tab.label
389
+ },
390
+ tab.key
391
+ )) }),
392
+ !showActions && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_code_snippet_top_bar", children: [
393
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_code_snippet_dots", children: [
394
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_code_snippet_dot rpc_code_snippet_dot_red" }),
395
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_code_snippet_dot rpc_code_snippet_dot_yellow" }),
396
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_code_snippet_dot rpc_code_snippet_dot_green" })
397
+ ] }),
398
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rpc_code_snippet_lang", children: title != null ? title : currentLanguage }),
399
+ copyable ? /* @__PURE__ */ jsxRuntime.jsx("button", { type: "button", className: "rpc_code_snippet_copy_btn", onClick: handleCopy, children: copied ? "\u2713 \u5DF2\u590D\u5236" : "\u590D\u5236" }) : /* @__PURE__ */ jsxRuntime.jsx("span", {})
400
+ ] }),
401
+ !isCollapsed && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rpc_code_snippet_body", children: [
402
+ 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
+ /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "rpc_code_snippet_content", children: /* @__PURE__ */ jsxRuntime.jsx("code", { children: currentCode }) }),
404
+ 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, {}),
406
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 11, marginLeft: 4 }, children: currentLanguage })
407
+ ] })
408
+ ] }),
409
+ (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 } }),
411
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "\u6536\u8D77\u4EE3\u7801" })
412
+ ] }),
413
+ (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 } }),
415
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "\u5C55\u5F00\u4EE3\u7801" })
416
+ ] })
417
+ ]
418
+ }
419
+ );
420
+ };
421
+ var CodeSnippet_default = CodeSnippet;
422
+
423
+ exports.CodeSnippet_default = CodeSnippet_default;
424
+ exports.openInCodePen = openInCodePen;
425
+ exports.openInCodeSandbox = openInCodeSandbox;
426
+ exports.openInNewTab = openInNewTab;
427
+ exports.openInStackBlitz = openInStackBlitz;
428
+ //# sourceMappingURL=chunk-TUDLE3RT.cjs.map
429
+ //# sourceMappingURL=chunk-TUDLE3RT.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-TUDLE3RT.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\\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: [\n\t\t\t'https://unpkg.com/react-public-components/dist/index.css',\n\t\t].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'\n\t| 'codepen'\n\t| 'stackblitz'\n\t| 'copy'\n\t| 'external'\n\t| '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 chunkMBOWSS4B_cjs = require('./chunk-MBOWSS4B.cjs');
3
+ var chunkR4V3EJVP_cjs = require('./chunk-R4V3EJVP.cjs');
4
4
  var react = require('react');
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
 
@@ -83,7 +83,7 @@ var KeyValEditor = ({
83
83
  }
84
84
  },
85
85
  title: item.isSecret ? "\u5207\u6362\u663E\u793A/\u9690\u85CF" : "\u8BBE\u4E3A\u654F\u611F\u5BC6\u7801",
86
- children: item.isSecret ? visibleSecrets[index] ? /* @__PURE__ */ jsxRuntime.jsx(chunkMBOWSS4B_cjs.EyeOutlined, {}) : /* @__PURE__ */ jsxRuntime.jsx(chunkMBOWSS4B_cjs.EyeInvisibleOutlined, {}) : /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 11, color: "#8c8c8c" }, children: "\u{1F512}" })
86
+ children: item.isSecret ? visibleSecrets[index] ? /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.EyeOutlined, {}) : /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.EyeInvisibleOutlined, {}) : /* @__PURE__ */ jsxRuntime.jsx("span", { style: { fontSize: 11, color: "#8c8c8c" }, children: "\u{1F512}" })
87
87
  }
88
88
  ),
89
89
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -93,7 +93,7 @@ var KeyValEditor = ({
93
93
  className: "rpc_key_val_editor_btn_icon",
94
94
  onClick: () => handleDelete(index),
95
95
  title: "\u5220\u9664\u6B64\u884C",
96
- children: /* @__PURE__ */ jsxRuntime.jsx(chunkMBOWSS4B_cjs.CloseOutlined, {})
96
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkR4V3EJVP_cjs.CloseOutlined, {})
97
97
  }
98
98
  )
99
99
  ] }, index);
@@ -104,5 +104,5 @@ var KeyValEditor = ({
104
104
  var KeyValEditor_default = KeyValEditor;
105
105
 
106
106
  exports.KeyValEditor_default = KeyValEditor_default;
107
- //# sourceMappingURL=chunk-B7NN6SZD.cjs.map
108
- //# sourceMappingURL=chunk-B7NN6SZD.cjs.map
107
+ //# sourceMappingURL=chunk-TUEVILTA.cjs.map
108
+ //# sourceMappingURL=chunk-TUEVILTA.cjs.map