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,97 +1,97 @@
1
- import { PivotView as T } from "./PivotView.js";
2
- import { PivotPanel as j } from "./PivotPanel.js";
3
- import { useMemo as s, useState as a } from "react";
4
- import { jsx as o, jsxs as c } from "react/jsx-runtime";
5
- var y = {
6
- zh: { pivotMode: "透视模式" },
7
- en: { pivotMode: "Pivot Mode" }
1
+ import { PivotView as e } from "./PivotView.js";
2
+ import { PivotPanel as t } from "./PivotPanel.js";
3
+ import { useMemo as n, useState as r } from "react";
4
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
5
+ //#region src/components/pro/DataTable/pivotExtension.tsx
6
+ var o = {
7
+ zh: { pivotMode: "透视模式" },
8
+ en: { pivotMode: "Pivot Mode" }
8
9
  };
9
- function X(N) {
10
- const { fields: l, initialRowFields: b = [], initialColFields: M = [], initialValues: P = [], initialActive: z = !1, treeView: v = !0, lang: r = "zh", panelPlacement: i = "top", panelWidth: h = 224, hideModeToggle: g = !1 } = N, [n, C] = a(z), [d, V] = a(b), [m, k] = a(M), [f, R] = a(P), x = y[r], p = s(() => {
11
- const e = {};
12
- for (const t of l) e[t.field] = t.label ?? t.field;
13
- return e;
14
- }, [l]), w = s(() => l.filter((e) => !e.numeric), [l]), F = s(() => l.filter((e) => e.numeric), [l]);
15
- return s(() => {
16
- const e = (t) => /* @__PURE__ */ o(j, {
17
- orientation: t,
18
- lang: r,
19
- fieldLabels: p,
20
- dimensionFields: w,
21
- numericFields: F,
22
- rowFields: d,
23
- colFields: m,
24
- values: f,
25
- setRowFields: V,
26
- setColFields: k,
27
- setValues: R,
28
- panelWidth: h
29
- });
30
- return {
31
- name: "pivot",
32
- toolbar: () => g ? !n || i !== "top" ? null : e("horizontal") : /* @__PURE__ */ c("div", {
33
- className: "w-full flex flex-col gap-2",
34
- children: [/* @__PURE__ */ c("label", {
35
- className: "flex items-center gap-2 cursor-pointer w-fit",
36
- children: [/* @__PURE__ */ o("input", {
37
- type: "checkbox",
38
- className: "toggle toggle-sm toggle-primary",
39
- checked: n,
40
- onChange: (t) => C(t.target.checked)
41
- }), /* @__PURE__ */ o("span", {
42
- className: "text-sm font-medium",
43
- children: x.pivotMode
44
- })]
45
- }), n && i === "top" && e("horizontal")]
46
- }),
47
- renderContent: (t) => {
48
- if (!n) return;
49
- const u = /* @__PURE__ */ o(T, {
50
- data: t.data,
51
- rowFields: d,
52
- colFields: m,
53
- values: f,
54
- fieldLabels: p,
55
- lang: r,
56
- treeView: v
57
- });
58
- return i === "top" ? u : i === "bottom" ? /* @__PURE__ */ c("div", {
59
- className: "flex flex-col gap-3",
60
- children: [/* @__PURE__ */ o("div", {
61
- className: "flex-1 min-w-0",
62
- children: u
63
- }), e("horizontal")]
64
- }) : /* @__PURE__ */ c("div", {
65
- className: "flex gap-3 items-stretch",
66
- children: [
67
- i === "left" && e("vertical"),
68
- /* @__PURE__ */ o("div", {
69
- className: "flex-1 min-w-0",
70
- children: u
71
- }),
72
- i === "right" && e("vertical")
73
- ]
74
- });
75
- }
76
- };
77
- }, [
78
- n,
79
- d,
80
- m,
81
- f,
82
- p,
83
- w,
84
- F,
85
- v,
86
- r,
87
- i,
88
- h,
89
- g,
90
- x
91
- ]);
10
+ function s(s) {
11
+ let { fields: c, initialRowFields: l = [], initialColFields: u = [], initialValues: d = [], initialActive: f = !1, treeView: p = !0, lang: m = "zh", panelPlacement: h = "top", panelWidth: g = 224, hideModeToggle: _ = !1 } = s, [v, y] = r(f), [b, x] = r(l), [S, C] = r(u), [w, T] = r(d), E = o[m], D = n(() => {
12
+ let e = {};
13
+ for (let t of c) e[t.field] = t.label ?? t.field;
14
+ return e;
15
+ }, [c]), O = n(() => c.filter((e) => !e.numeric), [c]), k = n(() => c.filter((e) => e.numeric), [c]);
16
+ return n(() => {
17
+ let n = (e) => /* @__PURE__ */ i(t, {
18
+ orientation: e,
19
+ lang: m,
20
+ fieldLabels: D,
21
+ dimensionFields: O,
22
+ numericFields: k,
23
+ rowFields: b,
24
+ colFields: S,
25
+ values: w,
26
+ setRowFields: x,
27
+ setColFields: C,
28
+ setValues: T,
29
+ panelWidth: g
30
+ });
31
+ return {
32
+ name: "pivot",
33
+ toolbar: () => _ ? !v || h !== "top" ? null : n("horizontal") : /* @__PURE__ */ a("div", {
34
+ className: "w-full flex flex-col gap-2",
35
+ children: [/* @__PURE__ */ a("label", {
36
+ className: "flex items-center gap-2 cursor-pointer w-fit",
37
+ children: [/* @__PURE__ */ i("input", {
38
+ type: "checkbox",
39
+ className: "toggle toggle-sm toggle-primary",
40
+ checked: v,
41
+ onChange: (e) => y(e.target.checked)
42
+ }), /* @__PURE__ */ i("span", {
43
+ className: "text-sm font-medium",
44
+ children: E.pivotMode
45
+ })]
46
+ }), v && h === "top" && n("horizontal")]
47
+ }),
48
+ renderContent: (t) => {
49
+ if (!v) return;
50
+ let r = /* @__PURE__ */ i(e, {
51
+ data: t.data,
52
+ rowFields: b,
53
+ colFields: S,
54
+ values: w,
55
+ fieldLabels: D,
56
+ lang: m,
57
+ treeView: p
58
+ });
59
+ return h === "top" ? r : h === "bottom" ? /* @__PURE__ */ a("div", {
60
+ className: "flex flex-col gap-3",
61
+ children: [/* @__PURE__ */ i("div", {
62
+ className: "flex-1 min-w-0",
63
+ children: r
64
+ }), n("horizontal")]
65
+ }) : /* @__PURE__ */ a("div", {
66
+ className: "flex gap-3 items-stretch",
67
+ children: [
68
+ h === "left" && n("vertical"),
69
+ /* @__PURE__ */ i("div", {
70
+ className: "flex-1 min-w-0",
71
+ children: r
72
+ }),
73
+ h === "right" && n("vertical")
74
+ ]
75
+ });
76
+ }
77
+ };
78
+ }, [
79
+ v,
80
+ b,
81
+ S,
82
+ w,
83
+ D,
84
+ O,
85
+ k,
86
+ p,
87
+ m,
88
+ h,
89
+ g,
90
+ _,
91
+ E
92
+ ]);
92
93
  }
93
- export {
94
- X as usePivotExtension
95
- };
94
+ //#endregion
95
+ export { s as usePivotExtension };
96
96
 
97
97
  //# sourceMappingURL=pivotExtension.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pivotExtension.js","names":[],"sources":["../../../../src/components/pro/DataTable/pivotExtension.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport {\n PivotView,\n type PivotValue,\n type PivotFieldLabels,\n} from './PivotView';\nimport { PivotPanel } from './PivotPanel';\nimport type { DataTableExtension } from './extension';\n\n/** 可参与透视的字段描述。 */\nexport interface PivotField {\n /** 字段 key(对应数据对象的属性名)。 */\n field: string;\n /** 展示标签。 */\n label?: string;\n /** 是否为可聚合的数值字段。默认 false(维度字段)。 */\n numeric?: boolean;\n}\n\n/** 配置面板的排布位置。 */\nexport type PivotPanelPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nexport interface PivotExtensionOptions {\n /** 可用于透视的字段列表。 */\n fields: PivotField[];\n /** 初始行分组字段。 */\n initialRowFields?: string[];\n /** 初始列分组字段。 */\n initialColFields?: string[];\n /** 初始数值度量。 */\n initialValues?: PivotValue[];\n /** 初始是否启用透视模式。默认 false。 */\n initialActive?: boolean;\n /** 是否以树形(可展开分组)展示多级行分组。默认 true。 */\n treeView?: boolean;\n /** 语言。默认 'zh'。 */\n lang?: 'zh' | 'en';\n /**\n * 配置面板的排布位置:\n * - `'top'`(默认)水平排布在工具栏下方;\n * - `'bottom'` 水平排布在透视表格下方;\n * - `'left'` / `'right'` 纵向排布在透视表格的左/右侧。\n */\n panelPlacement?: PivotPanelPlacement;\n /**\n * 垂直(`'left'`/`'right'`)面板的宽度。数字视为 px,字符串直接\n * 作为 CSS 宽度(如 `'20%'` / `'16rem'`)。仅对左/右侧纵向面板生效,\n * 默认 224px。\n */\n panelWidth?: number | string;\n /**\n * 隐藏工具栏中的「透视模式」开关。默认 false。\n * 适用于由外部(如宿主 Inspector)控制透视开关的场景:此时模式仅能通过\n * `initialActive` 设定,工具栏不再渲染开关;未激活时不占用任何工具栏空间。\n */\n hideModeToggle?: boolean;\n}\n\nconst TEXT = {\n zh: { pivotMode: '透视模式' },\n en: { pivotMode: 'Pivot Mode' },\n} as const;\n\n/**\n * 透视(Pivot)扩展。\n *\n * 使用方式(在组件内调用该 hook,因为它持有 React 状态):\n * ```tsx\n * const pivot = usePivotExtension<Row>({\n * fields: [\n * { field: 'region', label: '地区' },\n * { field: 'category', label: '品类' },\n * { field: 'amount', label: '金额', numeric: true },\n * ],\n * initialRowFields: ['region'],\n * initialValues: [{ field: 'amount', aggFn: 'sum' }],\n * panelPlacement: 'left', // 面板纵向排布在左侧\n * });\n * <DataTable data={data} columns={columns} extensions={[pivot]} />\n * ```\n *\n * 扩展会:\n * - 在工具栏放一个「透视模式」开关;\n * - 开启后通过 `renderContent` 接管表格主体,渲染 ag-grid 风格的交叉表 +\n * 可拖拽配置面板(支持顶部水平 / 左右纵向排布,拖拽时带跟随光标的拖拽引用)。\n */\nexport function usePivotExtension<T extends object>(\n options: PivotExtensionOptions,\n): DataTableExtension<T> {\n const {\n fields,\n initialRowFields = [],\n initialColFields = [],\n initialValues = [],\n initialActive = false,\n treeView = true,\n lang = 'zh',\n panelPlacement = 'top',\n panelWidth = 224,\n hideModeToggle = false,\n } = options;\n\n const [active, setActive] = useState(initialActive);\n const [rowFields, setRowFields] = useState<string[]>(initialRowFields);\n const [colFields, setColFields] = useState<string[]>(initialColFields);\n const [values, setValues] = useState<PivotValue[]>(initialValues);\n\n const t = TEXT[lang];\n\n const fieldLabels: PivotFieldLabels = useMemo(() => {\n const map: PivotFieldLabels = {};\n for (const f of fields) map[f.field] = f.label ?? f.field;\n return map;\n }, [fields]);\n\n const dimensionFields = useMemo(\n () => fields.filter((f) => !f.numeric),\n [fields],\n );\n const numericFields = useMemo(\n () => fields.filter((f) => f.numeric),\n [fields],\n );\n\n return useMemo<DataTableExtension<T>>(() => {\n const panel = (orientation: 'horizontal' | 'vertical') => (\n <PivotPanel\n orientation={orientation}\n lang={lang}\n fieldLabels={fieldLabels}\n dimensionFields={dimensionFields}\n numericFields={numericFields}\n rowFields={rowFields}\n colFields={colFields}\n values={values}\n setRowFields={setRowFields}\n setColFields={setColFields}\n setValues={setValues}\n panelWidth={panelWidth}\n />\n );\n\n return {\n name: 'pivot',\n toolbar: () => {\n // 隐藏开关时:未激活不渲染任何内容(不占空间);激活且面板在顶部\n // 时仅渲染面板本身。\n if (hideModeToggle) {\n if (!active || panelPlacement !== 'top') return null;\n return panel('horizontal');\n }\n return (\n <div className=\"w-full flex flex-col gap-2\">\n <label className=\"flex items-center gap-2 cursor-pointer w-fit\">\n <input\n type=\"checkbox\"\n className=\"toggle toggle-sm toggle-primary\"\n checked={active}\n onChange={(e) => setActive(e.target.checked)}\n />\n <span className=\"text-sm font-medium\">{t.pivotMode}</span>\n </label>\n {/* 顶部(水平)面板放在工具栏内。 */}\n {active && panelPlacement === 'top' && panel('horizontal')}\n </div>\n );\n },\n renderContent: (api) => {\n if (!active) return undefined;\n const content = (\n <PivotView<T>\n data={api.data}\n rowFields={rowFields}\n colFields={colFields}\n values={values}\n fieldLabels={fieldLabels}\n lang={lang}\n treeView={treeView}\n />\n );\n // 顶部面板已在工具栏内渲染,这里只渲染表格主体。\n if (panelPlacement === 'top') return content;\n // 底部面板:水平排布在透视表格下方。\n if (panelPlacement === 'bottom') {\n return (\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex-1 min-w-0\">{content}</div>\n {panel('horizontal')}\n </div>\n );\n }\n // 左/右侧纵向面板:与透视表格并排,默认与表格同高。\n return (\n <div className=\"flex gap-3 items-stretch\">\n {panelPlacement === 'left' && panel('vertical')}\n <div className=\"flex-1 min-w-0\">{content}</div>\n {panelPlacement === 'right' && panel('vertical')}\n </div>\n );\n },\n };\n }, [\n active,\n rowFields,\n colFields,\n values,\n fieldLabels,\n dimensionFields,\n numericFields,\n treeView,\n lang,\n panelPlacement,\n panelWidth,\n hideModeToggle,\n t,\n ]);\n}\n"],"mappings":";;;;AA0DA,IAAM,IAAO;AAAA,EACT,IAAI,EAAE,WAAW,OAAO;AAAA,EACxB,IAAI,EAAE,WAAW,aAAa;AAClC;AAyBA,SAAgB,EACZ,GACqB;AACrB,QAAM,EACF,QAAA,GACA,kBAAA,IAAmB,CAAC,GACpB,kBAAA,IAAmB,CAAC,GACpB,eAAA,IAAgB,CAAC,GACjB,eAAA,IAAgB,IAChB,UAAA,IAAW,IACX,MAAA,IAAO,MACP,gBAAA,IAAiB,OACjB,YAAA,IAAa,KACb,gBAAA,IAAiB,GAAA,IACjB,GAEE,CAAC,GAAQ,CAAA,IAAa,EAAS,CAAa,GAC5C,CAAC,GAAW,CAAA,IAAgB,EAAmB,CAAgB,GAC/D,CAAC,GAAW,CAAA,IAAgB,EAAmB,CAAgB,GAC/D,CAAC,GAAQ,CAAA,IAAa,EAAuB,CAAa,GAE1D,IAAI,EAAK,CAAA,GAET,IAAgC,EAAA,MAAc;AAChD,UAAM,IAAwB,CAAC;AAC/B,eAAW,KAAK,EAAQ,CAAA,EAAI,EAAE,KAAA,IAAS,EAAE,SAAS,EAAE;AACpD,WAAO;AAAA,EACX,GAAG,CAAC,CAAM,CAAC,GAEL,IAAkB,EAAA,MACd,EAAO,OAAA,CAAQ,MAAM,CAAC,EAAE,OAAO,GACrC,CAAC,CAAM,CACX,GACM,IAAgB,EAAA,MACZ,EAAO,OAAA,CAAQ,MAAM,EAAE,OAAO,GACpC,CAAC,CAAM,CACX;AAEA,SAAO,EAAA,MAAqC;AACxC,UAAM,IAAA,CAAS,MACX,gBAAA,EAAC,GAAD;AAAA,MACiB,aAAA;AAAA,MACP,MAAA;AAAA,MACO,aAAA;AAAA,MACI,iBAAA;AAAA,MACF,eAAA;AAAA,MACJ,WAAA;AAAA,MACA,WAAA;AAAA,MACH,QAAA;AAAA,MACM,cAAA;AAAA,MACA,cAAA;AAAA,MACH,WAAA;AAAA,MACC,YAAA;AAAA,IACf,CAAA;AAGL,WAAO;AAAA,MACH,MAAM;AAAA,MACN,SAAA,MAGQ,IACI,CAAC,KAAU,MAAmB,QAAc,OACzC,EAAM,YAAY,IAGzB,gBAAA,EAAC,OAAD;AAAA,QAAK,WAAU;AAAA,QAAf,UAAA,CACI,gBAAA,EAAC,SAAD;AAAA,UAAO,WAAU;AAAA,UAAjB,UAAA,CACI,gBAAA,EAAC,SAAD;AAAA,YACI,MAAK;AAAA,YACL,WAAU;AAAA,YACV,SAAS;AAAA,YACT,UAAA,CAAW,MAAM,EAAU,EAAE,OAAO,OAAO;AAAA,UAC9C,CAAA,GACD,gBAAA,EAAC,QAAD;AAAA,YAAM,WAAU;AAAA,YAAuB,UAAA,EAAE;AAAA,UAAgB,CAAA,CACtD;AAAA,QAEN,CAAA,GAAA,KAAU,MAAmB,SAAS,EAAM,YAAY,CACxD;AAAA;MAGb,eAAA,CAAgB,MAAQ;AACpB,YAAI,CAAC,EAAQ;AACb,cAAM,IACF,gBAAA,EAAC,GAAD;AAAA,UACI,MAAM,EAAI;AAAA,UACC,WAAA;AAAA,UACA,WAAA;AAAA,UACH,QAAA;AAAA,UACK,aAAA;AAAA,UACP,MAAA;AAAA,UACI,UAAA;AAAA,QACb,CAAA;AAGL,eAAI,MAAmB,QAAc,IAEjC,MAAmB,WAEf,gBAAA,EAAC,OAAD;AAAA,UAAK,WAAU;AAAA,UAAf,UAAA,CACI,gBAAA,EAAC,OAAD;AAAA,YAAK,WAAU;AAAA,YAAkB,UAAA;AAAA,UAAa,CAAA,GAC7C,EAAM,YAAY,CAClB;AAAA,aAKT,gBAAA,EAAC,OAAD;AAAA,UAAK,WAAU;AAAA,UAAf,UAAA;AAAA,YACK,MAAmB,UAAU,EAAM,UAAU;AAAA,YAC9C,gBAAA,EAAC,OAAD;AAAA,cAAK,WAAU;AAAA,cAAkB,UAAA;AAAA,YAAa,CAAA;AAAA,YAC7C,MAAmB,WAAW,EAAM,UAAU;AAAA,UAC9C;AAAA;MAEb;AAAA,IACJ;AAAA,EACJ,GAAG;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AACL"}
1
+ {"version":3,"file":"pivotExtension.js","names":[],"sources":["../../../../src/components/pro/DataTable/pivotExtension.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport {\n PivotView,\n type PivotValue,\n type PivotFieldLabels,\n} from './PivotView';\nimport { PivotPanel } from './PivotPanel';\nimport type { DataTableExtension } from './extension';\n\n/** 可参与透视的字段描述。 */\nexport interface PivotField {\n /** 字段 key(对应数据对象的属性名)。 */\n field: string;\n /** 展示标签。 */\n label?: string;\n /** 是否为可聚合的数值字段。默认 false(维度字段)。 */\n numeric?: boolean;\n}\n\n/** 配置面板的排布位置。 */\nexport type PivotPanelPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nexport interface PivotExtensionOptions {\n /** 可用于透视的字段列表。 */\n fields: PivotField[];\n /** 初始行分组字段。 */\n initialRowFields?: string[];\n /** 初始列分组字段。 */\n initialColFields?: string[];\n /** 初始数值度量。 */\n initialValues?: PivotValue[];\n /** 初始是否启用透视模式。默认 false。 */\n initialActive?: boolean;\n /** 是否以树形(可展开分组)展示多级行分组。默认 true。 */\n treeView?: boolean;\n /** 语言。默认 'zh'。 */\n lang?: 'zh' | 'en';\n /**\n * 配置面板的排布位置:\n * - `'top'`(默认)水平排布在工具栏下方;\n * - `'bottom'` 水平排布在透视表格下方;\n * - `'left'` / `'right'` 纵向排布在透视表格的左/右侧。\n */\n panelPlacement?: PivotPanelPlacement;\n /**\n * 垂直(`'left'`/`'right'`)面板的宽度。数字视为 px,字符串直接\n * 作为 CSS 宽度(如 `'20%'` / `'16rem'`)。仅对左/右侧纵向面板生效,\n * 默认 224px。\n */\n panelWidth?: number | string;\n /**\n * 隐藏工具栏中的「透视模式」开关。默认 false。\n * 适用于由外部(如宿主 Inspector)控制透视开关的场景:此时模式仅能通过\n * `initialActive` 设定,工具栏不再渲染开关;未激活时不占用任何工具栏空间。\n */\n hideModeToggle?: boolean;\n}\n\nconst TEXT = {\n zh: { pivotMode: '透视模式' },\n en: { pivotMode: 'Pivot Mode' },\n} as const;\n\n/**\n * 透视(Pivot)扩展。\n *\n * 使用方式(在组件内调用该 hook,因为它持有 React 状态):\n * ```tsx\n * const pivot = usePivotExtension<Row>({\n * fields: [\n * { field: 'region', label: '地区' },\n * { field: 'category', label: '品类' },\n * { field: 'amount', label: '金额', numeric: true },\n * ],\n * initialRowFields: ['region'],\n * initialValues: [{ field: 'amount', aggFn: 'sum' }],\n * panelPlacement: 'left', // 面板纵向排布在左侧\n * });\n * <DataTable data={data} columns={columns} extensions={[pivot]} />\n * ```\n *\n * 扩展会:\n * - 在工具栏放一个「透视模式」开关;\n * - 开启后通过 `renderContent` 接管表格主体,渲染 ag-grid 风格的交叉表 +\n * 可拖拽配置面板(支持顶部水平 / 左右纵向排布,拖拽时带跟随光标的拖拽引用)。\n */\nexport function usePivotExtension<T extends object>(\n options: PivotExtensionOptions,\n): DataTableExtension<T> {\n const {\n fields,\n initialRowFields = [],\n initialColFields = [],\n initialValues = [],\n initialActive = false,\n treeView = true,\n lang = 'zh',\n panelPlacement = 'top',\n panelWidth = 224,\n hideModeToggle = false,\n } = options;\n\n const [active, setActive] = useState(initialActive);\n const [rowFields, setRowFields] = useState<string[]>(initialRowFields);\n const [colFields, setColFields] = useState<string[]>(initialColFields);\n const [values, setValues] = useState<PivotValue[]>(initialValues);\n\n const t = TEXT[lang];\n\n const fieldLabels: PivotFieldLabels = useMemo(() => {\n const map: PivotFieldLabels = {};\n for (const f of fields) map[f.field] = f.label ?? f.field;\n return map;\n }, [fields]);\n\n const dimensionFields = useMemo(\n () => fields.filter((f) => !f.numeric),\n [fields],\n );\n const numericFields = useMemo(\n () => fields.filter((f) => f.numeric),\n [fields],\n );\n\n return useMemo<DataTableExtension<T>>(() => {\n const panel = (orientation: 'horizontal' | 'vertical') => (\n <PivotPanel\n orientation={orientation}\n lang={lang}\n fieldLabels={fieldLabels}\n dimensionFields={dimensionFields}\n numericFields={numericFields}\n rowFields={rowFields}\n colFields={colFields}\n values={values}\n setRowFields={setRowFields}\n setColFields={setColFields}\n setValues={setValues}\n panelWidth={panelWidth}\n />\n );\n\n return {\n name: 'pivot',\n toolbar: () => {\n // 隐藏开关时:未激活不渲染任何内容(不占空间);激活且面板在顶部\n // 时仅渲染面板本身。\n if (hideModeToggle) {\n if (!active || panelPlacement !== 'top') return null;\n return panel('horizontal');\n }\n return (\n <div className=\"w-full flex flex-col gap-2\">\n <label className=\"flex items-center gap-2 cursor-pointer w-fit\">\n <input\n type=\"checkbox\"\n className=\"toggle toggle-sm toggle-primary\"\n checked={active}\n onChange={(e) => setActive(e.target.checked)}\n />\n <span className=\"text-sm font-medium\">{t.pivotMode}</span>\n </label>\n {/* 顶部(水平)面板放在工具栏内。 */}\n {active && panelPlacement === 'top' && panel('horizontal')}\n </div>\n );\n },\n renderContent: (api) => {\n if (!active) return undefined;\n const content = (\n <PivotView<T>\n data={api.data}\n rowFields={rowFields}\n colFields={colFields}\n values={values}\n fieldLabels={fieldLabels}\n lang={lang}\n treeView={treeView}\n />\n );\n // 顶部面板已在工具栏内渲染,这里只渲染表格主体。\n if (panelPlacement === 'top') return content;\n // 底部面板:水平排布在透视表格下方。\n if (panelPlacement === 'bottom') {\n return (\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex-1 min-w-0\">{content}</div>\n {panel('horizontal')}\n </div>\n );\n }\n // 左/右侧纵向面板:与透视表格并排,默认与表格同高。\n return (\n <div className=\"flex gap-3 items-stretch\">\n {panelPlacement === 'left' && panel('vertical')}\n <div className=\"flex-1 min-w-0\">{content}</div>\n {panelPlacement === 'right' && panel('vertical')}\n </div>\n );\n },\n };\n }, [\n active,\n rowFields,\n colFields,\n values,\n fieldLabels,\n dimensionFields,\n numericFields,\n treeView,\n lang,\n panelPlacement,\n panelWidth,\n hideModeToggle,\n t,\n ]);\n}\n"],"mappings":";;;;;AA0DA,IAAM,IAAO;CACT,IAAI,EAAE,WAAW,OAAO;CACxB,IAAI,EAAE,WAAW,aAAa;AAClC;AAyBA,SAAgB,EACZ,GACqB;CACrB,IAAM,EACF,WACA,sBAAmB,CAAC,GACpB,sBAAmB,CAAC,GACpB,mBAAgB,CAAC,GACjB,mBAAgB,IAChB,cAAW,IACX,UAAO,MACP,oBAAiB,OACjB,gBAAa,KACb,oBAAiB,OACjB,GAEE,CAAC,GAAQ,KAAa,EAAS,CAAa,GAC5C,CAAC,GAAW,KAAgB,EAAmB,CAAgB,GAC/D,CAAC,GAAW,KAAgB,EAAmB,CAAgB,GAC/D,CAAC,GAAQ,KAAa,EAAuB,CAAa,GAE1D,IAAI,EAAK,IAET,IAAgC,QAAc;EAChD,IAAM,IAAwB,CAAC;EAC/B,KAAK,IAAM,KAAK,GAAQ,EAAI,EAAE,SAAS,EAAE,SAAS,EAAE;EACpD,OAAO;CACX,GAAG,CAAC,CAAM,CAAC,GAEL,IAAkB,QACd,EAAO,QAAQ,MAAM,CAAC,EAAE,OAAO,GACrC,CAAC,CAAM,CACX,GACM,IAAgB,QACZ,EAAO,QAAQ,MAAM,EAAE,OAAO,GACpC,CAAC,CAAM,CACX;CAEA,OAAO,QAAqC;EACxC,IAAM,KAAS,MACX,kBAAC,GAAD;GACiB;GACP;GACO;GACI;GACF;GACJ;GACA;GACH;GACM;GACA;GACH;GACC;EACf,CAAA;EAGL,OAAO;GACH,MAAM;GACN,eAGQ,IACI,CAAC,KAAU,MAAmB,QAAc,OACzC,EAAM,YAAY,IAGzB,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA,CACI,kBAAC,SAAD;KAAO,WAAU;KAAjB,UAAA,CACI,kBAAC,SAAD;MACI,MAAK;MACL,WAAU;MACV,SAAS;MACT,WAAW,MAAM,EAAU,EAAE,OAAO,OAAO;KAC9C,CAAA,GACD,kBAAC,QAAD;MAAM,WAAU;MAAuB,UAAA,EAAE;KAAgB,CAAA,CACtD;IAEN,CAAA,GAAA,KAAU,MAAmB,SAAS,EAAM,YAAY,CACxD;;GAGb,gBAAgB,MAAQ;IACpB,IAAI,CAAC,GAAQ;IACb,IAAM,IACF,kBAAC,GAAD;KACI,MAAM,EAAI;KACC;KACA;KACH;KACK;KACP;KACI;IACb,CAAA;IAcL,OAXI,MAAmB,QAAc,IAEjC,MAAmB,WAEf,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA,CACI,kBAAC,OAAD;MAAK,WAAU;MAAkB,UAAA;KAAa,CAAA,GAC7C,EAAM,YAAY,CAClB;SAKT,kBAAC,OAAD;KAAK,WAAU;KAAf,UAAA;MACK,MAAmB,UAAU,EAAM,UAAU;MAC9C,kBAAC,OAAD;OAAK,WAAU;OAAkB,UAAA;MAAa,CAAA;MAC7C,MAAmB,WAAW,EAAM,UAAU;KAC9C;;GAEb;EACJ;CACJ,GAAG;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACJ,CAAC;AACL"}
@@ -1,33 +1,33 @@
1
- import { useMemo as n, useState as d } from "react";
2
- import { Fragment as s, jsx as t, jsxs as i } from "react/jsx-runtime";
3
- function c({ render: a }) {
4
- const [o, l] = d({});
5
- return n(() => ({
6
- name: "row-detail",
7
- wrapRow: (e, r) => o[r.rowId] ? /* @__PURE__ */ i(s, { children: [e, /* @__PURE__ */ t("tr", {
8
- className: "table-row",
9
- children: /* @__PURE__ */ t("td", {
10
- className: "table-cell p-0",
11
- colSpan: 9999,
12
- children: /* @__PURE__ */ t("div", {
13
- className: "bg-base-200/60 p-4 border-l-4 border-primary",
14
- children: a(r)
15
- })
16
- })
17
- })] }) : e,
18
- rowProps: (e) => ({ "data-detail-open": o[e.rowId] ? "true" : void 0 }),
19
- contextMenu: (e) => [{
20
- key: "toggle-detail",
21
- label: o[e.rowId] ? "收起详情" : "展开详情",
22
- onSelect: () => l((r) => ({
23
- ...r,
24
- [e.rowId]: !r[e.rowId]
25
- }))
26
- }]
27
- }), [o, a]);
1
+ import { useMemo as e, useState as t } from "react";
2
+ import { Fragment as n, jsx as r, jsxs as i } from "react/jsx-runtime";
3
+ //#region src/components/pro/DataTable/rowDetailExtension.tsx
4
+ function a({ render: a }) {
5
+ let [o, s] = t({});
6
+ return e(() => ({
7
+ name: "row-detail",
8
+ wrapRow: (e, t) => o[t.rowId] ? /* @__PURE__ */ i(n, { children: [e, /* @__PURE__ */ r("tr", {
9
+ className: "table-row",
10
+ children: /* @__PURE__ */ r("td", {
11
+ className: "table-cell p-0",
12
+ colSpan: 9999,
13
+ children: /* @__PURE__ */ r("div", {
14
+ className: "bg-base-200/60 p-4 border-l-4 border-primary",
15
+ children: a(t)
16
+ })
17
+ })
18
+ })] }) : e,
19
+ rowProps: (e) => ({ "data-detail-open": o[e.rowId] ? "true" : void 0 }),
20
+ contextMenu: (e) => [{
21
+ key: "toggle-detail",
22
+ label: o[e.rowId] ? "收起详情" : "展开详情",
23
+ onSelect: () => s((t) => ({
24
+ ...t,
25
+ [e.rowId]: !t[e.rowId]
26
+ }))
27
+ }]
28
+ }), [o, a]);
28
29
  }
29
- export {
30
- c as useRowDetailExtension
31
- };
30
+ //#endregion
31
+ export { a as useRowDetailExtension };
32
32
 
33
33
  //# sourceMappingURL=rowDetailExtension.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rowDetailExtension.js","names":[],"sources":["../../../../src/components/pro/DataTable/rowDetailExtension.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport type { DataTableExtension, DataTableRowContext } from './extension';\n\nexport interface RowDetailOptions<T extends object> {\n /** 渲染展开后的行详情面板。 */\n render: (ctx: DataTableRowContext<T>) => React.ReactNode;\n}\n\n/**\n * 行详情(master/detail)扩展。\n *\n * 由于扩展是普通对象无法持有 React 状态,这里以 hook 工厂的形式返回一个绑定了\n * 展开状态的扩展。为每一行的第一列注入一个展开按钮(通过 `cell` 覆写),点击后\n * 在该行下方渲染一个详情面板(通过 `wrapRow`)。\n *\n * 使用方式:\n * ```tsx\n * const detail = useRowDetailExtension<Row>({\n * render: ({ row }) => <pre>{JSON.stringify(row, null, 2)}</pre>,\n * });\n * <DataTable data={data} columns={columns} extensions={[detail]} />\n * ```\n */\nexport function useRowDetailExtension<T extends object>({\n render,\n}: RowDetailOptions<T>): DataTableExtension<T> {\n const [open, setOpen] = useState<Record<string, boolean>>({});\n\n return useMemo<DataTableExtension<T>>(\n () => ({\n name: 'row-detail',\n wrapRow: (children, ctx) => {\n if (!open[ctx.rowId]) return children;\n return (\n <>\n {children}\n <tr className=\"table-row\">\n <td className=\"table-cell p-0\" colSpan={9999}>\n <div className=\"bg-base-200/60 p-4 border-l-4 border-primary\">\n {render(ctx)}\n </div>\n </td>\n </tr>\n </>\n );\n },\n rowProps: (ctx) =>\n ({\n 'data-detail-open': open[ctx.rowId] ? 'true' : undefined,\n }) as React.HTMLAttributes<HTMLTableRowElement>,\n // 通过右键菜单切换详情面板,避免占用列布局。\n contextMenu: (ctx) => [\n {\n key: 'toggle-detail',\n label: open[ctx.rowId] ? '收起详情' : '展开详情',\n onSelect: () =>\n setOpen((s) => ({ ...s, [ctx.rowId]: !s[ctx.rowId] })),\n },\n ],\n }),\n [open, render],\n );\n}\n"],"mappings":";;AAuBA,SAAgB,EAAwC,EACpD,QAAA,EAAA,GAC2C;AAC3C,QAAM,CAAC,GAAM,CAAA,IAAW,EAAkC,CAAC,CAAC;AAE5D,SAAO,EAAA,OACI;AAAA,IACH,MAAM;AAAA,IACN,SAAA,CAAU,GAAU,MACX,EAAK,EAAI,KAAA,IAEV,gBAAA,EAAA,GAAA,EAAA,UAAA,CACK,GACD,gBAAA,EAAC,MAAD;AAAA,MAAI,WAAU;AAAA,MACV,UAAA,gBAAA,EAAC,MAAD;AAAA,QAAI,WAAU;AAAA,QAAiB,SAAS;AAAA,QACpC,UAAA,gBAAA,EAAC,OAAD;AAAA,UAAK,WAAU;AAAA,UACV,UAAA,EAAO,CAAG;AAAA,QACV,CAAA;AAAA,MACL,CAAA;AAAA,IACJ,CAAA,CACN,EAAA,CAAA,IAXuB;AAAA,IAcjC,UAAA,CAAW,OACN,EACG,oBAAoB,EAAK,EAAI,KAAA,IAAS,SAAS,OACnD;AAAA,IAEJ,aAAA,CAAc,MAAQ,CAClB;AAAA,MACI,KAAK;AAAA,MACL,OAAO,EAAK,EAAI,KAAA,IAAS,SAAS;AAAA,MAClC,UAAA,MACI,EAAA,CAAS,OAAO;AAAA,QAAE,GAAG;AAAA,QAAI,CAAA,EAAI,KAAA,GAAQ,CAAC,EAAE,EAAI,KAAA;AAAA,MAAO,EAAE;AAAA,IAC7D,CACJ;AAAA,EACJ,IACA,CAAC,GAAM,CAAM,CACjB;AACJ"}
1
+ {"version":3,"file":"rowDetailExtension.js","names":[],"sources":["../../../../src/components/pro/DataTable/rowDetailExtension.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport type { DataTableExtension, DataTableRowContext } from './extension';\n\nexport interface RowDetailOptions<T extends object> {\n /** 渲染展开后的行详情面板。 */\n render: (ctx: DataTableRowContext<T>) => React.ReactNode;\n}\n\n/**\n * 行详情(master/detail)扩展。\n *\n * 由于扩展是普通对象无法持有 React 状态,这里以 hook 工厂的形式返回一个绑定了\n * 展开状态的扩展。为每一行的第一列注入一个展开按钮(通过 `cell` 覆写),点击后\n * 在该行下方渲染一个详情面板(通过 `wrapRow`)。\n *\n * 使用方式:\n * ```tsx\n * const detail = useRowDetailExtension<Row>({\n * render: ({ row }) => <pre>{JSON.stringify(row, null, 2)}</pre>,\n * });\n * <DataTable data={data} columns={columns} extensions={[detail]} />\n * ```\n */\nexport function useRowDetailExtension<T extends object>({\n render,\n}: RowDetailOptions<T>): DataTableExtension<T> {\n const [open, setOpen] = useState<Record<string, boolean>>({});\n\n return useMemo<DataTableExtension<T>>(\n () => ({\n name: 'row-detail',\n wrapRow: (children, ctx) => {\n if (!open[ctx.rowId]) return children;\n return (\n <>\n {children}\n <tr className=\"table-row\">\n <td className=\"table-cell p-0\" colSpan={9999}>\n <div className=\"bg-base-200/60 p-4 border-l-4 border-primary\">\n {render(ctx)}\n </div>\n </td>\n </tr>\n </>\n );\n },\n rowProps: (ctx) =>\n ({\n 'data-detail-open': open[ctx.rowId] ? 'true' : undefined,\n }) as React.HTMLAttributes<HTMLTableRowElement>,\n // 通过右键菜单切换详情面板,避免占用列布局。\n contextMenu: (ctx) => [\n {\n key: 'toggle-detail',\n label: open[ctx.rowId] ? '收起详情' : '展开详情',\n onSelect: () =>\n setOpen((s) => ({ ...s, [ctx.rowId]: !s[ctx.rowId] })),\n },\n ],\n }),\n [open, render],\n );\n}\n"],"mappings":";;;AAuBA,SAAgB,EAAwC,EACpD,aAC2C;CAC3C,IAAM,CAAC,GAAM,KAAW,EAAkC,CAAC,CAAC;CAE5D,OAAO,SACI;EACH,MAAM;EACN,UAAU,GAAU,MACX,EAAK,EAAI,SAEV,kBAAA,GAAA,EAAA,UAAA,CACK,GACD,kBAAC,MAAD;GAAI,WAAU;GACV,UAAA,kBAAC,MAAD;IAAI,WAAU;IAAiB,SAAS;IACpC,UAAA,kBAAC,OAAD;KAAK,WAAU;KACV,UAAA,EAAO,CAAG;IACV,CAAA;GACL,CAAA;EACJ,CAAA,CACN,EAAA,CAAA,IAXuB;EAcjC,WAAW,OACN,EACG,oBAAoB,EAAK,EAAI,SAAS,SAAS,KAAA,EACnD;EAEJ,cAAc,MAAQ,CAClB;GACI,KAAK;GACL,OAAO,EAAK,EAAI,SAAS,SAAS;GAClC,gBACI,GAAS,OAAO;IAAE,GAAG;KAAI,EAAI,QAAQ,CAAC,EAAE,EAAI;GAAO,EAAE;EAC7D,CACJ;CACJ,IACA,CAAC,GAAM,CAAM,CACjB;AACJ"}
@@ -1,66 +1,49 @@
1
- import { useMemo as x } from "react";
2
- import { columnFilteringFeature as t, columnOrderingFeature as a, columnVisibilityFeature as d, coreFeatures as l, createCoreRowModel as n, createExpandedRowModel as i, createFilteredRowModel as u, createPaginatedRowModel as s, createSortedRowModel as w, flexRender as h, globalFilteringFeature as F, rowExpandingFeature as c, rowPaginationFeature as R, rowSelectionFeature as M, rowSortingFeature as f, tableFeatures as g, useTable as S } from "@tanstack/react-table";
3
- var T = g({
4
- ...l,
5
- columnFilteringFeature: t,
6
- columnOrderingFeature: a,
7
- columnVisibilityFeature: d,
8
- globalFilteringFeature: F,
9
- rowSortingFeature: f,
10
- rowPaginationFeature: R,
11
- rowSelectionFeature: M,
12
- rowExpandingFeature: c,
13
- coreRowModel: n(),
14
- filteredRowModel: u(),
15
- sortedRowModel: w(),
16
- paginatedRowModel: s(),
17
- expandedRowModel: i()
1
+ import { useMemo as e } from "react";
2
+ import { columnFilteringFeature as t, columnOrderingFeature as n, columnVisibilityFeature as r, coreFeatures as i, createCoreRowModel as a, createExpandedRowModel as o, createFilteredRowModel as s, createPaginatedRowModel as c, createSortedRowModel as l, flexRender as u, globalFilteringFeature as d, rowExpandingFeature as f, rowPaginationFeature as p, rowSelectionFeature as m, rowSortingFeature as h, tableFeatures as g, useTable as _ } from "@tanstack/react-table";
3
+ //#region src/components/pro/DataTable/tanstack-table.ts
4
+ var v = g({
5
+ ...i,
6
+ columnFilteringFeature: t,
7
+ columnOrderingFeature: n,
8
+ columnVisibilityFeature: r,
9
+ globalFilteringFeature: d,
10
+ rowSortingFeature: h,
11
+ rowPaginationFeature: p,
12
+ rowSelectionFeature: m,
13
+ rowExpandingFeature: f,
14
+ coreRowModel: a(),
15
+ filteredRowModel: s(),
16
+ sortedRowModel: l(),
17
+ paginatedRowModel: c(),
18
+ expandedRowModel: o()
18
19
  });
19
- function v(m) {
20
- const { sortFns: e, filterFns: o, ...p } = m, b = x(() => {
21
- if (!e && !o) return T;
22
- const r = {
23
- ...l,
24
- columnFilteringFeature: t,
25
- columnOrderingFeature: a,
26
- columnVisibilityFeature: d,
27
- globalFilteringFeature: F,
28
- rowSortingFeature: f,
29
- rowPaginationFeature: R,
30
- rowSelectionFeature: M,
31
- rowExpandingFeature: c,
32
- coreRowModel: n(),
33
- filteredRowModel: u(),
34
- sortedRowModel: w(),
35
- paginatedRowModel: s(),
36
- expandedRowModel: i()
37
- };
38
- return e && (r.sortFns = e), o && (r.filterFns = o), g(r);
39
- }, [e, o]);
40
- return S({
41
- features: b,
42
- ...p
43
- });
20
+ function y(u) {
21
+ let { sortFns: y, filterFns: b, ...x } = u, S = e(() => {
22
+ if (!y && !b) return v;
23
+ let e = {
24
+ ...i,
25
+ columnFilteringFeature: t,
26
+ columnOrderingFeature: n,
27
+ columnVisibilityFeature: r,
28
+ globalFilteringFeature: d,
29
+ rowSortingFeature: h,
30
+ rowPaginationFeature: p,
31
+ rowSelectionFeature: m,
32
+ rowExpandingFeature: f,
33
+ coreRowModel: a(),
34
+ filteredRowModel: s(),
35
+ sortedRowModel: l(),
36
+ paginatedRowModel: c(),
37
+ expandedRowModel: o()
38
+ };
39
+ return y && (e.sortFns = y), b && (e.filterFns = b), g(e);
40
+ }, [y, b]);
41
+ return _({
42
+ features: S,
43
+ ...x
44
+ });
44
45
  }
45
- export {
46
- t as columnFilteringFeature,
47
- a as columnOrderingFeature,
48
- d as columnVisibilityFeature,
49
- l as coreFeatures,
50
- n as createCoreRowModel,
51
- i as createExpandedRowModel,
52
- u as createFilteredRowModel,
53
- s as createPaginatedRowModel,
54
- w as createSortedRowModel,
55
- h as flexRender,
56
- F as globalFilteringFeature,
57
- c as rowExpandingFeature,
58
- R as rowPaginationFeature,
59
- M as rowSelectionFeature,
60
- f as rowSortingFeature,
61
- g as tableFeatures,
62
- v as useReactTable,
63
- S as useTable
64
- };
46
+ //#endregion
47
+ export { t as columnFilteringFeature, n as columnOrderingFeature, r as columnVisibilityFeature, i as coreFeatures, a as createCoreRowModel, o as createExpandedRowModel, s as createFilteredRowModel, c as createPaginatedRowModel, l as createSortedRowModel, u as flexRender, d as globalFilteringFeature, f as rowExpandingFeature, p as rowPaginationFeature, m as rowSelectionFeature, h as rowSortingFeature, g as tableFeatures, y as useReactTable, _ as useTable };
65
48
 
66
49
  //# sourceMappingURL=tanstack-table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tanstack-table.js","names":[],"sources":["../../../../src/components/pro/DataTable/tanstack-table.ts"],"sourcesContent":["/**\n * TanStack Table v9 适配层(全面使用 v9 原生 API)。\n *\n * DishUI 的 DataTable 现已全面迁移到 TanStack Table v9 的原生 API:\n * - `useTable` + `tableFeatures({...})` 显式注册特性与 row model 工厂;\n * - row model 通过 `createCoreRowModel()` / `createSortedRowModel()` 等工厂注册;\n * - 使用 `table.state`(而非 v8 的 `table.getState()`)读取状态;\n * - 列定义的自定义排序使用 `sortFn`(v8 为 `sortingFn`)。\n *\n * 本模块把 v9 的多泛型类型(`<TFeatures, TData, TValue>`)用 `StockFeatures`\n * 预绑定成单泛型别名(`ColumnDef<T>`、`Row<T>`、`Table<T>` 等),让上层代码\n * 保持简洁;同时保留一个 v8 命名习惯的 `useReactTable` 包装器,内部把\n * 「row model 工厂」组装进 v9 的 `features`,从而对调用方屏蔽 v9 的 `features`\n * 组装细节。请始终从本模块导入表格相关类型与工具,而不要直接依赖\n * `@tanstack/react-table`。\n */\nimport {\n useTable,\n flexRender,\n tableFeatures,\n type ReactTable,\n // 核心特性\n coreFeatures,\n // 各功能特性\n columnFilteringFeature,\n columnOrderingFeature,\n columnVisibilityFeature,\n globalFilteringFeature,\n rowSortingFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowExpandingFeature,\n // row model 工厂\n createCoreRowModel,\n createFilteredRowModel,\n createSortedRowModel,\n createPaginatedRowModel,\n createExpandedRowModel,\n} from '@tanstack/react-table';\nimport type {\n RowData,\n OnChangeFn,\n Updater,\n CellContext as CoreCellContext,\n HeaderContext as CoreHeaderContext,\n // 状态类型\n SortingState,\n ColumnFiltersState,\n RowSelectionState,\n PaginationState,\n ColumnOrderState,\n ExpandedState,\n ColumnVisibilityState,\n // 多泛型类型(用 StockFeatures 预绑定为单泛型别名)\n StockFeatures,\n Column as CoreColumn,\n ColumnDef as CoreColumnDef,\n Row as CoreRow,\n Cell as CoreCell,\n Header as CoreHeader,\n HeaderGroup as CoreHeaderGroup,\n SortFnOption,\n SortFn as CoreSortFn,\n FilterFn as CoreFilterFn,\n ColumnMeta as CoreColumnMeta,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useMemo } from 'react';\n\nexport { flexRender, useTable, tableFeatures };\n\n/**\n * 一个包含全部常用特性 + row model 工厂的默认 features 预设。\n * `useReactTable` 会用它作为默认 `features`,因此调用方无需手动组装。\n * (内部常量:其推断类型引用了 table-core 的内部路径,不对外导出以避免\n * 声明文件的可移植性问题;对外通过 `DishUITableFeatures` 类型别名暴露。)\n */\nconst dishuiTableFeatures = tableFeatures({\n ...coreFeatures,\n columnFilteringFeature,\n columnOrderingFeature,\n columnVisibilityFeature,\n globalFilteringFeature,\n rowSortingFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowExpandingFeature,\n coreRowModel: createCoreRowModel(),\n filteredRowModel: createFilteredRowModel(),\n sortedRowModel: createSortedRowModel(),\n paginatedRowModel: createPaginatedRowModel(),\n expandedRowModel: createExpandedRowModel(),\n});\n\nexport type DishUITableFeatures = StockFeatures;\n\n// v9 原生 row model 工厂再导出(供需要精细控制 features 的调用方使用)。\nexport {\n coreFeatures,\n columnFilteringFeature,\n columnOrderingFeature,\n columnVisibilityFeature,\n globalFilteringFeature,\n rowSortingFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowExpandingFeature,\n createCoreRowModel,\n createFilteredRowModel,\n createSortedRowModel,\n createPaginatedRowModel,\n createExpandedRowModel,\n};\n\n// 单泛型(StockFeatures 预绑定)类型别名,保持上层简洁。\n// `Table` 映射到 `useTable` 返回的 ReactTable(具备 `.state` / `.FlexRender`)。\nexport type Table<TData extends RowData> = ReactTable<DishUITableFeatures, TData>;\nexport type Column<TData extends RowData, TValue = unknown> = CoreColumn<DishUITableFeatures, TData, TValue>;\nexport type ColumnDef<TData extends RowData, TValue = unknown> = CoreColumnDef<DishUITableFeatures, TData, TValue>;\nexport type Row<TData extends RowData> = CoreRow<DishUITableFeatures, TData>;\nexport type Cell<TData extends RowData, TValue = unknown> = CoreCell<DishUITableFeatures, TData, TValue>;\nexport type Header<TData extends RowData, TValue = unknown> = CoreHeader<DishUITableFeatures, TData, TValue>;\nexport type HeaderGroup<TData extends RowData> = CoreHeaderGroup<DishUITableFeatures, TData>;\nexport type CellContext<TData extends RowData, TValue = unknown> = CoreCellContext<DishUITableFeatures, TData, TValue>;\nexport type HeaderContext<TData extends RowData, TValue = unknown> = CoreHeaderContext<DishUITableFeatures, TData, TValue>;\n\n// 状态类型(沿用 v8 惯用命名)。\nexport type {\n SortingState,\n ColumnFiltersState,\n RowSelectionState,\n PaginationState,\n ColumnOrderState,\n ExpandedState,\n OnChangeFn,\n Updater,\n RowData,\n};\n\n/** v8 `VisibilityState` -> v9 `ColumnVisibilityState`。 */\nexport type VisibilityState = ColumnVisibilityState;\n\n/** 列的自定义排序函数(v9:`sortFn`)。 */\nexport type SortingFnOption<TData extends RowData> = SortFnOption<DishUITableFeatures, TData>;\nexport type SortingFn<TData extends RowData> = CoreSortFn<DishUITableFeatures, TData>;\nexport type FilterFn<TData extends RowData> = CoreFilterFn<DishUITableFeatures, TData>;\nexport type ColumnMeta<TData extends RowData, TValue = unknown> = CoreColumnMeta<DishUITableFeatures, TData, TValue>;\n\n/**\n * v8 命名习惯的表格 hook 包装器。\n *\n * 接收「已经组装好的」表格选项(不含 `features`),自动注入 DishUI 的默认\n * `features` 预设(含 core + 全部常用特性 + row model 工厂),返回 v9 原生\n * 的 `useTable` 实例。若需自定义排序/筛选函数注册表,可通过 `sortFns` /\n * `filterFns` 传入(会并入 features)。\n */\nexport function useReactTable<TData extends RowData>(\n options: Omit<TableOptions<DishUITableFeatures, TData>, 'features'> & {\n /** 自定义排序函数注册表(v9:合入 features 的 sortFns)。 */\n sortFns?: Record<string, SortingFn<TData>>;\n /** 自定义筛选函数注册表(v9:合入 features 的 filterFns)。 */\n filterFns?: Record<string, FilterFn<TData>>;\n },\n): Table<TData> {\n const { sortFns, filterFns, ...rest } = options;\n\n const features = useMemo(() => {\n if (!sortFns && !filterFns) return dishuiTableFeatures;\n const merged: Record<string, unknown> = {\n ...coreFeatures,\n columnFilteringFeature,\n columnOrderingFeature,\n columnVisibilityFeature,\n globalFilteringFeature,\n rowSortingFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowExpandingFeature,\n coreRowModel: createCoreRowModel(),\n filteredRowModel: createFilteredRowModel(),\n sortedRowModel: createSortedRowModel(),\n paginatedRowModel: createPaginatedRowModel(),\n expandedRowModel: createExpandedRowModel(),\n };\n if (sortFns) merged.sortFns = sortFns;\n if (filterFns) merged.filterFns = filterFns;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return tableFeatures(merged as any);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sortFns, filterFns]);\n\n return useTable<DishUITableFeatures, TData>({\n features,\n ...rest,\n } as TableOptions<DishUITableFeatures, TData>) as unknown as Table<TData>;\n}\n"],"mappings":";;AA6EA,IAAM,IAAsB,EAAc;AAAA,EACxC,GAAG;AAAA,EACH,wBAAA;AAAA,EACA,uBAAA;AAAA,EACA,yBAAA;AAAA,EACA,wBAAA;AAAA,EACA,mBAAA;AAAA,EACA,sBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,cAAc,EAAmB;AAAA,EACjC,kBAAkB,EAAuB;AAAA,EACzC,gBAAgB,EAAqB;AAAA,EACrC,mBAAmB,EAAwB;AAAA,EAC3C,kBAAkB,EAAuB;AAC3C,CAAC;AAgED,SAAgB,EACd,GAMc;AACd,QAAM,EAAE,SAAA,GAAS,WAAA,GAAW,GAAG,EAAA,IAAS,GAElC,IAAW,EAAA,MAAc;AAC7B,QAAI,CAAC,KAAW,CAAC,EAAW,QAAO;AACnC,UAAM,IAAkC;AAAA,MACtC,GAAG;AAAA,MACH,wBAAA;AAAA,MACA,uBAAA;AAAA,MACA,yBAAA;AAAA,MACA,wBAAA;AAAA,MACA,mBAAA;AAAA,MACA,sBAAA;AAAA,MACA,qBAAA;AAAA,MACA,qBAAA;AAAA,MACA,cAAc,EAAmB;AAAA,MACjC,kBAAkB,EAAuB;AAAA,MACzC,gBAAgB,EAAqB;AAAA,MACrC,mBAAmB,EAAwB;AAAA,MAC3C,kBAAkB,EAAuB;AAAA,IAC3C;AACA,WAAI,MAAS,EAAO,UAAU,IAC1B,MAAW,EAAO,YAAY,IAE3B,EAAc,CAAa;AAAA,EAEpC,GAAG,CAAC,GAAS,CAAS,CAAC;AAEvB,SAAO,EAAqC;AAAA,IAC1C,UAAA;AAAA,IACA,GAAG;AAAA,EACL,CAA6C;AAC/C"}
1
+ {"version":3,"file":"tanstack-table.js","names":[],"sources":["../../../../src/components/pro/DataTable/tanstack-table.ts"],"sourcesContent":["/**\n * TanStack Table v9 适配层(全面使用 v9 原生 API)。\n *\n * DishUI 的 DataTable 现已全面迁移到 TanStack Table v9 的原生 API:\n * - `useTable` + `tableFeatures({...})` 显式注册特性与 row model 工厂;\n * - row model 通过 `createCoreRowModel()` / `createSortedRowModel()` 等工厂注册;\n * - 使用 `table.state`(而非 v8 的 `table.getState()`)读取状态;\n * - 列定义的自定义排序使用 `sortFn`(v8 为 `sortingFn`)。\n *\n * 本模块把 v9 的多泛型类型(`<TFeatures, TData, TValue>`)用 `StockFeatures`\n * 预绑定成单泛型别名(`ColumnDef<T>`、`Row<T>`、`Table<T>` 等),让上层代码\n * 保持简洁;同时保留一个 v8 命名习惯的 `useReactTable` 包装器,内部把\n * 「row model 工厂」组装进 v9 的 `features`,从而对调用方屏蔽 v9 的 `features`\n * 组装细节。请始终从本模块导入表格相关类型与工具,而不要直接依赖\n * `@tanstack/react-table`。\n */\nimport {\n useTable,\n flexRender,\n tableFeatures,\n type ReactTable,\n // 核心特性\n coreFeatures,\n // 各功能特性\n columnFilteringFeature,\n columnOrderingFeature,\n columnVisibilityFeature,\n globalFilteringFeature,\n rowSortingFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowExpandingFeature,\n // row model 工厂\n createCoreRowModel,\n createFilteredRowModel,\n createSortedRowModel,\n createPaginatedRowModel,\n createExpandedRowModel,\n} from '@tanstack/react-table';\nimport type {\n RowData,\n OnChangeFn,\n Updater,\n CellContext as CoreCellContext,\n HeaderContext as CoreHeaderContext,\n // 状态类型\n SortingState,\n ColumnFiltersState,\n RowSelectionState,\n PaginationState,\n ColumnOrderState,\n ExpandedState,\n ColumnVisibilityState,\n // 多泛型类型(用 StockFeatures 预绑定为单泛型别名)\n StockFeatures,\n Column as CoreColumn,\n ColumnDef as CoreColumnDef,\n Row as CoreRow,\n Cell as CoreCell,\n Header as CoreHeader,\n HeaderGroup as CoreHeaderGroup,\n SortFnOption,\n SortFn as CoreSortFn,\n FilterFn as CoreFilterFn,\n ColumnMeta as CoreColumnMeta,\n TableOptions,\n} from '@tanstack/react-table';\nimport { useMemo } from 'react';\n\nexport { flexRender, useTable, tableFeatures };\n\n/**\n * 一个包含全部常用特性 + row model 工厂的默认 features 预设。\n * `useReactTable` 会用它作为默认 `features`,因此调用方无需手动组装。\n * (内部常量:其推断类型引用了 table-core 的内部路径,不对外导出以避免\n * 声明文件的可移植性问题;对外通过 `DishUITableFeatures` 类型别名暴露。)\n */\nconst dishuiTableFeatures = tableFeatures({\n ...coreFeatures,\n columnFilteringFeature,\n columnOrderingFeature,\n columnVisibilityFeature,\n globalFilteringFeature,\n rowSortingFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowExpandingFeature,\n coreRowModel: createCoreRowModel(),\n filteredRowModel: createFilteredRowModel(),\n sortedRowModel: createSortedRowModel(),\n paginatedRowModel: createPaginatedRowModel(),\n expandedRowModel: createExpandedRowModel(),\n});\n\nexport type DishUITableFeatures = StockFeatures;\n\n// v9 原生 row model 工厂再导出(供需要精细控制 features 的调用方使用)。\nexport {\n coreFeatures,\n columnFilteringFeature,\n columnOrderingFeature,\n columnVisibilityFeature,\n globalFilteringFeature,\n rowSortingFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowExpandingFeature,\n createCoreRowModel,\n createFilteredRowModel,\n createSortedRowModel,\n createPaginatedRowModel,\n createExpandedRowModel,\n};\n\n// 单泛型(StockFeatures 预绑定)类型别名,保持上层简洁。\n// `Table` 映射到 `useTable` 返回的 ReactTable(具备 `.state` / `.FlexRender`)。\nexport type Table<TData extends RowData> = ReactTable<DishUITableFeatures, TData>;\nexport type Column<TData extends RowData, TValue = unknown> = CoreColumn<DishUITableFeatures, TData, TValue>;\nexport type ColumnDef<TData extends RowData, TValue = unknown> = CoreColumnDef<DishUITableFeatures, TData, TValue>;\nexport type Row<TData extends RowData> = CoreRow<DishUITableFeatures, TData>;\nexport type Cell<TData extends RowData, TValue = unknown> = CoreCell<DishUITableFeatures, TData, TValue>;\nexport type Header<TData extends RowData, TValue = unknown> = CoreHeader<DishUITableFeatures, TData, TValue>;\nexport type HeaderGroup<TData extends RowData> = CoreHeaderGroup<DishUITableFeatures, TData>;\nexport type CellContext<TData extends RowData, TValue = unknown> = CoreCellContext<DishUITableFeatures, TData, TValue>;\nexport type HeaderContext<TData extends RowData, TValue = unknown> = CoreHeaderContext<DishUITableFeatures, TData, TValue>;\n\n// 状态类型(沿用 v8 惯用命名)。\nexport type {\n SortingState,\n ColumnFiltersState,\n RowSelectionState,\n PaginationState,\n ColumnOrderState,\n ExpandedState,\n OnChangeFn,\n Updater,\n RowData,\n};\n\n/** v8 `VisibilityState` -> v9 `ColumnVisibilityState`。 */\nexport type VisibilityState = ColumnVisibilityState;\n\n/** 列的自定义排序函数(v9:`sortFn`)。 */\nexport type SortingFnOption<TData extends RowData> = SortFnOption<DishUITableFeatures, TData>;\nexport type SortingFn<TData extends RowData> = CoreSortFn<DishUITableFeatures, TData>;\nexport type FilterFn<TData extends RowData> = CoreFilterFn<DishUITableFeatures, TData>;\nexport type ColumnMeta<TData extends RowData, TValue = unknown> = CoreColumnMeta<DishUITableFeatures, TData, TValue>;\n\n/**\n * v8 命名习惯的表格 hook 包装器。\n *\n * 接收「已经组装好的」表格选项(不含 `features`),自动注入 DishUI 的默认\n * `features` 预设(含 core + 全部常用特性 + row model 工厂),返回 v9 原生\n * 的 `useTable` 实例。若需自定义排序/筛选函数注册表,可通过 `sortFns` /\n * `filterFns` 传入(会并入 features)。\n */\nexport function useReactTable<TData extends RowData>(\n options: Omit<TableOptions<DishUITableFeatures, TData>, 'features'> & {\n /** 自定义排序函数注册表(v9:合入 features 的 sortFns)。 */\n sortFns?: Record<string, SortingFn<TData>>;\n /** 自定义筛选函数注册表(v9:合入 features 的 filterFns)。 */\n filterFns?: Record<string, FilterFn<TData>>;\n },\n): Table<TData> {\n const { sortFns, filterFns, ...rest } = options;\n\n const features = useMemo(() => {\n if (!sortFns && !filterFns) return dishuiTableFeatures;\n const merged: Record<string, unknown> = {\n ...coreFeatures,\n columnFilteringFeature,\n columnOrderingFeature,\n columnVisibilityFeature,\n globalFilteringFeature,\n rowSortingFeature,\n rowPaginationFeature,\n rowSelectionFeature,\n rowExpandingFeature,\n coreRowModel: createCoreRowModel(),\n filteredRowModel: createFilteredRowModel(),\n sortedRowModel: createSortedRowModel(),\n paginatedRowModel: createPaginatedRowModel(),\n expandedRowModel: createExpandedRowModel(),\n };\n if (sortFns) merged.sortFns = sortFns;\n if (filterFns) merged.filterFns = filterFns;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return tableFeatures(merged as any);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sortFns, filterFns]);\n\n return useTable<DishUITableFeatures, TData>({\n features,\n ...rest,\n } as TableOptions<DishUITableFeatures, TData>) as unknown as Table<TData>;\n}\n"],"mappings":";;;AA6EA,IAAM,IAAsB,EAAc;CACxC,GAAG;CACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,cAAc,EAAmB;CACjC,kBAAkB,EAAuB;CACzC,gBAAgB,EAAqB;CACrC,mBAAmB,EAAwB;CAC3C,kBAAkB,EAAuB;AAC3C,CAAC;AAgED,SAAgB,EACd,GAMc;CACd,IAAM,EAAE,YAAS,cAAW,GAAG,MAAS,GAElC,IAAW,QAAc;EAC7B,IAAI,CAAC,KAAW,CAAC,GAAW,OAAO;EACnC,IAAM,IAAkC;GACtC,GAAG;GACH;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,cAAc,EAAmB;GACjC,kBAAkB,EAAuB;GACzC,gBAAgB,EAAqB;GACrC,mBAAmB,EAAwB;GAC3C,kBAAkB,EAAuB;EAC3C;EAIA,OAHI,MAAS,EAAO,UAAU,IAC1B,MAAW,EAAO,YAAY,IAE3B,EAAc,CAAa;CAEpC,GAAG,CAAC,GAAS,CAAS,CAAC;CAEvB,OAAO,EAAqC;EAC1C;EACA,GAAG;CACL,CAA6C;AAC/C"}
@@ -1,53 +1,42 @@
1
- var d = `
2
- .tree-row-icon {
3
- transition: transform 0.3s ease;
1
+ //#region src/components/pro/DataTable/treeDataUtils.ts
2
+ var e = "\n.tree-row-icon {\n transition: transform 0.3s ease;\n}\n\n.tree-row-expanded .tree-row-icon {\n transform: rotate(90deg);\n}\n";
3
+ function t(e, n, r, i, a = "") {
4
+ let o = [], s = e[r];
5
+ return Array.isArray(s) && s.length > 0 && s.forEach((e, s) => {
6
+ let c = i ? i(e, s) : `${a}${n}_${s}`;
7
+ o.push(c);
8
+ let l = t(e, c, r, i, `${a}${n}_${s}_`);
9
+ o.push(...l);
10
+ }), o;
4
11
  }
5
-
6
- .tree-row-expanded .tree-row-icon {
7
- transform: rotate(90deg);
8
- }
9
- `;
10
- function A(l, s, t, o, e = "") {
11
- const c = [], f = l[t];
12
- return Array.isArray(f) && f.length > 0 && f.forEach((r, n) => {
13
- const i = o ? o(r, n) : `${e}${s}_${n}`;
14
- c.push(i);
15
- const _ = A(r, i, t, o, `${e}${s}_${n}_`);
16
- c.push(..._);
17
- }), c;
18
- }
19
- function g(l, s, t, o, e = 0, c = "", f = !0, r = [], n = !1) {
20
- return l.forEach((i, _) => {
21
- const h = o ? o(i, _) : c ? `${c}_${_}` : `${_}`, a = {
22
- ...i,
23
- __depth: e,
24
- __id: h,
25
- __parentId: c,
26
- __hasChildren: Array.isArray(i[t]) && i[t].length > 0,
27
- __isExpanded: s[h] || !1,
28
- __childCount: Array.isArray(i[t]) ? i[t].length : 0
29
- };
30
- n ? e === 0 && r.push(a) : (e === 0 || f) && r.push(a);
31
- const u = s[h] || !1;
32
- Array.isArray(i[t]) && i[t].length > 0 && u && !n && g(i[t], s, t, o, e + 1, h, f && u, r, n);
33
- }), r;
12
+ function n(e, t, r, i, a = 0, o = "", s = !0, c = [], l = !1) {
13
+ return e.forEach((e, u) => {
14
+ let d = i ? i(e, u) : o ? `${o}_${u}` : `${u}`, f = {
15
+ ...e,
16
+ __depth: a,
17
+ __id: d,
18
+ __parentId: o,
19
+ __hasChildren: Array.isArray(e[r]) && e[r].length > 0,
20
+ __isExpanded: t[d] || !1,
21
+ __childCount: Array.isArray(e[r]) ? e[r].length : 0
22
+ };
23
+ l ? a === 0 && c.push(f) : (a === 0 || s) && c.push(f);
24
+ let p = t[d] || !1;
25
+ Array.isArray(e[r]) && e[r].length > 0 && p && !l && n(e[r], t, r, i, a + 1, d, s && p, c, l);
26
+ }), c;
34
27
  }
35
- function $() {
36
- return { treeSortAsc: (l, s, t) => {
37
- const o = l.original, e = s.original, c = o.__depth !== void 0 ? o.__depth : 0, f = e.__depth !== void 0 ? e.__depth : 0;
38
- if (c !== f) return 0;
39
- if (c === 0 && f === 0) {
40
- const r = l.getValue(t), n = s.getValue(t);
41
- return r === n ? 0 : r == null ? -1 : n == null ? 1 : typeof r == "number" && typeof n == "number" ? r - n : r instanceof Date && n instanceof Date ? r.getTime() - n.getTime() : String(r).localeCompare(String(n));
42
- }
43
- return 0;
44
- } };
28
+ function r() {
29
+ return { treeSortAsc: (e, t, n) => {
30
+ let r = e.original, i = t.original, a = r.__depth === void 0 ? 0 : r.__depth, o = i.__depth === void 0 ? 0 : i.__depth;
31
+ if (a !== o) return 0;
32
+ if (a === 0 && o === 0) {
33
+ let r = e.getValue(n), i = t.getValue(n);
34
+ return r === i ? 0 : r == null ? -1 : i == null ? 1 : typeof r == "number" && typeof i == "number" ? r - i : r instanceof Date && i instanceof Date ? r.getTime() - i.getTime() : String(r).localeCompare(String(i));
35
+ }
36
+ return 0;
37
+ } };
45
38
  }
46
- export {
47
- $ as createTreeSortingFns,
48
- A as findAllChildRowIds,
49
- g as flattenTreeData,
50
- d as treeRowAnimationStyles
51
- };
39
+ //#endregion
40
+ export { r as createTreeSortingFns, t as findAllChildRowIds, n as flattenTreeData, e as treeRowAnimationStyles };
52
41
 
53
42
  //# sourceMappingURL=treeDataUtils.js.map