dishui 0.0.64 → 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 (504) 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 +11 -13
  5. package/dist/components/Badge/index.js.map +1 -1
  6. package/dist/components/Button/index.js +62 -86
  7. package/dist/components/Button/index.js.map +1 -1
  8. package/dist/components/Card/index.d.ts +87 -0
  9. package/dist/components/Card/index.js +178 -44
  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 -63
  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.d.ts +4 -1
  30. package/dist/components/EmptyState/index.js +24 -24
  31. package/dist/components/EmptyState/index.js.map +1 -1
  32. package/dist/components/FileUploader/DropZone.js +134 -136
  33. package/dist/components/FileUploader/DropZone.js.map +1 -1
  34. package/dist/components/FileUploader/FileItem.js +159 -163
  35. package/dist/components/FileUploader/FileItem.js.map +1 -1
  36. package/dist/components/FileUploader/FileUploader.js +126 -127
  37. package/dist/components/FileUploader/FileUploader.js.map +1 -1
  38. package/dist/components/FileUploader/UploadQueue.js +62 -62
  39. package/dist/components/FileUploader/UploadQueue.js.map +1 -1
  40. package/dist/components/FloatWindow/index.d.ts +28 -0
  41. package/dist/components/GridLayout/index.d.ts +42 -0
  42. package/dist/components/Icon/index.d.ts +24 -0
  43. package/dist/components/Icon/index.js +26 -0
  44. package/dist/components/Icon/index.js.map +1 -0
  45. package/dist/components/Image/index.d.ts +33 -0
  46. package/dist/components/Image/index.js +44 -0
  47. package/dist/components/Image/index.js.map +1 -0
  48. package/dist/components/Input/index.js +196 -197
  49. package/dist/components/Input/index.js.map +1 -1
  50. package/dist/components/Label/index.js +62 -73
  51. package/dist/components/Label/index.js.map +1 -1
  52. package/dist/components/Layout/index.js +134 -139
  53. package/dist/components/Layout/index.js.map +1 -1
  54. package/dist/components/List/index.js +45 -43
  55. package/dist/components/List/index.js.map +1 -1
  56. package/dist/components/Markdown/Markdown.js +106 -103
  57. package/dist/components/Markdown/Markdown.js.map +1 -1
  58. package/dist/components/Markdown/codeThemes.js +24 -33
  59. package/dist/components/Markdown/codeThemes.js.map +1 -1
  60. package/dist/components/Markdown/markdownComponents.js +203 -208
  61. package/dist/components/Markdown/markdownComponents.js.map +1 -1
  62. package/dist/components/Markdown/parseCodeBlockMeta.js +22 -22
  63. package/dist/components/Markdown/parseCodeBlockMeta.js.map +1 -1
  64. package/dist/components/Markdown/useMarkdownSource.js +46 -46
  65. package/dist/components/Markdown/useMarkdownSource.js.map +1 -1
  66. package/dist/components/Markdown/useMarkmapRenderer.js +35 -36
  67. package/dist/components/Markdown/useMarkmapRenderer.js.map +1 -1
  68. package/dist/components/Markdown/useMermaidRenderer.js +41 -42
  69. package/dist/components/Markdown/useMermaidRenderer.js.map +1 -1
  70. package/dist/components/Modal/index.d.ts +7 -3
  71. package/dist/components/Modal/index.js +82 -70
  72. package/dist/components/Modal/index.js.map +1 -1
  73. package/dist/components/MultipleChoice/index.d.ts +44 -0
  74. package/dist/components/MultipleChoice/index.js +52 -0
  75. package/dist/components/MultipleChoice/index.js.map +1 -0
  76. package/dist/components/Notification/index.d.ts +17 -0
  77. package/dist/components/Page/index.d.ts +58 -0
  78. package/dist/components/Page/index.js +43 -0
  79. package/dist/components/Page/index.js.map +1 -0
  80. package/dist/components/PageHeader/index.js +28 -28
  81. package/dist/components/PageHeader/index.js.map +1 -1
  82. package/dist/components/ProtectedRoute/index.js +8 -9
  83. package/dist/components/ProtectedRoute/index.js.map +1 -1
  84. package/dist/components/Row/index.d.ts +28 -0
  85. package/dist/components/Row/index.js +30 -0
  86. package/dist/components/Row/index.js.map +1 -0
  87. package/dist/components/Select/index.js +251 -257
  88. package/dist/components/Select/index.js.map +1 -1
  89. package/dist/components/SidebarToggleButton/index.js +56 -59
  90. package/dist/components/SidebarToggleButton/index.js.map +1 -1
  91. package/dist/components/Slider/index.d.ts +39 -0
  92. package/dist/components/Slider/index.js +52 -0
  93. package/dist/components/Slider/index.js.map +1 -0
  94. package/dist/components/StatCard/index.d.ts +31 -1
  95. package/dist/components/StatCard/index.js +189 -58
  96. package/dist/components/StatCard/index.js.map +1 -1
  97. package/dist/components/Switch/index.d.ts +34 -0
  98. package/dist/components/Switch/index.js +55 -0
  99. package/dist/components/Switch/index.js.map +1 -0
  100. package/dist/components/Tab/index.d.ts +40 -0
  101. package/dist/components/Table/index.js +109 -103
  102. package/dist/components/Table/index.js.map +1 -1
  103. package/dist/components/Tabs/index.d.ts +19 -5
  104. package/dist/components/Tabs/index.js +30 -21
  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 -320
  132. package/dist/components/pro/CodeEditor/editors/CodeEditor.js.map +1 -1
  133. package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js +167 -221
  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 -305
  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 -141
  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 +190 -190
  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 -946
  217. package/dist/components/pro/Flow/Flow.js.map +1 -1
  218. package/dist/components/pro/Flow/FlowCanvas.js +1626 -1663
  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 -182
  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 -222
  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 -591
  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 -244
  345. package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
  346. package/dist/components/pro/Flow/panels/PresentationMode.js +137 -138
  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 -567
  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 -42
  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 +29 -1
  442. package/dist/index.js +106 -236
  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 -165
  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 +690 -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 -58
  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 +23 -10
@@ -1,46 +1,43 @@
1
- import { createActionColumn as S, createColumn as h, createComputedColumn as v, createSelectionColumn as C, dateSort as x, numericSort as z } from "../data-table.js";
2
- import { useMemo as y } from "react";
3
- function g(c) {
4
- const { key: e, header: l, type: i = "text", sortable: f, cell: m, filter: o, width: n, minWidth: r, maxWidth: s, accessorFn: p, sortingFn: b, extra: u } = c;
5
- if (i === "selection") return C(u);
6
- if (i === "action") return S({
7
- id: e.startsWith("_") ? "actions" : e,
8
- header: l,
9
- cell: m,
10
- ...n !== void 0 ? { size: n } : {},
11
- ...r !== void 0 ? { minSize: r } : {},
12
- ...s !== void 0 ? { maxSize: s } : {},
13
- ...u
14
- });
15
- const a = {};
16
- o && (a.filterType = o.type, o.options && (a.filterOptions = o.options));
17
- let t = b;
18
- if (!t) switch (i) {
19
- case "number":
20
- t = z;
21
- break;
22
- case "date":
23
- t = x;
24
- break;
25
- }
26
- const d = {
27
- ...m !== void 0 ? { cell: m } : {},
28
- ...t ? { sortFn: t } : {},
29
- ...f === !1 ? { enableSorting: !1 } : {},
30
- ...Object.keys(a).length > 0 ? { meta: a } : {},
31
- ...n !== void 0 ? { size: n } : {},
32
- ...r !== void 0 ? { minSize: r } : {},
33
- ...s !== void 0 ? { maxSize: s } : {},
34
- ...u
35
- };
36
- return i === "computed" ? v(e.startsWith("_") ? e.slice(1) : e, l, p, d) : h(e, l, d);
1
+ import { createActionColumn as e, createColumn as t, createComputedColumn as n, createSelectionColumn as r, dateSort as i, numericSort as a } from "../data-table.js";
2
+ import { useMemo as o } from "react";
3
+ //#region src/hooks/useTableColumns.ts
4
+ function s(o) {
5
+ let { key: s, header: c, type: l = "text", sortable: u, cell: d, filter: f, width: p, minWidth: m, maxWidth: h, accessorFn: g, sortingFn: _, extra: v } = o;
6
+ if (l === "selection") return r(v);
7
+ if (l === "action") return e({
8
+ id: s.startsWith("_") ? "actions" : s,
9
+ header: c,
10
+ cell: d,
11
+ ...p === void 0 ? {} : { size: p },
12
+ ...m === void 0 ? {} : { minSize: m },
13
+ ...h === void 0 ? {} : { maxSize: h },
14
+ ...v
15
+ });
16
+ let y = {};
17
+ f && (y.filterType = f.type, f.options && (y.filterOptions = f.options));
18
+ let b = _;
19
+ if (!b) switch (l) {
20
+ case "number":
21
+ b = a;
22
+ break;
23
+ case "date": b = i;
24
+ }
25
+ let x = {
26
+ ...d === void 0 ? {} : { cell: d },
27
+ ...b ? { sortFn: b } : {},
28
+ ...u === !1 ? { enableSorting: !1 } : {},
29
+ ...Object.keys(y).length > 0 ? { meta: y } : {},
30
+ ...p === void 0 ? {} : { size: p },
31
+ ...m === void 0 ? {} : { minSize: m },
32
+ ...h === void 0 ? {} : { maxSize: h },
33
+ ...v
34
+ };
35
+ return l === "computed" ? n(s.startsWith("_") ? s.slice(1) : s, c, g, x) : t(s, c, x);
37
36
  }
38
- function W(c, e = []) {
39
- return y(() => c.map(g), e);
37
+ function c(e, t = []) {
38
+ return o(() => e.map(s), t);
40
39
  }
41
- export {
42
- W as default,
43
- W as useTableColumns
44
- };
40
+ //#endregion
41
+ export { c as default, c as useTableColumns };
45
42
 
46
43
  //# sourceMappingURL=useTableColumns.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTableColumns.js","names":[],"sources":["../../src/hooks/useTableColumns.ts"],"sourcesContent":["import { useMemo, ReactNode } from 'react';\nimport { ColumnDef, Row, SortingFn } from '../components/pro/DataTable/tanstack-table';\nimport {\n createColumn,\n createComputedColumn,\n createActionColumn,\n createSelectionColumn,\n numericSort,\n dateSort,\n stringSort,\n} from '../components/pro/DataTable';\n\n/**\n * 列筛选配置\n */\nexport interface ColumnFilterConfig {\n /** 筛选类型 */\n type: 'text' | 'select' | 'number' | 'dateRange';\n /** 下拉选项(仅 select 类型使用) */\n options?: { value: string; label: string }[];\n}\n\n/**\n * 列配置项(JSON 驱动)\n */\nexport interface ColumnConfig<T extends object = any> {\n /** 字段名 / accessorKey。特殊值: '_selection' 自动创建选择列 */\n key: string;\n /** 列标题 */\n header: string;\n /**\n * 列类型\n * - 'text' 普通文本列(默认)\n * - 'number' 数值列,自动使用 numericSort\n * - 'date' 日期列,自动使用 dateSort\n * - 'computed' 计算列,需提供 accessorFn\n * - 'action' 操作列,禁用排序\n * - 'selection' 选择列(含全选复选框)\n */\n type?: 'text' | 'number' | 'date' | 'computed' | 'action' | 'selection';\n /** 是否可排序,默认 true(action/selection 默认 false) */\n sortable?: boolean;\n /** 自定义单元格渲染 */\n cell?: ((info: any) => ReactNode) | ((props: { row: Row<T> }) => ReactNode);\n /** 筛选配置 */\n filter?: ColumnFilterConfig;\n /** 列宽 */\n width?: number;\n /** 最小列宽 */\n minWidth?: number;\n /** 最大列宽 */\n maxWidth?: number;\n /** 计算列的 accessorFn(仅 type='computed' 时使用) */\n accessorFn?: (row: T) => any;\n /** 自定义排序函数 */\n sortingFn?: SortingFn<any>;\n /** 任意额外选项,会被合并到最终 ColumnDef 中 */\n extra?: Partial<ColumnDef<T, any>>;\n}\n\n/**\n * 将单个 ColumnConfig 转换为 ColumnDef\n */\nfunction buildColumnDef<T extends object>(config: ColumnConfig<T>): ColumnDef<T, any> {\n const { key, header, type = 'text', sortable, cell, filter, width, minWidth, maxWidth, accessorFn, sortingFn, extra } = config;\n\n // 选择列\n if (type === 'selection') {\n return createSelectionColumn<T>(extra);\n }\n\n // 操作列\n if (type === 'action') {\n return createActionColumn<T>({\n id: key.startsWith('_') ? 'actions' : key,\n header,\n cell: cell as any,\n ...(width !== undefined ? { size: width } : {}),\n ...(minWidth !== undefined ? { minSize: minWidth } : {}),\n ...(maxWidth !== undefined ? { maxSize: maxWidth } : {}),\n ...extra,\n });\n }\n\n // 构建 meta(筛选信息)\n const meta: Record<string, any> = {};\n if (filter) {\n meta.filterType = filter.type;\n if (filter.options) {\n meta.filterOptions = filter.options;\n }\n }\n\n // 自动选择排序函数\n let resolvedSortingFn: SortingFn<any> | undefined = sortingFn;\n if (!resolvedSortingFn) {\n switch (type) {\n case 'number':\n resolvedSortingFn = numericSort;\n break;\n case 'date':\n resolvedSortingFn = dateSort;\n break;\n // 'text' 和 'computed' 使用默认排序\n }\n }\n\n // 基础选项(v9:使用 sortFn)\n const baseOptions: Partial<ColumnDef<T, any>> = {\n ...(cell !== undefined ? { cell: cell as any } : {}),\n ...(resolvedSortingFn ? { sortFn: resolvedSortingFn } : {}),\n ...(sortable === false ? { enableSorting: false } : {}),\n ...(Object.keys(meta).length > 0 ? { meta } : {}),\n ...(width !== undefined ? { size: width } : {}),\n ...(minWidth !== undefined ? { minSize: minWidth } : {}),\n ...(maxWidth !== undefined ? { maxSize: maxWidth } : {}),\n ...extra,\n };\n\n // 计算列\n if (type === 'computed') {\n return createComputedColumn<T>(\n key.startsWith('_') ? key.slice(1) : key,\n header,\n accessorFn,\n baseOptions\n );\n }\n\n // 普通列 / number / date\n return createColumn<T>(key, header, baseOptions);\n}\n\n/**\n * useTableColumns - 通过 JSON 配置数组快速创建 DataTable 列定义\n *\n * @example\n * ```tsx\n * const columns = useTableColumns<Order>([\n * { key: '_selection', type: 'selection', header: '' },\n * { key: 'orderNumber', header: '订单编号', filter: { type: 'text' } },\n * { key: 'total', header: '总金额', type: 'number',\n * cell: info => `¥${info.getValue<number>().toFixed(2)}`,\n * filter: { type: 'number' } },\n * { key: '_actions', type: 'action', header: '操作',\n * cell: ({ row }) => <button>查看</button> }\n * ]);\n * ```\n *\n * @param configs - 列配置数组\n * @param deps - 额外依赖项(当 cell 渲染器依赖外部状态时使用)\n */\nexport function useTableColumns<T extends object>(\n configs: ColumnConfig<T>[],\n deps: any[] = []\n): ColumnDef<T, any>[] {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => configs.map(buildColumnDef), deps);\n}\n\nexport default useTableColumns;\n"],"mappings":";;AA+DA,SAAS,EAAiC,GAA4C;AAClF,QAAM,EAAE,KAAA,GAAK,QAAA,GAAQ,MAAA,IAAO,QAAQ,UAAA,GAAU,MAAA,GAAM,QAAA,GAAQ,OAAA,GAAO,UAAA,GAAU,UAAA,GAAU,YAAA,GAAY,WAAA,GAAW,OAAA,EAAA,IAAU;AAGxH,MAAI,MAAS,YACT,QAAO,EAAyB,CAAK;AAIzC,MAAI,MAAS,SACT,QAAO,EAAsB;AAAA,IACzB,IAAI,EAAI,WAAW,GAAG,IAAI,YAAY;AAAA,IACtC,QAAA;AAAA,IACM,MAAA;AAAA,IACN,GAAI,MAAU,SAAY,EAAE,MAAM,EAAM,IAAI,CAAC;AAAA,IAC7C,GAAI,MAAa,SAAY,EAAE,SAAS,EAAS,IAAI,CAAC;AAAA,IACtD,GAAI,MAAa,SAAY,EAAE,SAAS,EAAS,IAAI,CAAC;AAAA,IACtD,GAAG;AAAA,EACP,CAAC;AAIL,QAAM,IAA4B,CAAC;AACnC,EAAI,MACA,EAAK,aAAa,EAAO,MACrB,EAAO,YACP,EAAK,gBAAgB,EAAO;AAKpC,MAAI,IAAgD;AACpD,MAAI,CAAC,EACD,SAAQ,GAAR;AAAA,IACI,KAAK;AACD,MAAA,IAAoB;AACpB;AAAA,IACJ,KAAK;AACD,MAAA,IAAoB;AACpB;AAAA,EAER;AAIJ,QAAM,IAA0C;AAAA,IAC5C,GAAI,MAAS,SAAY,EAAQ,MAAA,EAAY,IAAI,CAAC;AAAA,IAClD,GAAI,IAAoB,EAAE,QAAQ,EAAkB,IAAI,CAAC;AAAA,IACzD,GAAI,MAAa,KAAQ,EAAE,eAAe,GAAM,IAAI,CAAC;AAAA,IACrD,GAAI,OAAO,KAAK,CAAI,EAAE,SAAS,IAAI,EAAE,MAAA,EAAK,IAAI,CAAC;AAAA,IAC/C,GAAI,MAAU,SAAY,EAAE,MAAM,EAAM,IAAI,CAAC;AAAA,IAC7C,GAAI,MAAa,SAAY,EAAE,SAAS,EAAS,IAAI,CAAC;AAAA,IACtD,GAAI,MAAa,SAAY,EAAE,SAAS,EAAS,IAAI,CAAC;AAAA,IACtD,GAAG;AAAA,EACP;AAGA,SAAI,MAAS,aACF,EACH,EAAI,WAAW,GAAG,IAAI,EAAI,MAAM,CAAC,IAAI,GACrC,GACA,GACA,CACJ,IAIG,EAAgB,GAAK,GAAQ,CAAW;AACnD;AAqBA,SAAgB,EACZ,GACA,IAAc,CAAC,GACI;AAEnB,SAAO,EAAA,MAAc,EAAQ,IAAI,CAAc,GAAG,CAAI;AAC1D"}
1
+ {"version":3,"file":"useTableColumns.js","names":[],"sources":["../../src/hooks/useTableColumns.ts"],"sourcesContent":["import { useMemo, ReactNode } from 'react';\nimport { ColumnDef, Row, SortingFn } from '../components/pro/DataTable/tanstack-table';\nimport {\n createColumn,\n createComputedColumn,\n createActionColumn,\n createSelectionColumn,\n numericSort,\n dateSort,\n stringSort,\n} from '../components/pro/DataTable';\n\n/**\n * 列筛选配置\n */\nexport interface ColumnFilterConfig {\n /** 筛选类型 */\n type: 'text' | 'select' | 'number' | 'dateRange';\n /** 下拉选项(仅 select 类型使用) */\n options?: { value: string; label: string }[];\n}\n\n/**\n * 列配置项(JSON 驱动)\n */\nexport interface ColumnConfig<T extends object = any> {\n /** 字段名 / accessorKey。特殊值: '_selection' 自动创建选择列 */\n key: string;\n /** 列标题 */\n header: string;\n /**\n * 列类型\n * - 'text' 普通文本列(默认)\n * - 'number' 数值列,自动使用 numericSort\n * - 'date' 日期列,自动使用 dateSort\n * - 'computed' 计算列,需提供 accessorFn\n * - 'action' 操作列,禁用排序\n * - 'selection' 选择列(含全选复选框)\n */\n type?: 'text' | 'number' | 'date' | 'computed' | 'action' | 'selection';\n /** 是否可排序,默认 true(action/selection 默认 false) */\n sortable?: boolean;\n /** 自定义单元格渲染 */\n cell?: ((info: any) => ReactNode) | ((props: { row: Row<T> }) => ReactNode);\n /** 筛选配置 */\n filter?: ColumnFilterConfig;\n /** 列宽 */\n width?: number;\n /** 最小列宽 */\n minWidth?: number;\n /** 最大列宽 */\n maxWidth?: number;\n /** 计算列的 accessorFn(仅 type='computed' 时使用) */\n accessorFn?: (row: T) => any;\n /** 自定义排序函数 */\n sortingFn?: SortingFn<any>;\n /** 任意额外选项,会被合并到最终 ColumnDef 中 */\n extra?: Partial<ColumnDef<T, any>>;\n}\n\n/**\n * 将单个 ColumnConfig 转换为 ColumnDef\n */\nfunction buildColumnDef<T extends object>(config: ColumnConfig<T>): ColumnDef<T, any> {\n const { key, header, type = 'text', sortable, cell, filter, width, minWidth, maxWidth, accessorFn, sortingFn, extra } = config;\n\n // 选择列\n if (type === 'selection') {\n return createSelectionColumn<T>(extra);\n }\n\n // 操作列\n if (type === 'action') {\n return createActionColumn<T>({\n id: key.startsWith('_') ? 'actions' : key,\n header,\n cell: cell as any,\n ...(width !== undefined ? { size: width } : {}),\n ...(minWidth !== undefined ? { minSize: minWidth } : {}),\n ...(maxWidth !== undefined ? { maxSize: maxWidth } : {}),\n ...extra,\n });\n }\n\n // 构建 meta(筛选信息)\n const meta: Record<string, any> = {};\n if (filter) {\n meta.filterType = filter.type;\n if (filter.options) {\n meta.filterOptions = filter.options;\n }\n }\n\n // 自动选择排序函数\n let resolvedSortingFn: SortingFn<any> | undefined = sortingFn;\n if (!resolvedSortingFn) {\n switch (type) {\n case 'number':\n resolvedSortingFn = numericSort;\n break;\n case 'date':\n resolvedSortingFn = dateSort;\n break;\n // 'text' 和 'computed' 使用默认排序\n }\n }\n\n // 基础选项(v9:使用 sortFn)\n const baseOptions: Partial<ColumnDef<T, any>> = {\n ...(cell !== undefined ? { cell: cell as any } : {}),\n ...(resolvedSortingFn ? { sortFn: resolvedSortingFn } : {}),\n ...(sortable === false ? { enableSorting: false } : {}),\n ...(Object.keys(meta).length > 0 ? { meta } : {}),\n ...(width !== undefined ? { size: width } : {}),\n ...(minWidth !== undefined ? { minSize: minWidth } : {}),\n ...(maxWidth !== undefined ? { maxSize: maxWidth } : {}),\n ...extra,\n };\n\n // 计算列\n if (type === 'computed') {\n return createComputedColumn<T>(\n key.startsWith('_') ? key.slice(1) : key,\n header,\n accessorFn,\n baseOptions\n );\n }\n\n // 普通列 / number / date\n return createColumn<T>(key, header, baseOptions);\n}\n\n/**\n * useTableColumns - 通过 JSON 配置数组快速创建 DataTable 列定义\n *\n * @example\n * ```tsx\n * const columns = useTableColumns<Order>([\n * { key: '_selection', type: 'selection', header: '' },\n * { key: 'orderNumber', header: '订单编号', filter: { type: 'text' } },\n * { key: 'total', header: '总金额', type: 'number',\n * cell: info => `¥${info.getValue<number>().toFixed(2)}`,\n * filter: { type: 'number' } },\n * { key: '_actions', type: 'action', header: '操作',\n * cell: ({ row }) => <button>查看</button> }\n * ]);\n * ```\n *\n * @param configs - 列配置数组\n * @param deps - 额外依赖项(当 cell 渲染器依赖外部状态时使用)\n */\nexport function useTableColumns<T extends object>(\n configs: ColumnConfig<T>[],\n deps: any[] = []\n): ColumnDef<T, any>[] {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useMemo(() => configs.map(buildColumnDef), deps);\n}\n\nexport default useTableColumns;\n"],"mappings":";;;AA+DA,SAAS,EAAiC,GAA4C;CAClF,IAAM,EAAE,QAAK,WAAQ,UAAO,QAAQ,aAAU,SAAM,WAAQ,UAAO,aAAU,aAAU,eAAY,cAAW,aAAU;CAGxH,IAAI,MAAS,aACT,OAAO,EAAyB,CAAK;CAIzC,IAAI,MAAS,UACT,OAAO,EAAsB;EACzB,IAAI,EAAI,WAAW,GAAG,IAAI,YAAY;EACtC;EACM;EACN,GAAI,MAAU,KAAA,IAA8B,CAAC,IAAnB,EAAE,MAAM,EAAM;EACxC,GAAI,MAAa,KAAA,IAAoC,CAAC,IAAzB,EAAE,SAAS,EAAS;EACjD,GAAI,MAAa,KAAA,IAAoC,CAAC,IAAzB,EAAE,SAAS,EAAS;EACjD,GAAG;CACP,CAAC;CAIL,IAAM,IAA4B,CAAC;CACnC,AAAI,MACA,EAAK,aAAa,EAAO,MACrB,EAAO,YACP,EAAK,gBAAgB,EAAO;CAKpC,IAAI,IAAgD;CACpD,IAAI,CAAC,GACD,QAAQ,GAAR;EACI,KAAK;GACD,IAAoB;GACpB;EACJ,KAAK,QACD,IAAoB;CAG5B;CAIJ,IAAM,IAA0C;EAC5C,GAAI,MAAS,KAAA,IAAoC,CAAC,IAAzB,EAAQ,QAAY;EAC7C,GAAI,IAAoB,EAAE,QAAQ,EAAkB,IAAI,CAAC;EACzD,GAAI,MAAa,KAAQ,EAAE,eAAe,GAAM,IAAI,CAAC;EACrD,GAAI,OAAO,KAAK,CAAI,CAAC,CAAC,SAAS,IAAI,EAAE,QAAK,IAAI,CAAC;EAC/C,GAAI,MAAU,KAAA,IAA8B,CAAC,IAAnB,EAAE,MAAM,EAAM;EACxC,GAAI,MAAa,KAAA,IAAoC,CAAC,IAAzB,EAAE,SAAS,EAAS;EACjD,GAAI,MAAa,KAAA,IAAoC,CAAC,IAAzB,EAAE,SAAS,EAAS;EACjD,GAAG;CACP;CAaA,OAVI,MAAS,aACF,EACH,EAAI,WAAW,GAAG,IAAI,EAAI,MAAM,CAAC,IAAI,GACrC,GACA,GACA,CACJ,IAIG,EAAgB,GAAK,GAAQ,CAAW;AACnD;AAqBA,SAAgB,EACZ,GACA,IAAc,CAAC,GACI;CAEnB,OAAO,QAAc,EAAQ,IAAI,CAAc,GAAG,CAAI;AAC1D"}
@@ -1,71 +1,70 @@
1
- import { useCallback as d, useMemo as l, useState as r } from "react";
2
- function k(p) {
3
- const { data: s, initialSort: P = [], initialFilters: w = [], initialPageSize: F = 10, filterFn: g, getRowId: a } = p, [c, f] = r(P), [o, R] = r(w), [u, S] = r(0), [i, z] = r(F), [n, m] = r({}), h = d((e) => {
4
- S(0), R(e);
5
- }, []), C = d((e) => {
6
- S(e);
7
- }, []), b = d((e) => {
8
- z(e), S(0);
9
- }, []), t = l(() => !g || o.length === 0 ? s : s.filter((e) => g(e, o)), [
10
- s,
11
- o,
12
- g
13
- ]);
14
- return {
15
- tableData: t,
16
- sorting: c,
17
- onSortingChange: f,
18
- columnFilters: o,
19
- onColumnFiltersChange: h,
20
- pageIndex: u,
21
- pageSize: i,
22
- pageCount: l(() => Math.ceil(t.length / i), [t.length, i]),
23
- onPageChange: C,
24
- onPageSizeChange: b,
25
- selectedRows: n,
26
- onRowSelectionChange: m,
27
- selectedData: l(() => a ? t.filter((e, x) => {
28
- const D = a(e, x);
29
- return n[D];
30
- }) : Object.keys(n).filter((e) => n[e]).map((e) => t[Number(e)]).filter(Boolean), [
31
- n,
32
- t,
33
- a
34
- ]),
35
- tableProps: l(() => ({
36
- data: t,
37
- sortingState: c,
38
- onSortingChange: f,
39
- columnFilters: o,
40
- onColumnFiltersChange: h,
41
- pageIndex: u,
42
- pageSize: i,
43
- onPageChange: C,
44
- onPageSizeChange: b,
45
- selectedRows: n,
46
- onRowSelectionChange: m,
47
- ...a ? { getRowId: a } : {},
48
- enableSorting: !0,
49
- enableFiltering: !0,
50
- enablePagination: !0,
51
- enableSelection: !0
52
- }), [
53
- t,
54
- c,
55
- o,
56
- h,
57
- u,
58
- i,
59
- C,
60
- b,
61
- n,
62
- a
63
- ])
64
- };
1
+ import { useCallback as e, useMemo as t, useState as n } from "react";
2
+ //#region src/hooks/useTableData.ts
3
+ function r(r) {
4
+ let { data: i, initialSort: a = [], initialFilters: o = [], initialPageSize: s = 10, filterFn: c, getRowId: l } = r, [u, d] = n(a), [f, p] = n(o), [m, h] = n(0), [g, _] = n(s), [v, y] = n({}), b = e((e) => {
5
+ h(0), p(e);
6
+ }, []), x = e((e) => {
7
+ h(e);
8
+ }, []), S = e((e) => {
9
+ _(e), h(0);
10
+ }, []), C = t(() => !c || f.length === 0 ? i : i.filter((e) => c(e, f)), [
11
+ i,
12
+ f,
13
+ c
14
+ ]);
15
+ return {
16
+ tableData: C,
17
+ sorting: u,
18
+ onSortingChange: d,
19
+ columnFilters: f,
20
+ onColumnFiltersChange: b,
21
+ pageIndex: m,
22
+ pageSize: g,
23
+ pageCount: t(() => Math.ceil(C.length / g), [C.length, g]),
24
+ onPageChange: x,
25
+ onPageSizeChange: S,
26
+ selectedRows: v,
27
+ onRowSelectionChange: y,
28
+ selectedData: t(() => l ? C.filter((e, t) => {
29
+ let n = l(e, t);
30
+ return v[n];
31
+ }) : Object.keys(v).filter((e) => v[e]).map((e) => C[Number(e)]).filter(Boolean), [
32
+ v,
33
+ C,
34
+ l
35
+ ]),
36
+ tableProps: t(() => ({
37
+ data: C,
38
+ sortingState: u,
39
+ onSortingChange: d,
40
+ columnFilters: f,
41
+ onColumnFiltersChange: b,
42
+ pageIndex: m,
43
+ pageSize: g,
44
+ onPageChange: x,
45
+ onPageSizeChange: S,
46
+ selectedRows: v,
47
+ onRowSelectionChange: y,
48
+ ...l ? { getRowId: l } : {},
49
+ enableSorting: !0,
50
+ enableFiltering: !0,
51
+ enablePagination: !0,
52
+ enableSelection: !0
53
+ }), [
54
+ C,
55
+ u,
56
+ f,
57
+ b,
58
+ m,
59
+ g,
60
+ x,
61
+ S,
62
+ v,
63
+ l
64
+ ])
65
+ };
65
66
  }
66
- export {
67
- k as default,
68
- k as useTableData
69
- };
67
+ //#endregion
68
+ export { r as default, r as useTableData };
70
69
 
71
70
  //# sourceMappingURL=useTableData.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTableData.js","names":[],"sources":["../../src/hooks/useTableData.ts"],"sourcesContent":["import { useState, useMemo, useCallback } from 'react';\nimport {\n ColumnFiltersState,\n SortingState,\n RowSelectionState,\n} from '../components/pro/DataTable/tanstack-table';\n\n/**\n * useTableData 配置项\n */\nexport interface UseTableDataOptions<T extends object> {\n /** 原始数据数组 */\n data: T[];\n /** 初始排序状态 */\n initialSort?: SortingState;\n /** 初始筛选状态 */\n initialFilters?: ColumnFiltersState;\n /** 初始每页行数,默认 10 */\n initialPageSize?: number;\n /** 自定义筛选函数(客户端过滤)。若不提供则将原始数据直接传给 DataTable 做内置过滤 */\n filterFn?: (item: T, filters: ColumnFiltersState) => boolean;\n /** 获取行 ID 的函数 */\n getRowId?: (row: T, index: number) => string;\n}\n\n/**\n * useTableData 返回值\n */\nexport interface UseTableDataReturn<T extends object> {\n // 数据\n /** 经过筛选后的数据(如果提供了 filterFn) */\n tableData: T[];\n\n // 排序\n sorting: SortingState;\n onSortingChange: (sorting: SortingState) => void;\n\n // 筛选\n columnFilters: ColumnFiltersState;\n onColumnFiltersChange: (\n filters: ColumnFiltersState | ((prev: ColumnFiltersState) => ColumnFiltersState)\n ) => void;\n\n // 分页\n pageIndex: number;\n pageSize: number;\n pageCount: number;\n onPageChange: (page: number) => void;\n onPageSizeChange: (size: number) => void;\n\n // 选择\n selectedRows: RowSelectionState;\n onRowSelectionChange: (selection: RowSelectionState) => void;\n /** 当前选中的数据行(便捷字段) */\n selectedData: T[];\n\n /**\n * 合并好的 props,可直接展开到 <DataTable>\n * @example <DataTable columns={columns} {...tableProps} />\n */\n tableProps: {\n data: T[];\n sortingState: SortingState;\n onSortingChange: (sorting: SortingState) => void;\n columnFilters: ColumnFiltersState;\n onColumnFiltersChange: (\n filters: ColumnFiltersState | ((prev: ColumnFiltersState) => ColumnFiltersState)\n ) => void;\n pageIndex: number;\n pageSize: number;\n onPageChange: (page: number) => void;\n onPageSizeChange: (size: number) => void;\n selectedRows: RowSelectionState;\n onRowSelectionChange: (selection: RowSelectionState) => void;\n getRowId?: (row: T, index: number) => string;\n enableSorting: boolean;\n enableFiltering: boolean;\n enablePagination: boolean;\n enableSelection: boolean;\n };\n}\n\n/**\n * useTableData - 封装 DataTable 的数据状态管理\n *\n * 将排序、筛选、分页、选择等状态统一管理,\n * 返回的 `tableProps` 可以直接展开到 `<DataTable>` 上。\n *\n * @example\n * ```tsx\n * const { tableProps, selectedData } = useTableData({\n * data: orders,\n * initialSort: [{ id: 'orderDate', desc: true }],\n * initialPageSize: 5,\n * });\n *\n * <DataTable columns={columns} {...tableProps} />\n * ```\n */\nexport function useTableData<T extends object>(\n options: UseTableDataOptions<T>\n): UseTableDataReturn<T> {\n const {\n data,\n initialSort = [],\n initialFilters = [],\n initialPageSize = 10,\n filterFn,\n getRowId,\n } = options;\n\n // ─── 排序 ───\n const [sorting, setSorting] = useState<SortingState>(initialSort);\n\n // ─── 筛选 ───\n const [columnFilters, setColumnFiltersRaw] = useState<ColumnFiltersState>(initialFilters);\n\n // ─── 分页 ───\n const [pageIndex, setPageIndex] = useState(0);\n const [pageSize, setPageSize] = useState(initialPageSize);\n\n // ─── 选择 ───\n const [selectedRows, setSelectedRows] = useState<RowSelectionState>({});\n\n // ─── 当筛选变化时重置到第一页 ───\n const onColumnFiltersChange = useCallback(\n (updater: ColumnFiltersState | ((prev: ColumnFiltersState) => ColumnFiltersState)) => {\n setPageIndex(0);\n setColumnFiltersRaw(updater);\n },\n []\n );\n\n // ─── 分页回调 ───\n const onPageChange = useCallback((page: number) => {\n setPageIndex(page);\n }, []);\n\n const onPageSizeChange = useCallback((size: number) => {\n setPageSize(size);\n setPageIndex(0);\n }, []);\n\n // ─── 客户端过滤(仅当提供了 filterFn 时) ───\n const tableData = useMemo(() => {\n if (!filterFn || columnFilters.length === 0) {\n return data;\n }\n return data.filter((item) => filterFn(item, columnFilters));\n }, [data, columnFilters, filterFn]);\n\n // ─── 页数 ───\n const pageCount = useMemo(\n () => Math.ceil(tableData.length / pageSize),\n [tableData.length, pageSize]\n );\n\n // ─── 选中数据便捷字段 ───\n const selectedData = useMemo(() => {\n if (!getRowId) {\n // 用索引作为 key\n return Object.keys(selectedRows)\n .filter((k) => selectedRows[k])\n .map((k) => tableData[Number(k)])\n .filter(Boolean);\n }\n return tableData.filter((item, idx) => {\n const id = getRowId(item, idx);\n return selectedRows[id];\n });\n }, [selectedRows, tableData, getRowId]);\n\n // ─── 合并 props ───\n const tableProps = useMemo(\n () => ({\n data: tableData,\n sortingState: sorting,\n onSortingChange: setSorting,\n columnFilters,\n onColumnFiltersChange,\n pageIndex,\n pageSize,\n onPageChange,\n onPageSizeChange,\n selectedRows,\n onRowSelectionChange: setSelectedRows,\n ...(getRowId ? { getRowId } : {}),\n enableSorting: true,\n enableFiltering: true,\n enablePagination: true,\n enableSelection: true,\n }),\n [\n tableData,\n sorting,\n columnFilters,\n onColumnFiltersChange,\n pageIndex,\n pageSize,\n onPageChange,\n onPageSizeChange,\n selectedRows,\n getRowId,\n ]\n );\n\n return {\n tableData,\n sorting,\n onSortingChange: setSorting,\n columnFilters,\n onColumnFiltersChange,\n pageIndex,\n pageSize,\n pageCount,\n onPageChange,\n onPageSizeChange,\n selectedRows,\n onRowSelectionChange: setSelectedRows,\n selectedData,\n tableProps,\n };\n}\n\nexport default useTableData;\n"],"mappings":";AAmGA,SAAgB,EACZ,GACqB;AACrB,QAAM,EACF,MAAA,GACA,aAAA,IAAc,CAAC,GACf,gBAAA,IAAiB,CAAC,GAClB,iBAAA,IAAkB,IAClB,UAAA,GACA,UAAA,EAAA,IACA,GAGE,CAAC,GAAS,CAAA,IAAc,EAAuB,CAAW,GAG1D,CAAC,GAAe,CAAA,IAAuB,EAA6B,CAAc,GAGlF,CAAC,GAAW,CAAA,IAAgB,EAAS,CAAC,GACtC,CAAC,GAAU,CAAA,IAAe,EAAS,CAAe,GAGlD,CAAC,GAAc,CAAA,IAAmB,EAA4B,CAAC,CAAC,GAGhE,IAAwB,EAAA,CACzB,MAAqF;AAClF,IAAA,EAAa,CAAC,GACd,EAAoB,CAAO;AAAA,EAC/B,GACA,CAAC,CACL,GAGM,IAAe,EAAA,CAAa,MAAiB;AAC/C,IAAA,EAAa,CAAI;AAAA,EACrB,GAAG,CAAC,CAAC,GAEC,IAAmB,EAAA,CAAa,MAAiB;AACnD,IAAA,EAAY,CAAI,GAChB,EAAa,CAAC;AAAA,EAClB,GAAG,CAAC,CAAC,GAGC,IAAY,EAAA,MACV,CAAC,KAAY,EAAc,WAAW,IAC/B,IAEJ,EAAK,OAAA,CAAQ,MAAS,EAAS,GAAM,CAAa,CAAC,GAC3D;AAAA,IAAC;AAAA,IAAM;AAAA,IAAe;AAAA,EAAQ,CAAC;AAyDlC,SAAO;AAAA,IACH,WAAA;AAAA,IACA,SAAA;AAAA,IACA,iBAAiB;AAAA,IACjB,eAAA;AAAA,IACA,uBAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,WA9Dc,EAAA,MACR,KAAK,KAAK,EAAU,SAAS,CAAQ,GAC3C,CAAC,EAAU,QAAQ,CAAQ,CA4D3B;AAAA,IACA,cAAA;AAAA,IACA,kBAAA;AAAA,IACA,cAAA;AAAA,IACA,sBAAsB;AAAA,IACtB,cA7DiB,EAAA,MACZ,IAOE,EAAU,OAAA,CAAQ,GAAM,MAAQ;AACnC,YAAM,IAAK,EAAS,GAAM,CAAG;AAC7B,aAAO,EAAa,CAAA;AAAA,IACxB,CAAC,IARU,OAAO,KAAK,CAAY,EAC1B,OAAA,CAAQ,MAAM,EAAa,CAAA,CAAE,EAC7B,IAAA,CAAK,MAAM,EAAU,OAAO,CAAC,CAAA,CAAE,EAC/B,OAAO,OAAO,GAMxB;AAAA,MAAC;AAAA,MAAc;AAAA,MAAW;AAAA,IAAQ,CAiDjC;AAAA,IACA,YA/Ce,EAAA,OACR;AAAA,MACH,MAAM;AAAA,MACN,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,eAAA;AAAA,MACA,uBAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,kBAAA;AAAA,MACA,cAAA;AAAA,MACA,sBAAsB;AAAA,MACtB,GAAI,IAAW,EAAE,UAAA,EAAS,IAAI,CAAC;AAAA,MAC/B,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,MAClB,iBAAiB;AAAA,IACrB,IACA;AAAA,MACI;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAiBA;AAAA,EACJ;AACJ"}
1
+ {"version":3,"file":"useTableData.js","names":[],"sources":["../../src/hooks/useTableData.ts"],"sourcesContent":["import { useState, useMemo, useCallback } from 'react';\nimport {\n ColumnFiltersState,\n SortingState,\n RowSelectionState,\n} from '../components/pro/DataTable/tanstack-table';\n\n/**\n * useTableData 配置项\n */\nexport interface UseTableDataOptions<T extends object> {\n /** 原始数据数组 */\n data: T[];\n /** 初始排序状态 */\n initialSort?: SortingState;\n /** 初始筛选状态 */\n initialFilters?: ColumnFiltersState;\n /** 初始每页行数,默认 10 */\n initialPageSize?: number;\n /** 自定义筛选函数(客户端过滤)。若不提供则将原始数据直接传给 DataTable 做内置过滤 */\n filterFn?: (item: T, filters: ColumnFiltersState) => boolean;\n /** 获取行 ID 的函数 */\n getRowId?: (row: T, index: number) => string;\n}\n\n/**\n * useTableData 返回值\n */\nexport interface UseTableDataReturn<T extends object> {\n // 数据\n /** 经过筛选后的数据(如果提供了 filterFn) */\n tableData: T[];\n\n // 排序\n sorting: SortingState;\n onSortingChange: (sorting: SortingState) => void;\n\n // 筛选\n columnFilters: ColumnFiltersState;\n onColumnFiltersChange: (\n filters: ColumnFiltersState | ((prev: ColumnFiltersState) => ColumnFiltersState)\n ) => void;\n\n // 分页\n pageIndex: number;\n pageSize: number;\n pageCount: number;\n onPageChange: (page: number) => void;\n onPageSizeChange: (size: number) => void;\n\n // 选择\n selectedRows: RowSelectionState;\n onRowSelectionChange: (selection: RowSelectionState) => void;\n /** 当前选中的数据行(便捷字段) */\n selectedData: T[];\n\n /**\n * 合并好的 props,可直接展开到 <DataTable>\n * @example <DataTable columns={columns} {...tableProps} />\n */\n tableProps: {\n data: T[];\n sortingState: SortingState;\n onSortingChange: (sorting: SortingState) => void;\n columnFilters: ColumnFiltersState;\n onColumnFiltersChange: (\n filters: ColumnFiltersState | ((prev: ColumnFiltersState) => ColumnFiltersState)\n ) => void;\n pageIndex: number;\n pageSize: number;\n onPageChange: (page: number) => void;\n onPageSizeChange: (size: number) => void;\n selectedRows: RowSelectionState;\n onRowSelectionChange: (selection: RowSelectionState) => void;\n getRowId?: (row: T, index: number) => string;\n enableSorting: boolean;\n enableFiltering: boolean;\n enablePagination: boolean;\n enableSelection: boolean;\n };\n}\n\n/**\n * useTableData - 封装 DataTable 的数据状态管理\n *\n * 将排序、筛选、分页、选择等状态统一管理,\n * 返回的 `tableProps` 可以直接展开到 `<DataTable>` 上。\n *\n * @example\n * ```tsx\n * const { tableProps, selectedData } = useTableData({\n * data: orders,\n * initialSort: [{ id: 'orderDate', desc: true }],\n * initialPageSize: 5,\n * });\n *\n * <DataTable columns={columns} {...tableProps} />\n * ```\n */\nexport function useTableData<T extends object>(\n options: UseTableDataOptions<T>\n): UseTableDataReturn<T> {\n const {\n data,\n initialSort = [],\n initialFilters = [],\n initialPageSize = 10,\n filterFn,\n getRowId,\n } = options;\n\n // ─── 排序 ───\n const [sorting, setSorting] = useState<SortingState>(initialSort);\n\n // ─── 筛选 ───\n const [columnFilters, setColumnFiltersRaw] = useState<ColumnFiltersState>(initialFilters);\n\n // ─── 分页 ───\n const [pageIndex, setPageIndex] = useState(0);\n const [pageSize, setPageSize] = useState(initialPageSize);\n\n // ─── 选择 ───\n const [selectedRows, setSelectedRows] = useState<RowSelectionState>({});\n\n // ─── 当筛选变化时重置到第一页 ───\n const onColumnFiltersChange = useCallback(\n (updater: ColumnFiltersState | ((prev: ColumnFiltersState) => ColumnFiltersState)) => {\n setPageIndex(0);\n setColumnFiltersRaw(updater);\n },\n []\n );\n\n // ─── 分页回调 ───\n const onPageChange = useCallback((page: number) => {\n setPageIndex(page);\n }, []);\n\n const onPageSizeChange = useCallback((size: number) => {\n setPageSize(size);\n setPageIndex(0);\n }, []);\n\n // ─── 客户端过滤(仅当提供了 filterFn 时) ───\n const tableData = useMemo(() => {\n if (!filterFn || columnFilters.length === 0) {\n return data;\n }\n return data.filter((item) => filterFn(item, columnFilters));\n }, [data, columnFilters, filterFn]);\n\n // ─── 页数 ───\n const pageCount = useMemo(\n () => Math.ceil(tableData.length / pageSize),\n [tableData.length, pageSize]\n );\n\n // ─── 选中数据便捷字段 ───\n const selectedData = useMemo(() => {\n if (!getRowId) {\n // 用索引作为 key\n return Object.keys(selectedRows)\n .filter((k) => selectedRows[k])\n .map((k) => tableData[Number(k)])\n .filter(Boolean);\n }\n return tableData.filter((item, idx) => {\n const id = getRowId(item, idx);\n return selectedRows[id];\n });\n }, [selectedRows, tableData, getRowId]);\n\n // ─── 合并 props ───\n const tableProps = useMemo(\n () => ({\n data: tableData,\n sortingState: sorting,\n onSortingChange: setSorting,\n columnFilters,\n onColumnFiltersChange,\n pageIndex,\n pageSize,\n onPageChange,\n onPageSizeChange,\n selectedRows,\n onRowSelectionChange: setSelectedRows,\n ...(getRowId ? { getRowId } : {}),\n enableSorting: true,\n enableFiltering: true,\n enablePagination: true,\n enableSelection: true,\n }),\n [\n tableData,\n sorting,\n columnFilters,\n onColumnFiltersChange,\n pageIndex,\n pageSize,\n onPageChange,\n onPageSizeChange,\n selectedRows,\n getRowId,\n ]\n );\n\n return {\n tableData,\n sorting,\n onSortingChange: setSorting,\n columnFilters,\n onColumnFiltersChange,\n pageIndex,\n pageSize,\n pageCount,\n onPageChange,\n onPageSizeChange,\n selectedRows,\n onRowSelectionChange: setSelectedRows,\n selectedData,\n tableProps,\n };\n}\n\nexport default useTableData;\n"],"mappings":";;AAmGA,SAAgB,EACZ,GACqB;CACrB,IAAM,EACF,SACA,iBAAc,CAAC,GACf,oBAAiB,CAAC,GAClB,qBAAkB,IAClB,aACA,gBACA,GAGE,CAAC,GAAS,KAAc,EAAuB,CAAW,GAG1D,CAAC,GAAe,KAAuB,EAA6B,CAAc,GAGlF,CAAC,GAAW,KAAgB,EAAS,CAAC,GACtC,CAAC,GAAU,KAAe,EAAS,CAAe,GAGlD,CAAC,GAAc,KAAmB,EAA4B,CAAC,CAAC,GAGhE,IAAwB,GACzB,MAAqF;EAElF,AADA,EAAa,CAAC,GACd,EAAoB,CAAO;CAC/B,GACA,CAAC,CACL,GAGM,IAAe,GAAa,MAAiB;EAC/C,EAAa,CAAI;CACrB,GAAG,CAAC,CAAC,GAEC,IAAmB,GAAa,MAAiB;EAEnD,AADA,EAAY,CAAI,GAChB,EAAa,CAAC;CAClB,GAAG,CAAC,CAAC,GAGC,IAAY,QACV,CAAC,KAAY,EAAc,WAAW,IAC/B,IAEJ,EAAK,QAAQ,MAAS,EAAS,GAAM,CAAa,CAAC,GAC3D;EAAC;EAAM;EAAe;CAAQ,CAAC;CAyDlC,OAAO;EACH;EACA;EACA,iBAAiB;EACjB;EACA;EACA;EACA;EACA,WA9Dc,QACR,KAAK,KAAK,EAAU,SAAS,CAAQ,GAC3C,CAAC,EAAU,QAAQ,CAAQ,CA4D3B;EACA;EACA;EACA;EACA,sBAAsB;EACtB,cA7DiB,QACZ,IAOE,EAAU,QAAQ,GAAM,MAAQ;GACnC,IAAM,IAAK,EAAS,GAAM,CAAG;GAC7B,OAAO,EAAa;EACxB,CAAC,IARU,OAAO,KAAK,CAAY,CAAC,CAC3B,QAAQ,MAAM,EAAa,EAAE,CAAC,CAC9B,KAAK,MAAM,EAAU,OAAO,CAAC,EAAE,CAAC,CAChC,OAAO,OAAO,GAMxB;GAAC;GAAc;GAAW;EAAQ,CAiDjC;EACA,YA/Ce,SACR;GACH,MAAM;GACN,cAAc;GACd,iBAAiB;GACjB;GACA;GACA;GACA;GACA;GACA;GACA;GACA,sBAAsB;GACtB,GAAI,IAAW,EAAE,YAAS,IAAI,CAAC;GAC/B,eAAe;GACf,iBAAiB;GACjB,kBAAkB;GAClB,iBAAiB;EACrB,IACA;GACI;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACJ,CAiBA;CACJ;AACJ"}
@@ -8,6 +8,12 @@ export { default as Label } from './components/Label';
8
8
  export type { LabelProps, LabelState, LabelStyleConfig } from './components/Label';
9
9
  export { default as Checkbox } from './components/Checkbox';
10
10
  export type { CheckboxProps } from './components/Checkbox';
11
+ export { default as Switch } from './components/Switch';
12
+ export type { SwitchProps } from './components/Switch';
13
+ export { default as Tooltip } from './components/Tooltip';
14
+ export type { TooltipProps } from './components/Tooltip';
15
+ export { default as Divider } from './components/Divider';
16
+ export type { DividerProps } from './components/Divider';
11
17
  export { default as Select } from './components/Select';
12
18
  export type { SelectProps, Option } from './components/Select';
13
19
  export { default as Card } from './components/Card';
@@ -49,6 +55,8 @@ export { default as ProtectedRoute } from './components/ProtectedRoute';
49
55
  export type { ProtectedRouteProps } from './components/ProtectedRoute';
50
56
  export type { MenuItem } from './types/menu';
51
57
  export type { Language, Translations } from './utils/i18n';
58
+ export { cn } from './utils/cn';
59
+ export type { ClassValue } from './utils/cn';
52
60
  export { getThemes } from './utils/themes';
53
61
  export type { ThemeConfig } from './utils/themes';
54
62
  export { buildRouter, createRouterFromConfig } from './utils/routerBuilder';
package/dist/index.d.ts CHANGED
@@ -8,12 +8,20 @@ export { default as Label } from './components/Label';
8
8
  export type { LabelProps, LabelState, LabelStyleConfig } from './components/Label';
9
9
  export { default as Checkbox } from './components/Checkbox';
10
10
  export type { CheckboxProps } from './components/Checkbox';
11
+ export { default as Switch } from './components/Switch';
12
+ export type { SwitchProps } from './components/Switch';
13
+ export { default as Tooltip } from './components/Tooltip';
14
+ export type { TooltipProps } from './components/Tooltip';
15
+ export { default as Divider } from './components/Divider';
16
+ export type { DividerProps } from './components/Divider';
11
17
  export { default as Select } from './components/Select';
12
18
  export type { SelectProps, Option } from './components/Select';
13
19
  export { default as Card } from './components/Card';
14
- export type { CardProps } from './components/Card';
20
+ export type { CardProps, CardFeatureProps, CardQuoteProps, CardMetaProps, } from './components/Card';
15
21
  export { default as PageHeader } from './components/PageHeader';
16
22
  export type { PageHeaderProps } from './components/PageHeader';
23
+ export { default as Page, PageBody, PageLeft, PageRight, PageMain } from './components/Page';
24
+ export type { PageProps, PageBodyProps, PageAsideProps, PageMainProps } from './components/Page';
17
25
  export { default as StatCard } from './components/StatCard';
18
26
  export type { StatCardProps } from './components/StatCard';
19
27
  export { default as EmptyState } from './components/EmptyState';
@@ -26,6 +34,24 @@ export { default as Layout, Container, Grid, GridItem, Flex, Group, Space } from
26
34
  export type { LayoutCompound, LayoutContainerProps, LayoutGridProps, LayoutGridItemProps, LayoutFlexProps, LayoutGroupProps, LayoutSpaceProps, LayoutGap, LayoutMaxWidth, LayoutAlign, LayoutJustify, GridColumns, GridPlacement, } from './components/Layout';
27
35
  export { default as List } from './components/List';
28
36
  export type { ListProps } from './components/List';
37
+ export { default as Row } from './components/Row';
38
+ export type { RowProps, RowAlign, RowJustify } from './components/Row';
39
+ export { default as Column } from './components/Column';
40
+ export type { ColumnProps, ColumnAlign, ColumnJustify } from './components/Column';
41
+ export { default as Text } from './components/Text';
42
+ export type { TextProps, TextElement, TextSize, TextWeight, TextColor, TextAlign, } from './components/Text';
43
+ export { default as Image } from './components/Image';
44
+ export type { ImageProps, ImageFit, ImageRadius } from './components/Image';
45
+ export { default as Icon } from './components/Icon';
46
+ export type { IconProps } from './components/Icon';
47
+ export { default as Slider } from './components/Slider';
48
+ export type { SliderProps, SliderVariant, SliderSize } from './components/Slider';
49
+ export { default as DateTimeInput } from './components/DateTimeInput';
50
+ export type { DateTimeInputProps, DateTimeType, DateTimeVariant, DateTimeSize, } from './components/DateTimeInput';
51
+ export { default as MultipleChoice } from './components/MultipleChoice';
52
+ export type { MultipleChoiceProps, MultipleChoiceOption, MultipleChoiceVariant, } from './components/MultipleChoice';
53
+ export { default as ChoicePicker } from './components/ChoicePicker';
54
+ export type { ChoicePickerProps, ChoicePickerOption, ChoicePickerVariant, } from './components/ChoicePicker';
29
55
  export { default as Table } from './components/Table';
30
56
  export type { TableProps } from './components/Table';
31
57
  export { Tree } from './components/Tree';
@@ -59,6 +85,8 @@ export { default as ProtectedRoute } from './components/ProtectedRoute';
59
85
  export type { ProtectedRouteProps } from './components/ProtectedRoute';
60
86
  export type { MenuItem } from './types/menu';
61
87
  export type { Language, Translations } from './utils/i18n';
88
+ export { cn } from './utils/cn';
89
+ export type { ClassValue } from './utils/cn';
62
90
  export { getThemes } from './utils/themes';
63
91
  export type { ThemeConfig } from './utils/themes';
64
92
  export { buildRouter, createRouterFromConfig } from './utils/routerBuilder';