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,217 +1,217 @@
|
|
|
1
|
-
import { useCallback as
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
};
|
|
213
|
-
export {
|
|
214
|
-
D as default
|
|
1
|
+
import { useCallback as e, useEffect as t, useRef as n, useState as r } from "react";
|
|
2
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/pro/RichTextEditor/SlashMenu.tsx
|
|
4
|
+
var o = [
|
|
5
|
+
{
|
|
6
|
+
label: "Text",
|
|
7
|
+
icon: "Aa",
|
|
8
|
+
description: "Plain text",
|
|
9
|
+
keywords: [
|
|
10
|
+
"paragraph",
|
|
11
|
+
"text",
|
|
12
|
+
"plain"
|
|
13
|
+
],
|
|
14
|
+
action: (e) => e.chain().focus().setParagraph().run()
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
label: "Heading 1",
|
|
18
|
+
icon: "H1",
|
|
19
|
+
description: "Large heading",
|
|
20
|
+
keywords: ["h1", "title"],
|
|
21
|
+
action: (e) => e.chain().focus().toggleHeading({ level: 1 }).run()
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
label: "Heading 2",
|
|
25
|
+
icon: "H2",
|
|
26
|
+
description: "Medium heading",
|
|
27
|
+
keywords: ["h2", "subtitle"],
|
|
28
|
+
action: (e) => e.chain().focus().toggleHeading({ level: 2 }).run()
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
label: "Heading 3",
|
|
32
|
+
icon: "H3",
|
|
33
|
+
description: "Small heading",
|
|
34
|
+
keywords: ["h3"],
|
|
35
|
+
action: (e) => e.chain().focus().toggleHeading({ level: 3 }).run()
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
label: "Bullet List",
|
|
39
|
+
icon: "•",
|
|
40
|
+
description: "Unordered list",
|
|
41
|
+
keywords: [
|
|
42
|
+
"ul",
|
|
43
|
+
"bullet",
|
|
44
|
+
"unordered"
|
|
45
|
+
],
|
|
46
|
+
action: (e) => e.chain().focus().toggleBulletList().run()
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
label: "Numbered List",
|
|
50
|
+
icon: "1.",
|
|
51
|
+
description: "Ordered list",
|
|
52
|
+
keywords: [
|
|
53
|
+
"ol",
|
|
54
|
+
"ordered",
|
|
55
|
+
"number"
|
|
56
|
+
],
|
|
57
|
+
action: (e) => e.chain().focus().toggleOrderedList().run()
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
label: "Task List",
|
|
61
|
+
icon: "☑",
|
|
62
|
+
description: "To-do list",
|
|
63
|
+
keywords: [
|
|
64
|
+
"todo",
|
|
65
|
+
"checkbox",
|
|
66
|
+
"task"
|
|
67
|
+
],
|
|
68
|
+
action: (e) => e.chain().focus().toggleTaskList().run()
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
label: "Blockquote",
|
|
72
|
+
icon: "\"",
|
|
73
|
+
description: "Quote block",
|
|
74
|
+
keywords: ["quote", "blockquote"],
|
|
75
|
+
action: (e) => e.chain().focus().toggleBlockquote().run()
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
label: "Code Block",
|
|
79
|
+
icon: "</>",
|
|
80
|
+
description: "Code snippet",
|
|
81
|
+
keywords: [
|
|
82
|
+
"code",
|
|
83
|
+
"pre",
|
|
84
|
+
"snippet"
|
|
85
|
+
],
|
|
86
|
+
action: (e) => e.chain().focus().toggleNode("codeBlock", "paragraph").run()
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
label: "Divider",
|
|
90
|
+
icon: "—",
|
|
91
|
+
description: "Horizontal rule",
|
|
92
|
+
keywords: [
|
|
93
|
+
"hr",
|
|
94
|
+
"divider",
|
|
95
|
+
"separator",
|
|
96
|
+
"line"
|
|
97
|
+
],
|
|
98
|
+
action: (e) => e.chain().focus().setHorizontalRule().run()
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
label: "Table",
|
|
102
|
+
icon: "⊞",
|
|
103
|
+
description: "Insert 3×3 table",
|
|
104
|
+
keywords: ["table", "grid"],
|
|
105
|
+
action: (e) => e.chain().focus().insertTable({
|
|
106
|
+
rows: 3,
|
|
107
|
+
cols: 3,
|
|
108
|
+
withHeaderRow: !0
|
|
109
|
+
}).run()
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
label: "Image",
|
|
113
|
+
icon: "🖼",
|
|
114
|
+
description: "Insert image by URL",
|
|
115
|
+
keywords: [
|
|
116
|
+
"image",
|
|
117
|
+
"picture",
|
|
118
|
+
"photo"
|
|
119
|
+
],
|
|
120
|
+
action: (e) => {
|
|
121
|
+
let t = window.prompt("Image URL:");
|
|
122
|
+
t && e.chain().focus().setImage({ src: t }).run();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
], s = ({ editor: s }) => {
|
|
126
|
+
let [c, l] = r(!1), [u, d] = r(""), [f, p] = r({
|
|
127
|
+
x: 0,
|
|
128
|
+
y: 0
|
|
129
|
+
}), [m, h] = r(0), [g, _] = r(null), v = n(null), y = u ? o.filter((e) => {
|
|
130
|
+
let t = u.toLowerCase();
|
|
131
|
+
return e.label.toLowerCase().includes(t) || e.description.toLowerCase().includes(t) || e.keywords?.some((e) => e.includes(t));
|
|
132
|
+
}) : o, b = e(() => {
|
|
133
|
+
l(!1), d(""), _(null), h(0);
|
|
134
|
+
}, []), x = e((e) => {
|
|
135
|
+
if (g !== null) {
|
|
136
|
+
let { from: e } = s.state.selection;
|
|
137
|
+
s.chain().focus().deleteRange({
|
|
138
|
+
from: g,
|
|
139
|
+
to: e
|
|
140
|
+
}).run();
|
|
141
|
+
}
|
|
142
|
+
e.action(s), b();
|
|
143
|
+
}, [
|
|
144
|
+
s,
|
|
145
|
+
g,
|
|
146
|
+
b
|
|
147
|
+
]);
|
|
148
|
+
return t(() => {
|
|
149
|
+
let e = () => {
|
|
150
|
+
let { $from: e } = s.state.selection, t = e.parent.textContent.slice(0, e.parentOffset), n = /\/([a-zA-Z0-9]*)$/.exec(t);
|
|
151
|
+
if (n) {
|
|
152
|
+
let t = e.start() + n.index;
|
|
153
|
+
_(t), d(n[1]), h(0);
|
|
154
|
+
let r = s.view.coordsAtPos(e.pos), i = s.view.dom.closest(".rte-editor-wrapper")?.getBoundingClientRect();
|
|
155
|
+
i && p({
|
|
156
|
+
x: r.left - i.left,
|
|
157
|
+
y: r.bottom - i.top + 4
|
|
158
|
+
}), l(!0);
|
|
159
|
+
} else c && b();
|
|
160
|
+
};
|
|
161
|
+
return s.on("selectionUpdate", e), s.on("update", e), () => {
|
|
162
|
+
s.off("selectionUpdate", e), s.off("update", e);
|
|
163
|
+
};
|
|
164
|
+
}, [
|
|
165
|
+
s,
|
|
166
|
+
c,
|
|
167
|
+
b
|
|
168
|
+
]), t(() => {
|
|
169
|
+
if (!c) return;
|
|
170
|
+
let e = (e) => {
|
|
171
|
+
e.key === "ArrowDown" ? (e.preventDefault(), h((e) => (e + 1) % y.length)) : e.key === "ArrowUp" ? (e.preventDefault(), h((e) => (e - 1 + y.length) % y.length)) : e.key === "Enter" ? (e.preventDefault(), y[m] && x(y[m])) : e.key === "Escape" && (e.preventDefault(), b());
|
|
172
|
+
};
|
|
173
|
+
return document.addEventListener("keydown", e, !0), () => document.removeEventListener("keydown", e, !0);
|
|
174
|
+
}, [
|
|
175
|
+
c,
|
|
176
|
+
y,
|
|
177
|
+
m,
|
|
178
|
+
x,
|
|
179
|
+
b
|
|
180
|
+
]), t(() => {
|
|
181
|
+
if (!c) return;
|
|
182
|
+
let e = (e) => {
|
|
183
|
+
v.current && !v.current.contains(e.target) && b();
|
|
184
|
+
};
|
|
185
|
+
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
186
|
+
}, [c, b]), !c || y.length === 0 ? null : /* @__PURE__ */ i("div", {
|
|
187
|
+
ref: v,
|
|
188
|
+
className: "rte-slash-menu",
|
|
189
|
+
style: {
|
|
190
|
+
left: f.x,
|
|
191
|
+
top: f.y
|
|
192
|
+
},
|
|
193
|
+
children: y.map((e, t) => /* @__PURE__ */ a("button", {
|
|
194
|
+
type: "button",
|
|
195
|
+
className: `rte-slash-menu__item ${t === m ? "rte-slash-menu__item--active" : ""}`,
|
|
196
|
+
onClick: () => x(e),
|
|
197
|
+
onMouseEnter: () => h(t),
|
|
198
|
+
children: [/* @__PURE__ */ i("span", {
|
|
199
|
+
className: "rte-slash-menu__icon",
|
|
200
|
+
children: e.icon
|
|
201
|
+
}), /* @__PURE__ */ a("div", {
|
|
202
|
+
className: "rte-slash-menu__text",
|
|
203
|
+
children: [/* @__PURE__ */ i("span", {
|
|
204
|
+
className: "rte-slash-menu__label",
|
|
205
|
+
children: e.label
|
|
206
|
+
}), /* @__PURE__ */ i("span", {
|
|
207
|
+
className: "rte-slash-menu__desc",
|
|
208
|
+
children: e.description
|
|
209
|
+
})]
|
|
210
|
+
})]
|
|
211
|
+
}, e.label))
|
|
212
|
+
});
|
|
215
213
|
};
|
|
214
|
+
//#endregion
|
|
215
|
+
export { s as default };
|
|
216
216
|
|
|
217
217
|
//# sourceMappingURL=SlashMenu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SlashMenu.js","names":[],"sources":["../../../../src/components/pro/RichTextEditor/SlashMenu.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport type { Editor } from '@tiptap/react';\n\ninterface SlashMenuItem {\n label: string;\n icon: string;\n description: string;\n action: (editor: Editor) => void;\n keywords?: string[];\n}\n\nconst SLASH_ITEMS: SlashMenuItem[] = [\n { label: 'Text', icon: 'Aa', description: 'Plain text', keywords: ['paragraph', 'text', 'plain'],\n action: (e) => e.chain().focus().setParagraph().run() },\n { label: 'Heading 1', icon: 'H1', description: 'Large heading', keywords: ['h1', 'title'],\n action: (e) => e.chain().focus().toggleHeading({ level: 1 }).run() },\n { label: 'Heading 2', icon: 'H2', description: 'Medium heading', keywords: ['h2', 'subtitle'],\n action: (e) => e.chain().focus().toggleHeading({ level: 2 }).run() },\n { label: 'Heading 3', icon: 'H3', description: 'Small heading', keywords: ['h3'],\n action: (e) => e.chain().focus().toggleHeading({ level: 3 }).run() },\n { label: 'Bullet List', icon: '•', description: 'Unordered list', keywords: ['ul', 'bullet', 'unordered'],\n action: (e) => e.chain().focus().toggleBulletList().run() },\n { label: 'Numbered List', icon: '1.', description: 'Ordered list', keywords: ['ol', 'ordered', 'number'],\n action: (e) => e.chain().focus().toggleOrderedList().run() },\n { label: 'Task List', icon: '☑', description: 'To-do list', keywords: ['todo', 'checkbox', 'task'],\n action: (e) => e.chain().focus().toggleTaskList().run() },\n { label: 'Blockquote', icon: '\"', description: 'Quote block', keywords: ['quote', 'blockquote'],\n action: (e) => e.chain().focus().toggleBlockquote().run() },\n { label: 'Code Block', icon: '</>', description: 'Code snippet', keywords: ['code', 'pre', 'snippet'],\n action: (e) => e.chain().focus().toggleNode('codeBlock', 'paragraph').run() },\n { label: 'Divider', icon: '—', description: 'Horizontal rule', keywords: ['hr', 'divider', 'separator', 'line'],\n action: (e) => e.chain().focus().setHorizontalRule().run() },\n { label: 'Table', icon: '⊞', description: 'Insert 3×3 table', keywords: ['table', 'grid'],\n action: (e) => e.chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run() },\n { label: 'Image', icon: '🖼', description: 'Insert image by URL', keywords: ['image', 'picture', 'photo'],\n action: (e) => {\n const url = window.prompt('Image URL:');\n if (url) e.chain().focus().setImage({ src: url }).run();\n }},\n];\n\ninterface SlashMenuProps {\n editor: Editor;\n}\n\nconst SlashMenu: React.FC<SlashMenuProps> = ({ editor }) => {\n const [visible, setVisible] = useState(false);\n const [query, setQuery] = useState('');\n const [pos, setPos] = useState({ x: 0, y: 0 });\n const [selected, setSelected] = useState(0);\n const [slashPos, setSlashPos] = useState<number | null>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n\n const filtered = query\n ? SLASH_ITEMS.filter((item) => {\n const q = query.toLowerCase();\n return item.label.toLowerCase().includes(q)\n || item.description.toLowerCase().includes(q)\n || item.keywords?.some((k) => k.includes(q));\n })\n : SLASH_ITEMS;\n\n const close = useCallback(() => {\n setVisible(false);\n setQuery('');\n setSlashPos(null);\n setSelected(0);\n }, []);\n\n const executeItem = useCallback((item: SlashMenuItem) => {\n if (slashPos !== null) {\n const { from } = editor.state.selection;\n editor.chain().focus().deleteRange({ from: slashPos, to: from }).run();\n }\n item.action(editor);\n close();\n }, [editor, slashPos, close]);\n\n useEffect(() => {\n const handleUpdate = () => {\n const { $from } = editor.state.selection;\n const textBefore = $from.parent.textContent.slice(0, $from.parentOffset);\n const slashMatch = /\\/([a-zA-Z0-9]*)$/.exec(textBefore);\n\n if (slashMatch) {\n const start = $from.start() + slashMatch.index;\n setSlashPos(start);\n setQuery(slashMatch[1]);\n setSelected(0);\n\n const coords = editor.view.coordsAtPos($from.pos);\n const editorRect = editor.view.dom.closest('.rte-editor-wrapper')?.getBoundingClientRect();\n if (editorRect) {\n setPos({\n x: coords.left - editorRect.left,\n y: coords.bottom - editorRect.top + 4,\n });\n }\n setVisible(true);\n } else {\n if (visible) close();\n }\n };\n\n editor.on('selectionUpdate', handleUpdate);\n editor.on('update', handleUpdate);\n return () => {\n editor.off('selectionUpdate', handleUpdate);\n editor.off('update', handleUpdate);\n };\n }, [editor, visible, close]);\n\n useEffect(() => {\n if (!visible) return;\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setSelected((s) => (s + 1) % filtered.length);\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setSelected((s) => (s - 1 + filtered.length) % filtered.length);\n } else if (e.key === 'Enter') {\n e.preventDefault();\n if (filtered[selected]) executeItem(filtered[selected]);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n close();\n }\n };\n document.addEventListener('keydown', handleKeyDown, true);\n return () => document.removeEventListener('keydown', handleKeyDown, true);\n }, [visible, filtered, selected, executeItem, close]);\n\n useEffect(() => {\n if (!visible) return;\n const handler = (e: MouseEvent) => {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) close();\n };\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, [visible, close]);\n\n if (!visible || filtered.length === 0) return null;\n\n return (\n <div ref={menuRef} className=\"rte-slash-menu\" style={{ left: pos.x, top: pos.y }}>\n {filtered.map((item, i) => (\n <button\n key={item.label}\n type=\"button\"\n className={`rte-slash-menu__item ${i === selected ? 'rte-slash-menu__item--active' : ''}`}\n onClick={() => executeItem(item)}\n onMouseEnter={() => setSelected(i)}\n >\n <span className=\"rte-slash-menu__icon\">{item.icon}</span>\n <div className=\"rte-slash-menu__text\">\n <span className=\"rte-slash-menu__label\">{item.label}</span>\n <span className=\"rte-slash-menu__desc\">{item.description}</span>\n </div>\n </button>\n ))}\n </div>\n );\n};\n\nexport default SlashMenu;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SlashMenu.js","names":[],"sources":["../../../../src/components/pro/RichTextEditor/SlashMenu.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport type { Editor } from '@tiptap/react';\n\ninterface SlashMenuItem {\n label: string;\n icon: string;\n description: string;\n action: (editor: Editor) => void;\n keywords?: string[];\n}\n\nconst SLASH_ITEMS: SlashMenuItem[] = [\n { label: 'Text', icon: 'Aa', description: 'Plain text', keywords: ['paragraph', 'text', 'plain'],\n action: (e) => e.chain().focus().setParagraph().run() },\n { label: 'Heading 1', icon: 'H1', description: 'Large heading', keywords: ['h1', 'title'],\n action: (e) => e.chain().focus().toggleHeading({ level: 1 }).run() },\n { label: 'Heading 2', icon: 'H2', description: 'Medium heading', keywords: ['h2', 'subtitle'],\n action: (e) => e.chain().focus().toggleHeading({ level: 2 }).run() },\n { label: 'Heading 3', icon: 'H3', description: 'Small heading', keywords: ['h3'],\n action: (e) => e.chain().focus().toggleHeading({ level: 3 }).run() },\n { label: 'Bullet List', icon: '•', description: 'Unordered list', keywords: ['ul', 'bullet', 'unordered'],\n action: (e) => e.chain().focus().toggleBulletList().run() },\n { label: 'Numbered List', icon: '1.', description: 'Ordered list', keywords: ['ol', 'ordered', 'number'],\n action: (e) => e.chain().focus().toggleOrderedList().run() },\n { label: 'Task List', icon: '☑', description: 'To-do list', keywords: ['todo', 'checkbox', 'task'],\n action: (e) => e.chain().focus().toggleTaskList().run() },\n { label: 'Blockquote', icon: '\"', description: 'Quote block', keywords: ['quote', 'blockquote'],\n action: (e) => e.chain().focus().toggleBlockquote().run() },\n { label: 'Code Block', icon: '</>', description: 'Code snippet', keywords: ['code', 'pre', 'snippet'],\n action: (e) => e.chain().focus().toggleNode('codeBlock', 'paragraph').run() },\n { label: 'Divider', icon: '—', description: 'Horizontal rule', keywords: ['hr', 'divider', 'separator', 'line'],\n action: (e) => e.chain().focus().setHorizontalRule().run() },\n { label: 'Table', icon: '⊞', description: 'Insert 3×3 table', keywords: ['table', 'grid'],\n action: (e) => e.chain().focus().insertTable({ rows: 3, cols: 3, withHeaderRow: true }).run() },\n { label: 'Image', icon: '🖼', description: 'Insert image by URL', keywords: ['image', 'picture', 'photo'],\n action: (e) => {\n const url = window.prompt('Image URL:');\n if (url) e.chain().focus().setImage({ src: url }).run();\n }},\n];\n\ninterface SlashMenuProps {\n editor: Editor;\n}\n\nconst SlashMenu: React.FC<SlashMenuProps> = ({ editor }) => {\n const [visible, setVisible] = useState(false);\n const [query, setQuery] = useState('');\n const [pos, setPos] = useState({ x: 0, y: 0 });\n const [selected, setSelected] = useState(0);\n const [slashPos, setSlashPos] = useState<number | null>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n\n const filtered = query\n ? SLASH_ITEMS.filter((item) => {\n const q = query.toLowerCase();\n return item.label.toLowerCase().includes(q)\n || item.description.toLowerCase().includes(q)\n || item.keywords?.some((k) => k.includes(q));\n })\n : SLASH_ITEMS;\n\n const close = useCallback(() => {\n setVisible(false);\n setQuery('');\n setSlashPos(null);\n setSelected(0);\n }, []);\n\n const executeItem = useCallback((item: SlashMenuItem) => {\n if (slashPos !== null) {\n const { from } = editor.state.selection;\n editor.chain().focus().deleteRange({ from: slashPos, to: from }).run();\n }\n item.action(editor);\n close();\n }, [editor, slashPos, close]);\n\n useEffect(() => {\n const handleUpdate = () => {\n const { $from } = editor.state.selection;\n const textBefore = $from.parent.textContent.slice(0, $from.parentOffset);\n const slashMatch = /\\/([a-zA-Z0-9]*)$/.exec(textBefore);\n\n if (slashMatch) {\n const start = $from.start() + slashMatch.index;\n setSlashPos(start);\n setQuery(slashMatch[1]);\n setSelected(0);\n\n const coords = editor.view.coordsAtPos($from.pos);\n const editorRect = editor.view.dom.closest('.rte-editor-wrapper')?.getBoundingClientRect();\n if (editorRect) {\n setPos({\n x: coords.left - editorRect.left,\n y: coords.bottom - editorRect.top + 4,\n });\n }\n setVisible(true);\n } else {\n if (visible) close();\n }\n };\n\n editor.on('selectionUpdate', handleUpdate);\n editor.on('update', handleUpdate);\n return () => {\n editor.off('selectionUpdate', handleUpdate);\n editor.off('update', handleUpdate);\n };\n }, [editor, visible, close]);\n\n useEffect(() => {\n if (!visible) return;\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setSelected((s) => (s + 1) % filtered.length);\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setSelected((s) => (s - 1 + filtered.length) % filtered.length);\n } else if (e.key === 'Enter') {\n e.preventDefault();\n if (filtered[selected]) executeItem(filtered[selected]);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n close();\n }\n };\n document.addEventListener('keydown', handleKeyDown, true);\n return () => document.removeEventListener('keydown', handleKeyDown, true);\n }, [visible, filtered, selected, executeItem, close]);\n\n useEffect(() => {\n if (!visible) return;\n const handler = (e: MouseEvent) => {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) close();\n };\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, [visible, close]);\n\n if (!visible || filtered.length === 0) return null;\n\n return (\n <div ref={menuRef} className=\"rte-slash-menu\" style={{ left: pos.x, top: pos.y }}>\n {filtered.map((item, i) => (\n <button\n key={item.label}\n type=\"button\"\n className={`rte-slash-menu__item ${i === selected ? 'rte-slash-menu__item--active' : ''}`}\n onClick={() => executeItem(item)}\n onMouseEnter={() => setSelected(i)}\n >\n <span className=\"rte-slash-menu__icon\">{item.icon}</span>\n <div className=\"rte-slash-menu__text\">\n <span className=\"rte-slash-menu__label\">{item.label}</span>\n <span className=\"rte-slash-menu__desc\">{item.description}</span>\n </div>\n </button>\n ))}\n </div>\n );\n};\n\nexport default SlashMenu;\n"],"mappings":"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"}
|
|
@@ -1,78 +1,47 @@
|
|
|
1
|
-
import { useEffect as
|
|
2
|
-
import { jsx as r, jsxs 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
|
-
className: "rte-toolbar__color-picker",
|
|
44
|
-
children: [/* @__PURE__ */ a("button", {
|
|
45
|
-
type: "button",
|
|
46
|
-
className: "rte-toolbar__btn",
|
|
47
|
-
onClick: () => t(!n),
|
|
48
|
-
title: s,
|
|
49
|
-
children: [f, /* @__PURE__ */ r("span", {
|
|
50
|
-
className: "rte-toolbar__color-indicator",
|
|
51
|
-
style: { backgroundColor: c || "#000" }
|
|
52
|
-
})]
|
|
53
|
-
}), n && /* @__PURE__ */ a("div", {
|
|
54
|
-
className: "rte-toolbar__color-dropdown",
|
|
55
|
-
children: [m.map((e) => /* @__PURE__ */ r("button", {
|
|
56
|
-
type: "button",
|
|
57
|
-
className: `rte-toolbar__color-swatch ${e === c ? "rte-toolbar__color-swatch--active" : ""}`,
|
|
58
|
-
style: { backgroundColor: e },
|
|
59
|
-
onClick: () => {
|
|
60
|
-
l(e), t(!1);
|
|
61
|
-
},
|
|
62
|
-
title: e
|
|
63
|
-
}, e)), /* @__PURE__ */ r("button", {
|
|
64
|
-
type: "button",
|
|
65
|
-
className: "rte-toolbar__color-clear",
|
|
66
|
-
onClick: () => {
|
|
67
|
-
l(""), t(!1);
|
|
68
|
-
},
|
|
69
|
-
children: "Clear"
|
|
70
|
-
})]
|
|
71
|
-
})]
|
|
72
|
-
});
|
|
73
|
-
};
|
|
74
|
-
export {
|
|
75
|
-
v as ColorPicker
|
|
1
|
+
import { useEffect as e, useRef as t, useState as n } from "react";
|
|
2
|
+
import { jsx as r, jsxs as i } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/pro/RichTextEditor/Toolbar/ColorPicker.tsx
|
|
4
|
+
var a = /* @__PURE__ */ "#000000.#434343.#666666.#999999.#cccccc.#eeeeee.#ffffff.#ff0000.#ff4500.#ff8c00.#ffd700.#32cd32.#00bfff.#8a2be2.#ff69b4.#dc143c.#ff6347.#ffa500.#9acd32.#20b2aa.#4169e1.#9370db.#db7093.#b22222.#d2691e.#daa520.#228b22.#008b8b.#191970.#4b0082".split("."), o = ({ value: o, onChange: s, title: c, icon: l }) => {
|
|
5
|
+
let [u, d] = n(!1), f = t(null);
|
|
6
|
+
return e(() => {
|
|
7
|
+
let e = (e) => {
|
|
8
|
+
f.current && !f.current.contains(e.target) && d(!1);
|
|
9
|
+
};
|
|
10
|
+
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
11
|
+
}, []), /* @__PURE__ */ i("div", {
|
|
12
|
+
ref: f,
|
|
13
|
+
className: "rte-toolbar__color-picker",
|
|
14
|
+
children: [/* @__PURE__ */ i("button", {
|
|
15
|
+
type: "button",
|
|
16
|
+
className: "rte-toolbar__btn",
|
|
17
|
+
onClick: () => d(!u),
|
|
18
|
+
title: c,
|
|
19
|
+
children: [l, /* @__PURE__ */ r("span", {
|
|
20
|
+
className: "rte-toolbar__color-indicator",
|
|
21
|
+
style: { backgroundColor: o || "#000" }
|
|
22
|
+
})]
|
|
23
|
+
}), u && /* @__PURE__ */ i("div", {
|
|
24
|
+
className: "rte-toolbar__color-dropdown",
|
|
25
|
+
children: [a.map((e) => /* @__PURE__ */ r("button", {
|
|
26
|
+
type: "button",
|
|
27
|
+
className: `rte-toolbar__color-swatch ${e === o ? "rte-toolbar__color-swatch--active" : ""}`,
|
|
28
|
+
style: { backgroundColor: e },
|
|
29
|
+
onClick: () => {
|
|
30
|
+
s(e), d(!1);
|
|
31
|
+
},
|
|
32
|
+
title: e
|
|
33
|
+
}, e)), /* @__PURE__ */ r("button", {
|
|
34
|
+
type: "button",
|
|
35
|
+
className: "rte-toolbar__color-clear",
|
|
36
|
+
onClick: () => {
|
|
37
|
+
s(""), d(!1);
|
|
38
|
+
},
|
|
39
|
+
children: "Clear"
|
|
40
|
+
})]
|
|
41
|
+
})]
|
|
42
|
+
});
|
|
76
43
|
};
|
|
44
|
+
//#endregion
|
|
45
|
+
export { o as ColorPicker };
|
|
77
46
|
|
|
78
47
|
//# sourceMappingURL=ColorPicker.js.map
|