dishui 0.0.65 → 0.0.66

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 (500) 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/Badge/index.js +10 -15
  5. package/dist/components/Badge/index.js.map +1 -1
  6. package/dist/components/Button/index.js +62 -89
  7. package/dist/components/Button/index.js.map +1 -1
  8. package/dist/components/Card/index.d.ts +76 -0
  9. package/dist/components/Card/index.js +178 -69
  10. package/dist/components/Card/index.js.map +1 -1
  11. package/dist/components/Chart/Chart.js +25 -25
  12. package/dist/components/Chart/Chart.js.map +1 -1
  13. package/dist/components/Checkbox/index.js +57 -65
  14. package/dist/components/Checkbox/index.js.map +1 -1
  15. package/dist/components/ChoicePicker/index.d.ts +44 -0
  16. package/dist/components/ChoicePicker/index.js +81 -0
  17. package/dist/components/ChoicePicker/index.js.map +1 -0
  18. package/dist/components/Column/index.d.ts +28 -0
  19. package/dist/components/Column/index.js +30 -0
  20. package/dist/components/Column/index.js.map +1 -0
  21. package/dist/components/DateTimeInput/index.d.ts +44 -0
  22. package/dist/components/DateTimeInput/index.js +48 -0
  23. package/dist/components/DateTimeInput/index.js.map +1 -0
  24. package/dist/components/Demo/index.js +107 -107
  25. package/dist/components/Demo/index.js.map +1 -1
  26. package/dist/components/Divider/index.d.ts +20 -0
  27. package/dist/components/Divider/index.js +30 -0
  28. package/dist/components/Divider/index.js.map +1 -0
  29. package/dist/components/EmptyState/index.js +24 -24
  30. package/dist/components/EmptyState/index.js.map +1 -1
  31. package/dist/components/FileUploader/DropZone.js +134 -136
  32. package/dist/components/FileUploader/DropZone.js.map +1 -1
  33. package/dist/components/FileUploader/FileItem.js +159 -163
  34. package/dist/components/FileUploader/FileItem.js.map +1 -1
  35. package/dist/components/FileUploader/FileUploader.js +126 -127
  36. package/dist/components/FileUploader/FileUploader.js.map +1 -1
  37. package/dist/components/FileUploader/UploadQueue.js +62 -62
  38. package/dist/components/FileUploader/UploadQueue.js.map +1 -1
  39. package/dist/components/FloatWindow/index.d.ts +28 -0
  40. package/dist/components/GridLayout/index.d.ts +42 -0
  41. package/dist/components/Icon/index.d.ts +24 -0
  42. package/dist/components/Icon/index.js +26 -0
  43. package/dist/components/Icon/index.js.map +1 -0
  44. package/dist/components/Image/index.d.ts +33 -0
  45. package/dist/components/Image/index.js +44 -0
  46. package/dist/components/Image/index.js.map +1 -0
  47. package/dist/components/Input/index.js +196 -197
  48. package/dist/components/Input/index.js.map +1 -1
  49. package/dist/components/Label/index.js +62 -74
  50. package/dist/components/Label/index.js.map +1 -1
  51. package/dist/components/Layout/index.js +134 -139
  52. package/dist/components/Layout/index.js.map +1 -1
  53. package/dist/components/List/index.js +45 -58
  54. package/dist/components/List/index.js.map +1 -1
  55. package/dist/components/Markdown/Markdown.js +106 -107
  56. package/dist/components/Markdown/Markdown.js.map +1 -1
  57. package/dist/components/Markdown/codeThemes.js +24 -33
  58. package/dist/components/Markdown/codeThemes.js.map +1 -1
  59. package/dist/components/Markdown/markdownComponents.js +203 -208
  60. package/dist/components/Markdown/markdownComponents.js.map +1 -1
  61. package/dist/components/Markdown/parseCodeBlockMeta.js +22 -22
  62. package/dist/components/Markdown/parseCodeBlockMeta.js.map +1 -1
  63. package/dist/components/Markdown/useMarkdownSource.js +46 -46
  64. package/dist/components/Markdown/useMarkdownSource.js.map +1 -1
  65. package/dist/components/Markdown/useMarkmapRenderer.js +35 -36
  66. package/dist/components/Markdown/useMarkmapRenderer.js.map +1 -1
  67. package/dist/components/Markdown/useMermaidRenderer.js +41 -42
  68. package/dist/components/Markdown/useMermaidRenderer.js.map +1 -1
  69. package/dist/components/Modal/index.js +82 -82
  70. package/dist/components/Modal/index.js.map +1 -1
  71. package/dist/components/MultipleChoice/index.d.ts +44 -0
  72. package/dist/components/MultipleChoice/index.js +52 -0
  73. package/dist/components/MultipleChoice/index.js.map +1 -0
  74. package/dist/components/Notification/index.d.ts +17 -0
  75. package/dist/components/Page/index.js +40 -71
  76. package/dist/components/Page/index.js.map +1 -1
  77. package/dist/components/PageHeader/index.js +28 -28
  78. package/dist/components/PageHeader/index.js.map +1 -1
  79. package/dist/components/ProtectedRoute/index.js +8 -9
  80. package/dist/components/ProtectedRoute/index.js.map +1 -1
  81. package/dist/components/Row/index.d.ts +28 -0
  82. package/dist/components/Row/index.js +30 -0
  83. package/dist/components/Row/index.js.map +1 -0
  84. package/dist/components/Select/index.js +251 -254
  85. package/dist/components/Select/index.js.map +1 -1
  86. package/dist/components/SidebarToggleButton/index.js +56 -59
  87. package/dist/components/SidebarToggleButton/index.js.map +1 -1
  88. package/dist/components/Slider/index.d.ts +39 -0
  89. package/dist/components/Slider/index.js +52 -0
  90. package/dist/components/Slider/index.js.map +1 -0
  91. package/dist/components/StatCard/index.d.ts +29 -1
  92. package/dist/components/StatCard/index.js +189 -86
  93. package/dist/components/StatCard/index.js.map +1 -1
  94. package/dist/components/Switch/index.d.ts +34 -0
  95. package/dist/components/Switch/index.js +55 -0
  96. package/dist/components/Switch/index.js.map +1 -0
  97. package/dist/components/Tab/index.d.ts +40 -0
  98. package/dist/components/Table/index.js +109 -121
  99. package/dist/components/Table/index.js.map +1 -1
  100. package/dist/components/Tabs/index.js +28 -38
  101. package/dist/components/Tabs/index.js.map +1 -1
  102. package/dist/components/Text/index.d.ts +43 -0
  103. package/dist/components/Text/index.js +55 -0
  104. package/dist/components/Text/index.js.map +1 -0
  105. package/dist/components/Tooltip/index.d.ts +23 -0
  106. package/dist/components/Tooltip/index.js +34 -0
  107. package/dist/components/Tooltip/index.js.map +1 -0
  108. package/dist/components/Tree/Tree.js +205 -205
  109. package/dist/components/Tree/Tree.js.map +1 -1
  110. package/dist/components/pro/ArticleContextMenu/index.js +86 -87
  111. package/dist/components/pro/ArticleContextMenu/index.js.map +1 -1
  112. package/dist/components/pro/ArticleControl/ArticleControl2.js +250 -250
  113. package/dist/components/pro/ArticleControl/ArticleControl2.js.map +1 -1
  114. package/dist/components/pro/ArticleControl/buildHeadingTree.js +31 -32
  115. package/dist/components/pro/ArticleControl/buildHeadingTree.js.map +1 -1
  116. package/dist/components/pro/ArticleControl/useArticleToc.js +100 -102
  117. package/dist/components/pro/ArticleControl/useArticleToc.js.map +1 -1
  118. package/dist/components/pro/Calendar/Calendar.d.ts +10 -0
  119. package/dist/components/pro/Calendar/hooks/useCalendarDrag.d.ts +47 -0
  120. package/dist/components/pro/Calendar/hooks/useCalendarState.d.ts +56 -0
  121. package/dist/components/pro/Calendar/index.d.ts +7 -0
  122. package/dist/components/pro/Calendar/types.d.ts +151 -0
  123. package/dist/components/pro/Calendar/utils.d.ts +94 -0
  124. package/dist/components/pro/Chat/Chat.d.ts +6 -0
  125. package/dist/components/pro/Chat/index.d.ts +2 -0
  126. package/dist/components/pro/Chat/types.d.ts +84 -0
  127. package/dist/components/pro/CodeEditor/editors/CodeEditor.js +287 -327
  128. package/dist/components/pro/CodeEditor/editors/CodeEditor.js.map +1 -1
  129. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js +167 -224
  130. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js.map +1 -1
  131. package/dist/components/pro/CodeEditor/editors/markdownExtensions.js +594 -613
  132. package/dist/components/pro/CodeEditor/editors/markdownExtensions.js.map +1 -1
  133. package/dist/components/pro/CodeEditor/extensions/contextMenu.js +54 -55
  134. package/dist/components/pro/CodeEditor/extensions/contextMenu.js.map +1 -1
  135. package/dist/components/pro/CodeEditor/extensions/index.js +152 -160
  136. package/dist/components/pro/CodeEditor/extensions/index.js.map +1 -1
  137. package/dist/components/pro/CodeEditor/langs/index.js +7 -15
  138. package/dist/components/pro/CodeEditor/langs/index.js.map +1 -1
  139. package/dist/components/pro/CodeEditor/langs/javascript.js +11 -48
  140. package/dist/components/pro/CodeEditor/langs/javascript.js.map +1 -1
  141. package/dist/components/pro/CodeEditor/langs/python.js +4 -40
  142. package/dist/components/pro/CodeEditor/langs/python.js.map +1 -1
  143. package/dist/components/pro/CodeEditor/langs/snippets.js +118 -147
  144. package/dist/components/pro/CodeEditor/langs/snippets.js.map +1 -1
  145. package/dist/components/pro/CodeEditor/panels/FootnotePanel.js +153 -153
  146. package/dist/components/pro/CodeEditor/panels/FootnotePanel.js.map +1 -1
  147. package/dist/components/pro/CodeEditor/panels/HistoryPanel.js +180 -190
  148. package/dist/components/pro/CodeEditor/panels/HistoryPanel.js.map +1 -1
  149. package/dist/components/pro/CodeEditor/panels/OutlinePanel.js +130 -137
  150. package/dist/components/pro/CodeEditor/panels/OutlinePanel.js.map +1 -1
  151. package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js +228 -242
  152. package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js.map +1 -1
  153. package/dist/components/pro/CodeEditor/panels/VariablePanel.js +208 -248
  154. package/dist/components/pro/CodeEditor/panels/VariablePanel.js.map +1 -1
  155. package/dist/components/pro/CodeEditor/themes.js +513 -483
  156. package/dist/components/pro/CodeEditor/themes.js.map +1 -1
  157. package/dist/components/pro/CodeEditor/types.d.ts +1 -1
  158. package/dist/components/pro/CodeEditor/utils.js +171 -175
  159. package/dist/components/pro/CodeEditor/utils.js.map +1 -1
  160. package/dist/components/pro/DataTable/DataTable.js +305 -306
  161. package/dist/components/pro/DataTable/DataTable.js.map +1 -1
  162. package/dist/components/pro/DataTable/Filters.js +299 -314
  163. package/dist/components/pro/DataTable/Filters.js.map +1 -1
  164. package/dist/components/pro/DataTable/PivotPanel.js +203 -204
  165. package/dist/components/pro/DataTable/PivotPanel.js.map +1 -1
  166. package/dist/components/pro/DataTable/PivotView.js +142 -144
  167. package/dist/components/pro/DataTable/PivotView.js.map +1 -1
  168. package/dist/components/pro/DataTable/components/BulkActions.js +42 -42
  169. package/dist/components/pro/DataTable/components/BulkActions.js.map +1 -1
  170. package/dist/components/pro/DataTable/components/ColumnSelector.js +84 -84
  171. package/dist/components/pro/DataTable/components/ColumnSelector.js.map +1 -1
  172. package/dist/components/pro/DataTable/components/FilterBar.js +58 -58
  173. package/dist/components/pro/DataTable/components/FilterBar.js.map +1 -1
  174. package/dist/components/pro/DataTable/components/TableBody.js +93 -94
  175. package/dist/components/pro/DataTable/components/TableBody.js.map +1 -1
  176. package/dist/components/pro/DataTable/components/TableHeader.js +78 -78
  177. package/dist/components/pro/DataTable/components/TableHeader.js.map +1 -1
  178. package/dist/components/pro/DataTable/components/TablePagination.js +77 -77
  179. package/dist/components/pro/DataTable/components/TablePagination.js.map +1 -1
  180. package/dist/components/pro/DataTable/components/TableToolbar.js +40 -40
  181. package/dist/components/pro/DataTable/components/TableToolbar.js.map +1 -1
  182. package/dist/components/pro/DataTable/extension.js +5 -5
  183. package/dist/components/pro/DataTable/extension.js.map +1 -1
  184. package/dist/components/pro/DataTable/pivotEngine.js +84 -92
  185. package/dist/components/pro/DataTable/pivotEngine.js.map +1 -1
  186. package/dist/components/pro/DataTable/pivotExtension.js +93 -93
  187. package/dist/components/pro/DataTable/pivotExtension.js.map +1 -1
  188. package/dist/components/pro/DataTable/rowDetailExtension.js +30 -30
  189. package/dist/components/pro/DataTable/rowDetailExtension.js.map +1 -1
  190. package/dist/components/pro/DataTable/tanstack-table.js +45 -62
  191. package/dist/components/pro/DataTable/tanstack-table.js.map +1 -1
  192. package/dist/components/pro/DataTable/treeDataUtils.js +37 -48
  193. package/dist/components/pro/DataTable/treeDataUtils.js.map +1 -1
  194. package/dist/components/pro/DataTable/useColumnDragReorder.js +68 -68
  195. package/dist/components/pro/DataTable/useColumnDragReorder.js.map +1 -1
  196. package/dist/components/pro/DataTable/utils.js +156 -168
  197. package/dist/components/pro/DataTable/utils.js.map +1 -1
  198. package/dist/components/pro/FileExplorer/Breadcrumb.js +180 -180
  199. package/dist/components/pro/FileExplorer/Breadcrumb.js.map +1 -1
  200. package/dist/components/pro/FileExplorer/CreateDialog.js +78 -78
  201. package/dist/components/pro/FileExplorer/CreateDialog.js.map +1 -1
  202. package/dist/components/pro/FileExplorer/FileExplorer.js +202 -205
  203. package/dist/components/pro/FileExplorer/FileExplorer.js.map +1 -1
  204. package/dist/components/pro/FileExplorer/FileIcon.js +189 -189
  205. package/dist/components/pro/FileExplorer/FileIcon.js.map +1 -1
  206. package/dist/components/pro/FileExplorer/GridView.js +100 -100
  207. package/dist/components/pro/FileExplorer/GridView.js.map +1 -1
  208. package/dist/components/pro/FileExplorer/ListView.js +209 -209
  209. package/dist/components/pro/FileExplorer/ListView.js.map +1 -1
  210. package/dist/components/pro/FileExplorer/Toolbar.js +199 -199
  211. package/dist/components/pro/FileExplorer/Toolbar.js.map +1 -1
  212. package/dist/components/pro/Flow/Flow.js +920 -948
  213. package/dist/components/pro/Flow/Flow.js.map +1 -1
  214. package/dist/components/pro/Flow/FlowCanvas.js +1626 -1662
  215. package/dist/components/pro/Flow/FlowCanvas.js.map +1 -1
  216. package/dist/components/pro/Flow/archify/build.js +85 -94
  217. package/dist/components/pro/Flow/archify/build.js.map +1 -1
  218. package/dist/components/pro/Flow/archify/convert.js +512 -519
  219. package/dist/components/pro/Flow/archify/convert.js.map +1 -1
  220. package/dist/components/pro/Flow/archify/palette.js +87 -104
  221. package/dist/components/pro/Flow/archify/palette.js.map +1 -1
  222. package/dist/components/pro/Flow/archify/presets.js +34 -37
  223. package/dist/components/pro/Flow/archify/presets.js.map +1 -1
  224. package/dist/components/pro/Flow/archify/spec.js +7 -7
  225. package/dist/components/pro/Flow/archify/spec.js.map +1 -1
  226. package/dist/components/pro/Flow/canvas/AlignmentGuides.js +25 -25
  227. package/dist/components/pro/Flow/canvas/AlignmentGuides.js.map +1 -1
  228. package/dist/components/pro/Flow/canvas/GridRenderer.js +54 -55
  229. package/dist/components/pro/Flow/canvas/GridRenderer.js.map +1 -1
  230. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js +54 -58
  231. package/dist/components/pro/Flow/canvas/MiniMapRenderer.js.map +1 -1
  232. package/dist/components/pro/Flow/canvas/PixiApp.js +105 -102
  233. package/dist/components/pro/Flow/canvas/PixiApp.js.map +1 -1
  234. package/dist/components/pro/Flow/canvas/SelectionOverlay.js +38 -38
  235. package/dist/components/pro/Flow/canvas/SelectionOverlay.js.map +1 -1
  236. package/dist/components/pro/Flow/canvas/ViewportContainer.js +117 -117
  237. package/dist/components/pro/Flow/canvas/ViewportContainer.js.map +1 -1
  238. package/dist/components/pro/Flow/constants.js +266 -278
  239. package/dist/components/pro/Flow/constants.js.map +1 -1
  240. package/dist/components/pro/Flow/context/FlowAIContext.js +27 -28
  241. package/dist/components/pro/Flow/context/FlowAIContext.js.map +1 -1
  242. package/dist/components/pro/Flow/context/FlowContext.js +60 -61
  243. package/dist/components/pro/Flow/context/FlowContext.js.map +1 -1
  244. package/dist/components/pro/Flow/context/FlowUIContext.js +115 -117
  245. package/dist/components/pro/Flow/context/FlowUIContext.js.map +1 -1
  246. package/dist/components/pro/Flow/edges/EdgeRenderer.js +135 -138
  247. package/dist/components/pro/Flow/edges/EdgeRenderer.js.map +1 -1
  248. package/dist/components/pro/Flow/edges/edgeMarkers.js +11 -14
  249. package/dist/components/pro/Flow/edges/edgeMarkers.js.map +1 -1
  250. package/dist/components/pro/Flow/edges/edgePaths.js +351 -367
  251. package/dist/components/pro/Flow/edges/edgePaths.js.map +1 -1
  252. package/dist/components/pro/Flow/hooks/useAlignmentGuides.js +49 -52
  253. package/dist/components/pro/Flow/hooks/useAlignmentGuides.js.map +1 -1
  254. package/dist/components/pro/Flow/hooks/useClipboard.js +154 -154
  255. package/dist/components/pro/Flow/hooks/useClipboard.js.map +1 -1
  256. package/dist/components/pro/Flow/hooks/useCompactMode.js +17 -17
  257. package/dist/components/pro/Flow/hooks/useCompactMode.js.map +1 -1
  258. package/dist/components/pro/Flow/hooks/useDeleteSelection.js +40 -40
  259. package/dist/components/pro/Flow/hooks/useDeleteSelection.js.map +1 -1
  260. package/dist/components/pro/Flow/hooks/useDraggablePanel.js +51 -51
  261. package/dist/components/pro/Flow/hooks/useDraggablePanel.js.map +1 -1
  262. package/dist/components/pro/Flow/hooks/useEdgeMutations.js +157 -157
  263. package/dist/components/pro/Flow/hooks/useEdgeMutations.js.map +1 -1
  264. package/dist/components/pro/Flow/hooks/useFlowImportExport.js +190 -201
  265. package/dist/components/pro/Flow/hooks/useFlowImportExport.js.map +1 -1
  266. package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js +32 -38
  267. package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js.map +1 -1
  268. package/dist/components/pro/Flow/hooks/useLayoutActions.js +172 -180
  269. package/dist/components/pro/Flow/hooks/useLayoutActions.js.map +1 -1
  270. package/dist/components/pro/Flow/hooks/useLineMutations.js +57 -57
  271. package/dist/components/pro/Flow/hooks/useLineMutations.js.map +1 -1
  272. package/dist/components/pro/Flow/hooks/useMindMap.js +229 -238
  273. package/dist/components/pro/Flow/hooks/useMindMap.js.map +1 -1
  274. package/dist/components/pro/Flow/hooks/useNodeMutations.js +102 -102
  275. package/dist/components/pro/Flow/hooks/useNodeMutations.js.map +1 -1
  276. package/dist/components/pro/Flow/hooks/usePdfExport.js +55 -56
  277. package/dist/components/pro/Flow/hooks/usePdfExport.js.map +1 -1
  278. package/dist/components/pro/Flow/hooks/usePixiApp.js +55 -57
  279. package/dist/components/pro/Flow/hooks/usePixiApp.js.map +1 -1
  280. package/dist/components/pro/Flow/hooks/useResizablePanel.js +31 -31
  281. package/dist/components/pro/Flow/hooks/useResizablePanel.js.map +1 -1
  282. package/dist/components/pro/Flow/hooks/useSelection.js +69 -69
  283. package/dist/components/pro/Flow/hooks/useSelection.js.map +1 -1
  284. package/dist/components/pro/Flow/hooks/useUndoRedo.js +27 -27
  285. package/dist/components/pro/Flow/hooks/useUndoRedo.js.map +1 -1
  286. package/dist/components/pro/Flow/hooks/useViewport.js +28 -28
  287. package/dist/components/pro/Flow/hooks/useViewport.js.map +1 -1
  288. package/dist/components/pro/Flow/lines/FreehandTool.js +63 -63
  289. package/dist/components/pro/Flow/lines/FreehandTool.js.map +1 -1
  290. package/dist/components/pro/Flow/lines/GeometricLineTool.js +80 -80
  291. package/dist/components/pro/Flow/lines/GeometricLineTool.js.map +1 -1
  292. package/dist/components/pro/Flow/lines/LineRenderer.js +88 -88
  293. package/dist/components/pro/Flow/lines/LineRenderer.js.map +1 -1
  294. package/dist/components/pro/Flow/lines/lineSmoothing.js +32 -34
  295. package/dist/components/pro/Flow/lines/lineSmoothing.js.map +1 -1
  296. package/dist/components/pro/Flow/nodes/DataNodeView.js +236 -242
  297. package/dist/components/pro/Flow/nodes/DataNodeView.js.map +1 -1
  298. package/dist/components/pro/Flow/nodes/MediaContent.js +236 -246
  299. package/dist/components/pro/Flow/nodes/MediaContent.js.map +1 -1
  300. package/dist/components/pro/Flow/nodes/MediaOverlay.js +63 -63
  301. package/dist/components/pro/Flow/nodes/MediaOverlay.js.map +1 -1
  302. package/dist/components/pro/Flow/nodes/Model3DView.js +111 -113
  303. package/dist/components/pro/Flow/nodes/Model3DView.js.map +1 -1
  304. package/dist/components/pro/Flow/nodes/NodeHandles.js +74 -80
  305. package/dist/components/pro/Flow/nodes/NodeHandles.js.map +1 -1
  306. package/dist/components/pro/Flow/nodes/NodeRenderer.js +303 -314
  307. package/dist/components/pro/Flow/nodes/NodeRenderer.js.map +1 -1
  308. package/dist/components/pro/Flow/nodes/NodeText.js +25 -29
  309. package/dist/components/pro/Flow/nodes/NodeText.js.map +1 -1
  310. package/dist/components/pro/Flow/nodes/aiClient.js +124 -137
  311. package/dist/components/pro/Flow/nodes/aiClient.js.map +1 -1
  312. package/dist/components/pro/Flow/nodes/animAnchors.js +42 -49
  313. package/dist/components/pro/Flow/nodes/animAnchors.js.map +1 -1
  314. package/dist/components/pro/Flow/nodes/dataUtils.js +246 -267
  315. package/dist/components/pro/Flow/nodes/dataUtils.js.map +1 -1
  316. package/dist/components/pro/Flow/nodes/nodeUtils.js +23 -28
  317. package/dist/components/pro/Flow/nodes/nodeUtils.js.map +1 -1
  318. package/dist/components/pro/Flow/nodes/shapes.js +556 -589
  319. package/dist/components/pro/Flow/nodes/shapes.js.map +1 -1
  320. package/dist/components/pro/Flow/nodes/svgIconTexture.js +37 -39
  321. package/dist/components/pro/Flow/nodes/svgIconTexture.js.map +1 -1
  322. package/dist/components/pro/Flow/nodes/svgIcons.js +684 -689
  323. package/dist/components/pro/Flow/nodes/svgIcons.js.map +1 -1
  324. package/dist/components/pro/Flow/panels/AIPanel.js +464 -491
  325. package/dist/components/pro/Flow/panels/AIPanel.js.map +1 -1
  326. package/dist/components/pro/Flow/panels/Breadcrumb.js +41 -41
  327. package/dist/components/pro/Flow/panels/Breadcrumb.js.map +1 -1
  328. package/dist/components/pro/Flow/panels/ContextMenu.js +37 -37
  329. package/dist/components/pro/Flow/panels/ContextMenu.js.map +1 -1
  330. package/dist/components/pro/Flow/panels/DataInspectorSection.js +428 -432
  331. package/dist/components/pro/Flow/panels/DataInspectorSection.js.map +1 -1
  332. package/dist/components/pro/Flow/panels/ExpandableTextarea.js +61 -62
  333. package/dist/components/pro/Flow/panels/ExpandableTextarea.js.map +1 -1
  334. package/dist/components/pro/Flow/panels/FlowPanelGroup.js +114 -114
  335. package/dist/components/pro/Flow/panels/FlowPanelGroup.js.map +1 -1
  336. package/dist/components/pro/Flow/panels/FlowToolbar.js +347 -391
  337. package/dist/components/pro/Flow/panels/FlowToolbar.js.map +1 -1
  338. package/dist/components/pro/Flow/panels/InspectorPanel.js +1792 -1798
  339. package/dist/components/pro/Flow/panels/InspectorPanel.js.map +1 -1
  340. package/dist/components/pro/Flow/panels/OutlinePanel.js +242 -248
  341. package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
  342. package/dist/components/pro/Flow/panels/PresentationMode.js +137 -140
  343. package/dist/components/pro/Flow/panels/PresentationMode.js.map +1 -1
  344. package/dist/components/pro/Flow/panels/ProjectTitle.js +46 -46
  345. package/dist/components/pro/Flow/panels/ProjectTitle.js.map +1 -1
  346. package/dist/components/pro/Flow/panels/ShapePalette.js +557 -572
  347. package/dist/components/pro/Flow/panels/ShapePalette.js.map +1 -1
  348. package/dist/components/pro/Flow/panels/toolbarIcons.d.ts +0 -1
  349. package/dist/components/pro/Flow/panels/toolbarIcons.js +508 -557
  350. package/dist/components/pro/Flow/panels/toolbarIcons.js.map +1 -1
  351. package/dist/components/pro/Flow/types.js +26 -26
  352. package/dist/components/pro/Flow/types.js.map +1 -1
  353. package/dist/components/pro/Flow/utils/dashedLine.js +113 -117
  354. package/dist/components/pro/Flow/utils/dashedLine.js.map +1 -1
  355. package/dist/components/pro/Flow/utils/gradient.js +55 -55
  356. package/dist/components/pro/Flow/utils/gradient.js.map +1 -1
  357. package/dist/components/pro/Flow/utils/pdfExport.js +50 -89
  358. package/dist/components/pro/Flow/utils/pdfExport.js.map +1 -1
  359. package/dist/components/pro/Flow/utils/themeColor.js +185 -195
  360. package/dist/components/pro/Flow/utils/themeColor.js.map +1 -1
  361. package/dist/components/pro/Gantt/Gantt.d.ts +7 -0
  362. package/dist/components/pro/Gantt/hooks/useGanttDrag.d.ts +31 -0
  363. package/dist/components/pro/Gantt/hooks/useGanttState.d.ts +58 -0
  364. package/dist/components/pro/Gantt/index.d.ts +6 -0
  365. package/dist/components/pro/Gantt/types.d.ts +478 -0
  366. package/dist/components/pro/Gantt/utils.d.ts +124 -0
  367. package/dist/components/pro/Resizable/Resizable.d.ts +30 -0
  368. package/dist/components/pro/Resizable/index.d.ts +2 -0
  369. package/dist/components/pro/RichTextEditor/AIRewrite.js +323 -334
  370. package/dist/components/pro/RichTextEditor/AIRewrite.js.map +1 -1
  371. package/dist/components/pro/RichTextEditor/BlockHandle.js +314 -316
  372. package/dist/components/pro/RichTextEditor/BlockHandle.js.map +1 -1
  373. package/dist/components/pro/RichTextEditor/BubbleToolbar.js +97 -97
  374. package/dist/components/pro/RichTextEditor/BubbleToolbar.js.map +1 -1
  375. package/dist/components/pro/RichTextEditor/CommentDialog.js +88 -88
  376. package/dist/components/pro/RichTextEditor/CommentDialog.js.map +1 -1
  377. package/dist/components/pro/RichTextEditor/CommentPanel.js +240 -240
  378. package/dist/components/pro/RichTextEditor/CommentPanel.js.map +1 -1
  379. package/dist/components/pro/RichTextEditor/CommentPopover.js +234 -234
  380. package/dist/components/pro/RichTextEditor/CommentPopover.js.map +1 -1
  381. package/dist/components/pro/RichTextEditor/ContextMenu.js +251 -252
  382. package/dist/components/pro/RichTextEditor/ContextMenu.js.map +1 -1
  383. package/dist/components/pro/RichTextEditor/RichTextEditor.js +267 -271
  384. package/dist/components/pro/RichTextEditor/RichTextEditor.js.map +1 -1
  385. package/dist/components/pro/RichTextEditor/SlashMenu.js +214 -214
  386. package/dist/components/pro/RichTextEditor/SlashMenu.js.map +1 -1
  387. package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js +44 -75
  388. package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js.map +1 -1
  389. package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js +261 -261
  390. package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js.map +1 -1
  391. package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js +172 -526
  392. package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js.map +1 -1
  393. package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js +112 -114
  394. package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js.map +1 -1
  395. package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js +194 -194
  396. package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js.map +1 -1
  397. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js +970 -973
  398. package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js.map +1 -1
  399. package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js +11 -12
  400. package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js.map +1 -1
  401. package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js +310 -344
  402. package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js.map +1 -1
  403. package/dist/components/pro/RichTextEditor/extensions/CommentMark.js +38 -39
  404. package/dist/components/pro/RichTextEditor/extensions/CommentMark.js.map +1 -1
  405. package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js +620 -625
  406. package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js.map +1 -1
  407. package/dist/components/pro/RichTextEditor/extensions/FontSize.js +25 -25
  408. package/dist/components/pro/RichTextEditor/extensions/FontSize.js.map +1 -1
  409. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js +167 -176
  410. package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js.map +1 -1
  411. package/dist/components/pro/RichTextEditor/types.js +75 -75
  412. package/dist/components/pro/RichTextEditor/types.js.map +1 -1
  413. package/dist/contexts/AppContext.d.ts +1 -1
  414. package/dist/contexts/AppContext.js +216 -221
  415. package/dist/contexts/AppContext.js.map +1 -1
  416. package/dist/data-table.js +15 -41
  417. package/dist/data-table.js.map +1 -1
  418. package/dist/dishui.css +1 -1
  419. package/dist/flow.js +27 -83
  420. package/dist/hooks/useClickOutside.js +18 -18
  421. package/dist/hooks/useClickOutside.js.map +1 -1
  422. package/dist/hooks/useContainerElement.js +9 -9
  423. package/dist/hooks/useContainerElement.js.map +1 -1
  424. package/dist/hooks/useControllableState.js +33 -35
  425. package/dist/hooks/useControllableState.js.map +1 -1
  426. package/dist/hooks/useCopyToClipboard.js +16 -16
  427. package/dist/hooks/useCopyToClipboard.js.map +1 -1
  428. package/dist/hooks/useDebounce.js +14 -14
  429. package/dist/hooks/useDebounce.js.map +1 -1
  430. package/dist/hooks/useDraggable.js +50 -50
  431. package/dist/hooks/useDraggable.js.map +1 -1
  432. package/dist/hooks/useTableColumns.js +39 -41
  433. package/dist/hooks/useTableColumns.js.map +1 -1
  434. package/dist/hooks/useTableData.js +67 -68
  435. package/dist/hooks/useTableData.js.map +1 -1
  436. package/dist/index-nostyled.d.ts +8 -0
  437. package/dist/index.d.ts +27 -1
  438. package/dist/index.js +105 -241
  439. package/dist/layouts/MainLayout.js +56 -56
  440. package/dist/layouts/MainLayout.js.map +1 -1
  441. package/dist/layouts/Navbar.js +214 -214
  442. package/dist/layouts/Navbar.js.map +1 -1
  443. package/dist/layouts/Sidebar.js +184 -186
  444. package/dist/layouts/Sidebar.js.map +1 -1
  445. package/dist/layouts/headbar/Headbar.js +25 -25
  446. package/dist/layouts/headbar/Headbar.js.map +1 -1
  447. package/dist/layouts/headbar/HeadbarLangSwitcher.js +39 -39
  448. package/dist/layouts/headbar/HeadbarLangSwitcher.js.map +1 -1
  449. package/dist/layouts/headbar/HeadbarSearch.js +120 -120
  450. package/dist/layouts/headbar/HeadbarSearch.js.map +1 -1
  451. package/dist/layouts/headbar/HeadbarThemeSwitcher.js +27 -27
  452. package/dist/layouts/headbar/HeadbarThemeSwitcher.js.map +1 -1
  453. package/dist/layouts/headbar/HeadbarTitle.js +26 -26
  454. package/dist/layouts/headbar/HeadbarTitle.js.map +1 -1
  455. package/dist/lite.js +9 -24
  456. package/dist/markdown.js +4 -9
  457. package/dist/pages/components/Calendar/index.d.ts +3 -0
  458. package/dist/pages/components/Calendar/index.en.d.ts +3 -0
  459. package/dist/pages/components/Calendar/index.zh.d.ts +3 -0
  460. package/dist/pages/components/Chat/index.d.ts +3 -0
  461. package/dist/pages/components/Chat/index.en.d.ts +3 -0
  462. package/dist/pages/components/Chat/index.zh.d.ts +3 -0
  463. package/dist/pages/components/FloatWindow/index.d.ts +3 -0
  464. package/dist/pages/components/FloatWindow/index.en.d.ts +3 -0
  465. package/dist/pages/components/FloatWindow/index.zh.d.ts +3 -0
  466. package/dist/pages/components/Gantt/index.d.ts +3 -0
  467. package/dist/pages/components/Gantt/index.en.d.ts +3 -0
  468. package/dist/pages/components/Gantt/index.zh.d.ts +3 -0
  469. package/dist/pages/components/GridLayout/index.d.ts +3 -0
  470. package/dist/pages/components/GridLayout/index.en.d.ts +3 -0
  471. package/dist/pages/components/GridLayout/index.zh.d.ts +3 -0
  472. package/dist/pages/components/Notification/index.d.ts +3 -0
  473. package/dist/pages/components/Notification/index.en.d.ts +3 -0
  474. package/dist/pages/components/Notification/index.zh.d.ts +3 -0
  475. package/dist/pages/components/Resizable/index.d.ts +3 -0
  476. package/dist/pages/components/Resizable/index.en.d.ts +3 -0
  477. package/dist/pages/components/Resizable/index.zh.d.ts +3 -0
  478. package/dist/pages/components/Tab/index.d.ts +3 -0
  479. package/dist/pages/components/Tab/index.en.d.ts +3 -0
  480. package/dist/pages/components/Tab/index.zh.d.ts +3 -0
  481. package/dist/styles/themeStyles.js +87 -86
  482. package/dist/styles/themeStyles.js.map +1 -1
  483. package/dist/utils/cn.d.ts +13 -0
  484. package/dist/utils/cn.js +16 -0
  485. package/dist/utils/cn.js.map +1 -0
  486. package/dist/utils/i18n.js +690 -602
  487. package/dist/utils/i18n.js.map +1 -1
  488. package/dist/utils/menu.js +94 -94
  489. package/dist/utils/menu.js.map +1 -1
  490. package/dist/utils/rehype-code-meta.js +14 -14
  491. package/dist/utils/rehype-code-meta.js.map +1 -1
  492. package/dist/utils/remark-code-meta.js +9 -9
  493. package/dist/utils/remark-code-meta.js.map +1 -1
  494. package/dist/utils/routerBuilder.js +59 -60
  495. package/dist/utils/routerBuilder.js.map +1 -1
  496. package/dist/utils/selection.js +28 -29
  497. package/dist/utils/selection.js.map +1 -1
  498. package/dist/utils/themes.js +275 -255
  499. package/dist/utils/themes.js.map +1 -1
  500. package/package.json +19 -6
@@ -1,131 +1,130 @@
1
- import { DropZone as V } from "./DropZone.js";
2
- import { UploadQueue as k } from "./UploadQueue.js";
3
- import { useCallback as a, useRef as N, useState as P } from "react";
4
- import { jsx as b, jsxs as Q } from "react/jsx-runtime";
5
- var U = 0;
6
- function Z() {
7
- return `file-${Date.now()}-${++U}`;
1
+ import { DropZone as e } from "./DropZone.js";
2
+ import { UploadQueue as t } from "./UploadQueue.js";
3
+ import { useCallback as n, useRef as r, useState as i } from "react";
4
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
5
+ //#region src/components/FileUploader/FileUploader.tsx
6
+ var s = 0;
7
+ function c() {
8
+ return `file-${Date.now()}-${++s}`;
8
9
  }
9
- var J = ({ adapter: m, accept: v, maxFileSize: A, maxFiles: w, multiple: R = !0, autoUpload: h = !1, className: x = "", labels: C, onUploadComplete: d, onError: i, onFilesChange: g }) => {
10
- const [f, y] = P([]), c = N([]), o = a((t) => {
11
- y((e) => {
12
- const r = t(e);
13
- return c.current = r, g?.(r), r;
14
- });
15
- }, [g]), u = a(async (t) => {
16
- const e = new AbortController();
17
- o((r) => r.map((n) => n.id === t.id ? {
18
- ...n,
19
- status: "uploading",
20
- progress: 0,
21
- error: void 0,
22
- abortController: e
23
- } : n));
24
- try {
25
- const r = await m.upload(t.file, (n) => {
26
- o((l) => l.map((s) => s.id === t.id ? {
27
- ...s,
28
- progress: Math.min(n, 100)
29
- } : s));
30
- }, e.signal);
31
- return o((n) => n.map((l) => l.id === t.id ? {
32
- ...l,
33
- status: "success",
34
- progress: 100,
35
- result: r,
36
- abortController: void 0
37
- } : l)), r;
38
- } catch (r) {
39
- if (r?.name === "AbortError")
40
- return o((l) => l.map((s) => s.id === t.id ? {
41
- ...s,
42
- status: "pending",
43
- progress: 0,
44
- abortController: void 0
45
- } : s)), null;
46
- const n = r?.message || "Upload failed";
47
- return o((l) => l.map((s) => s.id === t.id ? {
48
- ...s,
49
- status: "error",
50
- error: n,
51
- abortController: void 0
52
- } : s)), i?.(t.file, r instanceof Error ? r : new Error(n)), null;
53
- }
54
- }, [
55
- m,
56
- o,
57
- i
58
- ]), E = a((t) => {
59
- const e = t.map((r) => ({
60
- id: Z(),
61
- file: r,
62
- status: "pending",
63
- progress: 0
64
- }));
65
- o((r) => [...r, ...e]), h && e.forEach((r) => {
66
- u(r).then((n) => {
67
- if (n) {
68
- const l = c.current;
69
- if (l.every((s) => s.status === "success" || s.status === "error")) {
70
- const s = l.filter((p) => p.status === "success" && p.result).map((p) => p.result);
71
- s.length > 0 && d?.(s);
72
- }
73
- }
74
- });
75
- });
76
- }, [
77
- h,
78
- u,
79
- o,
80
- d
81
- ]), F = a(() => {
82
- const t = c.current.filter((e) => e.status === "pending").map((e) => u(e));
83
- Promise.allSettled(t).then(() => {
84
- const e = c.current.filter((r) => r.status === "success" && r.result).map((r) => r.result);
85
- e.length > 0 && d?.(e);
86
- });
87
- }, [u, d]), I = a(() => {
88
- f.forEach((t) => {
89
- t.status === "uploading" && t.abortController && t.abortController.abort();
90
- });
91
- }, [f]), $ = a(() => {
92
- o((t) => t.filter((e) => e.status !== "success"));
93
- }, [o]), j = a((t) => {
94
- o((e) => e.filter((r) => r.id !== t));
95
- }, [o]), D = a((t) => {
96
- const e = c.current.find((r) => r.id === t);
97
- e && u(e);
98
- }, [u]), M = a((t) => {
99
- const e = c.current.find((r) => r.id === t);
100
- e?.abortController && e.abortController.abort();
101
- }, []), S = a((t, e) => {
102
- i?.(t, new Error(e));
103
- }, [i]);
104
- return /* @__PURE__ */ Q("div", {
105
- className: `w-full ${x}`,
106
- children: [/* @__PURE__ */ b(V, {
107
- accept: v,
108
- maxFileSize: A,
109
- maxFiles: w,
110
- multiple: R,
111
- currentFileCount: f.length,
112
- labels: C,
113
- onFilesAdded: E,
114
- onValidationError: S
115
- }), /* @__PURE__ */ b(k, {
116
- items: f,
117
- labels: C,
118
- onRemove: j,
119
- onRetry: D,
120
- onCancel: M,
121
- onUploadAll: F,
122
- onCancelAll: I,
123
- onClearCompleted: $
124
- })]
125
- });
126
- };
127
- export {
128
- J as FileUploader
10
+ var l = ({ adapter: s, accept: l, maxFileSize: u, maxFiles: d, multiple: f = !0, autoUpload: p = !1, className: m = "", labels: h, onUploadComplete: g, onError: _, onFilesChange: v }) => {
11
+ let [y, b] = i([]), x = r([]), S = n((e) => {
12
+ b((t) => {
13
+ let n = e(t);
14
+ return x.current = n, v?.(n), n;
15
+ });
16
+ }, [v]), C = n(async (e) => {
17
+ let t = new AbortController();
18
+ S((n) => n.map((n) => n.id === e.id ? {
19
+ ...n,
20
+ status: "uploading",
21
+ progress: 0,
22
+ error: void 0,
23
+ abortController: t
24
+ } : n));
25
+ try {
26
+ let n = await s.upload(e.file, (t) => {
27
+ S((n) => n.map((n) => n.id === e.id ? {
28
+ ...n,
29
+ progress: Math.min(t, 100)
30
+ } : n));
31
+ }, t.signal);
32
+ return S((t) => t.map((t) => t.id === e.id ? {
33
+ ...t,
34
+ status: "success",
35
+ progress: 100,
36
+ result: n,
37
+ abortController: void 0
38
+ } : t)), n;
39
+ } catch (t) {
40
+ if (t?.name === "AbortError") return S((t) => t.map((t) => t.id === e.id ? {
41
+ ...t,
42
+ status: "pending",
43
+ progress: 0,
44
+ abortController: void 0
45
+ } : t)), null;
46
+ let n = t?.message || "Upload failed";
47
+ return S((t) => t.map((t) => t.id === e.id ? {
48
+ ...t,
49
+ status: "error",
50
+ error: n,
51
+ abortController: void 0
52
+ } : t)), _?.(e.file, t instanceof Error ? t : Error(n)), null;
53
+ }
54
+ }, [
55
+ s,
56
+ S,
57
+ _
58
+ ]), w = n((e) => {
59
+ let t = e.map((e) => ({
60
+ id: c(),
61
+ file: e,
62
+ status: "pending",
63
+ progress: 0
64
+ }));
65
+ S((e) => [...e, ...t]), p && t.forEach((e) => {
66
+ C(e).then((e) => {
67
+ if (e) {
68
+ let e = x.current;
69
+ if (e.every((e) => e.status === "success" || e.status === "error")) {
70
+ let t = e.filter((e) => e.status === "success" && e.result).map((e) => e.result);
71
+ t.length > 0 && g?.(t);
72
+ }
73
+ }
74
+ });
75
+ });
76
+ }, [
77
+ p,
78
+ C,
79
+ S,
80
+ g
81
+ ]), T = n(() => {
82
+ let e = x.current.filter((e) => e.status === "pending").map((e) => C(e));
83
+ Promise.allSettled(e).then(() => {
84
+ let e = x.current.filter((e) => e.status === "success" && e.result).map((e) => e.result);
85
+ e.length > 0 && g?.(e);
86
+ });
87
+ }, [C, g]), E = n(() => {
88
+ y.forEach((e) => {
89
+ e.status === "uploading" && e.abortController && e.abortController.abort();
90
+ });
91
+ }, [y]), D = n(() => {
92
+ S((e) => e.filter((e) => e.status !== "success"));
93
+ }, [S]), O = n((e) => {
94
+ S((t) => t.filter((t) => t.id !== e));
95
+ }, [S]), k = n((e) => {
96
+ let t = x.current.find((t) => t.id === e);
97
+ t && C(t);
98
+ }, [C]), A = n((e) => {
99
+ let t = x.current.find((t) => t.id === e);
100
+ t?.abortController && t.abortController.abort();
101
+ }, []), j = n((e, t) => {
102
+ _?.(e, Error(t));
103
+ }, [_]);
104
+ return /* @__PURE__ */ o("div", {
105
+ className: `w-full ${m}`,
106
+ children: [/* @__PURE__ */ a(e, {
107
+ accept: l,
108
+ maxFileSize: u,
109
+ maxFiles: d,
110
+ multiple: f,
111
+ currentFileCount: y.length,
112
+ labels: h,
113
+ onFilesAdded: w,
114
+ onValidationError: j
115
+ }), /* @__PURE__ */ a(t, {
116
+ items: y,
117
+ labels: h,
118
+ onRemove: O,
119
+ onRetry: k,
120
+ onCancel: A,
121
+ onUploadAll: T,
122
+ onCancelAll: E,
123
+ onClearCompleted: D
124
+ })]
125
+ });
129
126
  };
127
+ //#endregion
128
+ export { l as FileUploader };
130
129
 
131
130
  //# sourceMappingURL=FileUploader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploader.js","names":[],"sources":["../../../src/components/FileUploader/FileUploader.tsx"],"sourcesContent":["import React, { useState, useCallback, useRef } from 'react';\nimport { FileUploaderProps, FileItemState, UploadResult } from './types';\nimport { DropZone } from './DropZone';\nimport { UploadQueue } from './UploadQueue';\n\nlet fileIdCounter = 0;\nfunction nextFileId(): string {\n return `file-${Date.now()}-${++fileIdCounter}`;\n}\n\nexport const FileUploader: React.FC<FileUploaderProps> = ({\n adapter,\n accept,\n maxFileSize,\n maxFiles,\n multiple = true,\n autoUpload = false,\n className = '',\n labels,\n onUploadComplete,\n onError,\n onFilesChange,\n}) => {\n const [items, setItems] = useState<FileItemState[]>([]);\n const itemsRef = useRef<FileItemState[]>([]);\n\n // Keep ref in sync for use in async callbacks\n const updateItems = useCallback((updater: (prev: FileItemState[]) => FileItemState[]) => {\n setItems(prev => {\n const next = updater(prev);\n itemsRef.current = next;\n onFilesChange?.(next);\n return next;\n });\n }, [onFilesChange]);\n\n // Upload a single file item\n const uploadFile = useCallback(async (item: FileItemState) => {\n const abortController = new AbortController();\n\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id\n ? { ...i, status: 'uploading' as const, progress: 0, error: undefined, abortController }\n : i\n )\n );\n\n try {\n const result = await adapter.upload(\n item.file,\n (percent) => {\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id ? { ...i, progress: Math.min(percent, 100) } : i\n )\n );\n },\n abortController.signal,\n );\n\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id\n ? { ...i, status: 'success' as const, progress: 100, result, abortController: undefined }\n : i\n )\n );\n\n return result;\n } catch (err: any) {\n if (err?.name === 'AbortError') {\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id\n ? { ...i, status: 'pending' as const, progress: 0, abortController: undefined }\n : i\n )\n );\n return null;\n }\n\n const errorMsg = err?.message || 'Upload failed';\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id\n ? { ...i, status: 'error' as const, error: errorMsg, abortController: undefined }\n : i\n )\n );\n onError?.(item.file, err instanceof Error ? err : new Error(errorMsg));\n return null;\n }\n }, [adapter, updateItems, onError]);\n\n // Add files from drop zone\n const handleFilesAdded = useCallback((files: File[]) => {\n const newItems: FileItemState[] = files.map(file => ({\n id: nextFileId(),\n file,\n status: 'pending' as const,\n progress: 0,\n }));\n\n updateItems(prev => [...prev, ...newItems]);\n\n if (autoUpload) {\n // Start uploading each new file\n newItems.forEach(item => {\n uploadFile(item).then(result => {\n if (result) {\n // Check if all items are done after this upload\n const current = itemsRef.current;\n const allDone = current.every(i => i.status === 'success' || i.status === 'error');\n if (allDone) {\n const results = current\n .filter(i => i.status === 'success' && i.result)\n .map(i => i.result!);\n if (results.length > 0) {\n onUploadComplete?.(results);\n }\n }\n }\n });\n });\n }\n }, [autoUpload, uploadFile, updateItems, onUploadComplete]);\n\n // Upload all pending\n const handleUploadAll = useCallback(() => {\n const pending = itemsRef.current.filter(i => i.status === 'pending');\n const uploads = pending.map(item => uploadFile(item));\n\n Promise.allSettled(uploads).then(() => {\n const current = itemsRef.current;\n const results = current\n .filter(i => i.status === 'success' && i.result)\n .map(i => i.result!);\n if (results.length > 0) {\n onUploadComplete?.(results);\n }\n });\n }, [uploadFile, onUploadComplete]);\n\n // Cancel all uploading\n const handleCancelAll = useCallback(() => {\n items.forEach(item => {\n if (item.status === 'uploading' && item.abortController) {\n item.abortController.abort();\n }\n });\n }, [items]);\n\n // Clear completed\n const handleClearCompleted = useCallback(() => {\n updateItems(prev => prev.filter(i => i.status !== 'success'));\n }, [updateItems]);\n\n // Remove single file\n const handleRemove = useCallback((id: string) => {\n updateItems(prev => prev.filter(i => i.id !== id));\n }, [updateItems]);\n\n // Retry single file\n const handleRetry = useCallback((id: string) => {\n const item = itemsRef.current.find(i => i.id === id);\n if (item) uploadFile(item);\n }, [uploadFile]);\n\n // Cancel single upload\n const handleCancel = useCallback((id: string) => {\n const item = itemsRef.current.find(i => i.id === id);\n if (item?.abortController) {\n item.abortController.abort();\n }\n }, []);\n\n const handleValidationError = useCallback((file: File, error: string) => {\n onError?.(file, new Error(error));\n }, [onError]);\n\n return (\n <div className={`w-full ${className}`}>\n <DropZone\n accept={accept}\n maxFileSize={maxFileSize}\n maxFiles={maxFiles}\n multiple={multiple}\n currentFileCount={items.length}\n labels={labels}\n onFilesAdded={handleFilesAdded}\n onValidationError={handleValidationError}\n />\n <UploadQueue\n items={items}\n labels={labels}\n onRemove={handleRemove}\n onRetry={handleRetry}\n onCancel={handleCancel}\n onUploadAll={handleUploadAll}\n onCancelAll={handleCancelAll}\n onClearCompleted={handleClearCompleted}\n />\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"FileUploader.js","names":[],"sources":["../../../src/components/FileUploader/FileUploader.tsx"],"sourcesContent":["import React, { useState, useCallback, useRef } from 'react';\nimport { FileUploaderProps, FileItemState, UploadResult } from './types';\nimport { DropZone } from './DropZone';\nimport { UploadQueue } from './UploadQueue';\n\nlet fileIdCounter = 0;\nfunction nextFileId(): string {\n return `file-${Date.now()}-${++fileIdCounter}`;\n}\n\nexport const FileUploader: React.FC<FileUploaderProps> = ({\n adapter,\n accept,\n maxFileSize,\n maxFiles,\n multiple = true,\n autoUpload = false,\n className = '',\n labels,\n onUploadComplete,\n onError,\n onFilesChange,\n}) => {\n const [items, setItems] = useState<FileItemState[]>([]);\n const itemsRef = useRef<FileItemState[]>([]);\n\n // Keep ref in sync for use in async callbacks\n const updateItems = useCallback((updater: (prev: FileItemState[]) => FileItemState[]) => {\n setItems(prev => {\n const next = updater(prev);\n itemsRef.current = next;\n onFilesChange?.(next);\n return next;\n });\n }, [onFilesChange]);\n\n // Upload a single file item\n const uploadFile = useCallback(async (item: FileItemState) => {\n const abortController = new AbortController();\n\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id\n ? { ...i, status: 'uploading' as const, progress: 0, error: undefined, abortController }\n : i\n )\n );\n\n try {\n const result = await adapter.upload(\n item.file,\n (percent) => {\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id ? { ...i, progress: Math.min(percent, 100) } : i\n )\n );\n },\n abortController.signal,\n );\n\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id\n ? { ...i, status: 'success' as const, progress: 100, result, abortController: undefined }\n : i\n )\n );\n\n return result;\n } catch (err: any) {\n if (err?.name === 'AbortError') {\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id\n ? { ...i, status: 'pending' as const, progress: 0, abortController: undefined }\n : i\n )\n );\n return null;\n }\n\n const errorMsg = err?.message || 'Upload failed';\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id\n ? { ...i, status: 'error' as const, error: errorMsg, abortController: undefined }\n : i\n )\n );\n onError?.(item.file, err instanceof Error ? err : new Error(errorMsg));\n return null;\n }\n }, [adapter, updateItems, onError]);\n\n // Add files from drop zone\n const handleFilesAdded = useCallback((files: File[]) => {\n const newItems: FileItemState[] = files.map(file => ({\n id: nextFileId(),\n file,\n status: 'pending' as const,\n progress: 0,\n }));\n\n updateItems(prev => [...prev, ...newItems]);\n\n if (autoUpload) {\n // Start uploading each new file\n newItems.forEach(item => {\n uploadFile(item).then(result => {\n if (result) {\n // Check if all items are done after this upload\n const current = itemsRef.current;\n const allDone = current.every(i => i.status === 'success' || i.status === 'error');\n if (allDone) {\n const results = current\n .filter(i => i.status === 'success' && i.result)\n .map(i => i.result!);\n if (results.length > 0) {\n onUploadComplete?.(results);\n }\n }\n }\n });\n });\n }\n }, [autoUpload, uploadFile, updateItems, onUploadComplete]);\n\n // Upload all pending\n const handleUploadAll = useCallback(() => {\n const pending = itemsRef.current.filter(i => i.status === 'pending');\n const uploads = pending.map(item => uploadFile(item));\n\n Promise.allSettled(uploads).then(() => {\n const current = itemsRef.current;\n const results = current\n .filter(i => i.status === 'success' && i.result)\n .map(i => i.result!);\n if (results.length > 0) {\n onUploadComplete?.(results);\n }\n });\n }, [uploadFile, onUploadComplete]);\n\n // Cancel all uploading\n const handleCancelAll = useCallback(() => {\n items.forEach(item => {\n if (item.status === 'uploading' && item.abortController) {\n item.abortController.abort();\n }\n });\n }, [items]);\n\n // Clear completed\n const handleClearCompleted = useCallback(() => {\n updateItems(prev => prev.filter(i => i.status !== 'success'));\n }, [updateItems]);\n\n // Remove single file\n const handleRemove = useCallback((id: string) => {\n updateItems(prev => prev.filter(i => i.id !== id));\n }, [updateItems]);\n\n // Retry single file\n const handleRetry = useCallback((id: string) => {\n const item = itemsRef.current.find(i => i.id === id);\n if (item) uploadFile(item);\n }, [uploadFile]);\n\n // Cancel single upload\n const handleCancel = useCallback((id: string) => {\n const item = itemsRef.current.find(i => i.id === id);\n if (item?.abortController) {\n item.abortController.abort();\n }\n }, []);\n\n const handleValidationError = useCallback((file: File, error: string) => {\n onError?.(file, new Error(error));\n }, [onError]);\n\n return (\n <div className={`w-full ${className}`}>\n <DropZone\n accept={accept}\n maxFileSize={maxFileSize}\n maxFiles={maxFiles}\n multiple={multiple}\n currentFileCount={items.length}\n labels={labels}\n onFilesAdded={handleFilesAdded}\n onValidationError={handleValidationError}\n />\n <UploadQueue\n items={items}\n labels={labels}\n onRemove={handleRemove}\n onRetry={handleRetry}\n onCancel={handleCancel}\n onUploadAll={handleUploadAll}\n onCancelAll={handleCancelAll}\n onClearCompleted={handleClearCompleted}\n />\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1,66 +1,66 @@
1
- import o from "../Button/index.js";
2
- import { FileItem as C } from "./FileItem.js";
1
+ import e from "../Button/index.js";
2
+ import { FileItem as t } from "./FileItem.js";
3
3
  import "react";
4
- import { jsx as s, jsxs as n } from "react/jsx-runtime";
5
- var g = {
6
- uploadAll: "Upload All",
7
- cancelAll: "Cancel All",
8
- clearCompleted: "Clear Completed",
9
- fileCount: "files"
10
- }, j = ({ items: e, labels: t, onRemove: i, onRetry: r, onCancel: c, onUploadAll: d, onCancelAll: p, onClearCompleted: m, className: u = "" }) => {
11
- const a = {
12
- ...g,
13
- ...t
14
- }, h = e.some((l) => l.status === "pending"), f = e.some((l) => l.status === "uploading"), x = e.some((l) => l.status === "success");
15
- return e.length === 0 ? null : /* @__PURE__ */ n("div", {
16
- className: `mt-4 ${u}`,
17
- children: [/* @__PURE__ */ n("div", {
18
- className: "flex items-center justify-between mb-2 px-1",
19
- children: [/* @__PURE__ */ n("span", {
20
- className: "text-sm opacity-60",
21
- children: [
22
- e.length,
23
- " ",
24
- a.fileCount
25
- ]
26
- }), /* @__PURE__ */ n("div", {
27
- className: "flex gap-1",
28
- children: [
29
- h && /* @__PURE__ */ s(o, {
30
- variant: "primary",
31
- size: "xs",
32
- onClick: d,
33
- children: a.uploadAll
34
- }),
35
- f && /* @__PURE__ */ s(o, {
36
- variant: "warning",
37
- size: "xs",
38
- outline: !0,
39
- onClick: p,
40
- children: a.cancelAll
41
- }),
42
- x && /* @__PURE__ */ s(o, {
43
- variant: "ghost",
44
- size: "xs",
45
- onClick: m,
46
- children: a.clearCompleted
47
- })
48
- ]
49
- })]
50
- }), /* @__PURE__ */ s("div", {
51
- className: "flex flex-col gap-1.5 max-h-[360px] overflow-y-auto pr-1",
52
- children: e.map((l) => /* @__PURE__ */ s(C, {
53
- item: l,
54
- labels: a,
55
- onRemove: i,
56
- onRetry: r,
57
- onCancel: c
58
- }, l.id))
59
- })]
60
- });
61
- };
62
- export {
63
- j as UploadQueue
4
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
5
+ //#region src/components/FileUploader/UploadQueue.tsx
6
+ var i = {
7
+ uploadAll: "Upload All",
8
+ cancelAll: "Cancel All",
9
+ clearCompleted: "Clear Completed",
10
+ fileCount: "files"
11
+ }, a = ({ items: a, labels: o, onRemove: s, onRetry: c, onCancel: l, onUploadAll: u, onCancelAll: d, onClearCompleted: f, className: p = "" }) => {
12
+ let m = {
13
+ ...i,
14
+ ...o
15
+ }, h = a.some((e) => e.status === "pending"), g = a.some((e) => e.status === "uploading"), _ = a.some((e) => e.status === "success");
16
+ return a.length === 0 ? null : /* @__PURE__ */ r("div", {
17
+ className: `mt-4 ${p}`,
18
+ children: [/* @__PURE__ */ r("div", {
19
+ className: "flex items-center justify-between mb-2 px-1",
20
+ children: [/* @__PURE__ */ r("span", {
21
+ className: "text-sm opacity-60",
22
+ children: [
23
+ a.length,
24
+ " ",
25
+ m.fileCount
26
+ ]
27
+ }), /* @__PURE__ */ r("div", {
28
+ className: "flex gap-1",
29
+ children: [
30
+ h && /* @__PURE__ */ n(e, {
31
+ variant: "primary",
32
+ size: "xs",
33
+ onClick: u,
34
+ children: m.uploadAll
35
+ }),
36
+ g && /* @__PURE__ */ n(e, {
37
+ variant: "warning",
38
+ size: "xs",
39
+ outline: !0,
40
+ onClick: d,
41
+ children: m.cancelAll
42
+ }),
43
+ _ && /* @__PURE__ */ n(e, {
44
+ variant: "ghost",
45
+ size: "xs",
46
+ onClick: f,
47
+ children: m.clearCompleted
48
+ })
49
+ ]
50
+ })]
51
+ }), /* @__PURE__ */ n("div", {
52
+ className: "flex flex-col gap-1.5 max-h-[360px] overflow-y-auto pr-1",
53
+ children: a.map((e) => /* @__PURE__ */ n(t, {
54
+ item: e,
55
+ labels: m,
56
+ onRemove: s,
57
+ onRetry: c,
58
+ onCancel: l
59
+ }, e.id))
60
+ })]
61
+ });
64
62
  };
63
+ //#endregion
64
+ export { a as UploadQueue };
65
65
 
66
66
  //# sourceMappingURL=UploadQueue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UploadQueue.js","names":[],"sources":["../../../src/components/FileUploader/UploadQueue.tsx"],"sourcesContent":["import React from 'react';\nimport { UploadQueueProps } from './types';\nimport { FileItem } from './FileItem';\nimport Button from '../Button';\n\nconst defaultLabels = {\n uploadAll: 'Upload All',\n cancelAll: 'Cancel All',\n clearCompleted: 'Clear Completed',\n fileCount: 'files',\n};\n\nexport const UploadQueue: React.FC<UploadQueueProps> = ({\n items,\n labels: userLabels,\n onRemove,\n onRetry,\n onCancel,\n onUploadAll,\n onCancelAll,\n onClearCompleted,\n className = '',\n}) => {\n const labels = { ...defaultLabels, ...userLabels };\n\n const hasPending = items.some(i => i.status === 'pending');\n const hasUploading = items.some(i => i.status === 'uploading');\n const hasCompleted = items.some(i => i.status === 'success');\n\n if (items.length === 0) return null;\n\n return (\n <div className={`mt-4 ${className}`}>\n {/* Batch actions bar */}\n <div className=\"flex items-center justify-between mb-2 px-1\">\n <span className=\"text-sm opacity-60\">\n {items.length} {labels.fileCount}\n </span>\n <div className=\"flex gap-1\">\n {hasPending && (\n <Button variant=\"primary\" size=\"xs\" onClick={onUploadAll}>\n {labels.uploadAll}\n </Button>\n )}\n {hasUploading && (\n <Button variant=\"warning\" size=\"xs\" outline onClick={onCancelAll}>\n {labels.cancelAll}\n </Button>\n )}\n {hasCompleted && (\n <Button variant=\"ghost\" size=\"xs\" onClick={onClearCompleted}>\n {labels.clearCompleted}\n </Button>\n )}\n </div>\n </div>\n\n {/* File list */}\n <div className=\"flex flex-col gap-1.5 max-h-[360px] overflow-y-auto pr-1\">\n {items.map(item => (\n <FileItem\n key={item.id}\n item={item}\n labels={labels}\n onRemove={onRemove}\n onRetry={onRetry}\n onCancel={onCancel}\n />\n ))}\n </div>\n </div>\n );\n};\n"],"mappings":";;;;AAKA,IAAM,IAAgB;AAAA,EAClB,WAAW;AAAA,EACX,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,WAAW;AACf,GAEa,IAAA,CAA2C,EACpD,OAAA,GACA,QAAQ,GACR,UAAA,GACA,SAAA,GACA,UAAA,GACA,aAAA,GACA,aAAA,GACA,kBAAA,GACA,WAAA,IAAY,GAAA,MACV;AACF,QAAM,IAAS;AAAA,IAAE,GAAG;AAAA,IAAe,GAAG;AAAA,EAAW,GAE3C,IAAa,EAAM,KAAA,CAAK,MAAK,EAAE,WAAW,SAAS,GACnD,IAAe,EAAM,KAAA,CAAK,MAAK,EAAE,WAAW,WAAW,GACvD,IAAe,EAAM,KAAA,CAAK,MAAK,EAAE,WAAW,SAAS;AAE3D,SAAI,EAAM,WAAW,IAAU,OAG3B,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW,QAAQ,CAAA;AAAA,IAAxB,UAAA,CAEI,gBAAA,EAAC,OAAD;AAAA,MAAK,WAAU;AAAA,MAAf,UAAA,CACI,gBAAA,EAAC,QAAD;AAAA,QAAM,WAAU;AAAA,QAAhB,UAAA;AAAA,UACK,EAAM;AAAA,UAAO;AAAA,UAAE,EAAO;AAAA,QACrB;AAAA,MACN,CAAA,GAAA,gBAAA,EAAC,OAAD;AAAA,QAAK,WAAU;AAAA,QAAf,UAAA;AAAA,UACK,KACG,gBAAA,EAAC,GAAD;AAAA,YAAQ,SAAQ;AAAA,YAAU,MAAK;AAAA,YAAK,SAAS;AAAA,YACxC,UAAA,EAAO;AAAA,UACJ,CAAA;AAAA,UAEX,KACG,gBAAA,EAAC,GAAD;AAAA,YAAQ,SAAQ;AAAA,YAAU,MAAK;AAAA,YAAK,SAAA;AAAA,YAAQ,SAAS;AAAA,YAChD,UAAA,EAAO;AAAA,UACJ,CAAA;AAAA,UAEX,KACG,gBAAA,EAAC,GAAD;AAAA,YAAQ,SAAQ;AAAA,YAAQ,MAAK;AAAA,YAAK,SAAS;AAAA,YACtC,UAAA,EAAO;AAAA,UACJ,CAAA;AAAA,QAEX;AAAA,MACJ,CAAA,CAAA;AAAA,IAGL,CAAA,GAAA,gBAAA,EAAC,OAAD;AAAA,MAAK,WAAU;AAAA,MACV,UAAA,EAAM,IAAA,CAAI,MACP,gBAAA,EAAC,GAAD;AAAA,QAEU,MAAA;AAAA,QACE,QAAA;AAAA,QACE,UAAA;AAAA,QACD,SAAA;AAAA,QACC,UAAA;AAAA,MACb,GANQ,EAAK,EAMb,CACJ;AAAA,IACA,CAAA,CACJ;AAAA;AAEb"}
1
+ {"version":3,"file":"UploadQueue.js","names":[],"sources":["../../../src/components/FileUploader/UploadQueue.tsx"],"sourcesContent":["import React from 'react';\nimport { UploadQueueProps } from './types';\nimport { FileItem } from './FileItem';\nimport Button from '../Button';\n\nconst defaultLabels = {\n uploadAll: 'Upload All',\n cancelAll: 'Cancel All',\n clearCompleted: 'Clear Completed',\n fileCount: 'files',\n};\n\nexport const UploadQueue: React.FC<UploadQueueProps> = ({\n items,\n labels: userLabels,\n onRemove,\n onRetry,\n onCancel,\n onUploadAll,\n onCancelAll,\n onClearCompleted,\n className = '',\n}) => {\n const labels = { ...defaultLabels, ...userLabels };\n\n const hasPending = items.some(i => i.status === 'pending');\n const hasUploading = items.some(i => i.status === 'uploading');\n const hasCompleted = items.some(i => i.status === 'success');\n\n if (items.length === 0) return null;\n\n return (\n <div className={`mt-4 ${className}`}>\n {/* Batch actions bar */}\n <div className=\"flex items-center justify-between mb-2 px-1\">\n <span className=\"text-sm opacity-60\">\n {items.length} {labels.fileCount}\n </span>\n <div className=\"flex gap-1\">\n {hasPending && (\n <Button variant=\"primary\" size=\"xs\" onClick={onUploadAll}>\n {labels.uploadAll}\n </Button>\n )}\n {hasUploading && (\n <Button variant=\"warning\" size=\"xs\" outline onClick={onCancelAll}>\n {labels.cancelAll}\n </Button>\n )}\n {hasCompleted && (\n <Button variant=\"ghost\" size=\"xs\" onClick={onClearCompleted}>\n {labels.clearCompleted}\n </Button>\n )}\n </div>\n </div>\n\n {/* File list */}\n <div className=\"flex flex-col gap-1.5 max-h-[360px] overflow-y-auto pr-1\">\n {items.map(item => (\n <FileItem\n key={item.id}\n item={item}\n labels={labels}\n onRemove={onRemove}\n onRetry={onRetry}\n onCancel={onCancel}\n />\n ))}\n </div>\n </div>\n );\n};\n"],"mappings":";;;;;AAKA,IAAM,IAAgB;CAClB,WAAW;CACX,WAAW;CACX,gBAAgB;CAChB,WAAW;AACf,GAEa,KAA2C,EACpD,UACA,QAAQ,GACR,aACA,YACA,aACA,gBACA,gBACA,qBACA,eAAY,SACV;CACF,IAAM,IAAS;EAAE,GAAG;EAAe,GAAG;CAAW,GAE3C,IAAa,EAAM,MAAK,MAAK,EAAE,WAAW,SAAS,GACnD,IAAe,EAAM,MAAK,MAAK,EAAE,WAAW,WAAW,GACvD,IAAe,EAAM,MAAK,MAAK,EAAE,WAAW,SAAS;CAI3D,OAFI,EAAM,WAAW,IAAU,OAG3B,kBAAC,OAAD;EAAK,WAAW,QAAQ;EAAxB,UAAA,CAEI,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACI,kBAAC,QAAD;IAAM,WAAU;IAAhB,UAAA;KACK,EAAM;KAAO;KAAE,EAAO;IACrB;GACN,CAAA,GAAA,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACK,KACG,kBAAC,GAAD;MAAQ,SAAQ;MAAU,MAAK;MAAK,SAAS;MACxC,UAAA,EAAO;KACJ,CAAA;KAEX,KACG,kBAAC,GAAD;MAAQ,SAAQ;MAAU,MAAK;MAAK,SAAA;MAAQ,SAAS;MAChD,UAAA,EAAO;KACJ,CAAA;KAEX,KACG,kBAAC,GAAD;MAAQ,SAAQ;MAAQ,MAAK;MAAK,SAAS;MACtC,UAAA,EAAO;KACJ,CAAA;IAEX;GACJ,CAAA,CAAA;EAGL,CAAA,GAAA,kBAAC,OAAD;GAAK,WAAU;GACV,UAAA,EAAM,KAAI,MACP,kBAAC,GAAD;IAEU;IACE;IACE;IACD;IACC;GACb,GANQ,EAAK,EAMb,CACJ;EACA,CAAA,CACJ;;AAEb"}
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ export type FloatWindowProps = {
3
+ open: boolean;
4
+ onClose: () => void;
5
+ title?: React.ReactNode;
6
+ children: React.ReactNode;
7
+ defaultPosition?: {
8
+ x: number;
9
+ y: number;
10
+ };
11
+ className?: string;
12
+ shellClassName?: string;
13
+ bodyClassName?: string;
14
+ minWidth?: number;
15
+ minHeight?: number;
16
+ maxWidth?: number;
17
+ maxHeight?: number;
18
+ width?: number | string;
19
+ height?: number | string;
20
+ zIndex?: number;
21
+ draggable?: boolean;
22
+ /** Allow user to resize by dragging edges/corners. */
23
+ resizable?: boolean;
24
+ closeLabel?: string;
25
+ onResize?: (w: number, h: number) => void;
26
+ };
27
+ declare const FloatWindow: React.FC<FloatWindowProps>;
28
+ export default FloatWindow;
@@ -0,0 +1,42 @@
1
+ import React from 'react';
2
+ export type GridItemProps = {
3
+ children: React.ReactNode;
4
+ className?: string;
5
+ style?: React.CSSProperties;
6
+ /** `gridArea` from named template, e.g. "header" */
7
+ area?: string;
8
+ /** CSS grid-column, e.g. "1 / 3" or "span 2" */
9
+ column?: string;
10
+ row?: string;
11
+ justifySelf?: React.CSSProperties['justifySelf'];
12
+ alignSelf?: React.CSSProperties['alignSelf'];
13
+ };
14
+ declare const GridItem: React.FC<GridItemProps>;
15
+ export type GridLayoutProps = {
16
+ children: React.ReactNode;
17
+ className?: string;
18
+ style?: React.CSSProperties;
19
+ /** Shorthands for CSS grid (string values as in CSS) */
20
+ templateColumns?: string;
21
+ templateRows?: string;
22
+ templateAreas?: string;
23
+ gap?: string;
24
+ rowGap?: string;
25
+ columnGap?: string;
26
+ autoRows?: string;
27
+ autoFlow?: React.CSSProperties['gridAutoFlow'];
28
+ justifyItems?: React.CSSProperties['justifyItems'];
29
+ alignItems?: React.CSSProperties['alignItems'];
30
+ justifyContent?: React.CSSProperties['justifyContent'];
31
+ alignContent?: React.CSSProperties['alignContent'];
32
+ /** `display: inline-grid` */
33
+ inline?: boolean;
34
+ /** `min-h-*` or custom: applied via style if number (px) */
35
+ minHeight?: string | number;
36
+ };
37
+ export type GridLayoutComponent = React.FC<GridLayoutProps> & {
38
+ Item: typeof GridItem;
39
+ };
40
+ declare const GridLayout: GridLayoutComponent;
41
+ export { GridLayout, GridItem };
42
+ export default GridLayout;
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ export type IconProps = {
3
+ /** Icon content — typically an inline `<svg>` (e.g. from icon libraries). */
4
+ children?: React.ReactNode;
5
+ /** Square size; number is treated as px. */
6
+ size?: number | string;
7
+ /** Icon color (inherits `currentColor` when omitted). */
8
+ color?: string;
9
+ /** Continuous rotation animation. */
10
+ spin?: boolean;
11
+ /** Extra class names on the wrapper. */
12
+ className?: string;
13
+ /** Inline styles on the wrapper. */
14
+ style?: React.CSSProperties;
15
+ /** Click handler. */
16
+ onClick?: (e: React.MouseEvent<HTMLSpanElement>) => void;
17
+ };
18
+ /**
19
+ * Icon —— A2UI 展示组件:图标容器。
20
+ * 不绑定具体图标库:把任意内联 `<svg>`(lucide / heroicons / 自定义)作为
21
+ * children 传入,由本组件统一控制尺寸、颜色与旋转动画。
22
+ */
23
+ declare const Icon: React.FC<IconProps>;
24
+ export default Icon;
@@ -0,0 +1,26 @@
1
+ import { cn as e } from "../../utils/cn.js";
2
+ import "react";
3
+ import { jsx as t } from "react/jsx-runtime";
4
+ //#region src/components/Icon/index.tsx
5
+ var n = ({ children: n, size: r = 18, color: i, spin: a = !1, className: o = "", style: s, onClick: c }) => {
6
+ let l = typeof r == "number" ? `${r}px` : r;
7
+ return /* @__PURE__ */ t("span", {
8
+ "aria-hidden": "true",
9
+ className: e("inline-flex shrink-0 items-center justify-center leading-none", a && "animate-spin", o),
10
+ style: {
11
+ width: l,
12
+ height: l,
13
+ color: i,
14
+ ...s
15
+ },
16
+ onClick: c,
17
+ children: /* @__PURE__ */ t("span", {
18
+ className: "[&>svg]:h-full [&>svg]:w-full inline-flex",
19
+ children: n
20
+ })
21
+ });
22
+ };
23
+ //#endregion
24
+ export { n as default };
25
+
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Icon/index.tsx"],"sourcesContent":["import React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type IconProps = {\n /** Icon content — typically an inline `<svg>` (e.g. from icon libraries). */\n children?: React.ReactNode;\n /** Square size; number is treated as px. */\n size?: number | string;\n /** Icon color (inherits `currentColor` when omitted). */\n color?: string;\n /** Continuous rotation animation. */\n spin?: boolean;\n /** Extra class names on the wrapper. */\n className?: string;\n /** Inline styles on the wrapper. */\n style?: React.CSSProperties;\n /** Click handler. */\n onClick?: (e: React.MouseEvent<HTMLSpanElement>) => void;\n};\n\n/**\n * Icon —— A2UI 展示组件:图标容器。\n * 不绑定具体图标库:把任意内联 `<svg>`(lucide / heroicons / 自定义)作为\n * children 传入,由本组件统一控制尺寸、颜色与旋转动画。\n */\nconst Icon: React.FC<IconProps> = ({\n children,\n size = 18,\n color,\n spin = false,\n className = '',\n style,\n onClick,\n}) => {\n const px = typeof size === 'number' ? `${size}px` : size;\n\n return (\n <span\n aria-hidden=\"true\"\n className={cn(\n 'inline-flex shrink-0 items-center justify-center leading-none',\n spin && 'animate-spin',\n className,\n )}\n style={{ width: px, height: px, color, ...style }}\n onClick={onClick}\n >\n {/* 让未带尺寸的 svg 自动铺满容器 */}\n <span className=\"[&>svg]:h-full [&>svg]:w-full inline-flex\">{children}</span>\n </span>\n );\n};\n\nexport default Icon;\n"],"mappings":";;;;AAyBA,IAAM,KAA6B,EACjC,aACA,UAAO,IACP,UACA,UAAO,IACP,eAAY,IACZ,UACA,iBACI;CACJ,IAAM,IAAK,OAAO,KAAS,WAAW,GAAG,EAAK,MAAM;CAEpD,OACE,kBAAC,QAAD;EACE,eAAY;EACZ,WAAW,EACT,iEACA,KAAQ,gBACR,CACF;EACA,OAAO;GAAE,OAAO;GAAI,QAAQ;GAAI;GAAO,GAAG;EAAM;EACvC;EAGT,UAAA,kBAAC,QAAD;GAAM,WAAU;GAA6C;EAAe,CAAA;CACxE,CAAA;AAEV"}