dishui 0.0.65 → 0.0.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +10 -15
- package/dist/components/Badge/index.js.map +1 -1
- package/dist/components/Button/index.js +62 -89
- package/dist/components/Button/index.js.map +1 -1
- package/dist/components/Card/index.d.ts +76 -0
- package/dist/components/Card/index.js +178 -69
- 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 -65
- 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.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 -74
- 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 -58
- package/dist/components/List/index.js.map +1 -1
- package/dist/components/Markdown/Markdown.js +106 -107
- 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.js +82 -82
- 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.js +40 -71
- package/dist/components/Page/index.js.map +1 -1
- 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 -254
- 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 +29 -1
- package/dist/components/StatCard/index.js +189 -86
- 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 -121
- package/dist/components/Table/index.js.map +1 -1
- package/dist/components/Tabs/index.js +28 -38
- 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 -327
- package/dist/components/pro/CodeEditor/editors/CodeEditor.js.map +1 -1
- package/dist/components/pro/CodeEditor/editors/MarkdownEditor.js +167 -224
- 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 -306
- 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 -144
- 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 +189 -189
- 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 -948
- package/dist/components/pro/Flow/Flow.js.map +1 -1
- package/dist/components/pro/Flow/FlowCanvas.js +1626 -1662
- 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 -180
- 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 -242
- 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 -589
- 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 -248
- package/dist/components/pro/Flow/panels/OutlinePanel.js.map +1 -1
- package/dist/components/pro/Flow/panels/PresentationMode.js +137 -140
- 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 -572
- 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 -41
- 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 +27 -1
- package/dist/index.js +105 -241
- 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 -186
- 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 -60
- 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 +19 -6
|
@@ -1,131 +1,130 @@
|
|
|
1
|
-
import { DropZone as
|
|
2
|
-
import { UploadQueue as
|
|
3
|
-
import { useCallback as
|
|
4
|
-
import { jsx as
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { DropZone as e } from "./DropZone.js";
|
|
2
|
+
import { UploadQueue as t } from "./UploadQueue.js";
|
|
3
|
+
import { useCallback as n, useRef as r, useState as i } from "react";
|
|
4
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/FileUploader/FileUploader.tsx
|
|
6
|
+
var s = 0;
|
|
7
|
+
function c() {
|
|
8
|
+
return `file-${Date.now()}-${++s}`;
|
|
8
9
|
}
|
|
9
|
-
var
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
});
|
|
126
|
-
};
|
|
127
|
-
export {
|
|
128
|
-
J as FileUploader
|
|
10
|
+
var l = ({ adapter: s, accept: l, maxFileSize: u, maxFiles: d, multiple: f = !0, autoUpload: p = !1, className: m = "", labels: h, onUploadComplete: g, onError: _, onFilesChange: v }) => {
|
|
11
|
+
let [y, b] = i([]), x = r([]), S = n((e) => {
|
|
12
|
+
b((t) => {
|
|
13
|
+
let n = e(t);
|
|
14
|
+
return x.current = n, v?.(n), n;
|
|
15
|
+
});
|
|
16
|
+
}, [v]), C = n(async (e) => {
|
|
17
|
+
let t = new AbortController();
|
|
18
|
+
S((n) => n.map((n) => n.id === e.id ? {
|
|
19
|
+
...n,
|
|
20
|
+
status: "uploading",
|
|
21
|
+
progress: 0,
|
|
22
|
+
error: void 0,
|
|
23
|
+
abortController: t
|
|
24
|
+
} : n));
|
|
25
|
+
try {
|
|
26
|
+
let n = await s.upload(e.file, (t) => {
|
|
27
|
+
S((n) => n.map((n) => n.id === e.id ? {
|
|
28
|
+
...n,
|
|
29
|
+
progress: Math.min(t, 100)
|
|
30
|
+
} : n));
|
|
31
|
+
}, t.signal);
|
|
32
|
+
return S((t) => t.map((t) => t.id === e.id ? {
|
|
33
|
+
...t,
|
|
34
|
+
status: "success",
|
|
35
|
+
progress: 100,
|
|
36
|
+
result: n,
|
|
37
|
+
abortController: void 0
|
|
38
|
+
} : t)), n;
|
|
39
|
+
} catch (t) {
|
|
40
|
+
if (t?.name === "AbortError") return S((t) => t.map((t) => t.id === e.id ? {
|
|
41
|
+
...t,
|
|
42
|
+
status: "pending",
|
|
43
|
+
progress: 0,
|
|
44
|
+
abortController: void 0
|
|
45
|
+
} : t)), null;
|
|
46
|
+
let n = t?.message || "Upload failed";
|
|
47
|
+
return S((t) => t.map((t) => t.id === e.id ? {
|
|
48
|
+
...t,
|
|
49
|
+
status: "error",
|
|
50
|
+
error: n,
|
|
51
|
+
abortController: void 0
|
|
52
|
+
} : t)), _?.(e.file, t instanceof Error ? t : Error(n)), null;
|
|
53
|
+
}
|
|
54
|
+
}, [
|
|
55
|
+
s,
|
|
56
|
+
S,
|
|
57
|
+
_
|
|
58
|
+
]), w = n((e) => {
|
|
59
|
+
let t = e.map((e) => ({
|
|
60
|
+
id: c(),
|
|
61
|
+
file: e,
|
|
62
|
+
status: "pending",
|
|
63
|
+
progress: 0
|
|
64
|
+
}));
|
|
65
|
+
S((e) => [...e, ...t]), p && t.forEach((e) => {
|
|
66
|
+
C(e).then((e) => {
|
|
67
|
+
if (e) {
|
|
68
|
+
let e = x.current;
|
|
69
|
+
if (e.every((e) => e.status === "success" || e.status === "error")) {
|
|
70
|
+
let t = e.filter((e) => e.status === "success" && e.result).map((e) => e.result);
|
|
71
|
+
t.length > 0 && g?.(t);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
}, [
|
|
77
|
+
p,
|
|
78
|
+
C,
|
|
79
|
+
S,
|
|
80
|
+
g
|
|
81
|
+
]), T = n(() => {
|
|
82
|
+
let e = x.current.filter((e) => e.status === "pending").map((e) => C(e));
|
|
83
|
+
Promise.allSettled(e).then(() => {
|
|
84
|
+
let e = x.current.filter((e) => e.status === "success" && e.result).map((e) => e.result);
|
|
85
|
+
e.length > 0 && g?.(e);
|
|
86
|
+
});
|
|
87
|
+
}, [C, g]), E = n(() => {
|
|
88
|
+
y.forEach((e) => {
|
|
89
|
+
e.status === "uploading" && e.abortController && e.abortController.abort();
|
|
90
|
+
});
|
|
91
|
+
}, [y]), D = n(() => {
|
|
92
|
+
S((e) => e.filter((e) => e.status !== "success"));
|
|
93
|
+
}, [S]), O = n((e) => {
|
|
94
|
+
S((t) => t.filter((t) => t.id !== e));
|
|
95
|
+
}, [S]), k = n((e) => {
|
|
96
|
+
let t = x.current.find((t) => t.id === e);
|
|
97
|
+
t && C(t);
|
|
98
|
+
}, [C]), A = n((e) => {
|
|
99
|
+
let t = x.current.find((t) => t.id === e);
|
|
100
|
+
t?.abortController && t.abortController.abort();
|
|
101
|
+
}, []), j = n((e, t) => {
|
|
102
|
+
_?.(e, Error(t));
|
|
103
|
+
}, [_]);
|
|
104
|
+
return /* @__PURE__ */ o("div", {
|
|
105
|
+
className: `w-full ${m}`,
|
|
106
|
+
children: [/* @__PURE__ */ a(e, {
|
|
107
|
+
accept: l,
|
|
108
|
+
maxFileSize: u,
|
|
109
|
+
maxFiles: d,
|
|
110
|
+
multiple: f,
|
|
111
|
+
currentFileCount: y.length,
|
|
112
|
+
labels: h,
|
|
113
|
+
onFilesAdded: w,
|
|
114
|
+
onValidationError: j
|
|
115
|
+
}), /* @__PURE__ */ a(t, {
|
|
116
|
+
items: y,
|
|
117
|
+
labels: h,
|
|
118
|
+
onRemove: O,
|
|
119
|
+
onRetry: k,
|
|
120
|
+
onCancel: A,
|
|
121
|
+
onUploadAll: T,
|
|
122
|
+
onCancelAll: E,
|
|
123
|
+
onClearCompleted: D
|
|
124
|
+
})]
|
|
125
|
+
});
|
|
129
126
|
};
|
|
127
|
+
//#endregion
|
|
128
|
+
export { l as FileUploader };
|
|
130
129
|
|
|
131
130
|
//# sourceMappingURL=FileUploader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUploader.js","names":[],"sources":["../../../src/components/FileUploader/FileUploader.tsx"],"sourcesContent":["import React, { useState, useCallback, useRef } from 'react';\nimport { FileUploaderProps, FileItemState, UploadResult } from './types';\nimport { DropZone } from './DropZone';\nimport { UploadQueue } from './UploadQueue';\n\nlet fileIdCounter = 0;\nfunction nextFileId(): string {\n return `file-${Date.now()}-${++fileIdCounter}`;\n}\n\nexport const FileUploader: React.FC<FileUploaderProps> = ({\n adapter,\n accept,\n maxFileSize,\n maxFiles,\n multiple = true,\n autoUpload = false,\n className = '',\n labels,\n onUploadComplete,\n onError,\n onFilesChange,\n}) => {\n const [items, setItems] = useState<FileItemState[]>([]);\n const itemsRef = useRef<FileItemState[]>([]);\n\n // Keep ref in sync for use in async callbacks\n const updateItems = useCallback((updater: (prev: FileItemState[]) => FileItemState[]) => {\n setItems(prev => {\n const next = updater(prev);\n itemsRef.current = next;\n onFilesChange?.(next);\n return next;\n });\n }, [onFilesChange]);\n\n // Upload a single file item\n const uploadFile = useCallback(async (item: FileItemState) => {\n const abortController = new AbortController();\n\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id\n ? { ...i, status: 'uploading' as const, progress: 0, error: undefined, abortController }\n : i\n )\n );\n\n try {\n const result = await adapter.upload(\n item.file,\n (percent) => {\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id ? { ...i, progress: Math.min(percent, 100) } : i\n )\n );\n },\n abortController.signal,\n );\n\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id\n ? { ...i, status: 'success' as const, progress: 100, result, abortController: undefined }\n : i\n )\n );\n\n return result;\n } catch (err: any) {\n if (err?.name === 'AbortError') {\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id\n ? { ...i, status: 'pending' as const, progress: 0, abortController: undefined }\n : i\n )\n );\n return null;\n }\n\n const errorMsg = err?.message || 'Upload failed';\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id\n ? { ...i, status: 'error' as const, error: errorMsg, abortController: undefined }\n : i\n )\n );\n onError?.(item.file, err instanceof Error ? err : new Error(errorMsg));\n return null;\n }\n }, [adapter, updateItems, onError]);\n\n // Add files from drop zone\n const handleFilesAdded = useCallback((files: File[]) => {\n const newItems: FileItemState[] = files.map(file => ({\n id: nextFileId(),\n file,\n status: 'pending' as const,\n progress: 0,\n }));\n\n updateItems(prev => [...prev, ...newItems]);\n\n if (autoUpload) {\n // Start uploading each new file\n newItems.forEach(item => {\n uploadFile(item).then(result => {\n if (result) {\n // Check if all items are done after this upload\n const current = itemsRef.current;\n const allDone = current.every(i => i.status === 'success' || i.status === 'error');\n if (allDone) {\n const results = current\n .filter(i => i.status === 'success' && i.result)\n .map(i => i.result!);\n if (results.length > 0) {\n onUploadComplete?.(results);\n }\n }\n }\n });\n });\n }\n }, [autoUpload, uploadFile, updateItems, onUploadComplete]);\n\n // Upload all pending\n const handleUploadAll = useCallback(() => {\n const pending = itemsRef.current.filter(i => i.status === 'pending');\n const uploads = pending.map(item => uploadFile(item));\n\n Promise.allSettled(uploads).then(() => {\n const current = itemsRef.current;\n const results = current\n .filter(i => i.status === 'success' && i.result)\n .map(i => i.result!);\n if (results.length > 0) {\n onUploadComplete?.(results);\n }\n });\n }, [uploadFile, onUploadComplete]);\n\n // Cancel all uploading\n const handleCancelAll = useCallback(() => {\n items.forEach(item => {\n if (item.status === 'uploading' && item.abortController) {\n item.abortController.abort();\n }\n });\n }, [items]);\n\n // Clear completed\n const handleClearCompleted = useCallback(() => {\n updateItems(prev => prev.filter(i => i.status !== 'success'));\n }, [updateItems]);\n\n // Remove single file\n const handleRemove = useCallback((id: string) => {\n updateItems(prev => prev.filter(i => i.id !== id));\n }, [updateItems]);\n\n // Retry single file\n const handleRetry = useCallback((id: string) => {\n const item = itemsRef.current.find(i => i.id === id);\n if (item) uploadFile(item);\n }, [uploadFile]);\n\n // Cancel single upload\n const handleCancel = useCallback((id: string) => {\n const item = itemsRef.current.find(i => i.id === id);\n if (item?.abortController) {\n item.abortController.abort();\n }\n }, []);\n\n const handleValidationError = useCallback((file: File, error: string) => {\n onError?.(file, new Error(error));\n }, [onError]);\n\n return (\n <div className={`w-full ${className}`}>\n <DropZone\n accept={accept}\n maxFileSize={maxFileSize}\n maxFiles={maxFiles}\n multiple={multiple}\n currentFileCount={items.length}\n labels={labels}\n onFilesAdded={handleFilesAdded}\n onValidationError={handleValidationError}\n />\n <UploadQueue\n items={items}\n labels={labels}\n onRemove={handleRemove}\n onRetry={handleRetry}\n onCancel={handleCancel}\n onUploadAll={handleUploadAll}\n onCancelAll={handleCancelAll}\n onClearCompleted={handleClearCompleted}\n />\n </div>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FileUploader.js","names":[],"sources":["../../../src/components/FileUploader/FileUploader.tsx"],"sourcesContent":["import React, { useState, useCallback, useRef } from 'react';\nimport { FileUploaderProps, FileItemState, UploadResult } from './types';\nimport { DropZone } from './DropZone';\nimport { UploadQueue } from './UploadQueue';\n\nlet fileIdCounter = 0;\nfunction nextFileId(): string {\n return `file-${Date.now()}-${++fileIdCounter}`;\n}\n\nexport const FileUploader: React.FC<FileUploaderProps> = ({\n adapter,\n accept,\n maxFileSize,\n maxFiles,\n multiple = true,\n autoUpload = false,\n className = '',\n labels,\n onUploadComplete,\n onError,\n onFilesChange,\n}) => {\n const [items, setItems] = useState<FileItemState[]>([]);\n const itemsRef = useRef<FileItemState[]>([]);\n\n // Keep ref in sync for use in async callbacks\n const updateItems = useCallback((updater: (prev: FileItemState[]) => FileItemState[]) => {\n setItems(prev => {\n const next = updater(prev);\n itemsRef.current = next;\n onFilesChange?.(next);\n return next;\n });\n }, [onFilesChange]);\n\n // Upload a single file item\n const uploadFile = useCallback(async (item: FileItemState) => {\n const abortController = new AbortController();\n\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id\n ? { ...i, status: 'uploading' as const, progress: 0, error: undefined, abortController }\n : i\n )\n );\n\n try {\n const result = await adapter.upload(\n item.file,\n (percent) => {\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id ? { ...i, progress: Math.min(percent, 100) } : i\n )\n );\n },\n abortController.signal,\n );\n\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id\n ? { ...i, status: 'success' as const, progress: 100, result, abortController: undefined }\n : i\n )\n );\n\n return result;\n } catch (err: any) {\n if (err?.name === 'AbortError') {\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id\n ? { ...i, status: 'pending' as const, progress: 0, abortController: undefined }\n : i\n )\n );\n return null;\n }\n\n const errorMsg = err?.message || 'Upload failed';\n updateItems(prev =>\n prev.map(i =>\n i.id === item.id\n ? { ...i, status: 'error' as const, error: errorMsg, abortController: undefined }\n : i\n )\n );\n onError?.(item.file, err instanceof Error ? err : new Error(errorMsg));\n return null;\n }\n }, [adapter, updateItems, onError]);\n\n // Add files from drop zone\n const handleFilesAdded = useCallback((files: File[]) => {\n const newItems: FileItemState[] = files.map(file => ({\n id: nextFileId(),\n file,\n status: 'pending' as const,\n progress: 0,\n }));\n\n updateItems(prev => [...prev, ...newItems]);\n\n if (autoUpload) {\n // Start uploading each new file\n newItems.forEach(item => {\n uploadFile(item).then(result => {\n if (result) {\n // Check if all items are done after this upload\n const current = itemsRef.current;\n const allDone = current.every(i => i.status === 'success' || i.status === 'error');\n if (allDone) {\n const results = current\n .filter(i => i.status === 'success' && i.result)\n .map(i => i.result!);\n if (results.length > 0) {\n onUploadComplete?.(results);\n }\n }\n }\n });\n });\n }\n }, [autoUpload, uploadFile, updateItems, onUploadComplete]);\n\n // Upload all pending\n const handleUploadAll = useCallback(() => {\n const pending = itemsRef.current.filter(i => i.status === 'pending');\n const uploads = pending.map(item => uploadFile(item));\n\n Promise.allSettled(uploads).then(() => {\n const current = itemsRef.current;\n const results = current\n .filter(i => i.status === 'success' && i.result)\n .map(i => i.result!);\n if (results.length > 0) {\n onUploadComplete?.(results);\n }\n });\n }, [uploadFile, onUploadComplete]);\n\n // Cancel all uploading\n const handleCancelAll = useCallback(() => {\n items.forEach(item => {\n if (item.status === 'uploading' && item.abortController) {\n item.abortController.abort();\n }\n });\n }, [items]);\n\n // Clear completed\n const handleClearCompleted = useCallback(() => {\n updateItems(prev => prev.filter(i => i.status !== 'success'));\n }, [updateItems]);\n\n // Remove single file\n const handleRemove = useCallback((id: string) => {\n updateItems(prev => prev.filter(i => i.id !== id));\n }, [updateItems]);\n\n // Retry single file\n const handleRetry = useCallback((id: string) => {\n const item = itemsRef.current.find(i => i.id === id);\n if (item) uploadFile(item);\n }, [uploadFile]);\n\n // Cancel single upload\n const handleCancel = useCallback((id: string) => {\n const item = itemsRef.current.find(i => i.id === id);\n if (item?.abortController) {\n item.abortController.abort();\n }\n }, []);\n\n const handleValidationError = useCallback((file: File, error: string) => {\n onError?.(file, new Error(error));\n }, [onError]);\n\n return (\n <div className={`w-full ${className}`}>\n <DropZone\n accept={accept}\n maxFileSize={maxFileSize}\n maxFiles={maxFiles}\n multiple={multiple}\n currentFileCount={items.length}\n labels={labels}\n onFilesAdded={handleFilesAdded}\n onValidationError={handleValidationError}\n />\n <UploadQueue\n items={items}\n labels={labels}\n onRemove={handleRemove}\n onRetry={handleRetry}\n onCancel={handleCancel}\n onUploadAll={handleUploadAll}\n onCancelAll={handleCancelAll}\n onClearCompleted={handleClearCompleted}\n />\n </div>\n );\n};\n"],"mappings":";;;;;AAKA,IAAI,IAAgB;AACpB,SAAS,IAAqB;CAC1B,OAAO,QAAQ,KAAK,IAAI,EAAE,GAAG,EAAE;AACnC;AAEA,IAAa,KAA6C,EACtD,YACA,WACA,gBACA,aACA,cAAW,IACX,gBAAa,IACb,eAAY,IACZ,WACA,qBACA,YACA,uBACE;CACF,IAAM,CAAC,GAAO,KAAY,EAA0B,CAAC,CAAC,GAChD,IAAW,EAAwB,CAAC,CAAC,GAGrC,IAAc,GAAa,MAAwD;EACrF,GAAS,MAAQ;GACb,IAAM,IAAO,EAAQ,CAAI;GAGzB,OAFA,EAAS,UAAU,GACnB,IAAgB,CAAI,GACb;EACX,CAAC;CACL,GAAG,CAAC,CAAa,CAAC,GAGZ,IAAa,EAAY,OAAO,MAAwB;EAC1D,IAAM,IAAkB,IAAI,gBAAgB;EAE5C,GAAY,MACR,EAAK,KAAI,MACL,EAAE,OAAO,EAAK,KACR;GAAE,GAAG;GAAG,QAAQ;GAAsB,UAAU;GAAG,OAAO,KAAA;GAAW;EAAgB,IACrF,CACV,CACJ;EAEA,IAAI;GACA,IAAM,IAAS,MAAM,EAAQ,OACzB,EAAK,OACJ,MAAY;IACT,GAAY,MACR,EAAK,KAAI,MACL,EAAE,OAAO,EAAK,KAAK;KAAE,GAAG;KAAG,UAAU,KAAK,IAAI,GAAS,GAAG;IAAE,IAAI,CACpE,CACJ;GACJ,GACA,EAAgB,MACpB;GAUA,OARA,GAAY,MACR,EAAK,KAAI,MACL,EAAE,OAAO,EAAK,KACR;IAAE,GAAG;IAAG,QAAQ;IAAoB,UAAU;IAAK;IAAQ,iBAAiB,KAAA;GAAU,IACtF,CACV,CACJ,GAEO;EACX,SAAS,GAAU;GACf,IAAI,GAAK,SAAS,cAQd,OAPA,GAAY,MACR,EAAK,KAAI,MACL,EAAE,OAAO,EAAK,KACR;IAAE,GAAG;IAAG,QAAQ;IAAoB,UAAU;IAAG,iBAAiB,KAAA;GAAU,IAC5E,CACV,CACJ,GACO;GAGX,IAAM,IAAW,GAAK,WAAW;GASjC,OARA,GAAY,MACR,EAAK,KAAI,MACL,EAAE,OAAO,EAAK,KACR;IAAE,GAAG;IAAG,QAAQ;IAAkB,OAAO;IAAU,iBAAiB,KAAA;GAAU,IAC9E,CACV,CACJ,GACA,IAAU,EAAK,MAAM,aAAe,QAAQ,IAAU,MAAM,CAAQ,CAAC,GAC9D;EACX;CACJ,GAAG;EAAC;EAAS;EAAa;CAAO,CAAC,GAG5B,IAAmB,GAAa,MAAkB;EACpD,IAAM,IAA4B,EAAM,KAAI,OAAS;GACjD,IAAI,EAAW;GACf;GACA,QAAQ;GACR,UAAU;EACd,EAAE;EAIF,AAFA,GAAY,MAAQ,CAAC,GAAG,GAAM,GAAG,CAAQ,CAAC,GAEtC,KAEA,EAAS,SAAQ,MAAQ;GACrB,EAAW,CAAI,CAAC,CAAC,MAAK,MAAU;IAC5B,IAAI,GAAQ;KAER,IAAM,IAAU,EAAS;KAEzB,IADgB,EAAQ,OAAM,MAAK,EAAE,WAAW,aAAa,EAAE,WAAW,OACtE,GAAS;MACT,IAAM,IAAU,EACX,QAAO,MAAK,EAAE,WAAW,aAAa,EAAE,MAAM,CAAC,CAC/C,KAAI,MAAK,EAAE,MAAO;MACvB,AAAI,EAAQ,SAAS,KACjB,IAAmB,CAAO;KAElC;IACJ;GACJ,CAAC;EACL,CAAC;CAET,GAAG;EAAC;EAAY;EAAY;EAAa;CAAgB,CAAC,GAGpD,IAAkB,QAAkB;EAEtC,IAAM,IADU,EAAS,QAAQ,QAAO,MAAK,EAAE,WAAW,SAC1C,CAAA,CAAQ,KAAI,MAAQ,EAAW,CAAI,CAAC;EAEpD,QAAQ,WAAW,CAAO,CAAC,CAAC,WAAW;GAEnC,IAAM,IADU,EAAS,QAEpB,QAAO,MAAK,EAAE,WAAW,aAAa,EAAE,MAAM,CAAC,CAC/C,KAAI,MAAK,EAAE,MAAO;GACvB,AAAI,EAAQ,SAAS,KACjB,IAAmB,CAAO;EAElC,CAAC;CACL,GAAG,CAAC,GAAY,CAAgB,CAAC,GAG3B,IAAkB,QAAkB;EACtC,EAAM,SAAQ,MAAQ;GAClB,AAAI,EAAK,WAAW,eAAe,EAAK,mBACpC,EAAK,gBAAgB,MAAM;EAEnC,CAAC;CACL,GAAG,CAAC,CAAK,CAAC,GAGJ,IAAuB,QAAkB;EAC3C,GAAY,MAAQ,EAAK,QAAO,MAAK,EAAE,WAAW,SAAS,CAAC;CAChE,GAAG,CAAC,CAAW,CAAC,GAGV,IAAe,GAAa,MAAe;EAC7C,GAAY,MAAQ,EAAK,QAAO,MAAK,EAAE,OAAO,CAAE,CAAC;CACrD,GAAG,CAAC,CAAW,CAAC,GAGV,IAAc,GAAa,MAAe;EAC5C,IAAM,IAAO,EAAS,QAAQ,MAAK,MAAK,EAAE,OAAO,CAAE;EACnD,AAAI,KAAM,EAAW,CAAI;CAC7B,GAAG,CAAC,CAAU,CAAC,GAGT,IAAe,GAAa,MAAe;EAC7C,IAAM,IAAO,EAAS,QAAQ,MAAK,MAAK,EAAE,OAAO,CAAE;EACnD,AAAI,GAAM,mBACN,EAAK,gBAAgB,MAAM;CAEnC,GAAG,CAAC,CAAC,GAEC,IAAwB,GAAa,GAAY,MAAkB;EACrE,IAAU,GAAU,MAAM,CAAK,CAAC;CACpC,GAAG,CAAC,CAAO,CAAC;CAEZ,OACI,kBAAC,OAAD;EAAK,WAAW,UAAU;EAA1B,UAAA,CACI,kBAAC,GAAD;GACY;GACK;GACH;GACA;GACV,kBAAkB,EAAM;GAChB;GACR,cAAc;GACd,mBAAmB;EACtB,CAAA,GACD,kBAAC,GAAD;GACW;GACC;GACR,UAAU;GACV,SAAS;GACT,UAAU;GACV,aAAa;GACb,aAAa;GACb,kBAAkB;EACrB,CAAA,CACA;;AAEb"}
|
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { FileItem as
|
|
1
|
+
import e from "../Button/index.js";
|
|
2
|
+
import { FileItem as t } from "./FileItem.js";
|
|
3
3
|
import "react";
|
|
4
|
-
import { jsx as
|
|
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
|
-
export {
|
|
63
|
-
j as UploadQueue
|
|
4
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/FileUploader/UploadQueue.tsx
|
|
6
|
+
var i = {
|
|
7
|
+
uploadAll: "Upload All",
|
|
8
|
+
cancelAll: "Cancel All",
|
|
9
|
+
clearCompleted: "Clear Completed",
|
|
10
|
+
fileCount: "files"
|
|
11
|
+
}, a = ({ items: a, labels: o, onRemove: s, onRetry: c, onCancel: l, onUploadAll: u, onCancelAll: d, onClearCompleted: f, className: p = "" }) => {
|
|
12
|
+
let m = {
|
|
13
|
+
...i,
|
|
14
|
+
...o
|
|
15
|
+
}, h = a.some((e) => e.status === "pending"), g = a.some((e) => e.status === "uploading"), _ = a.some((e) => e.status === "success");
|
|
16
|
+
return a.length === 0 ? null : /* @__PURE__ */ r("div", {
|
|
17
|
+
className: `mt-4 ${p}`,
|
|
18
|
+
children: [/* @__PURE__ */ r("div", {
|
|
19
|
+
className: "flex items-center justify-between mb-2 px-1",
|
|
20
|
+
children: [/* @__PURE__ */ r("span", {
|
|
21
|
+
className: "text-sm opacity-60",
|
|
22
|
+
children: [
|
|
23
|
+
a.length,
|
|
24
|
+
" ",
|
|
25
|
+
m.fileCount
|
|
26
|
+
]
|
|
27
|
+
}), /* @__PURE__ */ r("div", {
|
|
28
|
+
className: "flex gap-1",
|
|
29
|
+
children: [
|
|
30
|
+
h && /* @__PURE__ */ n(e, {
|
|
31
|
+
variant: "primary",
|
|
32
|
+
size: "xs",
|
|
33
|
+
onClick: u,
|
|
34
|
+
children: m.uploadAll
|
|
35
|
+
}),
|
|
36
|
+
g && /* @__PURE__ */ n(e, {
|
|
37
|
+
variant: "warning",
|
|
38
|
+
size: "xs",
|
|
39
|
+
outline: !0,
|
|
40
|
+
onClick: d,
|
|
41
|
+
children: m.cancelAll
|
|
42
|
+
}),
|
|
43
|
+
_ && /* @__PURE__ */ n(e, {
|
|
44
|
+
variant: "ghost",
|
|
45
|
+
size: "xs",
|
|
46
|
+
onClick: f,
|
|
47
|
+
children: m.clearCompleted
|
|
48
|
+
})
|
|
49
|
+
]
|
|
50
|
+
})]
|
|
51
|
+
}), /* @__PURE__ */ n("div", {
|
|
52
|
+
className: "flex flex-col gap-1.5 max-h-[360px] overflow-y-auto pr-1",
|
|
53
|
+
children: a.map((e) => /* @__PURE__ */ n(t, {
|
|
54
|
+
item: e,
|
|
55
|
+
labels: m,
|
|
56
|
+
onRemove: s,
|
|
57
|
+
onRetry: c,
|
|
58
|
+
onCancel: l
|
|
59
|
+
}, e.id))
|
|
60
|
+
})]
|
|
61
|
+
});
|
|
64
62
|
};
|
|
63
|
+
//#endregion
|
|
64
|
+
export { a as UploadQueue };
|
|
65
65
|
|
|
66
66
|
//# sourceMappingURL=UploadQueue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploadQueue.js","names":[],"sources":["../../../src/components/FileUploader/UploadQueue.tsx"],"sourcesContent":["import React from 'react';\nimport { UploadQueueProps } from './types';\nimport { FileItem } from './FileItem';\nimport Button from '../Button';\n\nconst defaultLabels = {\n uploadAll: 'Upload All',\n cancelAll: 'Cancel All',\n clearCompleted: 'Clear Completed',\n fileCount: 'files',\n};\n\nexport const UploadQueue: React.FC<UploadQueueProps> = ({\n items,\n labels: userLabels,\n onRemove,\n onRetry,\n onCancel,\n onUploadAll,\n onCancelAll,\n onClearCompleted,\n className = '',\n}) => {\n const labels = { ...defaultLabels, ...userLabels };\n\n const hasPending = items.some(i => i.status === 'pending');\n const hasUploading = items.some(i => i.status === 'uploading');\n const hasCompleted = items.some(i => i.status === 'success');\n\n if (items.length === 0) return null;\n\n return (\n <div className={`mt-4 ${className}`}>\n {/* Batch actions bar */}\n <div className=\"flex items-center justify-between mb-2 px-1\">\n <span className=\"text-sm opacity-60\">\n {items.length} {labels.fileCount}\n </span>\n <div className=\"flex gap-1\">\n {hasPending && (\n <Button variant=\"primary\" size=\"xs\" onClick={onUploadAll}>\n {labels.uploadAll}\n </Button>\n )}\n {hasUploading && (\n <Button variant=\"warning\" size=\"xs\" outline onClick={onCancelAll}>\n {labels.cancelAll}\n </Button>\n )}\n {hasCompleted && (\n <Button variant=\"ghost\" size=\"xs\" onClick={onClearCompleted}>\n {labels.clearCompleted}\n </Button>\n )}\n </div>\n </div>\n\n {/* File list */}\n <div className=\"flex flex-col gap-1.5 max-h-[360px] overflow-y-auto pr-1\">\n {items.map(item => (\n <FileItem\n key={item.id}\n item={item}\n labels={labels}\n onRemove={onRemove}\n onRetry={onRetry}\n onCancel={onCancel}\n />\n ))}\n </div>\n </div>\n );\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"UploadQueue.js","names":[],"sources":["../../../src/components/FileUploader/UploadQueue.tsx"],"sourcesContent":["import React from 'react';\nimport { UploadQueueProps } from './types';\nimport { FileItem } from './FileItem';\nimport Button from '../Button';\n\nconst defaultLabels = {\n uploadAll: 'Upload All',\n cancelAll: 'Cancel All',\n clearCompleted: 'Clear Completed',\n fileCount: 'files',\n};\n\nexport const UploadQueue: React.FC<UploadQueueProps> = ({\n items,\n labels: userLabels,\n onRemove,\n onRetry,\n onCancel,\n onUploadAll,\n onCancelAll,\n onClearCompleted,\n className = '',\n}) => {\n const labels = { ...defaultLabels, ...userLabels };\n\n const hasPending = items.some(i => i.status === 'pending');\n const hasUploading = items.some(i => i.status === 'uploading');\n const hasCompleted = items.some(i => i.status === 'success');\n\n if (items.length === 0) return null;\n\n return (\n <div className={`mt-4 ${className}`}>\n {/* Batch actions bar */}\n <div className=\"flex items-center justify-between mb-2 px-1\">\n <span className=\"text-sm opacity-60\">\n {items.length} {labels.fileCount}\n </span>\n <div className=\"flex gap-1\">\n {hasPending && (\n <Button variant=\"primary\" size=\"xs\" onClick={onUploadAll}>\n {labels.uploadAll}\n </Button>\n )}\n {hasUploading && (\n <Button variant=\"warning\" size=\"xs\" outline onClick={onCancelAll}>\n {labels.cancelAll}\n </Button>\n )}\n {hasCompleted && (\n <Button variant=\"ghost\" size=\"xs\" onClick={onClearCompleted}>\n {labels.clearCompleted}\n </Button>\n )}\n </div>\n </div>\n\n {/* File list */}\n <div className=\"flex flex-col gap-1.5 max-h-[360px] overflow-y-auto pr-1\">\n {items.map(item => (\n <FileItem\n key={item.id}\n item={item}\n labels={labels}\n onRemove={onRemove}\n onRetry={onRetry}\n onCancel={onCancel}\n />\n ))}\n </div>\n </div>\n );\n};\n"],"mappings":";;;;;AAKA,IAAM,IAAgB;CAClB,WAAW;CACX,WAAW;CACX,gBAAgB;CAChB,WAAW;AACf,GAEa,KAA2C,EACpD,UACA,QAAQ,GACR,aACA,YACA,aACA,gBACA,gBACA,qBACA,eAAY,SACV;CACF,IAAM,IAAS;EAAE,GAAG;EAAe,GAAG;CAAW,GAE3C,IAAa,EAAM,MAAK,MAAK,EAAE,WAAW,SAAS,GACnD,IAAe,EAAM,MAAK,MAAK,EAAE,WAAW,WAAW,GACvD,IAAe,EAAM,MAAK,MAAK,EAAE,WAAW,SAAS;CAI3D,OAFI,EAAM,WAAW,IAAU,OAG3B,kBAAC,OAAD;EAAK,WAAW,QAAQ;EAAxB,UAAA,CAEI,kBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACI,kBAAC,QAAD;IAAM,WAAU;IAAhB,UAAA;KACK,EAAM;KAAO;KAAE,EAAO;IACrB;GACN,CAAA,GAAA,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACK,KACG,kBAAC,GAAD;MAAQ,SAAQ;MAAU,MAAK;MAAK,SAAS;MACxC,UAAA,EAAO;KACJ,CAAA;KAEX,KACG,kBAAC,GAAD;MAAQ,SAAQ;MAAU,MAAK;MAAK,SAAA;MAAQ,SAAS;MAChD,UAAA,EAAO;KACJ,CAAA;KAEX,KACG,kBAAC,GAAD;MAAQ,SAAQ;MAAQ,MAAK;MAAK,SAAS;MACtC,UAAA,EAAO;KACJ,CAAA;IAEX;GACJ,CAAA,CAAA;EAGL,CAAA,GAAA,kBAAC,OAAD;GAAK,WAAU;GACV,UAAA,EAAM,KAAI,MACP,kBAAC,GAAD;IAEU;IACE;IACE;IACD;IACC;GACb,GANQ,EAAK,EAMb,CACJ;EACA,CAAA,CACJ;;AAEb"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type FloatWindowProps = {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
title?: React.ReactNode;
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
defaultPosition?: {
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
};
|
|
11
|
+
className?: string;
|
|
12
|
+
shellClassName?: string;
|
|
13
|
+
bodyClassName?: string;
|
|
14
|
+
minWidth?: number;
|
|
15
|
+
minHeight?: number;
|
|
16
|
+
maxWidth?: number;
|
|
17
|
+
maxHeight?: number;
|
|
18
|
+
width?: number | string;
|
|
19
|
+
height?: number | string;
|
|
20
|
+
zIndex?: number;
|
|
21
|
+
draggable?: boolean;
|
|
22
|
+
/** Allow user to resize by dragging edges/corners. */
|
|
23
|
+
resizable?: boolean;
|
|
24
|
+
closeLabel?: string;
|
|
25
|
+
onResize?: (w: number, h: number) => void;
|
|
26
|
+
};
|
|
27
|
+
declare const FloatWindow: React.FC<FloatWindowProps>;
|
|
28
|
+
export default FloatWindow;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type GridItemProps = {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
className?: string;
|
|
5
|
+
style?: React.CSSProperties;
|
|
6
|
+
/** `gridArea` from named template, e.g. "header" */
|
|
7
|
+
area?: string;
|
|
8
|
+
/** CSS grid-column, e.g. "1 / 3" or "span 2" */
|
|
9
|
+
column?: string;
|
|
10
|
+
row?: string;
|
|
11
|
+
justifySelf?: React.CSSProperties['justifySelf'];
|
|
12
|
+
alignSelf?: React.CSSProperties['alignSelf'];
|
|
13
|
+
};
|
|
14
|
+
declare const GridItem: React.FC<GridItemProps>;
|
|
15
|
+
export type GridLayoutProps = {
|
|
16
|
+
children: React.ReactNode;
|
|
17
|
+
className?: string;
|
|
18
|
+
style?: React.CSSProperties;
|
|
19
|
+
/** Shorthands for CSS grid (string values as in CSS) */
|
|
20
|
+
templateColumns?: string;
|
|
21
|
+
templateRows?: string;
|
|
22
|
+
templateAreas?: string;
|
|
23
|
+
gap?: string;
|
|
24
|
+
rowGap?: string;
|
|
25
|
+
columnGap?: string;
|
|
26
|
+
autoRows?: string;
|
|
27
|
+
autoFlow?: React.CSSProperties['gridAutoFlow'];
|
|
28
|
+
justifyItems?: React.CSSProperties['justifyItems'];
|
|
29
|
+
alignItems?: React.CSSProperties['alignItems'];
|
|
30
|
+
justifyContent?: React.CSSProperties['justifyContent'];
|
|
31
|
+
alignContent?: React.CSSProperties['alignContent'];
|
|
32
|
+
/** `display: inline-grid` */
|
|
33
|
+
inline?: boolean;
|
|
34
|
+
/** `min-h-*` or custom: applied via style if number (px) */
|
|
35
|
+
minHeight?: string | number;
|
|
36
|
+
};
|
|
37
|
+
export type GridLayoutComponent = React.FC<GridLayoutProps> & {
|
|
38
|
+
Item: typeof GridItem;
|
|
39
|
+
};
|
|
40
|
+
declare const GridLayout: GridLayoutComponent;
|
|
41
|
+
export { GridLayout, GridItem };
|
|
42
|
+
export default GridLayout;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type IconProps = {
|
|
3
|
+
/** Icon content — typically an inline `<svg>` (e.g. from icon libraries). */
|
|
4
|
+
children?: React.ReactNode;
|
|
5
|
+
/** Square size; number is treated as px. */
|
|
6
|
+
size?: number | string;
|
|
7
|
+
/** Icon color (inherits `currentColor` when omitted). */
|
|
8
|
+
color?: string;
|
|
9
|
+
/** Continuous rotation animation. */
|
|
10
|
+
spin?: boolean;
|
|
11
|
+
/** Extra class names on the wrapper. */
|
|
12
|
+
className?: string;
|
|
13
|
+
/** Inline styles on the wrapper. */
|
|
14
|
+
style?: React.CSSProperties;
|
|
15
|
+
/** Click handler. */
|
|
16
|
+
onClick?: (e: React.MouseEvent<HTMLSpanElement>) => void;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Icon —— A2UI 展示组件:图标容器。
|
|
20
|
+
* 不绑定具体图标库:把任意内联 `<svg>`(lucide / heroicons / 自定义)作为
|
|
21
|
+
* children 传入,由本组件统一控制尺寸、颜色与旋转动画。
|
|
22
|
+
*/
|
|
23
|
+
declare const Icon: React.FC<IconProps>;
|
|
24
|
+
export default Icon;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { cn as e } from "../../utils/cn.js";
|
|
2
|
+
import "react";
|
|
3
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/Icon/index.tsx
|
|
5
|
+
var n = ({ children: n, size: r = 18, color: i, spin: a = !1, className: o = "", style: s, onClick: c }) => {
|
|
6
|
+
let l = typeof r == "number" ? `${r}px` : r;
|
|
7
|
+
return /* @__PURE__ */ t("span", {
|
|
8
|
+
"aria-hidden": "true",
|
|
9
|
+
className: e("inline-flex shrink-0 items-center justify-center leading-none", a && "animate-spin", o),
|
|
10
|
+
style: {
|
|
11
|
+
width: l,
|
|
12
|
+
height: l,
|
|
13
|
+
color: i,
|
|
14
|
+
...s
|
|
15
|
+
},
|
|
16
|
+
onClick: c,
|
|
17
|
+
children: /* @__PURE__ */ t("span", {
|
|
18
|
+
className: "[&>svg]:h-full [&>svg]:w-full inline-flex",
|
|
19
|
+
children: n
|
|
20
|
+
})
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
//#endregion
|
|
24
|
+
export { n as default };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Icon/index.tsx"],"sourcesContent":["import React from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type IconProps = {\n /** Icon content — typically an inline `<svg>` (e.g. from icon libraries). */\n children?: React.ReactNode;\n /** Square size; number is treated as px. */\n size?: number | string;\n /** Icon color (inherits `currentColor` when omitted). */\n color?: string;\n /** Continuous rotation animation. */\n spin?: boolean;\n /** Extra class names on the wrapper. */\n className?: string;\n /** Inline styles on the wrapper. */\n style?: React.CSSProperties;\n /** Click handler. */\n onClick?: (e: React.MouseEvent<HTMLSpanElement>) => void;\n};\n\n/**\n * Icon —— A2UI 展示组件:图标容器。\n * 不绑定具体图标库:把任意内联 `<svg>`(lucide / heroicons / 自定义)作为\n * children 传入,由本组件统一控制尺寸、颜色与旋转动画。\n */\nconst Icon: React.FC<IconProps> = ({\n children,\n size = 18,\n color,\n spin = false,\n className = '',\n style,\n onClick,\n}) => {\n const px = typeof size === 'number' ? `${size}px` : size;\n\n return (\n <span\n aria-hidden=\"true\"\n className={cn(\n 'inline-flex shrink-0 items-center justify-center leading-none',\n spin && 'animate-spin',\n className,\n )}\n style={{ width: px, height: px, color, ...style }}\n onClick={onClick}\n >\n {/* 让未带尺寸的 svg 自动铺满容器 */}\n <span className=\"[&>svg]:h-full [&>svg]:w-full inline-flex\">{children}</span>\n </span>\n );\n};\n\nexport default Icon;\n"],"mappings":";;;;AAyBA,IAAM,KAA6B,EACjC,aACA,UAAO,IACP,UACA,UAAO,IACP,eAAY,IACZ,UACA,iBACI;CACJ,IAAM,IAAK,OAAO,KAAS,WAAW,GAAG,EAAK,MAAM;CAEpD,OACE,kBAAC,QAAD;EACE,eAAY;EACZ,WAAW,EACT,iEACA,KAAQ,gBACR,CACF;EACA,OAAO;GAAE,OAAO;GAAI,QAAQ;GAAI;GAAO,GAAG;EAAM;EACvC;EAGT,UAAA,kBAAC,QAAD;GAAM,WAAU;GAA6C;EAAe,CAAA;CACxE,CAAA;AAEV"}
|