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.
- package/dist/_virtual/_rolldown/runtime.js +10 -11
- package/dist/chart.js +12 -46
- package/dist/code-editor.js +16 -43
- package/dist/components/Badge/index.js +11 -13
- package/dist/components/Badge/index.js.map +1 -1
- package/dist/components/Button/index.js +62 -86
- package/dist/components/Button/index.js.map +1 -1
- package/dist/components/Card/index.d.ts +87 -0
- package/dist/components/Card/index.js +178 -44
- package/dist/components/Card/index.js.map +1 -1
- package/dist/components/Chart/Chart.js +25 -25
- package/dist/components/Chart/Chart.js.map +1 -1
- package/dist/components/Checkbox/index.js +57 -63
- package/dist/components/Checkbox/index.js.map +1 -1
- package/dist/components/ChoicePicker/index.d.ts +44 -0
- package/dist/components/ChoicePicker/index.js +81 -0
- package/dist/components/ChoicePicker/index.js.map +1 -0
- package/dist/components/Column/index.d.ts +28 -0
- package/dist/components/Column/index.js +30 -0
- package/dist/components/Column/index.js.map +1 -0
- package/dist/components/DateTimeInput/index.d.ts +44 -0
- package/dist/components/DateTimeInput/index.js +48 -0
- package/dist/components/DateTimeInput/index.js.map +1 -0
- package/dist/components/Demo/index.js +107 -107
- package/dist/components/Demo/index.js.map +1 -1
- package/dist/components/Divider/index.d.ts +20 -0
- package/dist/components/Divider/index.js +30 -0
- package/dist/components/Divider/index.js.map +1 -0
- package/dist/components/EmptyState/index.d.ts +4 -1
- package/dist/components/EmptyState/index.js +24 -24
- package/dist/components/EmptyState/index.js.map +1 -1
- package/dist/components/FileUploader/DropZone.js +134 -136
- package/dist/components/FileUploader/DropZone.js.map +1 -1
- package/dist/components/FileUploader/FileItem.js +159 -163
- package/dist/components/FileUploader/FileItem.js.map +1 -1
- package/dist/components/FileUploader/FileUploader.js +126 -127
- package/dist/components/FileUploader/FileUploader.js.map +1 -1
- package/dist/components/FileUploader/UploadQueue.js +62 -62
- package/dist/components/FileUploader/UploadQueue.js.map +1 -1
- package/dist/components/FloatWindow/index.d.ts +28 -0
- package/dist/components/GridLayout/index.d.ts +42 -0
- package/dist/components/Icon/index.d.ts +24 -0
- package/dist/components/Icon/index.js +26 -0
- package/dist/components/Icon/index.js.map +1 -0
- package/dist/components/Image/index.d.ts +33 -0
- package/dist/components/Image/index.js +44 -0
- package/dist/components/Image/index.js.map +1 -0
- package/dist/components/Input/index.js +196 -197
- package/dist/components/Input/index.js.map +1 -1
- package/dist/components/Label/index.js +62 -73
- package/dist/components/Label/index.js.map +1 -1
- package/dist/components/Layout/index.js +134 -139
- package/dist/components/Layout/index.js.map +1 -1
- package/dist/components/List/index.js +45 -43
- package/dist/components/List/index.js.map +1 -1
- package/dist/components/Markdown/Markdown.js +106 -103
- package/dist/components/Markdown/Markdown.js.map +1 -1
- package/dist/components/Markdown/codeThemes.js +24 -33
- package/dist/components/Markdown/codeThemes.js.map +1 -1
- package/dist/components/Markdown/markdownComponents.js +203 -208
- package/dist/components/Markdown/markdownComponents.js.map +1 -1
- package/dist/components/Markdown/parseCodeBlockMeta.js +22 -22
- package/dist/components/Markdown/parseCodeBlockMeta.js.map +1 -1
- package/dist/components/Markdown/useMarkdownSource.js +46 -46
- package/dist/components/Markdown/useMarkdownSource.js.map +1 -1
- package/dist/components/Markdown/useMarkmapRenderer.js +35 -36
- package/dist/components/Markdown/useMarkmapRenderer.js.map +1 -1
- package/dist/components/Markdown/useMermaidRenderer.js +41 -42
- package/dist/components/Markdown/useMermaidRenderer.js.map +1 -1
- package/dist/components/Modal/index.d.ts +7 -3
- package/dist/components/Modal/index.js +82 -70
- package/dist/components/Modal/index.js.map +1 -1
- package/dist/components/MultipleChoice/index.d.ts +44 -0
- package/dist/components/MultipleChoice/index.js +52 -0
- package/dist/components/MultipleChoice/index.js.map +1 -0
- package/dist/components/Notification/index.d.ts +17 -0
- package/dist/components/Page/index.d.ts +58 -0
- package/dist/components/Page/index.js +43 -0
- package/dist/components/Page/index.js.map +1 -0
- package/dist/components/PageHeader/index.js +28 -28
- package/dist/components/PageHeader/index.js.map +1 -1
- package/dist/components/ProtectedRoute/index.js +8 -9
- package/dist/components/ProtectedRoute/index.js.map +1 -1
- package/dist/components/Row/index.d.ts +28 -0
- package/dist/components/Row/index.js +30 -0
- package/dist/components/Row/index.js.map +1 -0
- package/dist/components/Select/index.js +251 -257
- package/dist/components/Select/index.js.map +1 -1
- package/dist/components/SidebarToggleButton/index.js +56 -59
- package/dist/components/SidebarToggleButton/index.js.map +1 -1
- package/dist/components/Slider/index.d.ts +39 -0
- package/dist/components/Slider/index.js +52 -0
- package/dist/components/Slider/index.js.map +1 -0
- package/dist/components/StatCard/index.d.ts +31 -1
- package/dist/components/StatCard/index.js +189 -58
- package/dist/components/StatCard/index.js.map +1 -1
- package/dist/components/Switch/index.d.ts +34 -0
- package/dist/components/Switch/index.js +55 -0
- package/dist/components/Switch/index.js.map +1 -0
- package/dist/components/Tab/index.d.ts +40 -0
- package/dist/components/Table/index.js +109 -103
- package/dist/components/Table/index.js.map +1 -1
- package/dist/components/Tabs/index.d.ts +19 -5
- package/dist/components/Tabs/index.js +30 -21
- package/dist/components/Tabs/index.js.map +1 -1
- package/dist/components/Text/index.d.ts +43 -0
- package/dist/components/Text/index.js +55 -0
- package/dist/components/Text/index.js.map +1 -0
- package/dist/components/Tooltip/index.d.ts +23 -0
- package/dist/components/Tooltip/index.js +34 -0
- package/dist/components/Tooltip/index.js.map +1 -0
- package/dist/components/Tree/Tree.js +205 -205
- package/dist/components/Tree/Tree.js.map +1 -1
- package/dist/components/pro/ArticleContextMenu/index.js +86 -87
- package/dist/components/pro/ArticleContextMenu/index.js.map +1 -1
- package/dist/components/pro/ArticleControl/ArticleControl2.js +250 -250
- package/dist/components/pro/ArticleControl/ArticleControl2.js.map +1 -1
- package/dist/components/pro/ArticleControl/buildHeadingTree.js +31 -32
- package/dist/components/pro/ArticleControl/buildHeadingTree.js.map +1 -1
- package/dist/components/pro/ArticleControl/useArticleToc.js +100 -102
- package/dist/components/pro/ArticleControl/useArticleToc.js.map +1 -1
- package/dist/components/pro/Calendar/Calendar.d.ts +10 -0
- package/dist/components/pro/Calendar/hooks/useCalendarDrag.d.ts +47 -0
- package/dist/components/pro/Calendar/hooks/useCalendarState.d.ts +56 -0
- package/dist/components/pro/Calendar/index.d.ts +7 -0
- package/dist/components/pro/Calendar/types.d.ts +151 -0
- package/dist/components/pro/Calendar/utils.d.ts +94 -0
- package/dist/components/pro/Chat/Chat.d.ts +6 -0
- package/dist/components/pro/Chat/index.d.ts +2 -0
- package/dist/components/pro/Chat/types.d.ts +84 -0
- package/dist/components/pro/CodeEditor/editors/CodeEditor.js +287 -320
- package/dist/components/pro/CodeEditor/editors/CodeEditor.js.map +1 -1
- package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js +167 -221
- package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js.map +1 -1
- package/dist/components/pro/CodeEditor/editors/markdownExtensions.js +594 -613
- package/dist/components/pro/CodeEditor/editors/markdownExtensions.js.map +1 -1
- package/dist/components/pro/CodeEditor/extensions/contextMenu.js +54 -55
- package/dist/components/pro/CodeEditor/extensions/contextMenu.js.map +1 -1
- package/dist/components/pro/CodeEditor/extensions/index.js +152 -160
- package/dist/components/pro/CodeEditor/extensions/index.js.map +1 -1
- package/dist/components/pro/CodeEditor/langs/index.js +7 -15
- package/dist/components/pro/CodeEditor/langs/index.js.map +1 -1
- package/dist/components/pro/CodeEditor/langs/javascript.js +11 -48
- package/dist/components/pro/CodeEditor/langs/javascript.js.map +1 -1
- package/dist/components/pro/CodeEditor/langs/python.js +4 -40
- package/dist/components/pro/CodeEditor/langs/python.js.map +1 -1
- package/dist/components/pro/CodeEditor/langs/snippets.js +118 -147
- package/dist/components/pro/CodeEditor/langs/snippets.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/FootnotePanel.js +153 -153
- package/dist/components/pro/CodeEditor/panels/FootnotePanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/HistoryPanel.js +180 -190
- package/dist/components/pro/CodeEditor/panels/HistoryPanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/OutlinePanel.js +130 -137
- package/dist/components/pro/CodeEditor/panels/OutlinePanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js +228 -242
- package/dist/components/pro/CodeEditor/panels/TableOfContentsPanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/panels/VariablePanel.js +208 -248
- package/dist/components/pro/CodeEditor/panels/VariablePanel.js.map +1 -1
- package/dist/components/pro/CodeEditor/themes.js +513 -483
- package/dist/components/pro/CodeEditor/themes.js.map +1 -1
- package/dist/components/pro/CodeEditor/types.d.ts +1 -1
- package/dist/components/pro/CodeEditor/utils.js +171 -175
- package/dist/components/pro/CodeEditor/utils.js.map +1 -1
- package/dist/components/pro/DataTable/DataTable.js +305 -305
- package/dist/components/pro/DataTable/DataTable.js.map +1 -1
- package/dist/components/pro/DataTable/Filters.js +299 -314
- package/dist/components/pro/DataTable/Filters.js.map +1 -1
- package/dist/components/pro/DataTable/PivotPanel.js +203 -204
- package/dist/components/pro/DataTable/PivotPanel.js.map +1 -1
- package/dist/components/pro/DataTable/PivotView.js +142 -141
- package/dist/components/pro/DataTable/PivotView.js.map +1 -1
- package/dist/components/pro/DataTable/components/BulkActions.js +42 -42
- package/dist/components/pro/DataTable/components/BulkActions.js.map +1 -1
- package/dist/components/pro/DataTable/components/ColumnSelector.js +84 -84
- package/dist/components/pro/DataTable/components/ColumnSelector.js.map +1 -1
- package/dist/components/pro/DataTable/components/FilterBar.js +58 -58
- package/dist/components/pro/DataTable/components/FilterBar.js.map +1 -1
- package/dist/components/pro/DataTable/components/TableBody.js +93 -94
- package/dist/components/pro/DataTable/components/TableBody.js.map +1 -1
- package/dist/components/pro/DataTable/components/TableHeader.js +78 -78
- package/dist/components/pro/DataTable/components/TableHeader.js.map +1 -1
- package/dist/components/pro/DataTable/components/TablePagination.js +77 -77
- package/dist/components/pro/DataTable/components/TablePagination.js.map +1 -1
- package/dist/components/pro/DataTable/components/TableToolbar.js +40 -40
- package/dist/components/pro/DataTable/components/TableToolbar.js.map +1 -1
- package/dist/components/pro/DataTable/extension.js +5 -5
- package/dist/components/pro/DataTable/extension.js.map +1 -1
- package/dist/components/pro/DataTable/pivotEngine.js +84 -92
- package/dist/components/pro/DataTable/pivotEngine.js.map +1 -1
- package/dist/components/pro/DataTable/pivotExtension.js +93 -93
- package/dist/components/pro/DataTable/pivotExtension.js.map +1 -1
- package/dist/components/pro/DataTable/rowDetailExtension.js +30 -30
- package/dist/components/pro/DataTable/rowDetailExtension.js.map +1 -1
- package/dist/components/pro/DataTable/tanstack-table.js +45 -62
- package/dist/components/pro/DataTable/tanstack-table.js.map +1 -1
- package/dist/components/pro/DataTable/treeDataUtils.js +37 -48
- package/dist/components/pro/DataTable/treeDataUtils.js.map +1 -1
- package/dist/components/pro/DataTable/useColumnDragReorder.js +68 -68
- package/dist/components/pro/DataTable/useColumnDragReorder.js.map +1 -1
- package/dist/components/pro/DataTable/utils.js +156 -168
- package/dist/components/pro/DataTable/utils.js.map +1 -1
- package/dist/components/pro/FileExplorer/Breadcrumb.js +180 -180
- package/dist/components/pro/FileExplorer/Breadcrumb.js.map +1 -1
- package/dist/components/pro/FileExplorer/CreateDialog.js +78 -78
- package/dist/components/pro/FileExplorer/CreateDialog.js.map +1 -1
- package/dist/components/pro/FileExplorer/FileExplorer.js +202 -205
- package/dist/components/pro/FileExplorer/FileExplorer.js.map +1 -1
- package/dist/components/pro/FileExplorer/FileIcon.js +190 -190
- package/dist/components/pro/FileExplorer/FileIcon.js.map +1 -1
- package/dist/components/pro/FileExplorer/GridView.js +100 -100
- package/dist/components/pro/FileExplorer/GridView.js.map +1 -1
- package/dist/components/pro/FileExplorer/ListView.js +209 -209
- package/dist/components/pro/FileExplorer/ListView.js.map +1 -1
- package/dist/components/pro/FileExplorer/Toolbar.js +199 -199
- package/dist/components/pro/FileExplorer/Toolbar.js.map +1 -1
- package/dist/components/pro/Flow/Flow.js +920 -946
- package/dist/components/pro/Flow/Flow.js.map +1 -1
- package/dist/components/pro/Flow/FlowCanvas.js +1626 -1663
- package/dist/components/pro/Flow/FlowCanvas.js.map +1 -1
- package/dist/components/pro/Flow/archify/build.js +85 -94
- package/dist/components/pro/Flow/archify/build.js.map +1 -1
- package/dist/components/pro/Flow/archify/convert.js +512 -519
- package/dist/components/pro/Flow/archify/convert.js.map +1 -1
- package/dist/components/pro/Flow/archify/palette.js +87 -104
- package/dist/components/pro/Flow/archify/palette.js.map +1 -1
- package/dist/components/pro/Flow/archify/presets.js +34 -37
- package/dist/components/pro/Flow/archify/presets.js.map +1 -1
- package/dist/components/pro/Flow/archify/spec.js +7 -7
- package/dist/components/pro/Flow/archify/spec.js.map +1 -1
- package/dist/components/pro/Flow/canvas/AlignmentGuides.js +25 -25
- package/dist/components/pro/Flow/canvas/AlignmentGuides.js.map +1 -1
- package/dist/components/pro/Flow/canvas/GridRenderer.js +54 -55
- package/dist/components/pro/Flow/canvas/GridRenderer.js.map +1 -1
- package/dist/components/pro/Flow/canvas/MiniMapRenderer.js +54 -58
- package/dist/components/pro/Flow/canvas/MiniMapRenderer.js.map +1 -1
- package/dist/components/pro/Flow/canvas/PixiApp.js +105 -102
- package/dist/components/pro/Flow/canvas/PixiApp.js.map +1 -1
- package/dist/components/pro/Flow/canvas/SelectionOverlay.js +38 -38
- package/dist/components/pro/Flow/canvas/SelectionOverlay.js.map +1 -1
- package/dist/components/pro/Flow/canvas/ViewportContainer.js +117 -117
- package/dist/components/pro/Flow/canvas/ViewportContainer.js.map +1 -1
- package/dist/components/pro/Flow/constants.js +266 -278
- package/dist/components/pro/Flow/constants.js.map +1 -1
- package/dist/components/pro/Flow/context/FlowAIContext.js +27 -28
- package/dist/components/pro/Flow/context/FlowAIContext.js.map +1 -1
- package/dist/components/pro/Flow/context/FlowContext.js +60 -61
- package/dist/components/pro/Flow/context/FlowContext.js.map +1 -1
- package/dist/components/pro/Flow/context/FlowUIContext.js +115 -117
- package/dist/components/pro/Flow/context/FlowUIContext.js.map +1 -1
- package/dist/components/pro/Flow/edges/EdgeRenderer.js +135 -138
- package/dist/components/pro/Flow/edges/EdgeRenderer.js.map +1 -1
- package/dist/components/pro/Flow/edges/edgeMarkers.js +11 -14
- package/dist/components/pro/Flow/edges/edgeMarkers.js.map +1 -1
- package/dist/components/pro/Flow/edges/edgePaths.js +351 -367
- package/dist/components/pro/Flow/edges/edgePaths.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useAlignmentGuides.js +49 -52
- package/dist/components/pro/Flow/hooks/useAlignmentGuides.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useClipboard.js +154 -154
- package/dist/components/pro/Flow/hooks/useClipboard.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useCompactMode.js +17 -17
- package/dist/components/pro/Flow/hooks/useCompactMode.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useDeleteSelection.js +40 -40
- package/dist/components/pro/Flow/hooks/useDeleteSelection.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useDraggablePanel.js +51 -51
- package/dist/components/pro/Flow/hooks/useDraggablePanel.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useEdgeMutations.js +157 -157
- package/dist/components/pro/Flow/hooks/useEdgeMutations.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useFlowImportExport.js +190 -201
- package/dist/components/pro/Flow/hooks/useFlowImportExport.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js +32 -38
- package/dist/components/pro/Flow/hooks/useKeyboardShortcuts.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useLayoutActions.js +172 -182
- package/dist/components/pro/Flow/hooks/useLayoutActions.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useLineMutations.js +57 -57
- package/dist/components/pro/Flow/hooks/useLineMutations.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useMindMap.js +229 -238
- package/dist/components/pro/Flow/hooks/useMindMap.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useNodeMutations.js +102 -102
- package/dist/components/pro/Flow/hooks/useNodeMutations.js.map +1 -1
- package/dist/components/pro/Flow/hooks/usePdfExport.js +55 -56
- package/dist/components/pro/Flow/hooks/usePdfExport.js.map +1 -1
- package/dist/components/pro/Flow/hooks/usePixiApp.js +55 -57
- package/dist/components/pro/Flow/hooks/usePixiApp.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useResizablePanel.js +31 -31
- package/dist/components/pro/Flow/hooks/useResizablePanel.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useSelection.js +69 -69
- package/dist/components/pro/Flow/hooks/useSelection.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useUndoRedo.js +27 -27
- package/dist/components/pro/Flow/hooks/useUndoRedo.js.map +1 -1
- package/dist/components/pro/Flow/hooks/useViewport.js +28 -28
- package/dist/components/pro/Flow/hooks/useViewport.js.map +1 -1
- package/dist/components/pro/Flow/lines/FreehandTool.js +63 -63
- package/dist/components/pro/Flow/lines/FreehandTool.js.map +1 -1
- package/dist/components/pro/Flow/lines/GeometricLineTool.js +80 -80
- package/dist/components/pro/Flow/lines/GeometricLineTool.js.map +1 -1
- package/dist/components/pro/Flow/lines/LineRenderer.js +88 -88
- package/dist/components/pro/Flow/lines/LineRenderer.js.map +1 -1
- package/dist/components/pro/Flow/lines/lineSmoothing.js +32 -34
- package/dist/components/pro/Flow/lines/lineSmoothing.js.map +1 -1
- package/dist/components/pro/Flow/nodes/DataNodeView.js +236 -222
- package/dist/components/pro/Flow/nodes/DataNodeView.js.map +1 -1
- package/dist/components/pro/Flow/nodes/MediaContent.js +236 -246
- package/dist/components/pro/Flow/nodes/MediaContent.js.map +1 -1
- package/dist/components/pro/Flow/nodes/MediaOverlay.js +63 -63
- package/dist/components/pro/Flow/nodes/MediaOverlay.js.map +1 -1
- package/dist/components/pro/Flow/nodes/Model3DView.js +111 -113
- package/dist/components/pro/Flow/nodes/Model3DView.js.map +1 -1
- package/dist/components/pro/Flow/nodes/NodeHandles.js +74 -80
- package/dist/components/pro/Flow/nodes/NodeHandles.js.map +1 -1
- package/dist/components/pro/Flow/nodes/NodeRenderer.js +303 -314
- package/dist/components/pro/Flow/nodes/NodeRenderer.js.map +1 -1
- package/dist/components/pro/Flow/nodes/NodeText.js +25 -29
- package/dist/components/pro/Flow/nodes/NodeText.js.map +1 -1
- package/dist/components/pro/Flow/nodes/aiClient.js +124 -137
- package/dist/components/pro/Flow/nodes/aiClient.js.map +1 -1
- package/dist/components/pro/Flow/nodes/animAnchors.js +42 -49
- package/dist/components/pro/Flow/nodes/animAnchors.js.map +1 -1
- package/dist/components/pro/Flow/nodes/dataUtils.js +246 -267
- package/dist/components/pro/Flow/nodes/dataUtils.js.map +1 -1
- package/dist/components/pro/Flow/nodes/nodeUtils.js +23 -28
- package/dist/components/pro/Flow/nodes/nodeUtils.js.map +1 -1
- package/dist/components/pro/Flow/nodes/shapes.js +556 -591
- package/dist/components/pro/Flow/nodes/shapes.js.map +1 -1
- package/dist/components/pro/Flow/nodes/svgIconTexture.js +37 -39
- package/dist/components/pro/Flow/nodes/svgIconTexture.js.map +1 -1
- package/dist/components/pro/Flow/nodes/svgIcons.js +684 -689
- package/dist/components/pro/Flow/nodes/svgIcons.js.map +1 -1
- package/dist/components/pro/Flow/panels/AIPanel.js +464 -491
- package/dist/components/pro/Flow/panels/AIPanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/Breadcrumb.js +41 -41
- package/dist/components/pro/Flow/panels/Breadcrumb.js.map +1 -1
- package/dist/components/pro/Flow/panels/ContextMenu.js +37 -37
- package/dist/components/pro/Flow/panels/ContextMenu.js.map +1 -1
- package/dist/components/pro/Flow/panels/DataInspectorSection.js +428 -432
- package/dist/components/pro/Flow/panels/DataInspectorSection.js.map +1 -1
- package/dist/components/pro/Flow/panels/ExpandableTextarea.js +61 -62
- package/dist/components/pro/Flow/panels/ExpandableTextarea.js.map +1 -1
- package/dist/components/pro/Flow/panels/FlowPanelGroup.js +114 -114
- package/dist/components/pro/Flow/panels/FlowPanelGroup.js.map +1 -1
- package/dist/components/pro/Flow/panels/FlowToolbar.js +347 -391
- package/dist/components/pro/Flow/panels/FlowToolbar.js.map +1 -1
- package/dist/components/pro/Flow/panels/InspectorPanel.js +1792 -1798
- package/dist/components/pro/Flow/panels/InspectorPanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/OutlinePanel.js +242 -244
- package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/PresentationMode.js +137 -138
- package/dist/components/pro/Flow/panels/PresentationMode.js.map +1 -1
- package/dist/components/pro/Flow/panels/ProjectTitle.js +46 -46
- package/dist/components/pro/Flow/panels/ProjectTitle.js.map +1 -1
- package/dist/components/pro/Flow/panels/ShapePalette.js +557 -567
- package/dist/components/pro/Flow/panels/ShapePalette.js.map +1 -1
- package/dist/components/pro/Flow/panels/toolbarIcons.d.ts +0 -1
- package/dist/components/pro/Flow/panels/toolbarIcons.js +508 -557
- package/dist/components/pro/Flow/panels/toolbarIcons.js.map +1 -1
- package/dist/components/pro/Flow/types.js +26 -26
- package/dist/components/pro/Flow/types.js.map +1 -1
- package/dist/components/pro/Flow/utils/dashedLine.js +113 -117
- package/dist/components/pro/Flow/utils/dashedLine.js.map +1 -1
- package/dist/components/pro/Flow/utils/gradient.js +55 -55
- package/dist/components/pro/Flow/utils/gradient.js.map +1 -1
- package/dist/components/pro/Flow/utils/pdfExport.js +50 -89
- package/dist/components/pro/Flow/utils/pdfExport.js.map +1 -1
- package/dist/components/pro/Flow/utils/themeColor.js +185 -195
- package/dist/components/pro/Flow/utils/themeColor.js.map +1 -1
- package/dist/components/pro/Gantt/Gantt.d.ts +7 -0
- package/dist/components/pro/Gantt/hooks/useGanttDrag.d.ts +31 -0
- package/dist/components/pro/Gantt/hooks/useGanttState.d.ts +58 -0
- package/dist/components/pro/Gantt/index.d.ts +6 -0
- package/dist/components/pro/Gantt/types.d.ts +478 -0
- package/dist/components/pro/Gantt/utils.d.ts +124 -0
- package/dist/components/pro/Resizable/Resizable.d.ts +30 -0
- package/dist/components/pro/Resizable/index.d.ts +2 -0
- package/dist/components/pro/RichTextEditor/AIRewrite.js +323 -334
- package/dist/components/pro/RichTextEditor/AIRewrite.js.map +1 -1
- package/dist/components/pro/RichTextEditor/BlockHandle.js +314 -316
- package/dist/components/pro/RichTextEditor/BlockHandle.js.map +1 -1
- package/dist/components/pro/RichTextEditor/BubbleToolbar.js +97 -97
- package/dist/components/pro/RichTextEditor/BubbleToolbar.js.map +1 -1
- package/dist/components/pro/RichTextEditor/CommentDialog.js +88 -88
- package/dist/components/pro/RichTextEditor/CommentDialog.js.map +1 -1
- package/dist/components/pro/RichTextEditor/CommentPanel.js +240 -240
- package/dist/components/pro/RichTextEditor/CommentPanel.js.map +1 -1
- package/dist/components/pro/RichTextEditor/CommentPopover.js +234 -234
- package/dist/components/pro/RichTextEditor/CommentPopover.js.map +1 -1
- package/dist/components/pro/RichTextEditor/ContextMenu.js +251 -252
- package/dist/components/pro/RichTextEditor/ContextMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/RichTextEditor.js +267 -271
- package/dist/components/pro/RichTextEditor/RichTextEditor.js.map +1 -1
- package/dist/components/pro/RichTextEditor/SlashMenu.js +214 -214
- package/dist/components/pro/RichTextEditor/SlashMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js +44 -75
- package/dist/components/pro/RichTextEditor/Toolbar/ColorPicker.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js +261 -261
- package/dist/components/pro/RichTextEditor/Toolbar/FloatingDialogMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js +172 -526
- package/dist/components/pro/RichTextEditor/Toolbar/MarkdownTemplates.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js +112 -114
- package/dist/components/pro/RichTextEditor/Toolbar/SelectDropdown.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js +194 -194
- package/dist/components/pro/RichTextEditor/Toolbar/TableOpsMenu.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js +970 -973
- package/dist/components/pro/RichTextEditor/Toolbar/Toolbar.js.map +1 -1
- package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js +11 -12
- package/dist/components/pro/RichTextEditor/Toolbar/ToolbarButton.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js +310 -344
- package/dist/components/pro/RichTextEditor/extensions/CodeBlockView.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/CommentMark.js +38 -39
- package/dist/components/pro/RichTextEditor/extensions/CommentMark.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js +620 -625
- package/dist/components/pro/RichTextEditor/extensions/FloatingDialog.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/FontSize.js +25 -25
- package/dist/components/pro/RichTextEditor/extensions/FontSize.js.map +1 -1
- package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js +167 -176
- package/dist/components/pro/RichTextEditor/extensions/MarkdownBlock.js.map +1 -1
- package/dist/components/pro/RichTextEditor/types.js +75 -75
- package/dist/components/pro/RichTextEditor/types.js.map +1 -1
- package/dist/contexts/AppContext.d.ts +1 -1
- package/dist/contexts/AppContext.js +216 -221
- package/dist/contexts/AppContext.js.map +1 -1
- package/dist/data-table.js +15 -41
- package/dist/data-table.js.map +1 -1
- package/dist/dishui.css +1 -1
- package/dist/flow.js +27 -83
- package/dist/hooks/useClickOutside.js +18 -18
- package/dist/hooks/useClickOutside.js.map +1 -1
- package/dist/hooks/useContainerElement.js +9 -9
- package/dist/hooks/useContainerElement.js.map +1 -1
- package/dist/hooks/useControllableState.js +33 -35
- package/dist/hooks/useControllableState.js.map +1 -1
- package/dist/hooks/useCopyToClipboard.js +16 -16
- package/dist/hooks/useCopyToClipboard.js.map +1 -1
- package/dist/hooks/useDebounce.js +14 -14
- package/dist/hooks/useDebounce.js.map +1 -1
- package/dist/hooks/useDraggable.js +50 -50
- package/dist/hooks/useDraggable.js.map +1 -1
- package/dist/hooks/useTableColumns.js +39 -42
- package/dist/hooks/useTableColumns.js.map +1 -1
- package/dist/hooks/useTableData.js +67 -68
- package/dist/hooks/useTableData.js.map +1 -1
- package/dist/index-nostyled.d.ts +8 -0
- package/dist/index.d.ts +29 -1
- package/dist/index.js +106 -236
- package/dist/layouts/MainLayout.js +56 -56
- package/dist/layouts/MainLayout.js.map +1 -1
- package/dist/layouts/Navbar.js +214 -214
- package/dist/layouts/Navbar.js.map +1 -1
- package/dist/layouts/Sidebar.js +184 -165
- package/dist/layouts/Sidebar.js.map +1 -1
- package/dist/layouts/headbar/Headbar.js +25 -25
- package/dist/layouts/headbar/Headbar.js.map +1 -1
- package/dist/layouts/headbar/HeadbarLangSwitcher.js +39 -39
- package/dist/layouts/headbar/HeadbarLangSwitcher.js.map +1 -1
- package/dist/layouts/headbar/HeadbarSearch.js +120 -120
- package/dist/layouts/headbar/HeadbarSearch.js.map +1 -1
- package/dist/layouts/headbar/HeadbarThemeSwitcher.js +27 -27
- package/dist/layouts/headbar/HeadbarThemeSwitcher.js.map +1 -1
- package/dist/layouts/headbar/HeadbarTitle.js +26 -26
- package/dist/layouts/headbar/HeadbarTitle.js.map +1 -1
- package/dist/lite.js +9 -24
- package/dist/markdown.js +4 -9
- package/dist/pages/components/Calendar/index.d.ts +3 -0
- package/dist/pages/components/Calendar/index.en.d.ts +3 -0
- package/dist/pages/components/Calendar/index.zh.d.ts +3 -0
- package/dist/pages/components/Chat/index.d.ts +3 -0
- package/dist/pages/components/Chat/index.en.d.ts +3 -0
- package/dist/pages/components/Chat/index.zh.d.ts +3 -0
- package/dist/pages/components/FloatWindow/index.d.ts +3 -0
- package/dist/pages/components/FloatWindow/index.en.d.ts +3 -0
- package/dist/pages/components/FloatWindow/index.zh.d.ts +3 -0
- package/dist/pages/components/Gantt/index.d.ts +3 -0
- package/dist/pages/components/Gantt/index.en.d.ts +3 -0
- package/dist/pages/components/Gantt/index.zh.d.ts +3 -0
- package/dist/pages/components/GridLayout/index.d.ts +3 -0
- package/dist/pages/components/GridLayout/index.en.d.ts +3 -0
- package/dist/pages/components/GridLayout/index.zh.d.ts +3 -0
- package/dist/pages/components/Notification/index.d.ts +3 -0
- package/dist/pages/components/Notification/index.en.d.ts +3 -0
- package/dist/pages/components/Notification/index.zh.d.ts +3 -0
- package/dist/pages/components/Resizable/index.d.ts +3 -0
- package/dist/pages/components/Resizable/index.en.d.ts +3 -0
- package/dist/pages/components/Resizable/index.zh.d.ts +3 -0
- package/dist/pages/components/Tab/index.d.ts +3 -0
- package/dist/pages/components/Tab/index.en.d.ts +3 -0
- package/dist/pages/components/Tab/index.zh.d.ts +3 -0
- package/dist/styles/themeStyles.js +87 -86
- package/dist/styles/themeStyles.js.map +1 -1
- package/dist/utils/cn.d.ts +13 -0
- package/dist/utils/cn.js +16 -0
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/i18n.js +690 -602
- package/dist/utils/i18n.js.map +1 -1
- package/dist/utils/menu.js +94 -94
- package/dist/utils/menu.js.map +1 -1
- package/dist/utils/rehype-code-meta.js +14 -14
- package/dist/utils/rehype-code-meta.js.map +1 -1
- package/dist/utils/remark-code-meta.js +9 -9
- package/dist/utils/remark-code-meta.js.map +1 -1
- package/dist/utils/routerBuilder.js +59 -58
- package/dist/utils/routerBuilder.js.map +1 -1
- package/dist/utils/selection.js +28 -29
- package/dist/utils/selection.js.map +1 -1
- package/dist/utils/themes.js +275 -255
- package/dist/utils/themes.js.map +1 -1
- 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":";;;;;;;;AAUA,IAAM,KAAgB;AAAA,EAClB,SAAS;AAAA,EACT,aAAa;AAAA,EACb,OAAO;AAAA,EACP,aAAa;AACjB;AAIA,SAAS,GAAe,GAAc,GAAc,GAAkB,GAAmC;AAErG,MAAI,EAAE,SAAS,EAAE,KACb,QAAO,EAAE,SAAS,WAAW,KAAK;AAGtC,MAAI,IAAM;AACV,UAAQ,GAAR;AAAA,IACI,KAAK;AACD,MAAA,IAAM,EAAE,KAAK,cAAc,EAAE,MAAM,QAAW,EAAE,aAAa,OAAO,CAAC;AACrE;AAAA,IACJ,KAAK;AACD,MAAA,KAAO,EAAE,QAAQ,MAAM,EAAE,QAAQ;AACjC;AAAA,IACJ,KAAK;AAGD,MAAA,KAFc,EAAE,aAAa,IAAI,KAAK,EAAE,UAAU,EAAE,QAAQ,IAAI,MAClD,EAAE,aAAa,IAAI,KAAK,EAAE,UAAU,EAAE,QAAQ,IAAI;AAEhE;AAAA,IAEJ,KAAK,QAAQ;AACT,YAAM,IAAO,EAAE,KAAK,MAAM,GAAG,EAAE,IAAI,GAAG,YAAY,KAAK,IACjD,IAAO,EAAE,KAAK,MAAM,GAAG,EAAE,IAAI,GAAG,YAAY,KAAK;AACvD,MAAA,IAAM,EAAK,cAAc,CAAI;AAC7B;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO,MAAc,SAAS,CAAC,IAAM;AACzC;AAEA,IAAa,KAAA,CAA6C,EACtD,SAAA,GACA,eAAA,GACA,aAAA,IAAc,KACd,UAAU,IAAkB,QAC5B,cAAA,IAAe,IACf,cAAA,IAAe,IACf,cAAA,IAAe,IACf,cAAA,IAAe,IACf,cAAA,GACA,mBAAA,GACA,WAAA,IAAY,IACZ,QAAQ,GACR,cAAA,GACA,cAAA,GACA,kBAAA,GACA,eAAA,EAAA,MACE;AACF,QAAM,IAAS;AAAA,IAAE,GAAG;AAAA,IAAe,GAAG;AAAA,EAAW,GAG3C,CAAC,GAAa,CAAA,IAAkB,EAAS,CAAW,GACpD,CAAC,GAAS,CAAA,IAAc,EAAsB,CAAC,CAAC,GAChD,CAAC,GAAW,CAAA,IAAgB,EAAS,EAAK,GAC1C,CAAC,GAAa,CAAA,IAAkB,EAAS,EAAE,GAC3C,CAAC,GAAU,CAAA,IAAe,EAAmB,CAAe,GAC5D,CAAC,GAAY,CAAA,IAAiB,EAAqB;AAAA,IAAE,OAAO;AAAA,IAAQ,WAAW;AAAA,EAAM,CAAC,GACtF,CAAC,GAAY,CAAA,IAAiB,EAAmC,IAAI,GACrE,CAAC,GAAc,CAAA,IAAmB,EAAS,EAAK,GAGhD,IAAe,EAAY,OAAO,MAAiB;AACrD,IAAA,EAAa,EAAI;AACjB,QAAI;AACA,YAAM,IAAS,MAAM,EAAQ,KAAK,CAAI;AACtC,MAAA,EAAW,CAAM;AAAA,IACrB,SAAS,GAAK;AACV,cAAQ,MAAM,6BAA6B,CAAG,GAC9C,EAAW,CAAC,CAAC;AAAA,IACjB,UAAA;AACI,MAAA,EAAa,EAAK;AAAA,IACtB;AAAA,EACJ,GAAG,CAAC,CAAO,CAAC;AAEZ,EAAA,GAAA,MAAgB;AACZ,IAAA,EAAa,CAAW;AAAA,EAC5B,GAAG,CAAC,GAAa,CAAY,CAAC;AAG9B,QAAM,IAAa,EAAA,CAAa,MAAiB;AAC7C,IAAA,EAAe,CAAI,GACnB,EAAe,EAAE,GACjB,EAAc,IAAI,GAClB,EAAgB,EAAK,GACrB,IAAe,CAAI;AAAA,EACvB,GAAG,CAAC,CAAY,CAAC,GAGX,IAAmB,GAAA,MAAc;AACnC,QAAI,IAAW;AAEf,QAAI,GAAa;AACb,YAAM,IAAI,EAAY,YAAY;AAClC,MAAA,IAAW,EAAQ,OAAA,CAAO,MAAK,EAAE,KAAK,YAAY,EAAE,SAAS,CAAC,CAAC;AAAA,IACnE;AAEA,WAAO,CAAC,GAAG,CAAQ,EAAE,KAAA,CAAM,GAAG,MAAM,GAAe,GAAG,GAAG,EAAW,OAAO,EAAW,SAAS,CAAC;AAAA,EACpG,GAAG;AAAA,IAAC;AAAA,IAAS;AAAA,IAAa;AAAA,EAAU,CAAC,GAG/B,IAAmB,EAAA,CAAa,MAAqB;AACvD,IAAI,EAAM,SAAS,WACf,EAAW,EAAM,IAAI,IAErB,IAAe,CAAK;AAAA,EAE5B,GAAG,CAAC,GAAY,CAAY,CAAC,GAEvB,IAAyB,EAAA,CAAa,MAAqB;AAC7D,IAAI,EAAM,SAAS,WACf,EAAW,EAAM,IAAI,IAErB,IAAe,CAAK;AAAA,EAE5B,GAAG,CAAC,GAAY,CAAY,CAAC,GAGvB,IAAe,EAAY,OAAO,MAAqB;AACzD,QAAK,EAAQ;AACb,UAAI;AACA,cAAM,EAAQ,OAAO,EAAM,IAAI,GAC/B,EAAA,CAAW,MAAQ,EAAK,OAAA,CAAO,MAAK,EAAE,SAAS,EAAM,IAAI,CAAC;AAAA,MAC9D,SAAS,GAAK;AACV,gBAAQ,MAAM,qBAAqB,CAAG;AAAA,MAC1C;AAAA,EACJ,GAAG,CAAC,CAAO,CAAC,GAGN,IAAe,EAAY,OAAO,MAAqB;AACzD,QAAI,CAAC,EAAQ,OAAQ;AACrB,UAAM,IAAU,OAAO,OAAO,aAAa,EAAM,IAAI;AACrD,QAAI,GAAC,KAAW,MAAY,EAAM;AAClC,UAAI;AACA,cAAM,IAAU,MAAM,EAAQ,OAAO,EAAM,MAAM,CAAO;AACxD,QAAA,EAAA,CAAW,MAAQ,EAAK,IAAA,CAAI,MAAK,EAAE,SAAS,EAAM,OAAO,IAAU,CAAC,CAAC;AAAA,MACzE,SAAS,GAAK;AACV,gBAAQ,MAAM,qBAAqB,CAAG;AAAA,MAC1C;AAAA,EACJ,GAAG,CAAC,CAAO,CAAC,GAGN,IAAe,EAAY,OAAO,MAAiB;AACrD,QAAK;AAEL,UAAI;AACA,YAAI;AACJ,QAAI,MAAe,YAAY,EAAQ,eACnC,IAAW,MAAM,EAAQ,aAAa,GAAa,CAAI,IAChD,MAAe,UAAU,EAAQ,eACxC,IAAW,MAAM,EAAQ,WAAW,GAAa,CAAI,IAErD,KACA,EAAA,CAAW,MAAQ,CAAC,GAAG,GAAM,CAAS,CAAC;AAAA,MAE/C,SAAS,GAAK;AACV,gBAAQ,MAAM,qBAAqB,CAAG;AAAA,MAC1C,UAAA;AACI,QAAA,EAAc,IAAI;AAAA,MACtB;AAAA,EACJ,GAAG;AAAA,IAAC;AAAA,IAAY;AAAA,IAAa;AAAA,EAAO,CAAC,GAG/B,IAAuB,EAAA,CAAa,MAA4B;AAElE,IAAA,EAAa,CAAW,GACxB,IAAmB,CAAO;AAAA,EAC9B,GAAG;AAAA,IAAC;AAAA,IAAc;AAAA,IAAa;AAAA,EAAgB,CAAC,GAE1C,IAAY,KAAgB,CAAC,CAAC;AAEpC,SACI,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW,yFAAyF,CAAA;AAAA,cAAzG;AAAA,MAEI,gBAAA,EAAC,OAAD;AAAA,QAAK,WAAU;AAAA,kBACX,gBAAA,EAAC,GAAD;AAAA,UACI,MAAM;AAAA,UACE,QAAA;AAAA,UACC,SAAA;AAAA,UACT,YAAY;AAAA,QACf,CAAA;AAAA,MACA,CAAA;AAAA,MAGL,gBAAA,EAAC,IAAD;AAAA,QACiB,aAAA;AAAA,QACb,gBAAgB;AAAA,QACN,UAAA;AAAA,QACV,kBAAkB;AAAA,QACN,YAAA;AAAA,QACZ,cAAc;AAAA,QACA,cAAA;AAAA,QACd,iBAAiB,CAAC,CAAC,EAAQ;AAAA,QAC3B,eAAe,CAAC,CAAC,EAAQ;AAAA,QACzB,gBAAA,MAAsB,EAAc,QAAQ;AAAA,QAC5C,cAAA,MAAoB,EAAc,MAAM;AAAA,QACxC,cAAc;AAAA,QACd,eAAA,MAAqB,EAAA,CAAgB,MAAQ,CAAC,CAAI;AAAA,QAC1C,QAAA;AAAA,MACX,CAAA;AAAA,MAGA,KACG,gBAAA,EAAC,OAAD;AAAA,QAAK,WAAU;AAAA,kBACX,gBAAA,EAAC,IAAD;AAAA,UACI,MAAM;AAAA,UACE,QAAA;AAAA,UACR,WAAW;AAAA,UACX,UAAA,MAAgB,EAAc,IAAI;AAAA,QACrC,CAAA;AAAA,MACA,CAAA;AAAA,MAIR,KAAgB,KACb,gBAAA,EAAC,OAAD;AAAA,QAAK,WAAU;AAAA,kBACX,gBAAA,EAAC,GAAD;AAAA,UACI,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,UAAA;AAAA,UACA,YAAA;AAAA,UACQ,QAAA;AAAA,UACR,kBAAkB;AAAA,UAClB,SAAS;AAAA,QACZ,CAAA;AAAA,MACA,CAAA;AAAA,MAIT,gBAAA,EAAC,OAAD;AAAA,QAAK,WAAU;AAAA,kBACV,IACG,gBAAA,EAAC,OAAD;AAAA,UAAK,WAAU;AAAA,oBAAf,CACI,gBAAA,EAAC,QAAD,EAAM,WAAU,gDAAiD,CAAA,GACjE,gBAAA,EAAC,QAAD;AAAA,YAAM,WAAU;AAAA,sBAA2B,EAAO;AAAA,UAAc,CAAA,CAC/D;AAAA,aACL,MAAa,SACb,gBAAA,EAAC,IAAD;AAAA,UACI,SAAS;AAAA,UACG,YAAA;AAAA,UACZ,cAAc;AAAA,UACd,cAAc;AAAA,UACd,oBAAoB;AAAA,UACpB,UAAU,IAAe,IAAe;AAAA,UACxC,UAAU,IAAe,IAAe;AAAA,UAC1B,cAAA;AAAA,UACA,cAAA;AAAA,UACN,QAAA;AAAA,QACX,CAAA,IAED,gBAAA,EAAC,IAAD;AAAA,UACI,SAAS;AAAA,UACT,cAAc;AAAA,UACd,oBAAoB;AAAA,UACpB,UAAU,IAAe,IAAe;AAAA,UACxC,UAAU,IAAe,IAAe;AAAA,UAC1B,cAAA;AAAA,UACA,cAAA;AAAA,UACN,QAAA;AAAA,QACX,CAAA;AAAA,MAEJ,CAAA;AAAA,MAGL,gBAAA,EAAC,OAAD;AAAA,QAAK,WAAU;AAAA,kBAAf,CACI,gBAAA,EAAC,QAAD,EAAA,UAAA;AAAA,UAAO,EAAiB;AAAA,UAAO;AAAA,UAAE,EAAO;AAAA,QAAY,EAAA,CAAA,GACnD,KACG,gBAAA,EAAC,QAAD;AAAA,UAAM,WAAU;AAAA,oBAAhB,CAAyB,kBAAe,EAAQ,MAAa;AAAA,UAEhE;AAAA;IACJ;AAAA;AAEb"}
|
|
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
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
})
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
})
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
})
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
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
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
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":"
|
|
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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"}
|