dishui 0.0.65 → 0.0.67

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 (507) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +10 -11
  2. package/dist/chart.js +12 -46
  3. package/dist/code-editor.js +16 -43
  4. package/dist/components/Accordion/index.d.ts +39 -0
  5. package/dist/components/Accordion/index.js +70 -0
  6. package/dist/components/Accordion/index.js.map +1 -0
  7. package/dist/components/Avatar/index.d.ts +48 -0
  8. package/dist/components/Avatar/index.js +71 -0
  9. package/dist/components/Avatar/index.js.map +1 -0
  10. package/dist/components/Badge/index.js +10 -15
  11. package/dist/components/Badge/index.js.map +1 -1
  12. package/dist/components/Button/index.js +62 -89
  13. package/dist/components/Button/index.js.map +1 -1
  14. package/dist/components/Card/index.d.ts +142 -0
  15. package/dist/components/Card/index.js +368 -69
  16. package/dist/components/Card/index.js.map +1 -1
  17. package/dist/components/Chart/Chart.js +25 -25
  18. package/dist/components/Chart/Chart.js.map +1 -1
  19. package/dist/components/Checkbox/index.js +57 -65
  20. package/dist/components/Checkbox/index.js.map +1 -1
  21. package/dist/components/ChoicePicker/index.d.ts +44 -0
  22. package/dist/components/ChoicePicker/index.js +81 -0
  23. package/dist/components/ChoicePicker/index.js.map +1 -0
  24. package/dist/components/Column/index.d.ts +28 -0
  25. package/dist/components/Column/index.js +30 -0
  26. package/dist/components/Column/index.js.map +1 -0
  27. package/dist/components/DateTimeInput/index.d.ts +44 -0
  28. package/dist/components/DateTimeInput/index.js +48 -0
  29. package/dist/components/DateTimeInput/index.js.map +1 -0
  30. package/dist/components/Demo/index.js +107 -107
  31. package/dist/components/Demo/index.js.map +1 -1
  32. package/dist/components/Divider/index.d.ts +20 -0
  33. package/dist/components/Divider/index.js +30 -0
  34. package/dist/components/Divider/index.js.map +1 -0
  35. package/dist/components/EmptyState/index.js +24 -24
  36. package/dist/components/EmptyState/index.js.map +1 -1
  37. package/dist/components/FileUploader/DropZone.js +134 -136
  38. package/dist/components/FileUploader/DropZone.js.map +1 -1
  39. package/dist/components/FileUploader/FileItem.js +159 -163
  40. package/dist/components/FileUploader/FileItem.js.map +1 -1
  41. package/dist/components/FileUploader/FileUploader.js +126 -127
  42. package/dist/components/FileUploader/FileUploader.js.map +1 -1
  43. package/dist/components/FileUploader/UploadQueue.js +62 -62
  44. package/dist/components/FileUploader/UploadQueue.js.map +1 -1
  45. package/dist/components/FloatWindow/index.d.ts +28 -0
  46. package/dist/components/GridLayout/index.d.ts +42 -0
  47. package/dist/components/Icon/index.d.ts +26 -0
  48. package/dist/components/Icon/index.js +27 -0
  49. package/dist/components/Icon/index.js.map +1 -0
  50. package/dist/components/Image/index.d.ts +33 -0
  51. package/dist/components/Image/index.js +44 -0
  52. package/dist/components/Image/index.js.map +1 -0
  53. package/dist/components/Input/index.js +196 -197
  54. package/dist/components/Input/index.js.map +1 -1
  55. package/dist/components/Label/index.js +62 -74
  56. package/dist/components/Label/index.js.map +1 -1
  57. package/dist/components/Layout/index.js +134 -139
  58. package/dist/components/Layout/index.js.map +1 -1
  59. package/dist/components/List/index.js +45 -58
  60. package/dist/components/List/index.js.map +1 -1
  61. package/dist/components/Markdown/Markdown.js +106 -107
  62. package/dist/components/Markdown/Markdown.js.map +1 -1
  63. package/dist/components/Markdown/codeThemes.js +24 -33
  64. package/dist/components/Markdown/codeThemes.js.map +1 -1
  65. package/dist/components/Markdown/markdownComponents.js +203 -208
  66. package/dist/components/Markdown/markdownComponents.js.map +1 -1
  67. package/dist/components/Markdown/parseCodeBlockMeta.js +22 -22
  68. package/dist/components/Markdown/parseCodeBlockMeta.js.map +1 -1
  69. package/dist/components/Markdown/useMarkdownSource.js +46 -46
  70. package/dist/components/Markdown/useMarkdownSource.js.map +1 -1
  71. package/dist/components/Markdown/useMarkmapRenderer.js +35 -36
  72. package/dist/components/Markdown/useMarkmapRenderer.js.map +1 -1
  73. package/dist/components/Markdown/useMermaidRenderer.js +41 -42
  74. package/dist/components/Markdown/useMermaidRenderer.js.map +1 -1
  75. package/dist/components/Modal/index.js +82 -82
  76. package/dist/components/Modal/index.js.map +1 -1
  77. package/dist/components/MultipleChoice/index.d.ts +44 -0
  78. package/dist/components/MultipleChoice/index.js +52 -0
  79. package/dist/components/MultipleChoice/index.js.map +1 -0
  80. package/dist/components/Notification/index.d.ts +17 -0
  81. package/dist/components/Page/index.d.ts +1 -1
  82. package/dist/components/Page/index.js +40 -71
  83. package/dist/components/Page/index.js.map +1 -1
  84. package/dist/components/PageHeader/index.js +28 -28
  85. package/dist/components/PageHeader/index.js.map +1 -1
  86. package/dist/components/ProtectedRoute/index.js +8 -9
  87. package/dist/components/ProtectedRoute/index.js.map +1 -1
  88. package/dist/components/Row/index.d.ts +28 -0
  89. package/dist/components/Row/index.js +30 -0
  90. package/dist/components/Row/index.js.map +1 -0
  91. package/dist/components/Select/index.js +251 -254
  92. package/dist/components/Select/index.js.map +1 -1
  93. package/dist/components/SidebarToggleButton/index.js +56 -59
  94. package/dist/components/SidebarToggleButton/index.js.map +1 -1
  95. package/dist/components/Slider/index.d.ts +39 -0
  96. package/dist/components/Slider/index.js +52 -0
  97. package/dist/components/Slider/index.js.map +1 -0
  98. package/dist/components/Switch/index.d.ts +34 -0
  99. package/dist/components/Switch/index.js +55 -0
  100. package/dist/components/Switch/index.js.map +1 -0
  101. package/dist/components/Tab/index.d.ts +40 -0
  102. package/dist/components/Table/index.js +109 -121
  103. package/dist/components/Table/index.js.map +1 -1
  104. package/dist/components/Tabs/index.js +28 -38
  105. package/dist/components/Tabs/index.js.map +1 -1
  106. package/dist/components/Text/index.d.ts +43 -0
  107. package/dist/components/Text/index.js +55 -0
  108. package/dist/components/Text/index.js.map +1 -0
  109. package/dist/components/Tooltip/index.d.ts +23 -0
  110. package/dist/components/Tooltip/index.js +34 -0
  111. package/dist/components/Tooltip/index.js.map +1 -0
  112. package/dist/components/Tree/Tree.js +205 -205
  113. package/dist/components/Tree/Tree.js.map +1 -1
  114. package/dist/components/pro/ArticleContextMenu/index.js +86 -87
  115. package/dist/components/pro/ArticleContextMenu/index.js.map +1 -1
  116. package/dist/components/pro/ArticleControl/ArticleControl2.js +250 -250
  117. package/dist/components/pro/ArticleControl/ArticleControl2.js.map +1 -1
  118. package/dist/components/pro/ArticleControl/buildHeadingTree.js +31 -32
  119. package/dist/components/pro/ArticleControl/buildHeadingTree.js.map +1 -1
  120. package/dist/components/pro/ArticleControl/useArticleToc.js +100 -102
  121. package/dist/components/pro/ArticleControl/useArticleToc.js.map +1 -1
  122. package/dist/components/pro/Calendar/Calendar.d.ts +10 -0
  123. package/dist/components/pro/Calendar/hooks/useCalendarDrag.d.ts +47 -0
  124. package/dist/components/pro/Calendar/hooks/useCalendarState.d.ts +56 -0
  125. package/dist/components/pro/Calendar/index.d.ts +7 -0
  126. package/dist/components/pro/Calendar/types.d.ts +151 -0
  127. package/dist/components/pro/Calendar/utils.d.ts +94 -0
  128. package/dist/components/pro/Chat/Chat.d.ts +6 -0
  129. package/dist/components/pro/Chat/index.d.ts +2 -0
  130. package/dist/components/pro/Chat/types.d.ts +84 -0
  131. package/dist/components/pro/CodeEditor/editors/CodeEditor.js +287 -327
  132. package/dist/components/pro/CodeEditor/editors/CodeEditor.js.map +1 -1
  133. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js +167 -224
  134. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js.map +1 -1
  135. package/dist/components/pro/CodeEditor/editors/markdownExtensions.js +594 -613
  136. package/dist/components/pro/CodeEditor/editors/markdownExtensions.js.map +1 -1
  137. package/dist/components/pro/CodeEditor/extensions/contextMenu.js +54 -55
  138. package/dist/components/pro/CodeEditor/extensions/contextMenu.js.map +1 -1
  139. package/dist/components/pro/CodeEditor/extensions/index.js +152 -160
  140. package/dist/components/pro/CodeEditor/extensions/index.js.map +1 -1
  141. package/dist/components/pro/CodeEditor/langs/index.js +7 -15
  142. package/dist/components/pro/CodeEditor/langs/index.js.map +1 -1
  143. package/dist/components/pro/CodeEditor/langs/javascript.js +11 -48
  144. package/dist/components/pro/CodeEditor/langs/javascript.js.map +1 -1
  145. package/dist/components/pro/CodeEditor/langs/python.js +4 -40
  146. package/dist/components/pro/CodeEditor/langs/python.js.map +1 -1
  147. package/dist/components/pro/CodeEditor/langs/snippets.js +118 -147
  148. package/dist/components/pro/CodeEditor/langs/snippets.js.map +1 -1
  149. package/dist/components/pro/CodeEditor/panels/FootnotePanel.js +153 -153
  150. package/dist/components/pro/CodeEditor/panels/FootnotePanel.js.map +1 -1
  151. package/dist/components/pro/CodeEditor/panels/HistoryPanel.js +180 -190
  152. package/dist/components/pro/CodeEditor/panels/HistoryPanel.js.map +1 -1
  153. package/dist/components/pro/CodeEditor/panels/OutlinePanel.js +130 -137
  154. package/dist/components/pro/CodeEditor/panels/OutlinePanel.js.map +1 -1
  155. package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js +228 -242
  156. package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js.map +1 -1
  157. package/dist/components/pro/CodeEditor/panels/VariablePanel.js +208 -248
  158. package/dist/components/pro/CodeEditor/panels/VariablePanel.js.map +1 -1
  159. package/dist/components/pro/CodeEditor/themes.js +513 -483
  160. package/dist/components/pro/CodeEditor/themes.js.map +1 -1
  161. package/dist/components/pro/CodeEditor/types.d.ts +1 -1
  162. package/dist/components/pro/CodeEditor/utils.js +171 -175
  163. package/dist/components/pro/CodeEditor/utils.js.map +1 -1
  164. package/dist/components/pro/DataTable/DataTable.js +305 -306
  165. package/dist/components/pro/DataTable/DataTable.js.map +1 -1
  166. package/dist/components/pro/DataTable/Filters.js +299 -314
  167. package/dist/components/pro/DataTable/Filters.js.map +1 -1
  168. package/dist/components/pro/DataTable/PivotPanel.js +203 -204
  169. package/dist/components/pro/DataTable/PivotPanel.js.map +1 -1
  170. package/dist/components/pro/DataTable/PivotView.js +142 -144
  171. package/dist/components/pro/DataTable/PivotView.js.map +1 -1
  172. package/dist/components/pro/DataTable/components/BulkActions.js +42 -42
  173. package/dist/components/pro/DataTable/components/BulkActions.js.map +1 -1
  174. package/dist/components/pro/DataTable/components/ColumnSelector.js +84 -84
  175. package/dist/components/pro/DataTable/components/ColumnSelector.js.map +1 -1
  176. package/dist/components/pro/DataTable/components/FilterBar.js +58 -58
  177. package/dist/components/pro/DataTable/components/FilterBar.js.map +1 -1
  178. package/dist/components/pro/DataTable/components/TableBody.js +93 -94
  179. package/dist/components/pro/DataTable/components/TableBody.js.map +1 -1
  180. package/dist/components/pro/DataTable/components/TableHeader.js +78 -78
  181. package/dist/components/pro/DataTable/components/TableHeader.js.map +1 -1
  182. package/dist/components/pro/DataTable/components/TablePagination.js +77 -77
  183. package/dist/components/pro/DataTable/components/TablePagination.js.map +1 -1
  184. package/dist/components/pro/DataTable/components/TableToolbar.js +40 -40
  185. package/dist/components/pro/DataTable/components/TableToolbar.js.map +1 -1
  186. package/dist/components/pro/DataTable/extension.js +5 -5
  187. package/dist/components/pro/DataTable/extension.js.map +1 -1
  188. package/dist/components/pro/DataTable/pivotEngine.js +84 -92
  189. package/dist/components/pro/DataTable/pivotEngine.js.map +1 -1
  190. package/dist/components/pro/DataTable/pivotExtension.js +93 -93
  191. package/dist/components/pro/DataTable/pivotExtension.js.map +1 -1
  192. package/dist/components/pro/DataTable/rowDetailExtension.js +30 -30
  193. package/dist/components/pro/DataTable/rowDetailExtension.js.map +1 -1
  194. package/dist/components/pro/DataTable/tanstack-table.js +45 -62
  195. package/dist/components/pro/DataTable/tanstack-table.js.map +1 -1
  196. package/dist/components/pro/DataTable/treeDataUtils.js +37 -48
  197. package/dist/components/pro/DataTable/treeDataUtils.js.map +1 -1
  198. package/dist/components/pro/DataTable/useColumnDragReorder.js +68 -68
  199. package/dist/components/pro/DataTable/useColumnDragReorder.js.map +1 -1
  200. package/dist/components/pro/DataTable/utils.js +156 -168
  201. package/dist/components/pro/DataTable/utils.js.map +1 -1
  202. package/dist/components/pro/FileExplorer/Breadcrumb.js +180 -180
  203. package/dist/components/pro/FileExplorer/Breadcrumb.js.map +1 -1
  204. package/dist/components/pro/FileExplorer/CreateDialog.js +78 -78
  205. package/dist/components/pro/FileExplorer/CreateDialog.js.map +1 -1
  206. package/dist/components/pro/FileExplorer/FileExplorer.js +202 -205
  207. package/dist/components/pro/FileExplorer/FileExplorer.js.map +1 -1
  208. package/dist/components/pro/FileExplorer/FileIcon.js +189 -189
  209. package/dist/components/pro/FileExplorer/FileIcon.js.map +1 -1
  210. package/dist/components/pro/FileExplorer/GridView.js +100 -100
  211. package/dist/components/pro/FileExplorer/GridView.js.map +1 -1
  212. package/dist/components/pro/FileExplorer/ListView.js +209 -209
  213. package/dist/components/pro/FileExplorer/ListView.js.map +1 -1
  214. package/dist/components/pro/FileExplorer/Toolbar.js +199 -199
  215. package/dist/components/pro/FileExplorer/Toolbar.js.map +1 -1
  216. package/dist/components/pro/Flow/Flow.js +920 -948
  217. package/dist/components/pro/Flow/Flow.js.map +1 -1
  218. package/dist/components/pro/Flow/FlowCanvas.js +1626 -1662
  219. package/dist/components/pro/Flow/FlowCanvas.js.map +1 -1
  220. package/dist/components/pro/Flow/archify/build.js +85 -94
  221. package/dist/components/pro/Flow/archify/build.js.map +1 -1
  222. package/dist/components/pro/Flow/archify/convert.js +512 -519
  223. package/dist/components/pro/Flow/archify/convert.js.map +1 -1
  224. package/dist/components/pro/Flow/archify/palette.js +87 -104
  225. package/dist/components/pro/Flow/archify/palette.js.map +1 -1
  226. package/dist/components/pro/Flow/archify/presets.js +34 -37
  227. package/dist/components/pro/Flow/archify/presets.js.map +1 -1
  228. package/dist/components/pro/Flow/archify/spec.js +7 -7
  229. package/dist/components/pro/Flow/archify/spec.js.map +1 -1
  230. package/dist/components/pro/Flow/canvas/AlignmentGuides.js +25 -25
  231. package/dist/components/pro/Flow/canvas/AlignmentGuides.js.map +1 -1
  232. package/dist/components/pro/Flow/canvas/GridRenderer.js +54 -55
  233. package/dist/components/pro/Flow/canvas/GridRenderer.js.map +1 -1
  234. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js +54 -58
  235. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js.map +1 -1
  236. package/dist/components/pro/Flow/canvas/PixiApp.js +105 -102
  237. package/dist/components/pro/Flow/canvas/PixiApp.js.map +1 -1
  238. package/dist/components/pro/Flow/canvas/SelectionOverlay.js +38 -38
  239. package/dist/components/pro/Flow/canvas/SelectionOverlay.js.map +1 -1
  240. package/dist/components/pro/Flow/canvas/ViewportContainer.js +117 -117
  241. package/dist/components/pro/Flow/canvas/ViewportContainer.js.map +1 -1
  242. package/dist/components/pro/Flow/constants.js +266 -278
  243. package/dist/components/pro/Flow/constants.js.map +1 -1
  244. package/dist/components/pro/Flow/context/FlowAIContext.js +27 -28
  245. package/dist/components/pro/Flow/context/FlowAIContext.js.map +1 -1
  246. package/dist/components/pro/Flow/context/FlowContext.js +60 -61
  247. package/dist/components/pro/Flow/context/FlowContext.js.map +1 -1
  248. package/dist/components/pro/Flow/context/FlowUIContext.js +115 -117
  249. package/dist/components/pro/Flow/context/FlowUIContext.js.map +1 -1
  250. package/dist/components/pro/Flow/edges/EdgeRenderer.js +135 -138
  251. package/dist/components/pro/Flow/edges/EdgeRenderer.js.map +1 -1
  252. package/dist/components/pro/Flow/edges/edgeMarkers.js +11 -14
  253. package/dist/components/pro/Flow/edges/edgeMarkers.js.map +1 -1
  254. package/dist/components/pro/Flow/edges/edgePaths.js +351 -367
  255. package/dist/components/pro/Flow/edges/edgePaths.js.map +1 -1
  256. package/dist/components/pro/Flow/hooks/useAlignmentGuides.js +49 -52
  257. package/dist/components/pro/Flow/hooks/useAlignmentGuides.js.map +1 -1
  258. package/dist/components/pro/Flow/hooks/useClipboard.js +154 -154
  259. package/dist/components/pro/Flow/hooks/useClipboard.js.map +1 -1
  260. package/dist/components/pro/Flow/hooks/useCompactMode.js +17 -17
  261. package/dist/components/pro/Flow/hooks/useCompactMode.js.map +1 -1
  262. package/dist/components/pro/Flow/hooks/useDeleteSelection.js +40 -40
  263. package/dist/components/pro/Flow/hooks/useDeleteSelection.js.map +1 -1
  264. package/dist/components/pro/Flow/hooks/useDraggablePanel.js +51 -51
  265. package/dist/components/pro/Flow/hooks/useDraggablePanel.js.map +1 -1
  266. package/dist/components/pro/Flow/hooks/useEdgeMutations.js +157 -157
  267. package/dist/components/pro/Flow/hooks/useEdgeMutations.js.map +1 -1
  268. package/dist/components/pro/Flow/hooks/useFlowImportExport.js +190 -201
  269. package/dist/components/pro/Flow/hooks/useFlowImportExport.js.map +1 -1
  270. package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js +32 -38
  271. package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js.map +1 -1
  272. package/dist/components/pro/Flow/hooks/useLayoutActions.js +172 -180
  273. package/dist/components/pro/Flow/hooks/useLayoutActions.js.map +1 -1
  274. package/dist/components/pro/Flow/hooks/useLineMutations.js +57 -57
  275. package/dist/components/pro/Flow/hooks/useLineMutations.js.map +1 -1
  276. package/dist/components/pro/Flow/hooks/useMindMap.js +229 -238
  277. package/dist/components/pro/Flow/hooks/useMindMap.js.map +1 -1
  278. package/dist/components/pro/Flow/hooks/useNodeMutations.js +102 -102
  279. package/dist/components/pro/Flow/hooks/useNodeMutations.js.map +1 -1
  280. package/dist/components/pro/Flow/hooks/usePdfExport.js +55 -56
  281. package/dist/components/pro/Flow/hooks/usePdfExport.js.map +1 -1
  282. package/dist/components/pro/Flow/hooks/usePixiApp.js +55 -57
  283. package/dist/components/pro/Flow/hooks/usePixiApp.js.map +1 -1
  284. package/dist/components/pro/Flow/hooks/useResizablePanel.js +31 -31
  285. package/dist/components/pro/Flow/hooks/useResizablePanel.js.map +1 -1
  286. package/dist/components/pro/Flow/hooks/useSelection.js +69 -69
  287. package/dist/components/pro/Flow/hooks/useSelection.js.map +1 -1
  288. package/dist/components/pro/Flow/hooks/useUndoRedo.js +27 -27
  289. package/dist/components/pro/Flow/hooks/useUndoRedo.js.map +1 -1
  290. package/dist/components/pro/Flow/hooks/useViewport.js +28 -28
  291. package/dist/components/pro/Flow/hooks/useViewport.js.map +1 -1
  292. package/dist/components/pro/Flow/lines/FreehandTool.js +63 -63
  293. package/dist/components/pro/Flow/lines/FreehandTool.js.map +1 -1
  294. package/dist/components/pro/Flow/lines/GeometricLineTool.js +80 -80
  295. package/dist/components/pro/Flow/lines/GeometricLineTool.js.map +1 -1
  296. package/dist/components/pro/Flow/lines/LineRenderer.js +88 -88
  297. package/dist/components/pro/Flow/lines/LineRenderer.js.map +1 -1
  298. package/dist/components/pro/Flow/lines/lineSmoothing.js +32 -34
  299. package/dist/components/pro/Flow/lines/lineSmoothing.js.map +1 -1
  300. package/dist/components/pro/Flow/nodes/DataNodeView.js +236 -242
  301. package/dist/components/pro/Flow/nodes/DataNodeView.js.map +1 -1
  302. package/dist/components/pro/Flow/nodes/MediaContent.js +236 -246
  303. package/dist/components/pro/Flow/nodes/MediaContent.js.map +1 -1
  304. package/dist/components/pro/Flow/nodes/MediaOverlay.js +63 -63
  305. package/dist/components/pro/Flow/nodes/MediaOverlay.js.map +1 -1
  306. package/dist/components/pro/Flow/nodes/Model3DView.js +111 -113
  307. package/dist/components/pro/Flow/nodes/Model3DView.js.map +1 -1
  308. package/dist/components/pro/Flow/nodes/NodeHandles.js +74 -80
  309. package/dist/components/pro/Flow/nodes/NodeHandles.js.map +1 -1
  310. package/dist/components/pro/Flow/nodes/NodeRenderer.js +303 -314
  311. package/dist/components/pro/Flow/nodes/NodeRenderer.js.map +1 -1
  312. package/dist/components/pro/Flow/nodes/NodeText.js +25 -29
  313. package/dist/components/pro/Flow/nodes/NodeText.js.map +1 -1
  314. package/dist/components/pro/Flow/nodes/aiClient.js +124 -137
  315. package/dist/components/pro/Flow/nodes/aiClient.js.map +1 -1
  316. package/dist/components/pro/Flow/nodes/animAnchors.js +42 -49
  317. package/dist/components/pro/Flow/nodes/animAnchors.js.map +1 -1
  318. package/dist/components/pro/Flow/nodes/dataUtils.js +246 -267
  319. package/dist/components/pro/Flow/nodes/dataUtils.js.map +1 -1
  320. package/dist/components/pro/Flow/nodes/nodeUtils.js +23 -28
  321. package/dist/components/pro/Flow/nodes/nodeUtils.js.map +1 -1
  322. package/dist/components/pro/Flow/nodes/shapes.js +556 -589
  323. package/dist/components/pro/Flow/nodes/shapes.js.map +1 -1
  324. package/dist/components/pro/Flow/nodes/svgIconTexture.js +37 -39
  325. package/dist/components/pro/Flow/nodes/svgIconTexture.js.map +1 -1
  326. package/dist/components/pro/Flow/nodes/svgIcons.js +684 -689
  327. package/dist/components/pro/Flow/nodes/svgIcons.js.map +1 -1
  328. package/dist/components/pro/Flow/panels/AIPanel.js +464 -491
  329. package/dist/components/pro/Flow/panels/AIPanel.js.map +1 -1
  330. package/dist/components/pro/Flow/panels/Breadcrumb.js +41 -41
  331. package/dist/components/pro/Flow/panels/Breadcrumb.js.map +1 -1
  332. package/dist/components/pro/Flow/panels/ContextMenu.js +37 -37
  333. package/dist/components/pro/Flow/panels/ContextMenu.js.map +1 -1
  334. package/dist/components/pro/Flow/panels/DataInspectorSection.js +428 -432
  335. package/dist/components/pro/Flow/panels/DataInspectorSection.js.map +1 -1
  336. package/dist/components/pro/Flow/panels/ExpandableTextarea.js +61 -62
  337. package/dist/components/pro/Flow/panels/ExpandableTextarea.js.map +1 -1
  338. package/dist/components/pro/Flow/panels/FlowPanelGroup.js +114 -114
  339. package/dist/components/pro/Flow/panels/FlowPanelGroup.js.map +1 -1
  340. package/dist/components/pro/Flow/panels/FlowToolbar.js +347 -391
  341. package/dist/components/pro/Flow/panels/FlowToolbar.js.map +1 -1
  342. package/dist/components/pro/Flow/panels/InspectorPanel.js +1792 -1798
  343. package/dist/components/pro/Flow/panels/InspectorPanel.js.map +1 -1
  344. package/dist/components/pro/Flow/panels/OutlinePanel.js +242 -248
  345. package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
  346. package/dist/components/pro/Flow/panels/PresentationMode.js +137 -140
  347. package/dist/components/pro/Flow/panels/PresentationMode.js.map +1 -1
  348. package/dist/components/pro/Flow/panels/ProjectTitle.js +46 -46
  349. package/dist/components/pro/Flow/panels/ProjectTitle.js.map +1 -1
  350. package/dist/components/pro/Flow/panels/ShapePalette.js +557 -572
  351. package/dist/components/pro/Flow/panels/ShapePalette.js.map +1 -1
  352. package/dist/components/pro/Flow/panels/toolbarIcons.d.ts +0 -1
  353. package/dist/components/pro/Flow/panels/toolbarIcons.js +508 -557
  354. package/dist/components/pro/Flow/panels/toolbarIcons.js.map +1 -1
  355. package/dist/components/pro/Flow/types.js +26 -26
  356. package/dist/components/pro/Flow/types.js.map +1 -1
  357. package/dist/components/pro/Flow/utils/dashedLine.js +113 -117
  358. package/dist/components/pro/Flow/utils/dashedLine.js.map +1 -1
  359. package/dist/components/pro/Flow/utils/gradient.js +55 -55
  360. package/dist/components/pro/Flow/utils/gradient.js.map +1 -1
  361. package/dist/components/pro/Flow/utils/pdfExport.js +50 -89
  362. package/dist/components/pro/Flow/utils/pdfExport.js.map +1 -1
  363. package/dist/components/pro/Flow/utils/themeColor.js +185 -195
  364. package/dist/components/pro/Flow/utils/themeColor.js.map +1 -1
  365. package/dist/components/pro/Gantt/Gantt.d.ts +7 -0
  366. package/dist/components/pro/Gantt/hooks/useGanttDrag.d.ts +31 -0
  367. package/dist/components/pro/Gantt/hooks/useGanttState.d.ts +58 -0
  368. package/dist/components/pro/Gantt/index.d.ts +6 -0
  369. package/dist/components/pro/Gantt/types.d.ts +478 -0
  370. package/dist/components/pro/Gantt/utils.d.ts +124 -0
  371. package/dist/components/pro/Resizable/Resizable.d.ts +30 -0
  372. package/dist/components/pro/Resizable/index.d.ts +2 -0
  373. package/dist/components/pro/RichTextEditor/AIRewrite.js +323 -334
  374. package/dist/components/pro/RichTextEditor/AIRewrite.js.map +1 -1
  375. package/dist/components/pro/RichTextEditor/BlockHandle.js +314 -316
  376. package/dist/components/pro/RichTextEditor/BlockHandle.js.map +1 -1
  377. package/dist/components/pro/RichTextEditor/BubbleToolbar.js +97 -97
  378. package/dist/components/pro/RichTextEditor/BubbleToolbar.js.map +1 -1
  379. package/dist/components/pro/RichTextEditor/CommentDialog.js +88 -88
  380. package/dist/components/pro/RichTextEditor/CommentDialog.js.map +1 -1
  381. package/dist/components/pro/RichTextEditor/CommentPanel.js +240 -240
  382. package/dist/components/pro/RichTextEditor/CommentPanel.js.map +1 -1
  383. package/dist/components/pro/RichTextEditor/CommentPopover.js +234 -234
  384. package/dist/components/pro/RichTextEditor/CommentPopover.js.map +1 -1
  385. package/dist/components/pro/RichTextEditor/ContextMenu.js +251 -252
  386. package/dist/components/pro/RichTextEditor/ContextMenu.js.map +1 -1
  387. package/dist/components/pro/RichTextEditor/RichTextEditor.js +267 -271
  388. package/dist/components/pro/RichTextEditor/RichTextEditor.js.map +1 -1
  389. package/dist/components/pro/RichTextEditor/SlashMenu.js +214 -214
  390. package/dist/components/pro/RichTextEditor/SlashMenu.js.map +1 -1
  391. package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js +44 -75
  392. package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js.map +1 -1
  393. package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js +261 -261
  394. package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js.map +1 -1
  395. package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js +172 -526
  396. package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js.map +1 -1
  397. package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js +112 -114
  398. package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js.map +1 -1
  399. package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js +194 -194
  400. package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js.map +1 -1
  401. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js +970 -973
  402. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js.map +1 -1
  403. package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js +11 -12
  404. package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js.map +1 -1
  405. package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js +310 -344
  406. package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js.map +1 -1
  407. package/dist/components/pro/RichTextEditor/extensions/CommentMark.js +38 -39
  408. package/dist/components/pro/RichTextEditor/extensions/CommentMark.js.map +1 -1
  409. package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js +620 -625
  410. package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js.map +1 -1
  411. package/dist/components/pro/RichTextEditor/extensions/FontSize.js +25 -25
  412. package/dist/components/pro/RichTextEditor/extensions/FontSize.js.map +1 -1
  413. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js +167 -176
  414. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js.map +1 -1
  415. package/dist/components/pro/RichTextEditor/types.js +75 -75
  416. package/dist/components/pro/RichTextEditor/types.js.map +1 -1
  417. package/dist/contexts/AppContext.d.ts +1 -1
  418. package/dist/contexts/AppContext.js +216 -221
  419. package/dist/contexts/AppContext.js.map +1 -1
  420. package/dist/data-table.js +15 -41
  421. package/dist/data-table.js.map +1 -1
  422. package/dist/dishui.css +1 -1
  423. package/dist/flow.js +27 -83
  424. package/dist/hooks/useClickOutside.js +18 -18
  425. package/dist/hooks/useClickOutside.js.map +1 -1
  426. package/dist/hooks/useContainerElement.js +9 -9
  427. package/dist/hooks/useContainerElement.js.map +1 -1
  428. package/dist/hooks/useControllableState.js +33 -35
  429. package/dist/hooks/useControllableState.js.map +1 -1
  430. package/dist/hooks/useCopyToClipboard.js +16 -16
  431. package/dist/hooks/useCopyToClipboard.js.map +1 -1
  432. package/dist/hooks/useDebounce.js +14 -14
  433. package/dist/hooks/useDebounce.js.map +1 -1
  434. package/dist/hooks/useDraggable.js +50 -50
  435. package/dist/hooks/useDraggable.js.map +1 -1
  436. package/dist/hooks/useTableColumns.js +39 -41
  437. package/dist/hooks/useTableColumns.js.map +1 -1
  438. package/dist/hooks/useTableData.js +67 -68
  439. package/dist/hooks/useTableData.js.map +1 -1
  440. package/dist/index-nostyled.d.ts +8 -0
  441. package/dist/index.d.ts +31 -3
  442. package/dist/index.js +106 -241
  443. package/dist/layouts/MainLayout.js +56 -56
  444. package/dist/layouts/MainLayout.js.map +1 -1
  445. package/dist/layouts/Navbar.js +214 -214
  446. package/dist/layouts/Navbar.js.map +1 -1
  447. package/dist/layouts/Sidebar.js +184 -186
  448. package/dist/layouts/Sidebar.js.map +1 -1
  449. package/dist/layouts/headbar/Headbar.js +25 -25
  450. package/dist/layouts/headbar/Headbar.js.map +1 -1
  451. package/dist/layouts/headbar/HeadbarLangSwitcher.js +39 -39
  452. package/dist/layouts/headbar/HeadbarLangSwitcher.js.map +1 -1
  453. package/dist/layouts/headbar/HeadbarSearch.js +120 -120
  454. package/dist/layouts/headbar/HeadbarSearch.js.map +1 -1
  455. package/dist/layouts/headbar/HeadbarThemeSwitcher.js +27 -27
  456. package/dist/layouts/headbar/HeadbarThemeSwitcher.js.map +1 -1
  457. package/dist/layouts/headbar/HeadbarTitle.js +26 -26
  458. package/dist/layouts/headbar/HeadbarTitle.js.map +1 -1
  459. package/dist/lite.js +9 -24
  460. package/dist/markdown.js +4 -9
  461. package/dist/pages/components/Calendar/index.d.ts +3 -0
  462. package/dist/pages/components/Calendar/index.en.d.ts +3 -0
  463. package/dist/pages/components/Calendar/index.zh.d.ts +3 -0
  464. package/dist/pages/components/Chat/index.d.ts +3 -0
  465. package/dist/pages/components/Chat/index.en.d.ts +3 -0
  466. package/dist/pages/components/Chat/index.zh.d.ts +3 -0
  467. package/dist/pages/components/FloatWindow/index.d.ts +3 -0
  468. package/dist/pages/components/FloatWindow/index.en.d.ts +3 -0
  469. package/dist/pages/components/FloatWindow/index.zh.d.ts +3 -0
  470. package/dist/pages/components/Gantt/index.d.ts +3 -0
  471. package/dist/pages/components/Gantt/index.en.d.ts +3 -0
  472. package/dist/pages/components/Gantt/index.zh.d.ts +3 -0
  473. package/dist/pages/components/GridLayout/index.d.ts +3 -0
  474. package/dist/pages/components/GridLayout/index.en.d.ts +3 -0
  475. package/dist/pages/components/GridLayout/index.zh.d.ts +3 -0
  476. package/dist/pages/components/Notification/index.d.ts +3 -0
  477. package/dist/pages/components/Notification/index.en.d.ts +3 -0
  478. package/dist/pages/components/Notification/index.zh.d.ts +3 -0
  479. package/dist/pages/components/Resizable/index.d.ts +3 -0
  480. package/dist/pages/components/Resizable/index.en.d.ts +3 -0
  481. package/dist/pages/components/Resizable/index.zh.d.ts +3 -0
  482. package/dist/pages/components/Tab/index.d.ts +3 -0
  483. package/dist/pages/components/Tab/index.en.d.ts +3 -0
  484. package/dist/pages/components/Tab/index.zh.d.ts +3 -0
  485. package/dist/styles/themeStyles.js +87 -86
  486. package/dist/styles/themeStyles.js.map +1 -1
  487. package/dist/utils/cn.d.ts +13 -0
  488. package/dist/utils/cn.js +16 -0
  489. package/dist/utils/cn.js.map +1 -0
  490. package/dist/utils/i18n.js +700 -602
  491. package/dist/utils/i18n.js.map +1 -1
  492. package/dist/utils/menu.js +94 -94
  493. package/dist/utils/menu.js.map +1 -1
  494. package/dist/utils/rehype-code-meta.js +14 -14
  495. package/dist/utils/rehype-code-meta.js.map +1 -1
  496. package/dist/utils/remark-code-meta.js +9 -9
  497. package/dist/utils/remark-code-meta.js.map +1 -1
  498. package/dist/utils/routerBuilder.js +59 -60
  499. package/dist/utils/routerBuilder.js.map +1 -1
  500. package/dist/utils/selection.js +28 -29
  501. package/dist/utils/selection.js.map +1 -1
  502. package/dist/utils/themes.js +275 -255
  503. package/dist/utils/themes.js.map +1 -1
  504. package/package.json +19 -6
  505. package/dist/components/StatCard/index.d.ts +0 -24
  506. package/dist/components/StatCard/index.js +0 -90
  507. package/dist/components/StatCard/index.js.map +0 -1
@@ -1,50 +1,50 @@
1
- import { useEffect as p, useState as u } from "react";
2
- async function k(r, t) {
3
- const o = /^s3:\/\/([^\/]+)\/(.+)$/.exec(r);
4
- if (!o) throw new Error("Invalid S3 URL format. Expected: s3://bucket/key");
5
- const [, a, c] = o, i = t?.region || "us-east-1", f = `${t?.endpoint || `https://${a}.s3.${i}.amazonaws.com`}/${c}`, s = await fetch(f);
6
- if (!s.ok) throw new Error(`S3 fetch failed: ${s.status} ${s.statusText}`);
7
- return s.text();
1
+ import { useEffect as e, useState as t } from "react";
2
+ //#region src/components/Markdown/useMarkdownSource.ts
3
+ async function n(e, t) {
4
+ let n = /^s3:\/\/([^/]+)\/(.+)$/.exec(e);
5
+ if (!n) throw Error("Invalid S3 URL format. Expected: s3://bucket/key");
6
+ let [, r, i] = n, a = t?.region || "us-east-1", o = `${t?.endpoint || `https://${r}.s3.${a}.amazonaws.com`}/${i}`, s = await fetch(o);
7
+ if (!s.ok) throw Error(`S3 fetch failed: ${s.status} ${s.statusText}`);
8
+ return s.text();
8
9
  }
9
- function m(r, t, o, a, c) {
10
- const [i, f] = u(""), [s, w] = u(!1), [h, l] = u(null);
11
- return p(() => {
12
- (async () => {
13
- if (r === "text") {
14
- f(t), a?.(t);
15
- return;
16
- }
17
- w(!0), l(null);
18
- try {
19
- let e;
20
- if (r === "url") {
21
- const n = await fetch(t);
22
- if (!n.ok) throw new Error(`HTTP error! status: ${n.status}`);
23
- e = await n.text();
24
- } else if (r === "s3") e = await k(t, o);
25
- else throw new Error(`Unsupported source type: ${r}`);
26
- f(e), a?.(e);
27
- } catch (e) {
28
- const n = e instanceof Error ? e : new Error(String(e));
29
- l(n), c?.(n);
30
- } finally {
31
- w(!1);
32
- }
33
- })();
34
- }, [
35
- r,
36
- t,
37
- o,
38
- a,
39
- c
40
- ]), {
41
- markdown: i,
42
- loading: s,
43
- error: h
44
- };
10
+ function r(r, i, a, o, s) {
11
+ let [c, l] = t(""), [u, d] = t(!1), [f, p] = t(null);
12
+ return e(() => {
13
+ (async () => {
14
+ if (r === "text") {
15
+ l(i), o?.(i);
16
+ return;
17
+ }
18
+ d(!0), p(null);
19
+ try {
20
+ let e;
21
+ if (r === "url") {
22
+ let t = await fetch(i);
23
+ if (!t.ok) throw Error(`HTTP error! status: ${t.status}`);
24
+ e = await t.text();
25
+ } else if (r === "s3") e = await n(i, a);
26
+ else throw Error(`Unsupported source type: ${r}`);
27
+ l(e), o?.(e);
28
+ } catch (e) {
29
+ let t = e instanceof Error ? e : Error(String(e));
30
+ p(t), s?.(t);
31
+ } finally {
32
+ d(!1);
33
+ }
34
+ })();
35
+ }, [
36
+ r,
37
+ i,
38
+ a,
39
+ o,
40
+ s
41
+ ]), {
42
+ markdown: c,
43
+ loading: u,
44
+ error: f
45
+ };
45
46
  }
46
- export {
47
- m as useMarkdownSource
48
- };
47
+ //#endregion
48
+ export { r as useMarkdownSource };
49
49
 
50
50
  //# sourceMappingURL=useMarkdownSource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMarkdownSource.js","names":[],"sources":["../../../src/components/Markdown/useMarkdownSource.ts"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport type { MarkdownSource, MarkdownProps } from './Markdown';\n\nasync function fetchFromS3(\n s3Url: string,\n config?: MarkdownProps['s3Config']\n): Promise<string> {\n const match = /^s3:\\/\\/([^\\/]+)\\/(.+)$/.exec(s3Url);\n if (!match) {\n throw new Error('Invalid S3 URL format. Expected: s3://bucket/key');\n }\n\n const [, bucket, key] = match;\n const region = config?.region || 'us-east-1';\n const endpoint = config?.endpoint || `https://${bucket}.s3.${region}.amazonaws.com`;\n const url = `${endpoint}/${key}`;\n\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`S3 fetch failed: ${response.status} ${response.statusText}`);\n }\n\n return response.text();\n}\n\nexport function useMarkdownSource(\n source: MarkdownSource,\n content: string,\n s3Config?: MarkdownProps['s3Config'],\n onLoad?: (content: string) => void,\n onError?: (error: Error) => void,\n) {\n const [markdown, setMarkdown] = useState<string>('');\n const [loading, setLoading] = useState<boolean>(false);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n const fetchContent = async () => {\n if (source === 'text') {\n setMarkdown(content);\n onLoad?.(content);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n let text: string;\n\n if (source === 'url') {\n const response = await fetch(content);\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n text = await response.text();\n } else if (source === 's3') {\n text = await fetchFromS3(content, s3Config);\n } else {\n throw new Error(`Unsupported source type: ${source}`);\n }\n\n setMarkdown(text);\n onLoad?.(text);\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n setError(error);\n onError?.(error);\n } finally {\n setLoading(false);\n }\n };\n\n fetchContent();\n }, [source, content, s3Config, onLoad, onError]);\n\n return { markdown, loading, error };\n}\n"],"mappings":";AAGA,eAAe,EACb,GACA,GACiB;AACjB,QAAM,IAAQ,0BAA0B,KAAK,CAAK;AAClD,MAAI,CAAC,EACH,OAAM,IAAI,MAAM,kDAAkD;AAGpE,QAAM,CAAA,EAAG,GAAQ,CAAA,IAAO,GAClB,IAAS,GAAQ,UAAU,aAE3B,IAAM,GADK,GAAQ,YAAY,WAAW,CAAA,OAAa,CAAA,gBAAO,IACzC,CAAA,IAErB,IAAW,MAAM,MAAM,CAAG;AAChC,MAAI,CAAC,EAAS,GACZ,OAAM,IAAI,MAAM,oBAAoB,EAAS,MAAA,IAAU,EAAS,UAAA,EAAY;AAG9E,SAAO,EAAS,KAAK;AACvB;AAEA,SAAgB,EACd,GACA,GACA,GACA,GACA,GACA;AACA,QAAM,CAAC,GAAU,CAAA,IAAe,EAAiB,EAAE,GAC7C,CAAC,GAAS,CAAA,IAAc,EAAkB,EAAK,GAC/C,CAAC,GAAO,CAAA,IAAY,EAAuB,IAAI;AAErD,SAAA,EAAA,MAAgB;AAqCd,KApCqB,YAAY;AAC/B,UAAI,MAAW,QAAQ;AACrB,QAAA,EAAY,CAAO,GACnB,IAAS,CAAO;AAChB;AAAA,MACF;AAEA,MAAA,EAAW,EAAI,GACf,EAAS,IAAI;AAEb,UAAI;AACF,YAAI;AAEJ,YAAI,MAAW,OAAO;AACpB,gBAAM,IAAW,MAAM,MAAM,CAAO;AACpC,cAAI,CAAC,EAAS,GACZ,OAAM,IAAI,MAAM,uBAAuB,EAAS,MAAA,EAAQ;AAE1D,UAAA,IAAO,MAAM,EAAS,KAAK;AAAA,QAC7B,WAAW,MAAW,KACpB,CAAA,IAAO,MAAM,EAAY,GAAS,CAAQ;AAAA,YAE1C,OAAM,IAAI,MAAM,4BAA4B,CAAA,EAAQ;AAGtD,QAAA,EAAY,CAAI,GAChB,IAAS,CAAI;AAAA,MACf,SAAS,GAAK;AACZ,cAAM,IAAQ,aAAe,QAAQ,IAAM,IAAI,MAAM,OAAO,CAAG,CAAC;AAChE,QAAA,EAAS,CAAK,GACd,IAAU,CAAK;AAAA,MACjB,UAAA;AACE,QAAA,EAAW,EAAK;AAAA,MAClB;AAAA,IACF,GAEa;AAAA,EACf,GAAG;AAAA,IAAC;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAU;AAAA,IAAQ;AAAA,EAAO,CAAC,GAExC;AAAA,IAAE,UAAA;AAAA,IAAU,SAAA;AAAA,IAAS,OAAA;AAAA,EAAM;AACpC"}
1
+ {"version":3,"file":"useMarkdownSource.js","names":[],"sources":["../../../src/components/Markdown/useMarkdownSource.ts"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport type { MarkdownSource, MarkdownProps } from './Markdown';\n\nasync function fetchFromS3(\n s3Url: string,\n config?: MarkdownProps['s3Config']\n): Promise<string> {\n const match = /^s3:\\/\\/([^/]+)\\/(.+)$/.exec(s3Url);\n if (!match) {\n throw new Error('Invalid S3 URL format. Expected: s3://bucket/key');\n }\n\n const [, bucket, key] = match;\n const region = config?.region || 'us-east-1';\n const endpoint = config?.endpoint || `https://${bucket}.s3.${region}.amazonaws.com`;\n const url = `${endpoint}/${key}`;\n\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`S3 fetch failed: ${response.status} ${response.statusText}`);\n }\n\n return response.text();\n}\n\nexport function useMarkdownSource(\n source: MarkdownSource,\n content: string,\n s3Config?: MarkdownProps['s3Config'],\n onLoad?: (content: string) => void,\n onError?: (error: Error) => void,\n) {\n const [markdown, setMarkdown] = useState<string>('');\n const [loading, setLoading] = useState<boolean>(false);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n const fetchContent = async () => {\n if (source === 'text') {\n setMarkdown(content);\n onLoad?.(content);\n return;\n }\n\n setLoading(true);\n setError(null);\n\n try {\n let text: string;\n\n if (source === 'url') {\n const response = await fetch(content);\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n text = await response.text();\n } else if (source === 's3') {\n text = await fetchFromS3(content, s3Config);\n } else {\n throw new Error(`Unsupported source type: ${source}`);\n }\n\n setMarkdown(text);\n onLoad?.(text);\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n setError(error);\n onError?.(error);\n } finally {\n setLoading(false);\n }\n };\n\n fetchContent();\n }, [source, content, s3Config, onLoad, onError]);\n\n return { markdown, loading, error };\n}\n"],"mappings":";;AAGA,eAAe,EACb,GACA,GACiB;CACjB,IAAM,IAAQ,yBAAyB,KAAK,CAAK;CACjD,IAAI,CAAC,GACH,MAAU,MAAM,kDAAkD;CAGpE,IAAM,GAAG,GAAQ,KAAO,GAClB,IAAS,GAAQ,UAAU,aAE3B,IAAM,GADK,GAAQ,YAAY,WAAW,EAAO,MAAM,EAAO,gBAC5C,GAAG,KAErB,IAAW,MAAM,MAAM,CAAG;CAChC,IAAI,CAAC,EAAS,IACZ,MAAU,MAAM,oBAAoB,EAAS,OAAO,GAAG,EAAS,YAAY;CAG9E,OAAO,EAAS,KAAK;AACvB;AAEA,SAAgB,EACd,GACA,GACA,GACA,GACA,GACA;CACA,IAAM,CAAC,GAAU,KAAe,EAAiB,EAAE,GAC7C,CAAC,GAAS,KAAc,EAAkB,EAAK,GAC/C,CAAC,GAAO,KAAY,EAAuB,IAAI;CA0CrD,OAxCA,QAAgB;EAqCd,aApCiC;GAC/B,IAAI,MAAW,QAAQ;IAErB,AADA,EAAY,CAAO,GACnB,IAAS,CAAO;IAChB;GACF;GAGA,AADA,EAAW,EAAI,GACf,EAAS,IAAI;GAEb,IAAI;IACF,IAAI;IAEJ,IAAI,MAAW,OAAO;KACpB,IAAM,IAAW,MAAM,MAAM,CAAO;KACpC,IAAI,CAAC,EAAS,IACZ,MAAU,MAAM,uBAAuB,EAAS,QAAQ;KAE1D,IAAO,MAAM,EAAS,KAAK;IAC7B,OAAO,IAAI,MAAW,MACpB,IAAO,MAAM,EAAY,GAAS,CAAQ;SAE1C,MAAU,MAAM,4BAA4B,GAAQ;IAItD,AADA,EAAY,CAAI,GAChB,IAAS,CAAI;GACf,SAAS,GAAK;IACZ,IAAM,IAAQ,aAAe,QAAQ,IAAU,MAAM,OAAO,CAAG,CAAC;IAEhE,AADA,EAAS,CAAK,GACd,IAAU,CAAK;GACjB,UAAU;IACR,EAAW,EAAK;GAClB;EACF,EAEA,CAAa;CACf,GAAG;EAAC;EAAQ;EAAS;EAAU;EAAQ;CAAO,CAAC,GAExC;EAAE;EAAU;EAAS;CAAM;AACpC"}
@@ -1,39 +1,38 @@
1
- import { useEffect as i } from "react";
2
- import { Transformer as l } from "markmap-lib";
3
- import { Markmap as f } from "markmap-view";
4
- function M(o, n, m) {
5
- i(() => {
6
- if (!m || !n || !o.current) return;
7
- setTimeout(() => {
8
- try {
9
- const e = o.current?.querySelectorAll(".markmap-diagram");
10
- if (e) {
11
- const c = new l();
12
- for (let a = 0; a < e.length; a++) {
13
- const t = e[a], s = t.getAttribute("data-markmap-content") || "";
14
- if (s.trim()) try {
15
- t.innerHTML = "";
16
- const r = document.createElementNS("http://www.w3.org/2000/svg", "svg");
17
- r.style.width = "100%", r.style.height = "500px", t.appendChild(r);
18
- const { root: p } = c.transform(s);
19
- f.create(r, {}, p);
20
- } catch (r) {
21
- console.error("Markmap render error:", r), t.innerHTML = `<pre class="text-error">Markmap 渲染失败: ${r}</pre>`;
22
- }
23
- }
24
- }
25
- } catch (e) {
26
- console.error("Markmap rendering failed:", e);
27
- }
28
- }, 100);
29
- }, [
30
- n,
31
- m,
32
- o
33
- ]);
1
+ import { useEffect as e } from "react";
2
+ import { Transformer as t } from "markmap-lib";
3
+ import { Markmap as n } from "markmap-view";
4
+ //#region src/components/Markdown/useMarkmapRenderer.ts
5
+ function r(r, i, a) {
6
+ e(() => {
7
+ a && i && r.current && setTimeout(() => {
8
+ try {
9
+ let e = r.current?.querySelectorAll(".markmap-diagram");
10
+ if (e) {
11
+ let r = new t();
12
+ for (let t = 0; t < e.length; t++) {
13
+ let i = e[t], a = i.getAttribute("data-markmap-content") || "";
14
+ if (a.trim()) try {
15
+ i.innerHTML = "";
16
+ let e = document.createElementNS("http://www.w3.org/2000/svg", "svg");
17
+ e.style.width = "100%", e.style.height = "500px", i.appendChild(e);
18
+ let { root: t } = r.transform(a);
19
+ n.create(e, {}, t);
20
+ } catch (e) {
21
+ console.error("Markmap render error:", e), i.innerHTML = `<pre class="text-error">Markmap 渲染失败: ${e}</pre>`;
22
+ }
23
+ }
24
+ }
25
+ } catch (e) {
26
+ console.error("Markmap rendering failed:", e);
27
+ }
28
+ }, 100);
29
+ }, [
30
+ i,
31
+ a,
32
+ r
33
+ ]);
34
34
  }
35
- export {
36
- M as useMarkmapRenderer
37
- };
35
+ //#endregion
36
+ export { r as useMarkmapRenderer };
38
37
 
39
38
  //# sourceMappingURL=useMarkmapRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMarkmapRenderer.js","names":[],"sources":["../../../src/components/Markdown/useMarkmapRenderer.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { Transformer } from 'markmap-lib';\nimport { Markmap } from 'markmap-view';\n\nexport function useMarkmapRenderer(\n containerRef: React.RefObject<HTMLDivElement | null>,\n markdown: string,\n enabled: boolean,\n) {\n useEffect(() => {\n if (!enabled || !markdown || !containerRef.current) return;\n\n const renderMarkmap = () => {\n try {\n const markmapElements = containerRef.current?.querySelectorAll('.markmap-diagram');\n if (markmapElements) {\n const transformer = new Transformer();\n\n for (let i = 0; i < markmapElements.length; i++) {\n const element = markmapElements[i] as HTMLElement;\n const code = element.getAttribute('data-markmap-content') || '';\n\n if (code.trim()) {\n try {\n element.innerHTML = '';\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.style.width = '100%';\n svg.style.height = '500px';\n element.appendChild(svg);\n\n const { root } = transformer.transform(code);\n Markmap.create(svg, {}, root);\n } catch (err) {\n console.error('Markmap render error:', err);\n element.innerHTML = `<pre class=\"text-error\">Markmap 渲染失败: ${err}</pre>`;\n }\n }\n }\n }\n } catch (err) {\n console.error('Markmap rendering failed:', err);\n }\n };\n\n setTimeout(renderMarkmap, 100);\n }, [markdown, enabled, containerRef]);\n}\n"],"mappings":";;;AAIA,SAAgB,EACd,GACA,GACA,GACA;AACA,EAAA,EAAA,MAAgB;AACd,QAAI,CAAC,KAAW,CAAC,KAAY,CAAC,EAAa,QAAS;AAkCpD,eAhCM,MAAsB;AAC1B,UAAI;AACF,cAAM,IAAkB,EAAa,SAAS,iBAAiB,kBAAkB;AACjF,YAAI,GAAiB;AACnB,gBAAM,IAAc,IAAI,EAAY;AAEpC,mBAAS,IAAI,GAAG,IAAI,EAAgB,QAAQ,KAAK;AAC/C,kBAAM,IAAU,EAAgB,CAAA,GAC1B,IAAO,EAAQ,aAAa,sBAAsB,KAAK;AAE7D,gBAAI,EAAK,KAAK,EACZ,KAAI;AACF,cAAA,EAAQ,YAAY;AACpB,oBAAM,IAAM,SAAS,gBAAgB,8BAA8B,KAAK;AACxE,cAAA,EAAI,MAAM,QAAQ,QAClB,EAAI,MAAM,SAAS,SACnB,EAAQ,YAAY,CAAG;AAEvB,oBAAM,EAAE,MAAA,EAAA,IAAS,EAAY,UAAU,CAAI;AAC3C,cAAA,EAAQ,OAAO,GAAK,CAAC,GAAG,CAAI;AAAA,YAC9B,SAAS,GAAK;AACZ,sBAAQ,MAAM,yBAAyB,CAAG,GAC1C,EAAQ,YAAY,yCAAyC,CAAA;AAAA,YAC/D;AAAA,UAEJ;AAAA,QACF;AAAA,MACF,SAAS,GAAK;AACZ,gBAAQ,MAAM,6BAA6B,CAAG;AAAA,MAChD;AAAA,IACF,GAE0B,GAAG;AAAA,EAC/B,GAAG;AAAA,IAAC;AAAA,IAAU;AAAA,IAAS;AAAA,EAAY,CAAC;AACtC"}
1
+ {"version":3,"file":"useMarkmapRenderer.js","names":[],"sources":["../../../src/components/Markdown/useMarkmapRenderer.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { Transformer } from 'markmap-lib';\nimport { Markmap } from 'markmap-view';\n\nexport function useMarkmapRenderer(\n containerRef: React.RefObject<HTMLDivElement | null>,\n markdown: string,\n enabled: boolean,\n) {\n useEffect(() => {\n if (!enabled || !markdown || !containerRef.current) return;\n\n const renderMarkmap = () => {\n try {\n const markmapElements = containerRef.current?.querySelectorAll('.markmap-diagram');\n if (markmapElements) {\n const transformer = new Transformer();\n\n for (let i = 0; i < markmapElements.length; i++) {\n const element = markmapElements[i] as HTMLElement;\n const code = element.getAttribute('data-markmap-content') || '';\n\n if (code.trim()) {\n try {\n element.innerHTML = '';\n const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.style.width = '100%';\n svg.style.height = '500px';\n element.appendChild(svg);\n\n const { root } = transformer.transform(code);\n Markmap.create(svg, {}, root);\n } catch (err) {\n console.error('Markmap render error:', err);\n element.innerHTML = `<pre class=\"text-error\">Markmap 渲染失败: ${err}</pre>`;\n }\n }\n }\n }\n } catch (err) {\n console.error('Markmap rendering failed:', err);\n }\n };\n\n setTimeout(renderMarkmap, 100);\n }, [markdown, enabled, containerRef]);\n}\n"],"mappings":";;;;AAIA,SAAgB,EACd,GACA,GACA,GACA;CACA,QAAgB;EACV,AAAC,KAAY,KAAa,EAAa,WAkC3C,iBAhC4B;GAC1B,IAAI;IACF,IAAM,IAAkB,EAAa,SAAS,iBAAiB,kBAAkB;IACjF,IAAI,GAAiB;KACnB,IAAM,IAAc,IAAI,EAAY;KAEpC,KAAK,IAAI,IAAI,GAAG,IAAI,EAAgB,QAAQ,KAAK;MAC/C,IAAM,IAAU,EAAgB,IAC1B,IAAO,EAAQ,aAAa,sBAAsB,KAAK;MAE7D,IAAI,EAAK,KAAK,GACZ,IAAI;OACF,EAAQ,YAAY;OACpB,IAAM,IAAM,SAAS,gBAAgB,8BAA8B,KAAK;OAGxE,AAFA,EAAI,MAAM,QAAQ,QAClB,EAAI,MAAM,SAAS,SACnB,EAAQ,YAAY,CAAG;OAEvB,IAAM,EAAE,YAAS,EAAY,UAAU,CAAI;OAC3C,EAAQ,OAAO,GAAK,CAAC,GAAG,CAAI;MAC9B,SAAS,GAAK;OAEZ,AADA,QAAQ,MAAM,yBAAyB,CAAG,GAC1C,EAAQ,YAAY,yCAAyC,EAAI;MACnE;KAEJ;IACF;GACF,SAAS,GAAK;IACZ,QAAQ,MAAM,6BAA6B,CAAG;GAChD;EACF,GAE0B,GAAG;CAC/B,GAAG;EAAC;EAAU;EAAS;CAAY,CAAC;AACtC"}
@@ -1,45 +1,44 @@
1
- import { useEffect as l, useRef as f, useState as h } from "react";
2
- import d from "mermaid";
3
- function L(i, a, r) {
4
- const [m, u] = h(!1), c = f(!1);
5
- l(() => {
6
- r && !c.current && (d.initialize({
7
- startOnLoad: !1,
8
- theme: "default",
9
- securityLevel: "loose",
10
- fontFamily: "inherit",
11
- flowchart: {
12
- useMaxWidth: !0,
13
- htmlLabels: !0
14
- }
15
- }), c.current = !0, u(!0));
16
- }, [r]), l(() => {
17
- if (!r || !m || !a || !i.current) return;
18
- setTimeout(async () => {
19
- try {
20
- const e = i.current?.querySelectorAll(".mermaid-diagram");
21
- if (e) for (let t = 0; t < e.length; t++) {
22
- const n = e[t], o = n.textContent || "";
23
- if (o.trim()) try {
24
- const { svg: s } = await d.render(`mermaid-${Date.now()}-${t}`, o);
25
- n.innerHTML = s;
26
- } catch (s) {
27
- console.error("Mermaid render error:", s), n.innerHTML = `<pre class="text-error">${o}</pre>`;
28
- }
29
- }
30
- } catch (e) {
31
- console.error("Mermaid rendering failed:", e);
32
- }
33
- }, 100);
34
- }, [
35
- a,
36
- r,
37
- m,
38
- i
39
- ]);
1
+ import { useEffect as e, useRef as t, useState as n } from "react";
2
+ import r from "mermaid";
3
+ //#region src/components/Markdown/useMermaidRenderer.ts
4
+ function i(i, a, o) {
5
+ let [s, c] = n(!1), l = t(!1);
6
+ e(() => {
7
+ o && !l.current && (r.initialize({
8
+ startOnLoad: !1,
9
+ theme: "default",
10
+ securityLevel: "loose",
11
+ fontFamily: "inherit",
12
+ flowchart: {
13
+ useMaxWidth: !0,
14
+ htmlLabels: !0
15
+ }
16
+ }), l.current = !0, c(!0));
17
+ }, [o]), e(() => {
18
+ o && s && a && i.current && setTimeout(async () => {
19
+ try {
20
+ let e = i.current?.querySelectorAll(".mermaid-diagram");
21
+ if (e) for (let t = 0; t < e.length; t++) {
22
+ let n = e[t], i = n.textContent || "";
23
+ if (i.trim()) try {
24
+ let { svg: e } = await r.render(`mermaid-${Date.now()}-${t}`, i);
25
+ n.innerHTML = e;
26
+ } catch (e) {
27
+ console.error("Mermaid render error:", e), n.innerHTML = `<pre class="text-error">${i}</pre>`;
28
+ }
29
+ }
30
+ } catch (e) {
31
+ console.error("Mermaid rendering failed:", e);
32
+ }
33
+ }, 100);
34
+ }, [
35
+ a,
36
+ o,
37
+ s,
38
+ i
39
+ ]);
40
40
  }
41
- export {
42
- L as useMermaidRenderer
43
- };
41
+ //#endregion
42
+ export { i as useMermaidRenderer };
44
43
 
45
44
  //# sourceMappingURL=useMermaidRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMermaidRenderer.js","names":[],"sources":["../../../src/components/Markdown/useMermaidRenderer.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport mermaid from 'mermaid';\n\nexport function useMermaidRenderer(\n containerRef: React.RefObject<HTMLDivElement | null>,\n markdown: string,\n enabled: boolean,\n) {\n const [initialized, setInitialized] = useState(false);\n const initRef = useRef(false);\n\n useEffect(() => {\n if (enabled && !initRef.current) {\n mermaid.initialize({\n startOnLoad: false,\n theme: 'default',\n securityLevel: 'loose',\n fontFamily: 'inherit',\n flowchart: {\n useMaxWidth: true,\n htmlLabels: true,\n },\n });\n initRef.current = true;\n setInitialized(true);\n }\n }, [enabled]);\n\n useEffect(() => {\n if (!enabled || !initialized || !markdown || !containerRef.current) return;\n\n const renderMermaid = async () => {\n try {\n const mermaidElements = containerRef.current?.querySelectorAll('.mermaid-diagram');\n if (mermaidElements) {\n for (let i = 0; i < mermaidElements.length; i++) {\n const element = mermaidElements[i] as HTMLElement;\n const code = element.textContent || '';\n if (code.trim()) {\n try {\n const { svg } = await mermaid.render(`mermaid-${Date.now()}-${i}`, code);\n element.innerHTML = svg;\n } catch (err) {\n console.error('Mermaid render error:', err);\n element.innerHTML = `<pre class=\"text-error\">${code}</pre>`;\n }\n }\n }\n }\n } catch (err) {\n console.error('Mermaid rendering failed:', err);\n }\n };\n\n setTimeout(renderMermaid, 100);\n }, [markdown, enabled, initialized, containerRef]);\n}\n"],"mappings":";;AAGA,SAAgB,EACd,GACA,GACA,GACA;AACA,QAAM,CAAC,GAAa,CAAA,IAAkB,EAAS,EAAK,GAC9C,IAAU,EAAO,EAAK;AAE5B,EAAA,EAAA,MAAgB;AACd,IAAI,KAAW,CAAC,EAAQ,YACtB,EAAQ,WAAW;AAAA,MACjB,aAAa;AAAA,MACb,OAAO;AAAA,MACP,eAAe;AAAA,MACf,YAAY;AAAA,MACZ,WAAW;AAAA,QACT,aAAa;AAAA,QACb,YAAY;AAAA,MACd;AAAA,IACF,CAAC,GACD,EAAQ,UAAU,IAClB,EAAe,EAAI;AAAA,EAEvB,GAAG,CAAC,CAAO,CAAC,GAEZ,EAAA,MAAgB;AACd,QAAI,CAAC,KAAW,CAAC,KAAe,CAAC,KAAY,CAAC,EAAa,QAAS;AAyBpE,eAvBsB,YAAY;AAChC,UAAI;AACF,cAAM,IAAkB,EAAa,SAAS,iBAAiB,kBAAkB;AACjF,YAAI,EACF,UAAS,IAAI,GAAG,IAAI,EAAgB,QAAQ,KAAK;AAC/C,gBAAM,IAAU,EAAgB,CAAA,GAC1B,IAAO,EAAQ,eAAe;AACpC,cAAI,EAAK,KAAK,EACZ,KAAI;AACF,kBAAM,EAAE,KAAA,EAAA,IAAQ,MAAM,EAAQ,OAAO,WAAW,KAAK,IAAI,CAAA,IAAK,CAAA,IAAK,CAAI;AACvE,YAAA,EAAQ,YAAY;AAAA,UACtB,SAAS,GAAK;AACZ,oBAAQ,MAAM,yBAAyB,CAAG,GAC1C,EAAQ,YAAY,2BAA2B,CAAA;AAAA,UACjD;AAAA,QAEJ;AAAA,MAEJ,SAAS,GAAK;AACZ,gBAAQ,MAAM,6BAA6B,CAAG;AAAA,MAChD;AAAA,IACF,GAE0B,GAAG;AAAA,EAC/B,GAAG;AAAA,IAAC;AAAA,IAAU;AAAA,IAAS;AAAA,IAAa;AAAA,EAAY,CAAC;AACnD"}
1
+ {"version":3,"file":"useMermaidRenderer.js","names":[],"sources":["../../../src/components/Markdown/useMermaidRenderer.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport mermaid from 'mermaid';\n\nexport function useMermaidRenderer(\n containerRef: React.RefObject<HTMLDivElement | null>,\n markdown: string,\n enabled: boolean,\n) {\n const [initialized, setInitialized] = useState(false);\n const initRef = useRef(false);\n\n useEffect(() => {\n if (enabled && !initRef.current) {\n mermaid.initialize({\n startOnLoad: false,\n theme: 'default',\n securityLevel: 'loose',\n fontFamily: 'inherit',\n flowchart: {\n useMaxWidth: true,\n htmlLabels: true,\n },\n });\n initRef.current = true;\n setInitialized(true);\n }\n }, [enabled]);\n\n useEffect(() => {\n if (!enabled || !initialized || !markdown || !containerRef.current) return;\n\n const renderMermaid = async () => {\n try {\n const mermaidElements = containerRef.current?.querySelectorAll('.mermaid-diagram');\n if (mermaidElements) {\n for (let i = 0; i < mermaidElements.length; i++) {\n const element = mermaidElements[i] as HTMLElement;\n const code = element.textContent || '';\n if (code.trim()) {\n try {\n const { svg } = await mermaid.render(`mermaid-${Date.now()}-${i}`, code);\n element.innerHTML = svg;\n } catch (err) {\n console.error('Mermaid render error:', err);\n element.innerHTML = `<pre class=\"text-error\">${code}</pre>`;\n }\n }\n }\n }\n } catch (err) {\n console.error('Mermaid rendering failed:', err);\n }\n };\n\n setTimeout(renderMermaid, 100);\n }, [markdown, enabled, initialized, containerRef]);\n}\n"],"mappings":";;;AAGA,SAAgB,EACd,GACA,GACA,GACA;CACA,IAAM,CAAC,GAAa,KAAkB,EAAS,EAAK,GAC9C,IAAU,EAAO,EAAK;CAmB5B,AAjBA,QAAgB;EACd,AAAI,KAAW,CAAC,EAAQ,YACtB,EAAQ,WAAW;GACjB,aAAa;GACb,OAAO;GACP,eAAe;GACf,YAAY;GACZ,WAAW;IACT,aAAa;IACb,YAAY;GACd;EACF,CAAC,GACD,EAAQ,UAAU,IAClB,EAAe,EAAI;CAEvB,GAAG,CAAC,CAAO,CAAC,GAEZ,QAAgB;EACV,AAAC,KAAY,KAAgB,KAAa,EAAa,WAyB3D,WAAW,YAvBuB;GAChC,IAAI;IACF,IAAM,IAAkB,EAAa,SAAS,iBAAiB,kBAAkB;IACjF,IAAI,GACF,KAAK,IAAI,IAAI,GAAG,IAAI,EAAgB,QAAQ,KAAK;KAC/C,IAAM,IAAU,EAAgB,IAC1B,IAAO,EAAQ,eAAe;KACpC,IAAI,EAAK,KAAK,GACZ,IAAI;MACF,IAAM,EAAE,WAAQ,MAAM,EAAQ,OAAO,WAAW,KAAK,IAAI,EAAE,GAAG,KAAK,CAAI;MACvE,EAAQ,YAAY;KACtB,SAAS,GAAK;MAEZ,AADA,QAAQ,MAAM,yBAAyB,CAAG,GAC1C,EAAQ,YAAY,2BAA2B,EAAK;KACtD;IAEJ;GAEJ,SAAS,GAAK;IACZ,QAAQ,MAAM,6BAA6B,CAAG;GAChD;EACF,GAE0B,GAAG;CAC/B,GAAG;EAAC;EAAU;EAAS;EAAa;CAAY,CAAC;AACnD"}
@@ -1,85 +1,85 @@
1
- import { useEffect as N } from "react";
2
- import { jsx as e, jsxs as r } from "react/jsx-runtime";
3
- var g = {
4
- sm: "max-w-sm",
5
- md: "max-w-lg",
6
- lg: "max-w-2xl",
7
- xl: "max-w-5xl",
8
- full: "max-w-[95vw]"
9
- }, x = (t) => typeof t == "number" ? `${t}px` : t, E = ({ open: t, onClose: s, title: a, description: n, children: v, footer: l, size: u = "md", width: i, height: d, closeOnOverlay: b = !0, showClose: c = !0, className: f = "" }) => {
10
- if (N(() => {
11
- if (!t) return;
12
- const m = (k) => {
13
- k.key === "Escape" && s();
14
- };
15
- window.addEventListener("keydown", m);
16
- const p = document.body.style.overflow;
17
- return document.body.style.overflow = "hidden", () => {
18
- window.removeEventListener("keydown", m), document.body.style.overflow = p;
19
- };
20
- }, [t, s]), !t) return null;
21
- const o = i !== void 0, h = {
22
- width: o ? x(i) : void 0,
23
- maxWidth: o ? "95vw" : void 0,
24
- height: x(d),
25
- maxHeight: "92vh"
26
- }, w = o ? "" : g[u], y = d !== void 0 ? "min-h-0 flex-1 overflow-y-auto px-5 py-4" : "max-h-[70vh] overflow-y-auto px-5 py-4";
27
- return /* @__PURE__ */ r("div", {
28
- className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
29
- children: [/* @__PURE__ */ e("div", {
30
- className: "absolute inset-0",
31
- onClick: b ? s : void 0,
32
- "aria-hidden": !0
33
- }), /* @__PURE__ */ r("div", {
34
- role: "dialog",
35
- "aria-modal": "true",
36
- className: `card relative flex w-full flex-col bg-base-100 shadow-xl ${w} ${f}`.trim(),
37
- style: h,
38
- children: [
39
- (a || c) && /* @__PURE__ */ r("div", {
40
- className: "flex shrink-0 items-start justify-between gap-3 border-b border-base-300 px-5 py-3.5",
41
- children: [/* @__PURE__ */ r("div", {
42
- className: "min-w-0",
43
- children: [a && /* @__PURE__ */ e("h3", {
44
- className: "truncate text-sm font-semibold text-base-content",
45
- children: a
46
- }), n && /* @__PURE__ */ e("p", {
47
- className: "mt-0.5 text-xs text-base-content/60",
48
- children: n
49
- })]
50
- }), c && /* @__PURE__ */ e("button", {
51
- type: "button",
52
- onClick: s,
53
- "aria-label": "Close",
54
- className: "shrink-0 rounded-md p-1 text-base-content/50 transition-colors hover:bg-base-200 hover:text-base-content",
55
- children: /* @__PURE__ */ e("svg", {
56
- className: "h-4 w-4",
57
- fill: "none",
58
- viewBox: "0 0 24 24",
59
- stroke: "currentColor",
60
- strokeWidth: 2,
61
- children: /* @__PURE__ */ e("path", {
62
- strokeLinecap: "round",
63
- strokeLinejoin: "round",
64
- d: "M6 18L18 6M6 6l12 12"
65
- })
66
- })
67
- })]
68
- }),
69
- /* @__PURE__ */ e("div", {
70
- className: y,
71
- children: v
72
- }),
73
- l && /* @__PURE__ */ e("div", {
74
- className: "flex shrink-0 justify-end gap-2 border-t border-base-300 px-5 py-3.5",
75
- children: l
76
- })
77
- ]
78
- })]
79
- });
80
- };
81
- export {
82
- E as default
1
+ import { useEffect as e } from "react";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ //#region src/components/Modal/index.tsx
4
+ var r = {
5
+ sm: "max-w-sm",
6
+ md: "max-w-lg",
7
+ lg: "max-w-2xl",
8
+ xl: "max-w-5xl",
9
+ full: "max-w-[95vw]"
10
+ }, i = (e) => typeof e == "number" ? `${e}px` : e, a = ({ open: a, onClose: o, title: s, description: c, children: l, footer: u, size: d = "md", width: f, height: p, closeOnOverlay: m = !0, showClose: h = !0, className: g = "" }) => {
11
+ if (e(() => {
12
+ if (!a) return;
13
+ let e = (e) => {
14
+ e.key === "Escape" && o();
15
+ };
16
+ window.addEventListener("keydown", e);
17
+ let t = document.body.style.overflow;
18
+ return document.body.style.overflow = "hidden", () => {
19
+ window.removeEventListener("keydown", e), document.body.style.overflow = t;
20
+ };
21
+ }, [a, o]), !a) return null;
22
+ let _ = f !== void 0, v = {
23
+ width: _ ? i(f) : void 0,
24
+ maxWidth: _ ? "95vw" : void 0,
25
+ height: i(p),
26
+ maxHeight: "92vh"
27
+ }, y = _ ? "" : r[d], b = p === void 0 ? "max-h-[70vh] overflow-y-auto px-5 py-4" : "min-h-0 flex-1 overflow-y-auto px-5 py-4";
28
+ return /* @__PURE__ */ n("div", {
29
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
30
+ children: [/* @__PURE__ */ t("div", {
31
+ className: "absolute inset-0",
32
+ onClick: m ? o : void 0,
33
+ "aria-hidden": !0
34
+ }), /* @__PURE__ */ n("div", {
35
+ role: "dialog",
36
+ "aria-modal": "true",
37
+ className: `card relative flex w-full flex-col bg-base-100 shadow-xl ${y} ${g}`.trim(),
38
+ style: v,
39
+ children: [
40
+ (s || h) && /* @__PURE__ */ n("div", {
41
+ className: "flex shrink-0 items-start justify-between gap-3 border-b border-base-300 px-5 py-3.5",
42
+ children: [/* @__PURE__ */ n("div", {
43
+ className: "min-w-0",
44
+ children: [s && /* @__PURE__ */ t("h3", {
45
+ className: "truncate text-sm font-semibold text-base-content",
46
+ children: s
47
+ }), c && /* @__PURE__ */ t("p", {
48
+ className: "mt-0.5 text-xs text-base-content/60",
49
+ children: c
50
+ })]
51
+ }), h && /* @__PURE__ */ t("button", {
52
+ type: "button",
53
+ onClick: o,
54
+ "aria-label": "Close",
55
+ className: "shrink-0 rounded-md p-1 text-base-content/50 transition-colors hover:bg-base-200 hover:text-base-content",
56
+ children: /* @__PURE__ */ t("svg", {
57
+ className: "h-4 w-4",
58
+ fill: "none",
59
+ viewBox: "0 0 24 24",
60
+ stroke: "currentColor",
61
+ strokeWidth: 2,
62
+ children: /* @__PURE__ */ t("path", {
63
+ strokeLinecap: "round",
64
+ strokeLinejoin: "round",
65
+ d: "M6 18L18 6M6 6l12 12"
66
+ })
67
+ })
68
+ })]
69
+ }),
70
+ /* @__PURE__ */ t("div", {
71
+ className: b,
72
+ children: l
73
+ }),
74
+ u && /* @__PURE__ */ t("div", {
75
+ className: "flex shrink-0 justify-end gap-2 border-t border-base-300 px-5 py-3.5",
76
+ children: u
77
+ })
78
+ ]
79
+ })]
80
+ });
83
81
  };
82
+ //#endregion
83
+ export { a as default };
84
84
 
85
85
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Modal/index.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\n\nexport type ModalProps = {\n /** 是否打开 */\n open: boolean;\n /** 关闭回调(遮罩点击 / Esc / 关闭按钮触发) */\n onClose: () => void;\n /** 标题 */\n title?: React.ReactNode;\n /** 标题下的说明文字 */\n description?: React.ReactNode;\n /** 正文内容 */\n children?: React.ReactNode;\n /** 底部操作区(默认右对齐) */\n footer?: React.ReactNode;\n /** 尺寸(预设):sm / md / lg / xl / full */\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n /** 自定义宽度:支持百分比/像素等 CSS 长度(如 \"80%\"、640)。优先于 size。 */\n width?: number | string;\n /** 自定义高度:支持百分比/像素等 CSS 长度(如 \"80%\"、480)。 */\n height?: number | string;\n /** 点击遮罩是否关闭(默认 true) */\n closeOnOverlay?: boolean;\n /** 是否显示右上角关闭按钮(默认 true) */\n showClose?: boolean;\n className?: string;\n};\n\nconst SIZE_CLASS: Record<NonNullable<ModalProps['size']>, string> = {\n sm: 'max-w-sm',\n md: 'max-w-lg',\n lg: 'max-w-2xl',\n xl: 'max-w-5xl',\n full: 'max-w-[95vw]',\n};\n\nconst toCssSize = (value: number | string | undefined): string | undefined =>\n typeof value === 'number' ? `${value}px` : value;\n\n/**\n * 轻量模态框:遮罩 + 居中面板,支持 Esc 关闭、遮罩点击关闭与滚动锁定。\n */\nconst Modal = ({\n open,\n onClose,\n title,\n description,\n children,\n footer,\n size = 'md',\n width,\n height,\n closeOnOverlay = true,\n showClose = true,\n className = '',\n}: ModalProps) => {\n useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n };\n window.addEventListener('keydown', onKey);\n const prevOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n return () => {\n window.removeEventListener('keydown', onKey);\n document.body.style.overflow = prevOverflow;\n };\n }, [open, onClose]);\n\n if (!open) return null;\n\n // 自定义宽高:传入时优先于 size 预设;支持百分比。\n const hasCustomWidth = width !== undefined;\n const panelStyle: React.CSSProperties = {\n width: hasCustomWidth ? toCssSize(width) : undefined,\n maxWidth: hasCustomWidth ? '95vw' : undefined,\n height: toCssSize(height),\n maxHeight: '92vh',\n };\n // 面板尺寸类:未自定义宽度时才应用 max-w-* 预设。\n const sizeClass = hasCustomWidth ? '' : SIZE_CLASS[size];\n // 正文区:固定高度时自适应充满并内部滚动;否则限制最大高度。\n const bodyClass = height !== undefined\n ? 'min-h-0 flex-1 overflow-y-auto px-5 py-4'\n : 'max-h-[70vh] overflow-y-auto px-5 py-4';\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4\">\n <div\n className=\"absolute inset-0\"\n onClick={closeOnOverlay ? onClose : undefined}\n aria-hidden\n />\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n className={`card relative flex w-full flex-col bg-base-100 shadow-xl ${sizeClass} ${className}`.trim()}\n style={panelStyle}\n >\n {(title || showClose) && (\n <div className=\"flex shrink-0 items-start justify-between gap-3 border-b border-base-300 px-5 py-3.5\">\n <div className=\"min-w-0\">\n {title && (\n <h3 className=\"truncate text-sm font-semibold text-base-content\">\n {title}\n </h3>\n )}\n {description && (\n <p className=\"mt-0.5 text-xs text-base-content/60\">{description}</p>\n )}\n </div>\n {showClose && (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close\"\n className=\"shrink-0 rounded-md p-1 text-base-content/50 transition-colors hover:bg-base-200 hover:text-base-content\"\n >\n <svg\n className=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n )}\n </div>\n )}\n <div className={bodyClass}>{children}</div>\n {footer && (\n <div className=\"flex shrink-0 justify-end gap-2 border-t border-base-300 px-5 py-3.5\">\n {footer}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default Modal;\n"],"mappings":";;AA4BA,IAAM,IAA8D;AAAA,EAChE,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM;AACV,GAEM,IAAA,CAAa,MACf,OAAO,KAAU,WAAW,GAAG,CAAA,OAAY,GAKzC,IAAA,CAAS,EACX,MAAA,GACA,SAAA,GACA,OAAA,GACA,aAAA,GACA,UAAA,GACA,QAAA,GACA,MAAA,IAAO,MACP,OAAA,GACA,QAAA,GACA,gBAAA,IAAiB,IACjB,WAAA,IAAY,IACZ,WAAA,IAAY,GAAA,MACE;AAed,MAdA,EAAA,MAAgB;AACZ,QAAI,CAAC,EAAM;AACX,UAAM,IAAA,CAAS,MAAqB;AAChC,MAAI,EAAE,QAAQ,YAAU,EAAQ;AAAA,IACpC;AACA,WAAO,iBAAiB,WAAW,CAAK;AACxC,UAAM,IAAe,SAAS,KAAK,MAAM;AACzC,oBAAS,KAAK,MAAM,WAAW,UAC/B,MAAa;AACT,aAAO,oBAAoB,WAAW,CAAK,GAC3C,SAAS,KAAK,MAAM,WAAW;AAAA,IACnC;AAAA,EACJ,GAAG,CAAC,GAAM,CAAO,CAAC,GAEd,CAAC,EAAM,QAAO;AAGlB,QAAM,IAAiB,MAAU,QAC3B,IAAkC;AAAA,IACpC,OAAO,IAAiB,EAAU,CAAK,IAAI;AAAA,IAC3C,UAAU,IAAiB,SAAS;AAAA,IACpC,QAAQ,EAAU,CAAM;AAAA,IACxB,WAAW;AAAA,EACf,GAEM,IAAY,IAAiB,KAAK,EAAW,CAAA,GAE7C,IAAY,MAAW,SACvB,6CACA;AAEN,SACI,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAU;AAAA,IAAf,UAAA,CACI,gBAAA,EAAC,OAAD;AAAA,MACI,WAAU;AAAA,MACV,SAAS,IAAiB,IAAU;AAAA,MACpC,eAAA;AAAA,IACH,CAAA,GACD,gBAAA,EAAC,OAAD;AAAA,MACI,MAAK;AAAA,MACL,cAAW;AAAA,MACX,WAAW,4DAA4D,CAAA,IAAa,CAAA,GAAY,KAAK;AAAA,MACrG,OAAO;AAAA,MAJX,UAAA;AAAA,SAMM,KAAS,MACP,gBAAA,EAAC,OAAD;AAAA,UAAK,WAAU;AAAA,UAAf,UAAA,CACI,gBAAA,EAAC,OAAD;AAAA,YAAK,WAAU;AAAA,YAAf,UAAA,CACK,KACG,gBAAA,EAAC,MAAD;AAAA,cAAI,WAAU;AAAA,cACT,UAAA;AAAA,YACD,CAAA,GAEP,KACG,gBAAA,EAAC,KAAD;AAAA,cAAG,WAAU;AAAA,cAAuC,UAAA;AAAA,YAAe,CAAA,CAEtE;AAAA,UACJ,CAAA,GAAA,KACG,gBAAA,EAAC,UAAD;AAAA,YACI,MAAK;AAAA,YACL,SAAS;AAAA,YACT,cAAW;AAAA,YACX,WAAU;AAAA,YAEV,UAAA,gBAAA,EAAC,OAAD;AAAA,cACI,WAAU;AAAA,cACV,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,QAAO;AAAA,cACP,aAAa;AAAA,cAEb,UAAA,gBAAA,EAAC,QAAD;AAAA,gBACI,eAAc;AAAA,gBACd,gBAAe;AAAA,gBACf,GAAE;AAAA,cACL,CAAA;AAAA,YACA,CAAA;AAAA,UACD,CAAA,CAEX;AAAA;QAET,gBAAA,EAAC,OAAD;AAAA,UAAK,WAAW;AAAA,UAAY,UAAA;AAAA,QAAc,CAAA;AAAA,QACzC,KACG,gBAAA,EAAC,OAAD;AAAA,UAAK,WAAU;AAAA,UACV,UAAA;AAAA,QACA,CAAA;AAAA,MAER;AAAA,IACJ,CAAA,CAAA;AAAA;AAEb"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Modal/index.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\n\nexport type ModalProps = {\n /** 是否打开 */\n open: boolean;\n /** 关闭回调(遮罩点击 / Esc / 关闭按钮触发) */\n onClose: () => void;\n /** 标题 */\n title?: React.ReactNode;\n /** 标题下的说明文字 */\n description?: React.ReactNode;\n /** 正文内容 */\n children?: React.ReactNode;\n /** 底部操作区(默认右对齐) */\n footer?: React.ReactNode;\n /** 尺寸(预设):sm / md / lg / xl / full */\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n /** 自定义宽度:支持百分比/像素等 CSS 长度(如 \"80%\"、640)。优先于 size。 */\n width?: number | string;\n /** 自定义高度:支持百分比/像素等 CSS 长度(如 \"80%\"、480)。 */\n height?: number | string;\n /** 点击遮罩是否关闭(默认 true) */\n closeOnOverlay?: boolean;\n /** 是否显示右上角关闭按钮(默认 true) */\n showClose?: boolean;\n className?: string;\n};\n\nconst SIZE_CLASS: Record<NonNullable<ModalProps['size']>, string> = {\n sm: 'max-w-sm',\n md: 'max-w-lg',\n lg: 'max-w-2xl',\n xl: 'max-w-5xl',\n full: 'max-w-[95vw]',\n};\n\nconst toCssSize = (value: number | string | undefined): string | undefined =>\n typeof value === 'number' ? `${value}px` : value;\n\n/**\n * 轻量模态框:遮罩 + 居中面板,支持 Esc 关闭、遮罩点击关闭与滚动锁定。\n */\nconst Modal = ({\n open,\n onClose,\n title,\n description,\n children,\n footer,\n size = 'md',\n width,\n height,\n closeOnOverlay = true,\n showClose = true,\n className = '',\n}: ModalProps) => {\n useEffect(() => {\n if (!open) return;\n const onKey = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n };\n window.addEventListener('keydown', onKey);\n const prevOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n return () => {\n window.removeEventListener('keydown', onKey);\n document.body.style.overflow = prevOverflow;\n };\n }, [open, onClose]);\n\n if (!open) return null;\n\n // 自定义宽高:传入时优先于 size 预设;支持百分比。\n const hasCustomWidth = width !== undefined;\n const panelStyle: React.CSSProperties = {\n width: hasCustomWidth ? toCssSize(width) : undefined,\n maxWidth: hasCustomWidth ? '95vw' : undefined,\n height: toCssSize(height),\n maxHeight: '92vh',\n };\n // 面板尺寸类:未自定义宽度时才应用 max-w-* 预设。\n const sizeClass = hasCustomWidth ? '' : SIZE_CLASS[size];\n // 正文区:固定高度时自适应充满并内部滚动;否则限制最大高度。\n const bodyClass = height !== undefined\n ? 'min-h-0 flex-1 overflow-y-auto px-5 py-4'\n : 'max-h-[70vh] overflow-y-auto px-5 py-4';\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4\">\n <div\n className=\"absolute inset-0\"\n onClick={closeOnOverlay ? onClose : undefined}\n aria-hidden\n />\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n className={`card relative flex w-full flex-col bg-base-100 shadow-xl ${sizeClass} ${className}`.trim()}\n style={panelStyle}\n >\n {(title || showClose) && (\n <div className=\"flex shrink-0 items-start justify-between gap-3 border-b border-base-300 px-5 py-3.5\">\n <div className=\"min-w-0\">\n {title && (\n <h3 className=\"truncate text-sm font-semibold text-base-content\">\n {title}\n </h3>\n )}\n {description && (\n <p className=\"mt-0.5 text-xs text-base-content/60\">{description}</p>\n )}\n </div>\n {showClose && (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close\"\n className=\"shrink-0 rounded-md p-1 text-base-content/50 transition-colors hover:bg-base-200 hover:text-base-content\"\n >\n <svg\n className=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n strokeWidth={2}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n )}\n </div>\n )}\n <div className={bodyClass}>{children}</div>\n {footer && (\n <div className=\"flex shrink-0 justify-end gap-2 border-t border-base-300 px-5 py-3.5\">\n {footer}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default Modal;\n"],"mappings":";;;AA4BA,IAAM,IAA8D;CAChE,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACV,GAEM,KAAa,MACf,OAAO,KAAU,WAAW,GAAG,EAAM,MAAM,GAKzC,KAAS,EACX,SACA,YACA,UACA,gBACA,aACA,WACA,UAAO,MACP,UACA,WACA,oBAAiB,IACjB,eAAY,IACZ,eAAY,SACE;CAed,IAdA,QAAgB;EACZ,IAAI,CAAC,GAAM;EACX,IAAM,KAAS,MAAqB;GAChC,AAAI,EAAE,QAAQ,YAAU,EAAQ;EACpC;EACA,OAAO,iBAAiB,WAAW,CAAK;EACxC,IAAM,IAAe,SAAS,KAAK,MAAM;EAEzC,OADA,SAAS,KAAK,MAAM,WAAW,gBAClB;GAET,AADA,OAAO,oBAAoB,WAAW,CAAK,GAC3C,SAAS,KAAK,MAAM,WAAW;EACnC;CACJ,GAAG,CAAC,GAAM,CAAO,CAAC,GAEd,CAAC,GAAM,OAAO;CAGlB,IAAM,IAAiB,MAAU,KAAA,GAC3B,IAAkC;EACpC,OAAO,IAAiB,EAAU,CAAK,IAAI,KAAA;EAC3C,UAAU,IAAiB,SAAS,KAAA;EACpC,QAAQ,EAAU,CAAM;EACxB,WAAW;CACf,GAEM,IAAY,IAAiB,KAAK,EAAW,IAE7C,IAAY,MAAW,KAAA,IAEvB,2CADA;CAGN,OACI,kBAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACI,kBAAC,OAAD;GACI,WAAU;GACV,SAAS,IAAiB,IAAU,KAAA;GACpC,eAAA;EACH,CAAA,GACD,kBAAC,OAAD;GACI,MAAK;GACL,cAAW;GACX,WAAW,4DAA4D,EAAU,GAAG,IAAY,KAAK;GACrG,OAAO;GAJX,UAAA;KAMM,KAAS,MACP,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACI,kBAAC,OAAD;MAAK,WAAU;MAAf,UAAA,CACK,KACG,kBAAC,MAAD;OAAI,WAAU;OACT,UAAA;MACD,CAAA,GAEP,KACG,kBAAC,KAAD;OAAG,WAAU;OAAuC,UAAA;MAAe,CAAA,CAEtE;KACJ,CAAA,GAAA,KACG,kBAAC,UAAD;MACI,MAAK;MACL,SAAS;MACT,cAAW;MACX,WAAU;MAEV,UAAA,kBAAC,OAAD;OACI,WAAU;OACV,MAAK;OACL,SAAQ;OACR,QAAO;OACP,aAAa;OAEb,UAAA,kBAAC,QAAD;QACI,eAAc;QACd,gBAAe;QACf,GAAE;OACL,CAAA;MACA,CAAA;KACD,CAAA,CAEX;;IAET,kBAAC,OAAD;KAAK,WAAW;KAAY;IAAc,CAAA;IACzC,KACG,kBAAC,OAAD;KAAK,WAAU;KACV,UAAA;IACA,CAAA;GAER;EACJ,CAAA,CAAA;;AAEb"}
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ export type MultipleChoiceOption = {
3
+ /** Value submitted for this option. */
4
+ value: string | number;
5
+ /** Display label. */
6
+ label: React.ReactNode;
7
+ /** Disable this option only. */
8
+ disabled?: boolean;
9
+ };
10
+ export type MultipleChoiceVariant = 'default' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';
11
+ export type MultipleChoiceProps = {
12
+ /** Available options. */
13
+ options: MultipleChoiceOption[];
14
+ /** Controlled selected values. */
15
+ value?: Array<string | number>;
16
+ /** Uncontrolled initial selection. */
17
+ defaultValue?: Array<string | number>;
18
+ /** Change handler with the full selected-value array. */
19
+ onChange?: (values: Array<string | number>) => void;
20
+ /** Layout of the options. */
21
+ orientation?: 'vertical' | 'horizontal';
22
+ /** Color variant forwarded to each checkbox. */
23
+ variant?: MultipleChoiceVariant;
24
+ /** Size forwarded to each checkbox. */
25
+ size?: 'xs' | 'sm' | 'md' | 'lg';
26
+ /** Disable the whole group. */
27
+ disabled?: boolean;
28
+ /** Limit the number of selectable options. */
29
+ maxSelected?: number;
30
+ /** Optional group label rendered above the options. */
31
+ label?: React.ReactNode;
32
+ /** Native name attribute for each checkbox. */
33
+ name?: string;
34
+ /** Extra class names on the wrapper. */
35
+ className?: string;
36
+ /** Inline styles on the wrapper. */
37
+ style?: React.CSSProperties;
38
+ };
39
+ /**
40
+ * MultipleChoice —— A2UI 交互组件(v0.8):多选项组。
41
+ * 基于 dishui Checkbox 的受控 / 非受控多选组,支持横竖排与最大选择数限制。
42
+ */
43
+ declare const MultipleChoice: React.FC<MultipleChoiceProps>;
44
+ export default MultipleChoice;