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,76 +1,65 @@
1
- import { useEffect as P, useRef as Q, useState as S } from "react";
2
- import { jsx as U } from "react/jsx-runtime";
3
- var Z = ({ children: k, variant: o = "neutral", size: g = "sm", outline: C = !1, dash: w = !1, soft: D = !1, bold: E = !1, italic: M = !1, underline: N = !1, ellipsis: c = !1, maxWidth: d, stateTimeout: n, styleConfig: u = {}, state: s, onStateChange: r, onClick: i, onDoubleClick: f, onMouseEnter: b, onMouseLeave: m, onDragStart: p, onDragEnd: x, draggable: R = !1, className: $ = "", style: j = {} }) => {
4
- const [L, v] = S("default"), a = s !== void 0 ? s : L, t = Q(null), l = (e) => {
5
- s === void 0 && v(e), r && r(e), y(e);
6
- }, y = (e = a) => {
7
- t.current && (clearTimeout(t.current), t.current = null), n && e !== "default" && s === void 0 && (t.current = setTimeout(() => {
8
- v("default"), r && r("default");
9
- }, n));
10
- };
11
- P(() => (y(), () => {
12
- t.current && clearTimeout(t.current);
13
- }), [
14
- a,
15
- n,
16
- s
17
- ]);
18
- const T = "label dark:text-white", z = o ? `text-${o}` : "", h = {
19
- xs: "text-xs",
20
- sm: "text-sm",
21
- md: "text-base",
22
- lg: "text-lg",
23
- xl: "text-xl"
24
- }, B = [
25
- T,
26
- z,
27
- h[g] || h.md,
28
- C ? "border border-current px-2 py-1 rounded" : "",
29
- w ? "border border-dashed border-current px-2 py-1 rounded" : "",
30
- D ? "bg-opacity-10 bg-current px-2 py-1 rounded" : "",
31
- E ? "font-bold" : "",
32
- M ? "italic" : "",
33
- N ? "underline" : "",
34
- c ? "truncate" : "",
35
- $
36
- ].filter(Boolean).join(" "), I = (e) => {
37
- l("clicked"), i && i(e);
38
- }, O = (e) => {
39
- l("doubleClicked"), f && f(e);
40
- }, q = (e) => {
41
- l("hover"), b && b(e);
42
- }, A = (e) => {
43
- l("default"), m && m(e);
44
- }, F = (e) => {
45
- l("dragging"), p && p(e);
46
- }, G = (e) => {
47
- l("default"), x && x(e);
48
- }, H = u[a]?.style || {}, J = u[a]?.className || "", K = {
49
- ...j,
50
- ...H,
51
- ...d ? { maxWidth: d } : {},
52
- ...c ? {
53
- display: "inline-block",
54
- overflow: "hidden",
55
- textOverflow: "ellipsis",
56
- whiteSpace: "nowrap"
57
- } : {}
58
- };
59
- return /* @__PURE__ */ U("span", {
60
- className: `${B} ${J}`.trim(),
61
- style: K,
62
- onClick: I,
63
- onDoubleClick: O,
64
- onMouseEnter: q,
65
- onMouseLeave: A,
66
- onDragStart: F,
67
- onDragEnd: G,
68
- draggable: R,
69
- children: k
70
- });
71
- };
72
- export {
73
- Z as default
1
+ import { cn as e } from "../../utils/cn.js";
2
+ import { useEffect as t, useRef as n, useState as r } from "react";
3
+ import { jsx as i } from "react/jsx-runtime";
4
+ //#region src/components/Label/index.tsx
5
+ var a = ({ children: a, variant: o = "neutral", size: s = "sm", outline: c = !1, dash: l = !1, soft: u = !1, bold: d = !1, italic: f = !1, underline: p = !1, ellipsis: m = !1, maxWidth: h, stateTimeout: g, styleConfig: _ = {}, state: v, onStateChange: y, onClick: b, onDoubleClick: x, onMouseEnter: S, onMouseLeave: C, onDragStart: w, onDragEnd: T, draggable: E = !1, className: D = "", style: O = {} }) => {
6
+ let [k, A] = r("default"), j = v === void 0 ? k : v, M = n(null), N = (e) => {
7
+ v === void 0 && A(e), y?.(e), P(e);
8
+ }, P = (e = j) => {
9
+ M.current &&= (clearTimeout(M.current), null), g && e !== "default" && v === void 0 && (M.current = setTimeout(() => {
10
+ A("default"), y?.("default");
11
+ }, g));
12
+ };
13
+ t(() => (P(), () => {
14
+ M.current && clearTimeout(M.current);
15
+ }), [
16
+ j,
17
+ g,
18
+ v
19
+ ]);
20
+ let F = {
21
+ xs: "text-xs",
22
+ sm: "text-sm",
23
+ md: "text-base",
24
+ lg: "text-lg",
25
+ xl: "text-xl"
26
+ }, ee = F[s] || F.md, I = c || l || u, L = I ? "badge" : "label dark:text-white", R = !I && o ? `text-${o}` : "", z = c ? "badge-outline" : "", B = l ? "badge-dash" : "", V = u ? "badge-soft" : "", H = I && o && o !== "neutral" ? `badge-${o}` : "", U = e(L, R, ee, z, B, V, H, d ? "font-bold" : "", f ? "italic" : "", p ? "underline" : "", m ? "truncate" : "", D), W = (e) => {
27
+ N("clicked"), b?.(e);
28
+ }, G = (e) => {
29
+ N("doubleClicked"), x?.(e);
30
+ }, K = (e) => {
31
+ N("hover"), S?.(e);
32
+ }, q = (e) => {
33
+ N("default"), C?.(e);
34
+ }, J = (e) => {
35
+ N("dragging"), w?.(e);
36
+ }, Y = (e) => {
37
+ N("default"), T?.(e);
38
+ }, X = _[j]?.style || {}, Z = _[j]?.className || "", Q = {
39
+ ...O,
40
+ ...X,
41
+ ...h ? { maxWidth: h } : {},
42
+ ...m ? {
43
+ display: "inline-block",
44
+ overflow: "hidden",
45
+ textOverflow: "ellipsis",
46
+ whiteSpace: "nowrap"
47
+ } : {}
48
+ }, $ = e(U, Z);
49
+ return /* @__PURE__ */ i("span", {
50
+ className: $,
51
+ style: Q,
52
+ onClick: W,
53
+ onDoubleClick: G,
54
+ onMouseEnter: K,
55
+ onMouseLeave: q,
56
+ onDragStart: J,
57
+ onDragEnd: Y,
58
+ draggable: E,
59
+ children: a
60
+ });
74
61
  };
62
+ //#endregion
63
+ export { a as default };
75
64
 
76
65
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Label/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, DragEvent } from 'react';\n\n// 扩展LabelState类型为字符串,允许用户定义任意状态\nexport type LabelState = string;\n\nexport type LabelStyleConfig = {\n [key: string]: {\n className?: string;\n style?: React.CSSProperties;\n }\n};\n\nexport type LabelProps = {\n children: React.ReactNode;\n variant?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n outline?: boolean;\n dash?: boolean;\n soft?: boolean;\n bold?: boolean;\n italic?: boolean;\n underline?: boolean;\n ellipsis?: boolean;\n maxWidth?: string;\n stateTimeout?: number;\n styleConfig?: LabelStyleConfig;\n // 新增属性:用户自定义状态\n state?: LabelState;\n // 新增属性:状态变化回调\n onStateChange?: (newState: LabelState) => void;\n onClick?: (e: React.MouseEvent) => void;\n onDoubleClick?: (e: React.MouseEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onDragStart?: (e: DragEvent<HTMLSpanElement>) => void;\n onDragEnd?: (e: DragEvent<HTMLSpanElement>) => void;\n draggable?: boolean;\n className?: string;\n style?: React.CSSProperties;\n};\n\nconst Label = ({\n children,\n variant = 'neutral',\n size = 'sm',\n outline = false,\n dash = false,\n soft = false,\n bold = false,\n italic = false,\n underline = false,\n ellipsis = false,\n maxWidth,\n stateTimeout,\n styleConfig = {},\n // 使用用户传入的状态,默认为'default'\n state: userState,\n onStateChange,\n onClick,\n onDoubleClick,\n onMouseEnter,\n onMouseLeave,\n onDragStart,\n onDragEnd,\n draggable = false,\n className = '',\n style = {},\n}: LabelProps) => {\n // 当用户传入state时使用用户的状态,否则内部管理状态\n const [internalState, setInternalState] = useState<LabelState>('default');\n const state = userState !== undefined ? userState : internalState;\n \n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n \n // 更新状态的函数,同时执行回调\n const updateState = (newState: LabelState) => {\n if (userState === undefined) {\n setInternalState(newState);\n }\n onStateChange && onStateChange(newState);\n resetStateTimeout(newState);\n };\n \n // 重置状态计时器\n const resetStateTimeout = (currentState: LabelState = state) => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n \n if (stateTimeout && currentState !== 'default' && userState === undefined) {\n timeoutRef.current = setTimeout(() => {\n setInternalState('default');\n onStateChange && onStateChange('default');\n }, stateTimeout);\n }\n };\n \n // 当状态变化或stateTimeout变化时重置计时器\n useEffect(() => {\n resetStateTimeout();\n \n // 清除计时器\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, [state, stateTimeout, userState]);\n \n // 基础类名\n const baseClass = 'label dark:text-white';\n const variantClass = variant ? `text-${variant}` : '';\n \n // 尺寸类映射\n const sizeClassMap = {\n 'xs': 'text-xs',\n 'sm': 'text-sm',\n 'md': 'text-base',\n 'lg': 'text-lg',\n 'xl': 'text-xl',\n };\n const sizeClass = sizeClassMap[size] || sizeClassMap.md;\n \n // 样式类\n const outlineClass = outline ? 'border border-current px-2 py-1 rounded' : '';\n const dashClass = dash ? 'border border-dashed border-current px-2 py-1 rounded' : '';\n const softClass = soft ? 'bg-opacity-10 bg-current px-2 py-1 rounded' : '';\n const boldClass = bold ? 'font-bold' : '';\n const italicClass = italic ? 'italic' : '';\n const underlineClass = underline ? 'underline' : '';\n const ellipsisClass = ellipsis ? 'truncate' : '';\n \n // 组合所有类名\n const labelClasses = [\n baseClass,\n variantClass,\n sizeClass,\n outlineClass,\n dashClass,\n softClass,\n boldClass,\n italicClass,\n underlineClass,\n ellipsisClass,\n className\n ].filter(Boolean).join(' ');\n \n // 处理事件\n const handleClick = (e: React.MouseEvent) => {\n updateState('clicked');\n onClick && onClick(e);\n };\n \n const handleDoubleClick = (e: React.MouseEvent) => {\n updateState('doubleClicked');\n onDoubleClick && onDoubleClick(e);\n };\n \n const handleMouseEnter = (e: React.MouseEvent) => {\n updateState('hover');\n onMouseEnter && onMouseEnter(e);\n };\n \n const handleMouseLeave = (e: React.MouseEvent) => {\n updateState('default');\n onMouseLeave && onMouseLeave(e);\n };\n \n const handleDragStart = (e: DragEvent<HTMLSpanElement>) => {\n updateState('dragging');\n onDragStart && onDragStart(e);\n };\n \n const handleDragEnd = (e: DragEvent<HTMLSpanElement>) => {\n updateState('default');\n onDragEnd && onDragEnd(e);\n };\n \n // 获取当前状态的自定义样式和类\n const stateStyle = styleConfig[state]?.style || {};\n const stateClassName = styleConfig[state]?.className || '';\n \n // 合并样式\n const combinedStyle = {\n ...style,\n ...stateStyle,\n ...(maxWidth ? { maxWidth } : {}),\n ...(ellipsis ? { display: 'inline-block', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' } : {})\n };\n \n // 最终类名\n const finalClassName = `${labelClasses} ${stateClassName}`.trim();\n \n return (\n <span\n className={finalClassName}\n style={combinedStyle}\n onClick={handleClick}\n onDoubleClick={handleDoubleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n draggable={draggable}\n >\n {children}\n </span>\n );\n};\n\nexport default Label; "],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Label/index.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, DragEvent } from 'react';\nimport { cn } from '../../utils/cn';\n\n// 扩展LabelState类型为字符串,允许用户定义任意状态\nexport type LabelState = string;\n\nexport type LabelStyleConfig = {\n [key: string]: {\n className?: string;\n style?: React.CSSProperties;\n }\n};\n\nexport type LabelProps = {\n children: React.ReactNode;\n variant?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n outline?: boolean;\n dash?: boolean;\n soft?: boolean;\n bold?: boolean;\n italic?: boolean;\n underline?: boolean;\n ellipsis?: boolean;\n maxWidth?: string;\n stateTimeout?: number;\n styleConfig?: LabelStyleConfig;\n // 新增属性:用户自定义状态\n state?: LabelState;\n // 新增属性:状态变化回调\n onStateChange?: (newState: LabelState) => void;\n onClick?: (e: React.MouseEvent) => void;\n onDoubleClick?: (e: React.MouseEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onDragStart?: (e: DragEvent<HTMLSpanElement>) => void;\n onDragEnd?: (e: DragEvent<HTMLSpanElement>) => void;\n draggable?: boolean;\n className?: string;\n style?: React.CSSProperties;\n};\n\nconst Label = ({\n children,\n variant = 'neutral',\n size = 'sm',\n outline = false,\n dash = false,\n soft = false,\n bold = false,\n italic = false,\n underline = false,\n ellipsis = false,\n maxWidth,\n stateTimeout,\n styleConfig = {},\n // 使用用户传入的状态,默认为'default'\n state: userState,\n onStateChange,\n onClick,\n onDoubleClick,\n onMouseEnter,\n onMouseLeave,\n onDragStart,\n onDragEnd,\n draggable = false,\n className = '',\n style = {},\n}: LabelProps) => {\n // 当用户传入state时使用用户的状态,否则内部管理状态\n const [internalState, setInternalState] = useState<LabelState>('default');\n const state = userState !== undefined ? userState : internalState;\n \n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n \n // 更新状态的函数,同时执行回调\n const updateState = (newState: LabelState) => {\n if (userState === undefined) {\n setInternalState(newState);\n }\n onStateChange?.(newState);\n resetStateTimeout(newState);\n };\n \n // 重置状态计时器\n const resetStateTimeout = (currentState: LabelState = state) => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n \n if (stateTimeout && currentState !== 'default' && userState === undefined) {\n timeoutRef.current = setTimeout(() => {\n setInternalState('default');\n onStateChange?.('default');\n }, stateTimeout);\n }\n };\n \n // 当状态变化或stateTimeout变化时重置计时器\n useEffect(() => {\n resetStateTimeout();\n \n // 清除计时器\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, [state, stateTimeout, userState]);\n \n // 尺寸类映射\n const sizeClassMap = {\n 'xs': 'text-xs',\n 'sm': 'text-sm',\n 'md': 'text-base',\n 'lg': 'text-lg',\n 'xl': 'text-xl',\n };\n const sizeClass = sizeClassMap[size] || sizeClassMap.md;\n \n // 样式类(依托 daisyUI badge 的 outline/dash/soft 外观,保证与主题联动)\n const decorated = outline || dash || soft;\n // 基础类:普通文本 label;带装饰时用 badge 充当“标签”容器\n //(装饰态不叠加 text-${variant}/dark:text-white,避免与 badge 自身前景色冲突)\n const baseClass = decorated ? 'badge' : 'label dark:text-white';\n const variantClass = !decorated && variant ? `text-${variant}` : '';\n const outlineClass = outline ? 'badge-outline' : '';\n const dashClass = dash ? 'badge-dash' : '';\n const softClass = soft ? 'badge-soft' : '';\n // 为带装饰的标签补上色调变体(badge-${variant}),让边框/底色跟随 variant\n const badgeVariantClass = decorated && variant && variant !== 'neutral' ? `badge-${variant}` : '';\n const boldClass = bold ? 'font-bold' : '';\n const italicClass = italic ? 'italic' : '';\n const underlineClass = underline ? 'underline' : '';\n const ellipsisClass = ellipsis ? 'truncate' : '';\n \n // 组合所有类名\n const labelClasses = cn(\n baseClass,\n variantClass,\n sizeClass,\n outlineClass,\n dashClass,\n softClass,\n badgeVariantClass,\n boldClass,\n italicClass,\n underlineClass,\n ellipsisClass,\n className\n );\n \n // 处理事件\n const handleClick = (e: React.MouseEvent) => {\n updateState('clicked');\n onClick?.(e);\n };\n \n const handleDoubleClick = (e: React.MouseEvent) => {\n updateState('doubleClicked');\n onDoubleClick?.(e);\n };\n \n const handleMouseEnter = (e: React.MouseEvent) => {\n updateState('hover');\n onMouseEnter?.(e);\n };\n \n const handleMouseLeave = (e: React.MouseEvent) => {\n updateState('default');\n onMouseLeave?.(e);\n };\n \n const handleDragStart = (e: DragEvent<HTMLSpanElement>) => {\n updateState('dragging');\n onDragStart?.(e);\n };\n \n const handleDragEnd = (e: DragEvent<HTMLSpanElement>) => {\n updateState('default');\n onDragEnd?.(e);\n };\n \n // 获取当前状态的自定义样式和类\n const stateStyle = styleConfig[state]?.style || {};\n const stateClassName = styleConfig[state]?.className || '';\n \n // 合并样式\n const combinedStyle = {\n ...style,\n ...stateStyle,\n ...(maxWidth ? { maxWidth } : {}),\n ...(ellipsis ? { display: 'inline-block', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' } : {})\n };\n \n // 最终类名\n const finalClassName = cn(labelClasses, stateClassName);\n \n return (\n <span\n className={finalClassName}\n style={combinedStyle}\n onClick={handleClick}\n onDoubleClick={handleDoubleClick}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n draggable={draggable}\n >\n {children}\n </span>\n );\n};\n\nexport default Label; "],"mappings":";;;;AA0CA,IAAM,KAAS,EACb,aACA,aAAU,WACV,UAAO,MACP,aAAU,IACV,UAAO,IACP,UAAO,IACP,UAAO,IACP,YAAS,IACT,eAAY,IACZ,cAAW,IACX,aACA,iBACA,iBAAc,CAAC,GAEf,OAAO,GACP,kBACA,YACA,kBACA,iBACA,iBACA,gBACA,cACA,eAAY,IACZ,eAAY,IACZ,WAAQ,CAAC,QACO;CAEhB,IAAM,CAAC,GAAe,KAAoB,EAAqB,SAAS,GAClE,IAAQ,MAAc,KAAA,IAAwB,IAAZ,GAElC,IAAa,EAA6C,IAAI,GAG9D,KAAe,MAAyB;EAK5C,AAJI,MAAc,KAAA,KAChB,EAAiB,CAAQ,GAE3B,IAAgB,CAAQ,GACxB,EAAkB,CAAQ;CAC5B,GAGM,KAAqB,IAA2B,MAAU;EAM9D,AALA,AAEE,EAAW,aADX,aAAa,EAAW,OAAO,GACV,OAGnB,KAAgB,MAAiB,aAAa,MAAc,KAAA,MAC9D,EAAW,UAAU,iBAAiB;GAEpC,AADA,EAAiB,SAAS,GAC1B,IAAgB,SAAS;EAC3B,GAAG,CAAY;CAEnB;CAGA,SACE,EAAkB,SAGL;EACX,AAAI,EAAW,WACb,aAAa,EAAW,OAAO;CAEnC,IACC;EAAC;EAAO;EAAc;CAAS,CAAC;CAGnC,IAAM,IAAe;EACnB,IAAM;EACN,IAAM;EACN,IAAM;EACN,IAAM;EACN,IAAM;CACR,GACM,KAAY,EAAa,MAAS,EAAa,IAG/C,IAAY,KAAW,KAAQ,GAG/B,IAAY,IAAY,UAAU,yBAClC,IAAe,CAAC,KAAa,IAAU,QAAQ,MAAY,IAC3D,IAAe,IAAU,kBAAkB,IAC3C,IAAY,IAAO,eAAe,IAClC,IAAY,IAAO,eAAe,IAElC,IAAoB,KAAa,KAAW,MAAY,YAAY,SAAS,MAAY,IAOzF,IAAe,EACnB,GACA,GACA,IACA,GACA,GACA,GACA,GAbgB,IAAO,cAAc,IACnB,IAAS,WAAW,IACjB,IAAY,cAAc,IAC3B,IAAW,aAAa,IAe5C,CACF,GAGM,KAAe,MAAwB;EAE3C,AADA,EAAY,SAAS,GACrB,IAAU,CAAC;CACb,GAEM,KAAqB,MAAwB;EAEjD,AADA,EAAY,eAAe,GAC3B,IAAgB,CAAC;CACnB,GAEM,KAAoB,MAAwB;EAEhD,AADA,EAAY,OAAO,GACnB,IAAe,CAAC;CAClB,GAEM,KAAoB,MAAwB;EAEhD,AADA,EAAY,SAAS,GACrB,IAAe,CAAC;CAClB,GAEM,KAAmB,MAAkC;EAEzD,AADA,EAAY,UAAU,GACtB,IAAc,CAAC;CACjB,GAEM,KAAiB,MAAkC;EAEvD,AADA,EAAY,SAAS,GACrB,IAAY,CAAC;CACf,GAGM,IAAa,EAAY,EAAM,EAAE,SAAS,CAAC,GAC3C,IAAiB,EAAY,EAAM,EAAE,aAAa,IAGlD,IAAgB;EACpB,GAAG;EACH,GAAG;EACH,GAAI,IAAW,EAAE,YAAS,IAAI,CAAC;EAC/B,GAAI,IAAW;GAAE,SAAS;GAAgB,UAAU;GAAU,cAAc;GAAY,YAAY;EAAS,IAAI,CAAC;CACpH,GAGM,IAAiB,EAAG,GAAc,CAAc;CAEtD,OACE,kBAAC,QAAD;EACE,WAAW;EACX,OAAO;EACP,SAAS;EACT,eAAe;EACf,cAAc;EACd,cAAc;EACd,aAAa;EACb,WAAW;EACA;EAEV;CACG,CAAA;AAEV"}
@@ -1,142 +1,137 @@
1
- import { forwardRef as m } from "react";
2
- import { jsx as f } from "react/jsx-runtime";
3
- var j = {
4
- sm: "640px",
5
- md: "768px",
6
- lg: "1024px",
7
- xl: "1280px",
8
- "2xl": "1536px",
9
- full: "100%"
10
- }, y = (t) => typeof t == "number" ? `${t}px` : t, $ = (t) => typeof t == "string" ? j[t] ?? t : y(t), h = (t) => t === "start" || t === "end" ? `flex-${t}` : t, w = (t) => typeof t == "string" ? {
11
- start: "flex-start",
12
- end: "flex-end",
13
- between: "space-between",
14
- around: "space-around",
15
- evenly: "space-evenly"
16
- }[t] ?? t : t, p = (t) => typeof t == "number" ? `${t}px` : t, g = (t, r) => {
17
- if (!Number.isInteger(t) || t <= 0) throw new Error(`Layout.${r} must be a positive integer.`);
18
- return t;
19
- }, L = (t, r) => {
20
- if (!Number.isFinite(t) || t <= 0) throw new Error(`Layout.${r} must be a positive number.`);
21
- return t;
22
- }, C = (t) => {
23
- if (typeof t == "number") return `repeat(${g(t, "Grid columns")}, minmax(0, 1fr))`;
24
- if (typeof t == "string") return t;
25
- if (t.length === 0) throw new Error("Layout.Grid columns ratio must contain at least one value.");
26
- return t.map((r) => `${L(r, "Grid ratio")}fr`).join(" ");
27
- }, v = (t) => typeof t == "number" ? `span ${g(t, "Grid.Item span")} / span ${t}` : t, G = (t, r) => typeof t == "number" ? g(t, r) : t, N = m(function({ maxWidth: r = 1280, padding: e = "1rem", centered: o = !0, fluid: n = !1, responsive: a = !1, className: s = "", style: d, ...i }, l) {
28
- return /* @__PURE__ */ f("div", {
29
- ref: l,
30
- className: ["dishui-layout-container", s].filter(Boolean).join(" "),
31
- style: {
32
- width: "100%",
33
- maxWidth: n ? void 0 : $(r),
34
- marginInline: o && !n ? "auto" : void 0,
35
- paddingInline: a ? `clamp(${y(e)}, 4vw, max(${y(e)}, 2rem))` : y(e),
36
- ...d
37
- },
38
- ...i
39
- });
40
- }), S = m(function({ span: r, start: e, offset: o, rowSpan: n, rowStart: a, className: s = "", style: d, ...i }, l) {
41
- return /* @__PURE__ */ f("div", {
42
- ref: l,
43
- className: ["dishui-layout-grid-item", s].filter(Boolean).join(" "),
44
- style: {
45
- gridColumn: v(r),
46
- gridColumnStart: G(e ?? (o !== void 0 ? g(o + 1, "Grid.Item offset") : void 0), "Grid.Item start"),
47
- gridRow: v(n),
48
- gridRowStart: G(a, "Grid.Item rowStart"),
49
- minWidth: 0,
50
- ...d
51
- },
52
- ...i
53
- });
54
- }), W = m(function({ columns: r = 12, gap: e, space: o, rowGap: n, columnGap: a, align: s, justify: d, autoRows: i, dense: l = !1, className: u = "", style: c, ...x }, I) {
55
- return /* @__PURE__ */ f("div", {
56
- ref: I,
57
- className: ["dishui-layout-grid", u].filter(Boolean).join(" "),
58
- style: {
59
- display: "grid",
60
- gridTemplateColumns: C(r),
61
- gap: p(e ?? o),
62
- rowGap: p(n),
63
- columnGap: p(a),
64
- alignItems: h(s),
65
- justifyContent: w(d),
66
- gridAutoRows: i,
67
- gridAutoFlow: l ? "row dense" : void 0,
68
- ...c
69
- },
70
- ...x
71
- });
72
- }), B = m(function({ direction: r = "row", wrap: e = "nowrap", align: o = "center", justify: n = "start", gap: a, fullWidth: s = !1, className: d = "", style: i, ...l }, u) {
73
- return /* @__PURE__ */ f("div", {
74
- ref: u,
75
- className: ["dishui-layout-group", d].filter(Boolean).join(" "),
76
- style: {
77
- display: "flex",
78
- width: s ? "100%" : void 0,
79
- flexDirection: r,
80
- flexWrap: e,
81
- alignItems: h(o),
82
- justifyContent: w(n),
83
- gap: p(a),
84
- ...i
85
- },
86
- ...l
87
- });
88
- }), R = m(function({ direction: r = "horizontal", size: e = 16, flex: o, className: n = "", style: a, ...s }, d) {
89
- const i = y(e);
90
- return /* @__PURE__ */ f("span", {
91
- ref: d,
92
- "aria-hidden": "true",
93
- className: ["dishui-layout-space", n].filter(Boolean).join(" "),
94
- style: {
95
- display: "block",
96
- flex: o ?? "0 0 auto",
97
- width: r === "horizontal" ? i : "100%",
98
- minWidth: r === "horizontal" ? i : void 0,
99
- height: r === "vertical" ? i : 1,
100
- minHeight: r === "vertical" ? i : void 0,
101
- pointerEvents: "none",
102
- ...a
103
- },
104
- ...s
105
- });
106
- }), z = m(function({ direction: r = "row", wrap: e = "nowrap", align: o, justify: n, gap: a, rowGap: s, columnGap: d, inline: i = !1, className: l = "", style: u, ...c }, x) {
107
- return /* @__PURE__ */ f("div", {
108
- ref: x,
109
- className: ["dishui-layout-flex", l].filter(Boolean).join(" "),
110
- style: {
111
- display: i ? "inline-flex" : "flex",
112
- flexDirection: r,
113
- flexWrap: e,
114
- alignItems: h(o),
115
- justifyContent: w(n),
116
- gap: p(a),
117
- rowGap: p(s),
118
- columnGap: p(d),
119
- ...u
120
- },
121
- ...c
122
- });
123
- }), b = W;
124
- b.Item = S;
125
- var D = {
126
- Container: N,
127
- Grid: b,
128
- Flex: z,
129
- Group: B,
130
- Space: R
131
- };
132
- export {
133
- N as Container,
134
- z as Flex,
135
- b as Grid,
136
- S as GridItem,
137
- B as Group,
138
- R as Space,
139
- D as default
1
+ import { cn as e } from "../../utils/cn.js";
2
+ import { forwardRef as t } from "react";
3
+ import { jsx as n } from "react/jsx-runtime";
4
+ //#region src/components/Layout/index.tsx
5
+ var r = {
6
+ sm: "640px",
7
+ md: "768px",
8
+ lg: "1024px",
9
+ xl: "1280px",
10
+ "2xl": "1536px",
11
+ full: "100%"
12
+ }, i = (e) => typeof e == "number" ? `${e}px` : e, a = (e) => typeof e == "string" ? r[e] ?? e : i(e), o = (e) => e === "start" || e === "end" ? `flex-${e}` : e, s = (e) => typeof e == "string" ? {
13
+ start: "flex-start",
14
+ end: "flex-end",
15
+ between: "space-between",
16
+ around: "space-around",
17
+ evenly: "space-evenly"
18
+ }[e] ?? e : e, c = (e) => typeof e == "number" ? `${e}px` : e, l = (e, t) => {
19
+ if (!Number.isInteger(e) || e <= 0) throw Error(`Layout.${t} must be a positive integer.`);
20
+ return e;
21
+ }, u = (e, t) => {
22
+ if (!Number.isFinite(e) || e <= 0) throw Error(`Layout.${t} must be a positive number.`);
23
+ return e;
24
+ }, d = (e) => {
25
+ if (typeof e == "number") return `repeat(${l(e, "Grid columns")}, minmax(0, 1fr))`;
26
+ if (typeof e == "string") return e;
27
+ if (e.length === 0) throw Error("Layout.Grid columns ratio must contain at least one value.");
28
+ return e.map((e) => `${u(e, "Grid ratio")}fr`).join(" ");
29
+ }, f = (e) => typeof e == "number" ? `span ${l(e, "Grid.Item span")} / span ${e}` : e, p = (e, t) => typeof e == "number" ? l(e, t) : e, m = t(function({ maxWidth: t = 1280, padding: r = "1rem", centered: o = !0, fluid: s = !1, responsive: c = !1, className: l = "", style: u, ...d }, f) {
30
+ return /* @__PURE__ */ n("div", {
31
+ ref: f,
32
+ className: e("dishui-layout-container", l),
33
+ style: {
34
+ width: "100%",
35
+ maxWidth: s ? void 0 : a(t),
36
+ marginInline: o && !s ? "auto" : void 0,
37
+ paddingInline: c ? `clamp(${i(r)}, 4vw, max(${i(r)}, 2rem))` : i(r),
38
+ ...u
39
+ },
40
+ ...d
41
+ });
42
+ }), h = t(function({ span: t, start: r, offset: i, rowSpan: a, rowStart: o, className: s = "", style: c, ...u }, d) {
43
+ return /* @__PURE__ */ n("div", {
44
+ ref: d,
45
+ className: e("dishui-layout-grid-item", s),
46
+ style: {
47
+ gridColumn: f(t),
48
+ gridColumnStart: p(r ?? (i === void 0 ? void 0 : l(i + 1, "Grid.Item offset")), "Grid.Item start"),
49
+ gridRow: f(a),
50
+ gridRowStart: p(o, "Grid.Item rowStart"),
51
+ minWidth: 0,
52
+ ...c
53
+ },
54
+ ...u
55
+ });
56
+ }), g = t(function({ columns: t = 12, gap: r, space: i, rowGap: a, columnGap: l, align: u, justify: f, autoRows: p, dense: m = !1, className: h = "", style: g, ..._ }, v) {
57
+ return /* @__PURE__ */ n("div", {
58
+ ref: v,
59
+ className: e("dishui-layout-grid", h),
60
+ style: {
61
+ display: "grid",
62
+ gridTemplateColumns: d(t),
63
+ gap: c(r ?? i),
64
+ rowGap: c(a),
65
+ columnGap: c(l),
66
+ alignItems: o(u),
67
+ justifyContent: s(f),
68
+ gridAutoRows: p,
69
+ gridAutoFlow: m ? "row dense" : void 0,
70
+ ...g
71
+ },
72
+ ..._
73
+ });
74
+ }), _ = t(function({ direction: t = "row", wrap: r = "nowrap", align: i = "center", justify: a = "start", gap: l, fullWidth: u = !1, className: d = "", style: f, ...p }, m) {
75
+ return /* @__PURE__ */ n("div", {
76
+ ref: m,
77
+ className: e("dishui-layout-group", d),
78
+ style: {
79
+ display: "flex",
80
+ width: u ? "100%" : void 0,
81
+ flexDirection: t,
82
+ flexWrap: r,
83
+ alignItems: o(i),
84
+ justifyContent: s(a),
85
+ gap: c(l),
86
+ ...f
87
+ },
88
+ ...p
89
+ });
90
+ }), v = t(function({ direction: t = "horizontal", size: r = 16, flex: a, className: o = "", style: s, ...c }, l) {
91
+ let u = i(r);
92
+ return /* @__PURE__ */ n("span", {
93
+ ref: l,
94
+ "aria-hidden": "true",
95
+ className: e("dishui-layout-space", o),
96
+ style: {
97
+ display: "block",
98
+ flex: a ?? "0 0 auto",
99
+ width: t === "horizontal" ? u : "100%",
100
+ minWidth: t === "horizontal" ? u : void 0,
101
+ height: t === "vertical" ? u : 1,
102
+ minHeight: t === "vertical" ? u : void 0,
103
+ pointerEvents: "none",
104
+ ...s
105
+ },
106
+ ...c
107
+ });
108
+ }), y = t(function({ direction: t = "row", wrap: r = "nowrap", align: i, justify: a, gap: l, rowGap: u, columnGap: d, inline: f = !1, className: p = "", style: m, ...h }, g) {
109
+ return /* @__PURE__ */ n("div", {
110
+ ref: g,
111
+ className: e("dishui-layout-flex", p),
112
+ style: {
113
+ display: f ? "inline-flex" : "flex",
114
+ flexDirection: t,
115
+ flexWrap: r,
116
+ alignItems: o(i),
117
+ justifyContent: s(a),
118
+ gap: c(l),
119
+ rowGap: c(u),
120
+ columnGap: c(d),
121
+ ...m
122
+ },
123
+ ...h
124
+ });
125
+ }), b = g;
126
+ b.Item = h;
127
+ var x = {
128
+ Container: m,
129
+ Grid: b,
130
+ Flex: y,
131
+ Group: _,
132
+ Space: v
140
133
  };
134
+ //#endregion
135
+ export { m as Container, y as Flex, b as Grid, h as GridItem, _ as Group, v as Space, x as default };
141
136
 
142
137
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Layout/index.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\n\nexport type LayoutGap = number | string;\nexport type GridColumns = number | readonly number[] | string;\nexport type GridPlacement = number | string;\nexport type LayoutMaxWidth = number | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | string;\nexport type LayoutAlign = React.CSSProperties['alignItems'] | 'start' | 'end';\nexport type LayoutJustify = React.CSSProperties['justifyContent'] | 'start' | 'end' | 'between' | 'around' | 'evenly';\n\nexport type LayoutContainerProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Maximum content width. Numbers are interpreted as pixels. */\n maxWidth?: LayoutMaxWidth;\n /** Horizontal container padding. Numbers are interpreted as pixels. */\n padding?: number | string;\n /** Centers the container when a max width is applied. */\n centered?: boolean;\n /** Makes the container span the available width. */\n fluid?: boolean;\n /** Uses adaptive horizontal padding that grows with the viewport. */\n responsive?: boolean;\n};\n\nexport type LayoutGridProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Column count (12 by default) or a custom ratio such as [1, 2, 1] or \"1fr 2fr 1fr\". */\n columns?: GridColumns;\n gap?: LayoutGap;\n /** Alias for gap. gap takes precedence when both are provided. */\n space?: LayoutGap;\n rowGap?: LayoutGap;\n columnGap?: LayoutGap;\n align?: LayoutAlign;\n justify?: LayoutJustify;\n autoRows?: React.CSSProperties['gridAutoRows'];\n dense?: boolean;\n};\n\nexport type LayoutGridItemProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Number of grid tracks to span, or a valid CSS grid-column value. */\n span?: GridPlacement;\n /** One-based grid column start, or a valid CSS grid-column-start value. */\n start?: GridPlacement;\n /** Number of empty tracks before the item. Ignored when start is set. */\n offset?: number;\n rowSpan?: GridPlacement;\n rowStart?: GridPlacement;\n};\n\nexport type LayoutFlexProps = React.HTMLAttributes<HTMLDivElement> & {\n direction?: React.CSSProperties['flexDirection'];\n wrap?: React.CSSProperties['flexWrap'];\n align?: LayoutAlign;\n justify?: LayoutJustify;\n gap?: LayoutGap;\n rowGap?: LayoutGap;\n columnGap?: LayoutGap;\n inline?: boolean;\n};\n\nexport type LayoutGroupProps = React.HTMLAttributes<HTMLDivElement> & {\n direction?: React.CSSProperties['flexDirection'];\n wrap?: React.CSSProperties['flexWrap'];\n align?: LayoutAlign;\n justify?: LayoutJustify;\n gap?: LayoutGap;\n fullWidth?: boolean;\n};\n\nexport type LayoutSpaceProps = React.HTMLAttributes<HTMLSpanElement> & {\n direction?: 'horizontal' | 'vertical';\n /** Width for horizontal spaces and height for vertical spaces. */\n size?: number | string;\n /** Makes the spacer consume remaining flex space. */\n flex?: number | string;\n};\n\nconst maxWidths: Record<string, string> = {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n full: '100%',\n};\n\nconst cssSize = (value: number | string | undefined): string | undefined =>\n typeof value === 'number' ? `${value}px` : value;\n\nconst cssMaxWidth = (value: LayoutMaxWidth | undefined): string | undefined =>\n typeof value === 'string' ? maxWidths[value] ?? value : cssSize(value);\n\nconst cssAlign = (value: LayoutAlign | undefined): React.CSSProperties['alignItems'] =>\n value === 'start' || value === 'end' ? `flex-${value}` : value;\n\nconst cssJustify = (value: LayoutJustify | undefined): React.CSSProperties['justifyContent'] => {\n const aliases: Record<string, React.CSSProperties['justifyContent']> = {\n start: 'flex-start',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n };\n return typeof value === 'string' ? aliases[value] ?? value : value;\n};\n\nconst cssGap = (value: LayoutGap | undefined): string | undefined =>\n typeof value === 'number' ? `${value}px` : value;\n\nconst positiveInteger = (value: number, name: string): number => {\n if (!Number.isInteger(value) || value <= 0) {\n throw new Error(`Layout.${name} must be a positive integer.`);\n }\n return value;\n};\n\nconst positiveNumber = (value: number, name: string): number => {\n if (!Number.isFinite(value) || value <= 0) {\n throw new Error(`Layout.${name} must be a positive number.`);\n }\n return value;\n};\n\nconst gridTemplateColumns = (columns: GridColumns): string => {\n if (typeof columns === 'number') {\n return `repeat(${positiveInteger(columns, 'Grid columns')}, minmax(0, 1fr))`;\n }\n\n if (typeof columns === 'string') {\n return columns;\n }\n\n if (columns.length === 0) {\n throw new Error('Layout.Grid columns ratio must contain at least one value.');\n }\n\n return columns\n .map((ratio) => `${positiveNumber(ratio, 'Grid ratio')}fr`)\n .join(' ');\n};\n\nconst gridSpan = (value: GridPlacement | undefined): string | number | undefined =>\n typeof value === 'number'\n ? `span ${positiveInteger(value, 'Grid.Item span')} / span ${value}`\n : value;\n\nconst gridStart = (value: GridPlacement | undefined, name: string): string | number | undefined =>\n typeof value === 'number' ? positiveInteger(value, name) : value;\n\nconst Container = forwardRef<HTMLDivElement, LayoutContainerProps>(function LayoutContainer(\n {\n maxWidth = 1280,\n padding = '1rem',\n centered = true,\n fluid = false,\n responsive = false,\n className = '',\n style,\n ...props\n },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={['dishui-layout-container', className].filter(Boolean).join(' ')}\n style={{\n width: '100%',\n maxWidth: fluid ? undefined : cssMaxWidth(maxWidth),\n marginInline: centered && !fluid ? 'auto' : undefined,\n paddingInline: responsive\n ? `clamp(${cssSize(padding)}, 4vw, max(${cssSize(padding)}, 2rem))`\n : cssSize(padding),\n ...style,\n }}\n {...props}\n />\n );\n});\n\nconst GridItem = forwardRef<HTMLDivElement, LayoutGridItemProps>(function LayoutGridItem(\n { span, start, offset, rowSpan, rowStart, className = '', style, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={['dishui-layout-grid-item', className].filter(Boolean).join(' ')}\n style={{\n gridColumn: gridSpan(span),\n gridColumnStart: gridStart(\n start ?? (offset !== undefined ? positiveInteger(offset + 1, 'Grid.Item offset') : undefined),\n 'Grid.Item start',\n ),\n gridRow: gridSpan(rowSpan),\n gridRowStart: gridStart(rowStart, 'Grid.Item rowStart'),\n minWidth: 0,\n ...style,\n }}\n {...props}\n />\n );\n});\n\nconst GridRoot = forwardRef<HTMLDivElement, LayoutGridProps>(function LayoutGrid(\n {\n columns = 12,\n gap,\n space,\n rowGap,\n columnGap,\n align,\n justify,\n autoRows,\n dense = false,\n className = '',\n style,\n ...props\n },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={['dishui-layout-grid', className].filter(Boolean).join(' ')}\n style={{\n display: 'grid',\n gridTemplateColumns: gridTemplateColumns(columns),\n gap: cssGap(gap ?? space),\n rowGap: cssGap(rowGap),\n columnGap: cssGap(columnGap),\n alignItems: cssAlign(align),\n justifyContent: cssJustify(justify),\n gridAutoRows: autoRows,\n gridAutoFlow: dense ? 'row dense' : undefined,\n ...style,\n }}\n {...props}\n />\n );\n});\n\nconst Group = forwardRef<HTMLDivElement, LayoutGroupProps>(function LayoutGroup(\n {\n direction = 'row',\n wrap = 'nowrap',\n align = 'center',\n justify = 'start',\n gap,\n fullWidth = false,\n className = '',\n style,\n ...props\n },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={['dishui-layout-group', className].filter(Boolean).join(' ')}\n style={{\n display: 'flex',\n width: fullWidth ? '100%' : undefined,\n flexDirection: direction,\n flexWrap: wrap,\n alignItems: cssAlign(align),\n justifyContent: cssJustify(justify),\n gap: cssGap(gap),\n ...style,\n }}\n {...props}\n />\n );\n});\n\nconst Space = forwardRef<HTMLSpanElement, LayoutSpaceProps>(function LayoutSpace(\n { direction = 'horizontal', size = 16, flex, className = '', style, ...props },\n ref,\n) {\n const dimension = cssSize(size);\n\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n className={['dishui-layout-space', className].filter(Boolean).join(' ')}\n style={{\n display: 'block',\n flex: flex ?? '0 0 auto',\n width: direction === 'horizontal' ? dimension : '100%',\n minWidth: direction === 'horizontal' ? dimension : undefined,\n height: direction === 'vertical' ? dimension : 1,\n minHeight: direction === 'vertical' ? dimension : undefined,\n pointerEvents: 'none',\n ...style,\n }}\n {...props}\n />\n );\n});\n\nconst Flex = forwardRef<HTMLDivElement, LayoutFlexProps>(function LayoutFlex(\n {\n direction = 'row',\n wrap = 'nowrap',\n align,\n justify,\n gap,\n rowGap,\n columnGap,\n inline = false,\n className = '',\n style,\n ...props\n },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={['dishui-layout-flex', className].filter(Boolean).join(' ')}\n style={{\n display: inline ? 'inline-flex' : 'flex',\n flexDirection: direction,\n flexWrap: wrap,\n alignItems: cssAlign(align),\n justifyContent: cssJustify(justify),\n gap: cssGap(gap),\n rowGap: cssGap(rowGap),\n columnGap: cssGap(columnGap),\n ...style,\n }}\n {...props}\n />\n );\n});\n\ninterface LayoutGridCompound extends React.ForwardRefExoticComponent<\n LayoutGridProps & React.RefAttributes<HTMLDivElement>\n> {\n Item: typeof GridItem;\n}\n\nconst Grid = GridRoot as LayoutGridCompound;\nGrid.Item = GridItem;\n\nexport interface LayoutCompound {\n Container: typeof Container;\n Grid: LayoutGridCompound;\n Flex: typeof Flex;\n Group: typeof Group;\n Space: typeof Space;\n}\n\nconst Layout: LayoutCompound = {\n Container,\n Grid,\n Flex,\n Group,\n Space,\n};\n\nexport { Container, Grid, GridItem, Flex, Group, Space };\nexport default Layout;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Layout/index.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type LayoutGap = number | string;\nexport type GridColumns = number | readonly number[] | string;\nexport type GridPlacement = number | string;\nexport type LayoutMaxWidth = number | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | string;\nexport type LayoutAlign = React.CSSProperties['alignItems'] | 'start' | 'end';\nexport type LayoutJustify = React.CSSProperties['justifyContent'] | 'start' | 'end' | 'between' | 'around' | 'evenly';\n\nexport type LayoutContainerProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Maximum content width. Numbers are interpreted as pixels. */\n maxWidth?: LayoutMaxWidth;\n /** Horizontal container padding. Numbers are interpreted as pixels. */\n padding?: number | string;\n /** Centers the container when a max width is applied. */\n centered?: boolean;\n /** Makes the container span the available width. */\n fluid?: boolean;\n /** Uses adaptive horizontal padding that grows with the viewport. */\n responsive?: boolean;\n};\n\nexport type LayoutGridProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Column count (12 by default) or a custom ratio such as [1, 2, 1] or \"1fr 2fr 1fr\". */\n columns?: GridColumns;\n gap?: LayoutGap;\n /** Alias for gap. gap takes precedence when both are provided. */\n space?: LayoutGap;\n rowGap?: LayoutGap;\n columnGap?: LayoutGap;\n align?: LayoutAlign;\n justify?: LayoutJustify;\n autoRows?: React.CSSProperties['gridAutoRows'];\n dense?: boolean;\n};\n\nexport type LayoutGridItemProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Number of grid tracks to span, or a valid CSS grid-column value. */\n span?: GridPlacement;\n /** One-based grid column start, or a valid CSS grid-column-start value. */\n start?: GridPlacement;\n /** Number of empty tracks before the item. Ignored when start is set. */\n offset?: number;\n rowSpan?: GridPlacement;\n rowStart?: GridPlacement;\n};\n\nexport type LayoutFlexProps = React.HTMLAttributes<HTMLDivElement> & {\n direction?: React.CSSProperties['flexDirection'];\n wrap?: React.CSSProperties['flexWrap'];\n align?: LayoutAlign;\n justify?: LayoutJustify;\n gap?: LayoutGap;\n rowGap?: LayoutGap;\n columnGap?: LayoutGap;\n inline?: boolean;\n};\n\nexport type LayoutGroupProps = React.HTMLAttributes<HTMLDivElement> & {\n direction?: React.CSSProperties['flexDirection'];\n wrap?: React.CSSProperties['flexWrap'];\n align?: LayoutAlign;\n justify?: LayoutJustify;\n gap?: LayoutGap;\n fullWidth?: boolean;\n};\n\nexport type LayoutSpaceProps = React.HTMLAttributes<HTMLSpanElement> & {\n direction?: 'horizontal' | 'vertical';\n /** Width for horizontal spaces and height for vertical spaces. */\n size?: number | string;\n /** Makes the spacer consume remaining flex space. */\n flex?: number | string;\n};\n\nconst maxWidths: Record<string, string> = {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n '2xl': '1536px',\n full: '100%',\n};\n\nconst cssSize = (value: number | string | undefined): string | undefined =>\n typeof value === 'number' ? `${value}px` : value;\n\nconst cssMaxWidth = (value: LayoutMaxWidth | undefined): string | undefined =>\n typeof value === 'string' ? maxWidths[value] ?? value : cssSize(value);\n\nconst cssAlign = (value: LayoutAlign | undefined): React.CSSProperties['alignItems'] =>\n value === 'start' || value === 'end' ? `flex-${value}` : value;\n\nconst cssJustify = (value: LayoutJustify | undefined): React.CSSProperties['justifyContent'] => {\n const aliases: Record<string, React.CSSProperties['justifyContent']> = {\n start: 'flex-start',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n };\n return typeof value === 'string' ? aliases[value] ?? value : value;\n};\n\nconst cssGap = (value: LayoutGap | undefined): string | undefined =>\n typeof value === 'number' ? `${value}px` : value;\n\nconst positiveInteger = (value: number, name: string): number => {\n if (!Number.isInteger(value) || value <= 0) {\n throw new Error(`Layout.${name} must be a positive integer.`);\n }\n return value;\n};\n\nconst positiveNumber = (value: number, name: string): number => {\n if (!Number.isFinite(value) || value <= 0) {\n throw new Error(`Layout.${name} must be a positive number.`);\n }\n return value;\n};\n\nconst gridTemplateColumns = (columns: GridColumns): string => {\n if (typeof columns === 'number') {\n return `repeat(${positiveInteger(columns, 'Grid columns')}, minmax(0, 1fr))`;\n }\n\n if (typeof columns === 'string') {\n return columns;\n }\n\n if (columns.length === 0) {\n throw new Error('Layout.Grid columns ratio must contain at least one value.');\n }\n\n return columns\n .map((ratio) => `${positiveNumber(ratio, 'Grid ratio')}fr`)\n .join(' ');\n};\n\nconst gridSpan = (value: GridPlacement | undefined): string | number | undefined =>\n typeof value === 'number'\n ? `span ${positiveInteger(value, 'Grid.Item span')} / span ${value}`\n : value;\n\nconst gridStart = (value: GridPlacement | undefined, name: string): string | number | undefined =>\n typeof value === 'number' ? positiveInteger(value, name) : value;\n\nconst Container = forwardRef<HTMLDivElement, LayoutContainerProps>(function LayoutContainer(\n {\n maxWidth = 1280,\n padding = '1rem',\n centered = true,\n fluid = false,\n responsive = false,\n className = '',\n style,\n ...props\n },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn('dishui-layout-container', className)}\n style={{\n width: '100%',\n maxWidth: fluid ? undefined : cssMaxWidth(maxWidth),\n marginInline: centered && !fluid ? 'auto' : undefined,\n paddingInline: responsive\n ? `clamp(${cssSize(padding)}, 4vw, max(${cssSize(padding)}, 2rem))`\n : cssSize(padding),\n ...style,\n }}\n {...props}\n />\n );\n});\n\nconst GridItem = forwardRef<HTMLDivElement, LayoutGridItemProps>(function LayoutGridItem(\n { span, start, offset, rowSpan, rowStart, className = '', style, ...props },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn('dishui-layout-grid-item', className)}\n style={{\n gridColumn: gridSpan(span),\n gridColumnStart: gridStart(\n start ?? (offset !== undefined ? positiveInteger(offset + 1, 'Grid.Item offset') : undefined),\n 'Grid.Item start',\n ),\n gridRow: gridSpan(rowSpan),\n gridRowStart: gridStart(rowStart, 'Grid.Item rowStart'),\n minWidth: 0,\n ...style,\n }}\n {...props}\n />\n );\n});\n\nconst GridRoot = forwardRef<HTMLDivElement, LayoutGridProps>(function LayoutGrid(\n {\n columns = 12,\n gap,\n space,\n rowGap,\n columnGap,\n align,\n justify,\n autoRows,\n dense = false,\n className = '',\n style,\n ...props\n },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn('dishui-layout-grid', className)}\n style={{\n display: 'grid',\n gridTemplateColumns: gridTemplateColumns(columns),\n gap: cssGap(gap ?? space),\n rowGap: cssGap(rowGap),\n columnGap: cssGap(columnGap),\n alignItems: cssAlign(align),\n justifyContent: cssJustify(justify),\n gridAutoRows: autoRows,\n gridAutoFlow: dense ? 'row dense' : undefined,\n ...style,\n }}\n {...props}\n />\n );\n});\n\nconst Group = forwardRef<HTMLDivElement, LayoutGroupProps>(function LayoutGroup(\n {\n direction = 'row',\n wrap = 'nowrap',\n align = 'center',\n justify = 'start',\n gap,\n fullWidth = false,\n className = '',\n style,\n ...props\n },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn('dishui-layout-group', className)}\n style={{\n display: 'flex',\n width: fullWidth ? '100%' : undefined,\n flexDirection: direction,\n flexWrap: wrap,\n alignItems: cssAlign(align),\n justifyContent: cssJustify(justify),\n gap: cssGap(gap),\n ...style,\n }}\n {...props}\n />\n );\n});\n\nconst Space = forwardRef<HTMLSpanElement, LayoutSpaceProps>(function LayoutSpace(\n { direction = 'horizontal', size = 16, flex, className = '', style, ...props },\n ref,\n) {\n const dimension = cssSize(size);\n\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n className={cn('dishui-layout-space', className)}\n style={{\n display: 'block',\n flex: flex ?? '0 0 auto',\n width: direction === 'horizontal' ? dimension : '100%',\n minWidth: direction === 'horizontal' ? dimension : undefined,\n height: direction === 'vertical' ? dimension : 1,\n minHeight: direction === 'vertical' ? dimension : undefined,\n pointerEvents: 'none',\n ...style,\n }}\n {...props}\n />\n );\n});\n\nconst Flex = forwardRef<HTMLDivElement, LayoutFlexProps>(function LayoutFlex(\n {\n direction = 'row',\n wrap = 'nowrap',\n align,\n justify,\n gap,\n rowGap,\n columnGap,\n inline = false,\n className = '',\n style,\n ...props\n },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={cn('dishui-layout-flex', className)}\n style={{\n display: inline ? 'inline-flex' : 'flex',\n flexDirection: direction,\n flexWrap: wrap,\n alignItems: cssAlign(align),\n justifyContent: cssJustify(justify),\n gap: cssGap(gap),\n rowGap: cssGap(rowGap),\n columnGap: cssGap(columnGap),\n ...style,\n }}\n {...props}\n />\n );\n});\n\ninterface LayoutGridCompound extends React.ForwardRefExoticComponent<\n LayoutGridProps & React.RefAttributes<HTMLDivElement>\n> {\n Item: typeof GridItem;\n}\n\nconst Grid = GridRoot as LayoutGridCompound;\nGrid.Item = GridItem;\n\nexport interface LayoutCompound {\n Container: typeof Container;\n Grid: LayoutGridCompound;\n Flex: typeof Flex;\n Group: typeof Group;\n Space: typeof Space;\n}\n\nconst Layout: LayoutCompound = {\n Container,\n Grid,\n Flex,\n Group,\n Space,\n};\n\nexport { Container, Grid, GridItem, Flex, Group, Space };\nexport default Layout;\n"],"mappings":"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"}