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 +1 @@
1
- {"version":3,"file":"FileExplorer.js","names":[],"sources":["../../../../src/components/pro/FileExplorer/FileExplorer.tsx"],"sourcesContent":["import React, { useState, useCallback, useEffect, useMemo, useRef } from 'react';\nimport { FileExplorerProps, FileEntry, ViewMode, SortConfig, SortField } from './types';\nimport { Breadcrumb } from './Breadcrumb';\nimport { Toolbar } from './Toolbar';\nimport { ListView } from './ListView';\nimport { GridView } from './GridView';\nimport { CreateDialog } from './CreateDialog';\nimport { FileUploader } from '../../FileUploader/FileUploader';\nimport type { UploadResult } from '../../FileUploader/types';\n\nconst defaultLabels = {\n loading: 'Loading...',\n emptyFolder: 'This folder is empty',\n items: 'items',\n uploadFiles: 'Upload',\n};\n\n// --- Sorting ---\n\nfunction compareEntries(a: FileEntry, b: FileEntry, field: SortField, direction: 'asc' | 'desc'): number {\n // Folders always first\n if (a.type !== b.type) {\n return a.type === 'folder' ? -1 : 1;\n }\n\n let cmp = 0;\n switch (field) {\n case 'name':\n cmp = a.name.localeCompare(b.name, undefined, { sensitivity: 'base' });\n break;\n case 'size':\n cmp = (a.size || 0) - (b.size || 0);\n break;\n case 'modifiedAt': {\n const dateA = a.modifiedAt ? new Date(a.modifiedAt).getTime() : 0;\n const dateB = b.modifiedAt ? new Date(b.modifiedAt).getTime() : 0;\n cmp = dateA - dateB;\n break;\n }\n case 'type': {\n const extA = a.name.split('.').pop()?.toLowerCase() || '';\n const extB = b.name.split('.').pop()?.toLowerCase() || '';\n cmp = extA.localeCompare(extB);\n break;\n }\n }\n\n return direction === 'desc' ? -cmp : cmp;\n}\n\nexport const FileExplorer: React.FC<FileExplorerProps> = ({\n adapter,\n uploadAdapter,\n initialPath = '/',\n viewMode: initialViewMode = 'list',\n enableCreate = false,\n enableDelete = false,\n enableRename = false,\n enableUpload = false,\n uploadAccept,\n uploadMaxFileSize,\n className = '',\n labels: userLabels,\n onFileSelect,\n onPathChange,\n onUploadComplete,\n onUploadError,\n}) => {\n const labels = { ...defaultLabels, ...userLabels };\n\n // State\n const [currentPath, setCurrentPath] = useState(initialPath);\n const [entries, setEntries] = useState<FileEntry[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [viewMode, setViewMode] = useState<ViewMode>(initialViewMode);\n const [sortConfig, setSortConfig] = useState<SortConfig>({ field: 'name', direction: 'asc' });\n const [createType, setCreateType] = useState<'file' | 'folder' | null>(null);\n const [showUploader, setShowUploader] = useState(false);\n\n // Fetch entries when path changes\n const fetchEntries = useCallback(async (path: string) => {\n setIsLoading(true);\n try {\n const result = await adapter.list(path);\n setEntries(result);\n } catch (err) {\n console.error('Failed to list directory:', err);\n setEntries([]);\n } finally {\n setIsLoading(false);\n }\n }, [adapter]);\n\n useEffect(() => {\n fetchEntries(currentPath);\n }, [currentPath, fetchEntries]);\n\n // Navigate to a path\n const navigateTo = useCallback((path: string) => {\n setCurrentPath(path);\n setSearchQuery('');\n setCreateType(null);\n setShowUploader(false);\n onPathChange?.(path);\n }, [onPathChange]);\n\n // Filter + sort entries\n const processedEntries = useMemo(() => {\n let filtered = entries;\n\n if (searchQuery) {\n const q = searchQuery.toLowerCase();\n filtered = entries.filter(e => e.name.toLowerCase().includes(q));\n }\n\n return [...filtered].sort((a, b) => compareEntries(a, b, sortConfig.field, sortConfig.direction));\n }, [entries, searchQuery, sortConfig]);\n\n // Entry click: select file or navigate into folder\n const handleEntryClick = useCallback((entry: FileEntry) => {\n if (entry.type === 'folder') {\n navigateTo(entry.path);\n } else {\n onFileSelect?.(entry);\n }\n }, [navigateTo, onFileSelect]);\n\n const handleEntryDoubleClick = useCallback((entry: FileEntry) => {\n if (entry.type === 'folder') {\n navigateTo(entry.path);\n } else {\n onFileSelect?.(entry);\n }\n }, [navigateTo, onFileSelect]);\n\n // Delete\n const handleDelete = useCallback(async (entry: FileEntry) => {\n if (!adapter.delete) return;\n try {\n await adapter.delete(entry.path);\n setEntries(prev => prev.filter(e => e.path !== entry.path));\n } catch (err) {\n console.error('Failed to delete:', err);\n }\n }, [adapter]);\n\n // Rename\n const handleRename = useCallback(async (entry: FileEntry) => {\n if (!adapter.rename) return;\n const newName = window.prompt('New name:', entry.name);\n if (!newName || newName === entry.name) return;\n try {\n const updated = await adapter.rename(entry.path, newName);\n setEntries(prev => prev.map(e => e.path === entry.path ? updated : e));\n } catch (err) {\n console.error('Failed to rename:', err);\n }\n }, [adapter]);\n\n // Create folder / file\n const handleCreate = useCallback(async (name: string) => {\n if (!createType) return;\n\n try {\n let newEntry: FileEntry | undefined;\n if (createType === 'folder' && adapter.createFolder) {\n newEntry = await adapter.createFolder(currentPath, name);\n } else if (createType === 'file' && adapter.createFile) {\n newEntry = await adapter.createFile(currentPath, name);\n }\n if (newEntry) {\n setEntries(prev => [...prev, newEntry!]);\n }\n } catch (err) {\n console.error('Failed to create:', err);\n } finally {\n setCreateType(null);\n }\n }, [createType, currentPath, adapter]);\n\n // Upload complete: refresh listing and notify parent\n const handleUploadComplete = useCallback((results: UploadResult[]) => {\n // Refresh the current directory listing to show newly uploaded files\n fetchEntries(currentPath);\n onUploadComplete?.(results);\n }, [fetchEntries, currentPath, onUploadComplete]);\n\n const hasUpload = enableUpload && !!uploadAdapter;\n\n return (\n <div className={`flex flex-col bg-base-100 rounded-xl border border-base-300 overflow-hidden shadow-lg ${className}`}>\n {/* Breadcrumb */}\n <div className=\"border-b border-base-300 px-2\">\n <Breadcrumb\n path={currentPath}\n labels={labels}\n adapter={adapter}\n onNavigate={navigateTo}\n />\n </div>\n\n {/* Toolbar */}\n <Toolbar\n searchQuery={searchQuery}\n onSearchChange={setSearchQuery}\n viewMode={viewMode}\n onViewModeChange={setViewMode}\n sortConfig={sortConfig}\n onSortChange={setSortConfig}\n enableCreate={enableCreate}\n hasCreateFolder={!!adapter.createFolder}\n hasCreateFile={!!adapter.createFile}\n onCreateFolder={() => setCreateType('folder')}\n onCreateFile={() => setCreateType('file')}\n enableUpload={hasUpload}\n onUploadFiles={() => setShowUploader(prev => !prev)}\n labels={labels}\n />\n\n {/* Create dialog */}\n {createType && (\n <div className=\"px-3 py-2 border-b border-base-300\">\n <CreateDialog\n type={createType}\n labels={labels}\n onConfirm={handleCreate}\n onCancel={() => setCreateType(null)}\n />\n </div>\n )}\n\n {/* Upload panel */}\n {showUploader && uploadAdapter && (\n <div className=\"px-3 py-3 border-b border-base-300 bg-base-200/30\">\n <FileUploader\n adapter={uploadAdapter}\n accept={uploadAccept}\n maxFileSize={uploadMaxFileSize}\n multiple\n autoUpload\n labels={labels as any}\n onUploadComplete={handleUploadComplete}\n onError={onUploadError}\n />\n </div>\n )}\n\n {/* Content */}\n <div className=\"flex-1 overflow-y-auto min-h-[300px]\">\n {isLoading ? (\n <div className=\"flex items-center justify-center py-16\">\n <span className=\"loading loading-spinner loading-md opacity-50\" />\n <span className=\"ml-2 text-sm opacity-50\">{labels.loading}</span>\n </div>\n ) : viewMode === 'list' ? (\n <ListView\n entries={processedEntries}\n sortConfig={sortConfig}\n onSortChange={setSortConfig}\n onEntryClick={handleEntryClick}\n onEntryDoubleClick={handleEntryDoubleClick}\n onDelete={enableDelete ? handleDelete : undefined}\n onRename={enableRename ? handleRename : undefined}\n enableDelete={enableDelete}\n enableRename={enableRename}\n labels={labels}\n />\n ) : (\n <GridView\n entries={processedEntries}\n onEntryClick={handleEntryClick}\n onEntryDoubleClick={handleEntryDoubleClick}\n onDelete={enableDelete ? handleDelete : undefined}\n onRename={enableRename ? handleRename : undefined}\n enableDelete={enableDelete}\n enableRename={enableRename}\n labels={labels}\n />\n )}\n </div>\n\n {/* Status bar */}\n <div className=\"border-t border-base-300 px-3 py-1.5 text-xs opacity-50 flex items-center justify-between\">\n <span>{processedEntries.length} {labels.items}</span>\n {searchQuery && (\n <span className=\"italic\">Filtered from {entries.length}</span>\n )}\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"FileExplorer.js","names":[],"sources":["../../../../src/components/pro/FileExplorer/FileExplorer.tsx"],"sourcesContent":["import React, { useState, useCallback, useEffect, useMemo, useRef } from 'react';\nimport { FileExplorerProps, FileEntry, ViewMode, SortConfig, SortField } from './types';\nimport { Breadcrumb } from './Breadcrumb';\nimport { Toolbar } from './Toolbar';\nimport { ListView } from './ListView';\nimport { GridView } from './GridView';\nimport { CreateDialog } from './CreateDialog';\nimport { FileUploader } from '../../FileUploader/FileUploader';\nimport type { UploadResult } from '../../FileUploader/types';\n\nconst defaultLabels = {\n loading: 'Loading...',\n emptyFolder: 'This folder is empty',\n items: 'items',\n uploadFiles: 'Upload',\n};\n\n// --- Sorting ---\n\nfunction compareEntries(a: FileEntry, b: FileEntry, field: SortField, direction: 'asc' | 'desc'): number {\n // Folders always first\n if (a.type !== b.type) {\n return a.type === 'folder' ? -1 : 1;\n }\n\n let cmp = 0;\n switch (field) {\n case 'name':\n cmp = a.name.localeCompare(b.name, undefined, { sensitivity: 'base' });\n break;\n case 'size':\n cmp = (a.size || 0) - (b.size || 0);\n break;\n case 'modifiedAt': {\n const dateA = a.modifiedAt ? new Date(a.modifiedAt).getTime() : 0;\n const dateB = b.modifiedAt ? new Date(b.modifiedAt).getTime() : 0;\n cmp = dateA - dateB;\n break;\n }\n case 'type': {\n const extA = a.name.split('.').pop()?.toLowerCase() || '';\n const extB = b.name.split('.').pop()?.toLowerCase() || '';\n cmp = extA.localeCompare(extB);\n break;\n }\n }\n\n return direction === 'desc' ? -cmp : cmp;\n}\n\nexport const FileExplorer: React.FC<FileExplorerProps> = ({\n adapter,\n uploadAdapter,\n initialPath = '/',\n viewMode: initialViewMode = 'list',\n enableCreate = false,\n enableDelete = false,\n enableRename = false,\n enableUpload = false,\n uploadAccept,\n uploadMaxFileSize,\n className = '',\n labels: userLabels,\n onFileSelect,\n onPathChange,\n onUploadComplete,\n onUploadError,\n}) => {\n const labels = { ...defaultLabels, ...userLabels };\n\n // State\n const [currentPath, setCurrentPath] = useState(initialPath);\n const [entries, setEntries] = useState<FileEntry[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [viewMode, setViewMode] = useState<ViewMode>(initialViewMode);\n const [sortConfig, setSortConfig] = useState<SortConfig>({ field: 'name', direction: 'asc' });\n const [createType, setCreateType] = useState<'file' | 'folder' | null>(null);\n const [showUploader, setShowUploader] = useState(false);\n\n // Fetch entries when path changes\n const fetchEntries = useCallback(async (path: string) => {\n setIsLoading(true);\n try {\n const result = await adapter.list(path);\n setEntries(result);\n } catch (err) {\n console.error('Failed to list directory:', err);\n setEntries([]);\n } finally {\n setIsLoading(false);\n }\n }, [adapter]);\n\n useEffect(() => {\n fetchEntries(currentPath);\n }, [currentPath, fetchEntries]);\n\n // Navigate to a path\n const navigateTo = useCallback((path: string) => {\n setCurrentPath(path);\n setSearchQuery('');\n setCreateType(null);\n setShowUploader(false);\n onPathChange?.(path);\n }, [onPathChange]);\n\n // Filter + sort entries\n const processedEntries = useMemo(() => {\n let filtered = entries;\n\n if (searchQuery) {\n const q = searchQuery.toLowerCase();\n filtered = entries.filter(e => e.name.toLowerCase().includes(q));\n }\n\n return [...filtered].sort((a, b) => compareEntries(a, b, sortConfig.field, sortConfig.direction));\n }, [entries, searchQuery, sortConfig]);\n\n // Entry click: select file or navigate into folder\n const handleEntryClick = useCallback((entry: FileEntry) => {\n if (entry.type === 'folder') {\n navigateTo(entry.path);\n } else {\n onFileSelect?.(entry);\n }\n }, [navigateTo, onFileSelect]);\n\n const handleEntryDoubleClick = useCallback((entry: FileEntry) => {\n if (entry.type === 'folder') {\n navigateTo(entry.path);\n } else {\n onFileSelect?.(entry);\n }\n }, [navigateTo, onFileSelect]);\n\n // Delete\n const handleDelete = useCallback(async (entry: FileEntry) => {\n if (!adapter.delete) return;\n try {\n await adapter.delete(entry.path);\n setEntries(prev => prev.filter(e => e.path !== entry.path));\n } catch (err) {\n console.error('Failed to delete:', err);\n }\n }, [adapter]);\n\n // Rename\n const handleRename = useCallback(async (entry: FileEntry) => {\n if (!adapter.rename) return;\n const newName = window.prompt('New name:', entry.name);\n if (!newName || newName === entry.name) return;\n try {\n const updated = await adapter.rename(entry.path, newName);\n setEntries(prev => prev.map(e => e.path === entry.path ? updated : e));\n } catch (err) {\n console.error('Failed to rename:', err);\n }\n }, [adapter]);\n\n // Create folder / file\n const handleCreate = useCallback(async (name: string) => {\n if (!createType) return;\n\n try {\n let newEntry: FileEntry | undefined;\n if (createType === 'folder' && adapter.createFolder) {\n newEntry = await adapter.createFolder(currentPath, name);\n } else if (createType === 'file' && adapter.createFile) {\n newEntry = await adapter.createFile(currentPath, name);\n }\n if (newEntry) {\n setEntries(prev => [...prev, newEntry!]);\n }\n } catch (err) {\n console.error('Failed to create:', err);\n } finally {\n setCreateType(null);\n }\n }, [createType, currentPath, adapter]);\n\n // Upload complete: refresh listing and notify parent\n const handleUploadComplete = useCallback((results: UploadResult[]) => {\n // Refresh the current directory listing to show newly uploaded files\n fetchEntries(currentPath);\n onUploadComplete?.(results);\n }, [fetchEntries, currentPath, onUploadComplete]);\n\n const hasUpload = enableUpload && !!uploadAdapter;\n\n return (\n <div className={`flex flex-col bg-base-100 rounded-xl border border-base-300 overflow-hidden shadow-lg ${className}`}>\n {/* Breadcrumb */}\n <div className=\"border-b border-base-300 px-2\">\n <Breadcrumb\n path={currentPath}\n labels={labels}\n adapter={adapter}\n onNavigate={navigateTo}\n />\n </div>\n\n {/* Toolbar */}\n <Toolbar\n searchQuery={searchQuery}\n onSearchChange={setSearchQuery}\n viewMode={viewMode}\n onViewModeChange={setViewMode}\n sortConfig={sortConfig}\n onSortChange={setSortConfig}\n enableCreate={enableCreate}\n hasCreateFolder={!!adapter.createFolder}\n hasCreateFile={!!adapter.createFile}\n onCreateFolder={() => setCreateType('folder')}\n onCreateFile={() => setCreateType('file')}\n enableUpload={hasUpload}\n onUploadFiles={() => setShowUploader(prev => !prev)}\n labels={labels}\n />\n\n {/* Create dialog */}\n {createType && (\n <div className=\"px-3 py-2 border-b border-base-300\">\n <CreateDialog\n type={createType}\n labels={labels}\n onConfirm={handleCreate}\n onCancel={() => setCreateType(null)}\n />\n </div>\n )}\n\n {/* Upload panel */}\n {showUploader && uploadAdapter && (\n <div className=\"px-3 py-3 border-b border-base-300 bg-base-200/30\">\n <FileUploader\n adapter={uploadAdapter}\n accept={uploadAccept}\n maxFileSize={uploadMaxFileSize}\n multiple\n autoUpload\n labels={labels as any}\n onUploadComplete={handleUploadComplete}\n onError={onUploadError}\n />\n </div>\n )}\n\n {/* Content */}\n <div className=\"flex-1 overflow-y-auto min-h-[300px]\">\n {isLoading ? (\n <div className=\"flex items-center justify-center py-16\">\n <span className=\"loading loading-spinner loading-md opacity-50\" />\n <span className=\"ml-2 text-sm opacity-50\">{labels.loading}</span>\n </div>\n ) : viewMode === 'list' ? (\n <ListView\n entries={processedEntries}\n sortConfig={sortConfig}\n onSortChange={setSortConfig}\n onEntryClick={handleEntryClick}\n onEntryDoubleClick={handleEntryDoubleClick}\n onDelete={enableDelete ? handleDelete : undefined}\n onRename={enableRename ? handleRename : undefined}\n enableDelete={enableDelete}\n enableRename={enableRename}\n labels={labels}\n />\n ) : (\n <GridView\n entries={processedEntries}\n onEntryClick={handleEntryClick}\n onEntryDoubleClick={handleEntryDoubleClick}\n onDelete={enableDelete ? handleDelete : undefined}\n onRename={enableRename ? handleRename : undefined}\n enableDelete={enableDelete}\n enableRename={enableRename}\n labels={labels}\n />\n )}\n </div>\n\n {/* Status bar */}\n <div className=\"border-t border-base-300 px-3 py-1.5 text-xs opacity-50 flex items-center justify-between\">\n <span>{processedEntries.length} {labels.items}</span>\n {searchQuery && (\n <span className=\"italic\">Filtered from {entries.length}</span>\n )}\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -1,196 +1,196 @@
1
1
  import "react";
2
- import { jsx as o } from "react/jsx-runtime";
3
- var a = {
4
- sm: "h-4 w-4",
5
- md: "h-5 w-5",
6
- lg: "h-8 w-8"
7
- }, c = ({ sizeClass: e }) => /* @__PURE__ */ o("svg", {
8
- xmlns: "http://www.w3.org/2000/svg",
9
- className: `${e} text-warning`,
10
- fill: "none",
11
- viewBox: "0 0 24 24",
12
- stroke: "currentColor",
13
- strokeWidth: 1.5,
14
- children: /* @__PURE__ */ o("path", {
15
- strokeLinecap: "round",
16
- strokeLinejoin: "round",
17
- d: "M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"
18
- })
19
- }), l = ({ sizeClass: e }) => /* @__PURE__ */ o("svg", {
20
- xmlns: "http://www.w3.org/2000/svg",
21
- className: `${e} text-success`,
22
- fill: "none",
23
- viewBox: "0 0 24 24",
24
- stroke: "currentColor",
25
- strokeWidth: 1.5,
26
- children: /* @__PURE__ */ o("path", {
27
- strokeLinecap: "round",
28
- strokeLinejoin: "round",
29
- d: "M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"
30
- })
31
- }), d = ({ sizeClass: e }) => /* @__PURE__ */ o("svg", {
32
- xmlns: "http://www.w3.org/2000/svg",
33
- className: `${e} text-error`,
34
- fill: "none",
35
- viewBox: "0 0 24 24",
36
- stroke: "currentColor",
37
- strokeWidth: 1.5,
38
- children: /* @__PURE__ */ o("path", {
39
- strokeLinecap: "round",
40
- strokeLinejoin: "round",
41
- d: "M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"
42
- })
43
- }), h = ({ sizeClass: e }) => /* @__PURE__ */ o("svg", {
44
- xmlns: "http://www.w3.org/2000/svg",
45
- className: `${e} text-secondary`,
46
- fill: "none",
47
- viewBox: "0 0 24 24",
48
- stroke: "currentColor",
49
- strokeWidth: 1.5,
50
- children: /* @__PURE__ */ o("path", {
51
- strokeLinecap: "round",
52
- strokeLinejoin: "round",
53
- d: "M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3"
54
- })
55
- }), m = ({ sizeClass: e }) => /* @__PURE__ */ o("svg", {
56
- xmlns: "http://www.w3.org/2000/svg",
57
- className: `${e} text-info`,
58
- fill: "none",
59
- viewBox: "0 0 24 24",
60
- stroke: "currentColor",
61
- strokeWidth: 1.5,
62
- children: /* @__PURE__ */ o("path", {
63
- strokeLinecap: "round",
64
- strokeLinejoin: "round",
65
- d: "M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"
66
- })
67
- }), v = ({ sizeClass: e }) => /* @__PURE__ */ o("svg", {
68
- xmlns: "http://www.w3.org/2000/svg",
69
- className: `${e} text-primary`,
70
- fill: "none",
71
- viewBox: "0 0 24 24",
72
- stroke: "currentColor",
73
- strokeWidth: 1.5,
74
- children: /* @__PURE__ */ o("path", {
75
- strokeLinecap: "round",
76
- strokeLinejoin: "round",
77
- d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"
78
- })
79
- }), p = ({ sizeClass: e }) => /* @__PURE__ */ o("svg", {
80
- xmlns: "http://www.w3.org/2000/svg",
81
- className: `${e} text-accent`,
82
- fill: "none",
83
- viewBox: "0 0 24 24",
84
- stroke: "currentColor",
85
- strokeWidth: 1.5,
86
- children: /* @__PURE__ */ o("path", {
87
- strokeLinecap: "round",
88
- strokeLinejoin: "round",
89
- d: "M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8m-9 4h4"
90
- })
91
- }), s = ({ sizeClass: e }) => /* @__PURE__ */ o("svg", {
92
- xmlns: "http://www.w3.org/2000/svg",
93
- className: `${e} opacity-60`,
94
- fill: "none",
95
- viewBox: "0 0 24 24",
96
- stroke: "currentColor",
97
- strokeWidth: 1.5,
98
- children: /* @__PURE__ */ o("path", {
99
- strokeLinecap: "round",
100
- strokeLinejoin: "round",
101
- d: "M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z"
102
- })
2
+ import { jsx as e } from "react/jsx-runtime";
3
+ //#region src/components/pro/FileExplorer/FileIcon.tsx
4
+ var t = {
5
+ sm: "h-4 w-4",
6
+ md: "h-5 w-5",
7
+ lg: "h-8 w-8"
8
+ }, n = ({ sizeClass: t }) => /* @__PURE__ */ e("svg", {
9
+ xmlns: "http://www.w3.org/2000/svg",
10
+ className: `${t} text-warning`,
11
+ fill: "none",
12
+ viewBox: "0 0 24 24",
13
+ stroke: "currentColor",
14
+ strokeWidth: 1.5,
15
+ children: /* @__PURE__ */ e("path", {
16
+ strokeLinecap: "round",
17
+ strokeLinejoin: "round",
18
+ d: "M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z"
19
+ })
20
+ }), r = ({ sizeClass: t }) => /* @__PURE__ */ e("svg", {
21
+ xmlns: "http://www.w3.org/2000/svg",
22
+ className: `${t} text-success`,
23
+ fill: "none",
24
+ viewBox: "0 0 24 24",
25
+ stroke: "currentColor",
26
+ strokeWidth: 1.5,
27
+ children: /* @__PURE__ */ e("path", {
28
+ strokeLinecap: "round",
29
+ strokeLinejoin: "round",
30
+ d: "M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"
31
+ })
32
+ }), i = ({ sizeClass: t }) => /* @__PURE__ */ e("svg", {
33
+ xmlns: "http://www.w3.org/2000/svg",
34
+ className: `${t} text-error`,
35
+ fill: "none",
36
+ viewBox: "0 0 24 24",
37
+ stroke: "currentColor",
38
+ strokeWidth: 1.5,
39
+ children: /* @__PURE__ */ e("path", {
40
+ strokeLinecap: "round",
41
+ strokeLinejoin: "round",
42
+ d: "M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"
43
+ })
44
+ }), a = ({ sizeClass: t }) => /* @__PURE__ */ e("svg", {
45
+ xmlns: "http://www.w3.org/2000/svg",
46
+ className: `${t} text-secondary`,
47
+ fill: "none",
48
+ viewBox: "0 0 24 24",
49
+ stroke: "currentColor",
50
+ strokeWidth: 1.5,
51
+ children: /* @__PURE__ */ e("path", {
52
+ strokeLinecap: "round",
53
+ strokeLinejoin: "round",
54
+ d: "M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3"
55
+ })
56
+ }), o = ({ sizeClass: t }) => /* @__PURE__ */ e("svg", {
57
+ xmlns: "http://www.w3.org/2000/svg",
58
+ className: `${t} text-info`,
59
+ fill: "none",
60
+ viewBox: "0 0 24 24",
61
+ stroke: "currentColor",
62
+ strokeWidth: 1.5,
63
+ children: /* @__PURE__ */ e("path", {
64
+ strokeLinecap: "round",
65
+ strokeLinejoin: "round",
66
+ d: "M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4"
67
+ })
68
+ }), s = ({ sizeClass: t }) => /* @__PURE__ */ e("svg", {
69
+ xmlns: "http://www.w3.org/2000/svg",
70
+ className: `${t} text-primary`,
71
+ fill: "none",
72
+ viewBox: "0 0 24 24",
73
+ stroke: "currentColor",
74
+ strokeWidth: 1.5,
75
+ children: /* @__PURE__ */ e("path", {
76
+ strokeLinecap: "round",
77
+ strokeLinejoin: "round",
78
+ d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"
79
+ })
80
+ }), c = ({ sizeClass: t }) => /* @__PURE__ */ e("svg", {
81
+ xmlns: "http://www.w3.org/2000/svg",
82
+ className: `${t} text-accent`,
83
+ fill: "none",
84
+ viewBox: "0 0 24 24",
85
+ stroke: "currentColor",
86
+ strokeWidth: 1.5,
87
+ children: /* @__PURE__ */ e("path", {
88
+ strokeLinecap: "round",
89
+ strokeLinejoin: "round",
90
+ d: "M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8m-9 4h4"
91
+ })
92
+ }), l = ({ sizeClass: t }) => /* @__PURE__ */ e("svg", {
93
+ xmlns: "http://www.w3.org/2000/svg",
94
+ className: `${t} opacity-60`,
95
+ fill: "none",
96
+ viewBox: "0 0 24 24",
97
+ stroke: "currentColor",
98
+ strokeWidth: 1.5,
99
+ children: /* @__PURE__ */ e("path", {
100
+ strokeLinecap: "round",
101
+ strokeLinejoin: "round",
102
+ d: "M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z"
103
+ })
103
104
  });
104
- function w(e) {
105
- const t = e.mimeType || "", r = e.name.split(".").pop()?.toLowerCase() || "";
106
- return t.startsWith("image/") || [
107
- "png",
108
- "jpg",
109
- "jpeg",
110
- "gif",
111
- "webp",
112
- "svg",
113
- "bmp",
114
- "ico"
115
- ].includes(r) ? "image" : t.startsWith("video/") || [
116
- "mp4",
117
- "webm",
118
- "avi",
119
- "mov",
120
- "mkv"
121
- ].includes(r) ? "video" : t.startsWith("audio/") || [
122
- "mp3",
123
- "wav",
124
- "flac",
125
- "aac",
126
- "ogg",
127
- "m4a"
128
- ].includes(r) ? "audio" : [
129
- "js",
130
- "ts",
131
- "tsx",
132
- "jsx",
133
- "py",
134
- "rs",
135
- "go",
136
- "java",
137
- "c",
138
- "cpp",
139
- "h",
140
- "css",
141
- "html",
142
- "json",
143
- "xml",
144
- "yaml",
145
- "yml",
146
- "toml",
147
- "sh",
148
- "bash",
149
- "sql"
150
- ].includes(r) ? "code" : [
151
- "pdf",
152
- "doc",
153
- "docx",
154
- "xls",
155
- "xlsx",
156
- "ppt",
157
- "pptx",
158
- "txt",
159
- "md",
160
- "rtf",
161
- "csv"
162
- ].includes(r) ? "document" : [
163
- "zip",
164
- "tar",
165
- "gz",
166
- "bz2",
167
- "rar",
168
- "7z",
169
- "xz"
170
- ].includes(r) ? "archive" : "generic";
105
+ function u(e) {
106
+ let t = e.mimeType || "", n = e.name.split(".").pop()?.toLowerCase() || "";
107
+ return t.startsWith("image/") || [
108
+ "png",
109
+ "jpg",
110
+ "jpeg",
111
+ "gif",
112
+ "webp",
113
+ "svg",
114
+ "bmp",
115
+ "ico"
116
+ ].includes(n) ? "image" : t.startsWith("video/") || [
117
+ "mp4",
118
+ "webm",
119
+ "avi",
120
+ "mov",
121
+ "mkv"
122
+ ].includes(n) ? "video" : t.startsWith("audio/") || [
123
+ "mp3",
124
+ "wav",
125
+ "flac",
126
+ "aac",
127
+ "ogg",
128
+ "m4a"
129
+ ].includes(n) ? "audio" : [
130
+ "js",
131
+ "ts",
132
+ "tsx",
133
+ "jsx",
134
+ "py",
135
+ "rs",
136
+ "go",
137
+ "java",
138
+ "c",
139
+ "cpp",
140
+ "h",
141
+ "css",
142
+ "html",
143
+ "json",
144
+ "xml",
145
+ "yaml",
146
+ "yml",
147
+ "toml",
148
+ "sh",
149
+ "bash",
150
+ "sql"
151
+ ].includes(n) ? "code" : [
152
+ "pdf",
153
+ "doc",
154
+ "docx",
155
+ "xls",
156
+ "xlsx",
157
+ "ppt",
158
+ "pptx",
159
+ "txt",
160
+ "md",
161
+ "rtf",
162
+ "csv"
163
+ ].includes(n) ? "document" : [
164
+ "zip",
165
+ "tar",
166
+ "gz",
167
+ "bz2",
168
+ "rar",
169
+ "7z",
170
+ "xz"
171
+ ].includes(n) ? "archive" : "generic";
171
172
  }
172
- var k = ({ entry: e, size: t = "sm", className: r = "" }) => {
173
- const n = a[t];
174
- if (e.type === "folder") return /* @__PURE__ */ o("span", {
175
- className: r,
176
- children: /* @__PURE__ */ o(c, { sizeClass: n })
177
- });
178
- const i = w(e);
179
- return /* @__PURE__ */ o("span", {
180
- className: r,
181
- children: /* @__PURE__ */ o({
182
- image: l,
183
- video: d,
184
- audio: h,
185
- code: m,
186
- document: v,
187
- archive: p,
188
- generic: s
189
- }[i] || s, { sizeClass: n })
190
- });
191
- };
192
- export {
193
- k as FileIcon
173
+ var d = ({ entry: d, size: f = "sm", className: p = "" }) => {
174
+ let m = t[f];
175
+ if (d.type === "folder") return /* @__PURE__ */ e("span", {
176
+ className: p,
177
+ children: /* @__PURE__ */ e(n, { sizeClass: m })
178
+ });
179
+ let h = u(d), g = {
180
+ image: r,
181
+ video: i,
182
+ audio: a,
183
+ code: o,
184
+ document: s,
185
+ archive: c,
186
+ generic: l
187
+ }[h] || l;
188
+ return /* @__PURE__ */ e("span", {
189
+ className: p,
190
+ children: /* @__PURE__ */ e(g, { sizeClass: m })
191
+ });
194
192
  };
193
+ //#endregion
194
+ export { d as FileIcon };
195
195
 
196
196
  //# sourceMappingURL=FileIcon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileIcon.js","names":[],"sources":["../../../../src/components/pro/FileExplorer/FileIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { FileIconProps } from './types';\n\nconst sizeMap = {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-8 w-8',\n};\n\n// --- Icon components ---\n\nconst FolderIcon: React.FC<{ sizeClass: string }> = ({ sizeClass }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={`${sizeClass} text-warning`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z\" />\n </svg>\n);\n\nconst ImageIcon: React.FC<{ sizeClass: string }> = ({ sizeClass }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={`${sizeClass} text-success`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\" />\n </svg>\n);\n\nconst VideoIcon: React.FC<{ sizeClass: string }> = ({ sizeClass }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={`${sizeClass} text-error`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z\" />\n </svg>\n);\n\nconst AudioIcon: React.FC<{ sizeClass: string }> = ({ sizeClass }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={`${sizeClass} text-secondary`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3\" />\n </svg>\n);\n\nconst CodeIcon: React.FC<{ sizeClass: string }> = ({ sizeClass }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={`${sizeClass} text-info`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4\" />\n </svg>\n);\n\nconst DocIcon: React.FC<{ sizeClass: string }> = ({ sizeClass }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={`${sizeClass} text-primary`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\" />\n </svg>\n);\n\nconst ArchiveIcon: React.FC<{ sizeClass: string }> = ({ sizeClass }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={`${sizeClass} text-accent`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8m-9 4h4\" />\n </svg>\n);\n\nconst GenericFileIcon: React.FC<{ sizeClass: string }> = ({ sizeClass }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={`${sizeClass} opacity-60`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z\" />\n </svg>\n);\n\n// --- MIME / extension to category mapping ---\n\nfunction getFileCategory(entry: { name: string; mimeType?: string }): string {\n const mime = entry.mimeType || '';\n const ext = entry.name.split('.').pop()?.toLowerCase() || '';\n\n if (mime.startsWith('image/') || ['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'bmp', 'ico'].includes(ext)) return 'image';\n if (mime.startsWith('video/') || ['mp4', 'webm', 'avi', 'mov', 'mkv'].includes(ext)) return 'video';\n if (mime.startsWith('audio/') || ['mp3', 'wav', 'flac', 'aac', 'ogg', 'm4a'].includes(ext)) return 'audio';\n if (['js', 'ts', 'tsx', 'jsx', 'py', 'rs', 'go', 'java', 'c', 'cpp', 'h', 'css', 'html', 'json', 'xml', 'yaml', 'yml', 'toml', 'sh', 'bash', 'sql'].includes(ext)) return 'code';\n if (['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt', 'md', 'rtf', 'csv'].includes(ext)) return 'document';\n if (['zip', 'tar', 'gz', 'bz2', 'rar', '7z', 'xz'].includes(ext)) return 'archive';\n\n return 'generic';\n}\n\n// --- Main component ---\n\nexport const FileIcon: React.FC<FileIconProps> = ({\n entry,\n size = 'sm',\n className = '',\n}) => {\n const sizeClass = sizeMap[size];\n\n if (entry.type === 'folder') {\n return <span className={className}><FolderIcon sizeClass={sizeClass} /></span>;\n }\n\n const category = getFileCategory(entry);\n\n const IconComponent = {\n image: ImageIcon,\n video: VideoIcon,\n audio: AudioIcon,\n code: CodeIcon,\n document: DocIcon,\n archive: ArchiveIcon,\n generic: GenericFileIcon,\n }[category] || GenericFileIcon;\n\n return <span className={className}><IconComponent sizeClass={sizeClass} /></span>;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"FileIcon.js","names":[],"sources":["../../../../src/components/pro/FileExplorer/FileIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { FileIconProps } from './types';\n\nconst sizeMap = {\n sm: 'h-4 w-4',\n md: 'h-5 w-5',\n lg: 'h-8 w-8',\n};\n\n// --- Icon components ---\n\nconst FolderIcon: React.FC<{ sizeClass: string }> = ({ sizeClass }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={`${sizeClass} text-warning`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M3 7v10a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-6l-2-2H5a2 2 0 00-2 2z\" />\n </svg>\n);\n\nconst ImageIcon: React.FC<{ sizeClass: string }> = ({ sizeClass }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={`${sizeClass} text-success`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\" />\n </svg>\n);\n\nconst VideoIcon: React.FC<{ sizeClass: string }> = ({ sizeClass }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={`${sizeClass} text-error`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z\" />\n </svg>\n);\n\nconst AudioIcon: React.FC<{ sizeClass: string }> = ({ sizeClass }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={`${sizeClass} text-secondary`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3\" />\n </svg>\n);\n\nconst CodeIcon: React.FC<{ sizeClass: string }> = ({ sizeClass }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={`${sizeClass} text-info`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M10 20l4-16m4 4l4 4-4 4M6 16l-4-4 4-4\" />\n </svg>\n);\n\nconst DocIcon: React.FC<{ sizeClass: string }> = ({ sizeClass }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={`${sizeClass} text-primary`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z\" />\n </svg>\n);\n\nconst ArchiveIcon: React.FC<{ sizeClass: string }> = ({ sizeClass }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={`${sizeClass} text-accent`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8m-9 4h4\" />\n </svg>\n);\n\nconst GenericFileIcon: React.FC<{ sizeClass: string }> = ({ sizeClass }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" className={`${sizeClass} opacity-60`} fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" d=\"M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z\" />\n </svg>\n);\n\n// --- MIME / extension to category mapping ---\n\nfunction getFileCategory(entry: { name: string; mimeType?: string }): string {\n const mime = entry.mimeType || '';\n const ext = entry.name.split('.').pop()?.toLowerCase() || '';\n\n if (mime.startsWith('image/') || ['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'bmp', 'ico'].includes(ext)) return 'image';\n if (mime.startsWith('video/') || ['mp4', 'webm', 'avi', 'mov', 'mkv'].includes(ext)) return 'video';\n if (mime.startsWith('audio/') || ['mp3', 'wav', 'flac', 'aac', 'ogg', 'm4a'].includes(ext)) return 'audio';\n if (['js', 'ts', 'tsx', 'jsx', 'py', 'rs', 'go', 'java', 'c', 'cpp', 'h', 'css', 'html', 'json', 'xml', 'yaml', 'yml', 'toml', 'sh', 'bash', 'sql'].includes(ext)) return 'code';\n if (['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt', 'md', 'rtf', 'csv'].includes(ext)) return 'document';\n if (['zip', 'tar', 'gz', 'bz2', 'rar', '7z', 'xz'].includes(ext)) return 'archive';\n\n return 'generic';\n}\n\n// --- Main component ---\n\nexport const FileIcon: React.FC<FileIconProps> = ({\n entry,\n size = 'sm',\n className = '',\n}) => {\n const sizeClass = sizeMap[size];\n\n if (entry.type === 'folder') {\n return <span className={className}><FolderIcon sizeClass={sizeClass} /></span>;\n }\n\n const category = getFileCategory(entry);\n\n const IconComponent = {\n image: ImageIcon,\n video: VideoIcon,\n audio: AudioIcon,\n code: CodeIcon,\n document: DocIcon,\n archive: ArchiveIcon,\n generic: GenericFileIcon,\n }[category] || GenericFileIcon;\n\n return <span className={className}><IconComponent sizeClass={sizeClass} /></span>;\n};\n"],"mappings":"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"}