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,85 +1,85 @@
|
|
|
1
|
-
import { resolveThemeColor as
|
|
2
|
-
import { generateId as
|
|
3
|
-
import { Graphics as
|
|
1
|
+
import { resolveThemeColor as e } from "../utils/themeColor.js";
|
|
2
|
+
import { generateId as t } from "../nodes/nodeUtils.js";
|
|
3
|
+
import { Graphics as n } from "pixi.js";
|
|
4
|
+
//#region src/components/pro/Flow/lines/GeometricLineTool.ts
|
|
4
5
|
function r() {
|
|
5
|
-
|
|
6
|
+
return e("theme:base-content", "#374151");
|
|
6
7
|
}
|
|
7
|
-
var
|
|
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
|
-
export {
|
|
82
|
-
p as GeometricLineTool
|
|
8
|
+
var i = class {
|
|
9
|
+
stage;
|
|
10
|
+
preview;
|
|
11
|
+
callbacks;
|
|
12
|
+
points = [];
|
|
13
|
+
_active = !1;
|
|
14
|
+
_mode = "straight";
|
|
15
|
+
_currentPos = {
|
|
16
|
+
x: 0,
|
|
17
|
+
y: 0
|
|
18
|
+
};
|
|
19
|
+
_lastClickTime = 0;
|
|
20
|
+
_lastClickPos = {
|
|
21
|
+
x: 0,
|
|
22
|
+
y: 0
|
|
23
|
+
};
|
|
24
|
+
constructor(e, t, r) {
|
|
25
|
+
this.stage = e, this.callbacks = r, this.preview = new n(), this.preview.label = "geo-line-preview", this.preview.visible = !1, t.addChild(this.preview), this._handleKeyDown = this._handleKeyDown.bind(this);
|
|
26
|
+
}
|
|
27
|
+
get active() {
|
|
28
|
+
return this._active;
|
|
29
|
+
}
|
|
30
|
+
get mode() {
|
|
31
|
+
return this._mode;
|
|
32
|
+
}
|
|
33
|
+
set mode(e) {
|
|
34
|
+
this._mode = e;
|
|
35
|
+
}
|
|
36
|
+
activate(e = "straight") {
|
|
37
|
+
this._active = !0, this._mode = e, this.points = [], this._lastClickTime = 0, this.stage.on("pointerdown", this._onClick, this), this.stage.on("globalpointermove", this._onMove, this), window.addEventListener("keydown", this._handleKeyDown);
|
|
38
|
+
}
|
|
39
|
+
deactivate() {
|
|
40
|
+
this._active = !1, this.points = [], this.preview.destroyed || (this.preview.clear(), this.preview.visible = !1), this.stage.off("pointerdown", this._onClick, this), this.stage.off("globalpointermove", this._onMove, this), window.removeEventListener("keydown", this._handleKeyDown);
|
|
41
|
+
}
|
|
42
|
+
_handleKeyDown(e) {
|
|
43
|
+
(e.key === "Enter" || e.key === "Return") && this._mode === "polyline" && this.points.length >= 2 && this._finishLine();
|
|
44
|
+
}
|
|
45
|
+
_onClick = (e) => {
|
|
46
|
+
if (e.button !== 0) return;
|
|
47
|
+
let t = this.callbacks.screenToWorld(e.global.x, e.global.y), n = Date.now(), r = n - this._lastClickTime < 350 && Math.hypot(t.x - this._lastClickPos.x, t.y - this._lastClickPos.y) < 10;
|
|
48
|
+
if (this._lastClickTime = n, this._lastClickPos = t, r && this._mode === "polyline" && this.points.length >= 2) {
|
|
49
|
+
this._finishLine();
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
this.points.push(t), (this._mode === "straight" || this._mode === "arrow") && this.points.length >= 2 && this._finishLine();
|
|
53
|
+
};
|
|
54
|
+
_onMove = (e) => {
|
|
55
|
+
let t = this.callbacks.screenToWorld(e.global.x, e.global.y);
|
|
56
|
+
if (this._currentPos = t, this.points.length !== 0) {
|
|
57
|
+
this.preview.visible = !0, this.preview.clear(), this.preview.moveTo(this.points[0].x, this.points[0].y);
|
|
58
|
+
for (let e = 1; e < this.points.length; e++) this.preview.lineTo(this.points[e].x, this.points[e].y);
|
|
59
|
+
this.preview.lineTo(t.x, t.y), this.preview.stroke({
|
|
60
|
+
color: r(),
|
|
61
|
+
width: 2,
|
|
62
|
+
alpha: .5
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
_finishLine() {
|
|
67
|
+
let e = this._mode === "arrow" ? "arrowclosed" : "none", n = this._mode === "arrow" ? "arrow" : this._mode, r = {
|
|
68
|
+
id: t("line"),
|
|
69
|
+
type: n,
|
|
70
|
+
points: [...this.points],
|
|
71
|
+
strokeColor: "theme:base-content",
|
|
72
|
+
strokeWidth: 2,
|
|
73
|
+
lineStyle: "solid",
|
|
74
|
+
markerEnd: e
|
|
75
|
+
};
|
|
76
|
+
this.callbacks.onLineComplete(r), this.points = [], this.preview.clear(), this.preview.visible = !1;
|
|
77
|
+
}
|
|
78
|
+
destroy() {
|
|
79
|
+
this.deactivate(), this.preview.destroyed || this.preview.destroy();
|
|
80
|
+
}
|
|
83
81
|
};
|
|
82
|
+
//#endregion
|
|
83
|
+
export { i as GeometricLineTool };
|
|
84
84
|
|
|
85
85
|
//# sourceMappingURL=GeometricLineTool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeometricLineTool.js","names":[],"sources":["../../../../../src/components/pro/Flow/lines/GeometricLineTool.ts"],"sourcesContent":["import { Graphics, Container, FederatedPointerEvent } from 'pixi.js';\nimport type { FlowLine, FlowLineType, FlowEdgeMarkerKind } from '../types';\nimport { generateId } from '../nodes/nodeUtils';\nimport { resolveThemeColor } from '../utils/themeColor';\n\nfunction previewStrokeColor(): string {\n return resolveThemeColor('theme:base-content', '#374151');\n}\n\nexport interface GeometricLineToolCallbacks {\n onLineComplete: (line: FlowLine) => void;\n screenToWorld: (sx: number, sy: number) => { x: number; y: number };\n}\n\ntype GeoMode = 'straight' | 'polyline' | 'arrow';\n\n/**\n * Click-to-place geometric lines: straight, polyline, and arrow.\n * - straight/arrow: click start, click end\n * - polyline: click each point, double-click to finish\n */\nexport class GeometricLineTool {\n private stage: Container;\n private preview: Graphics;\n private callbacks: GeometricLineToolCallbacks;\n private points: Array<{ x: number; y: number }> = [];\n private _active = false;\n private _mode: GeoMode = 'straight';\n private _currentPos = { x: 0, y: 0 };\n private _lastClickTime = 0;\n private _lastClickPos = { x: 0, y: 0 };\n\n constructor(stage: Container, world: Container, callbacks: GeometricLineToolCallbacks) {\n this.stage = stage;\n this.callbacks = callbacks;\n this.preview = new Graphics();\n this.preview.label = 'geo-line-preview';\n this.preview.visible = false;\n world.addChild(this.preview);\n this._handleKeyDown = this._handleKeyDown.bind(this);\n }\n\n get active(): boolean { return this._active; }\n get mode(): GeoMode { return this._mode; }\n set mode(m: GeoMode) { this._mode = m; }\n\n activate(mode: GeoMode = 'straight'): void {\n this._active = true;\n this._mode = mode;\n this.points = [];\n this._lastClickTime = 0;\n this.stage.on('pointerdown', this._onClick, this);\n this.stage.on('globalpointermove', this._onMove, this);\n window.addEventListener('keydown', this._handleKeyDown);\n }\n\n deactivate(): void {\n this._active = false;\n this.points = [];\n if (!this.preview.destroyed) {\n this.preview.clear();\n this.preview.visible = false;\n }\n this.stage.off('pointerdown', this._onClick, this);\n this.stage.off('globalpointermove', this._onMove, this);\n window.removeEventListener('keydown', this._handleKeyDown);\n }\n\n private _handleKeyDown(e: KeyboardEvent): void {\n if (e.key === 'Enter' || e.key === 'Return') {\n if (this._mode === 'polyline' && this.points.length >= 2) {\n this._finishLine();\n }\n }\n }\n\n private _onClick = (e: FederatedPointerEvent): void => {\n if (e.button !== 0) return;\n const world = this.callbacks.screenToWorld(e.global.x, e.global.y);\n\n const now = Date.now();\n const isDbl = now - this._lastClickTime < 350\n && Math.hypot(world.x - this._lastClickPos.x, world.y - this._lastClickPos.y) < 10;\n this._lastClickTime = now;\n this._lastClickPos = world;\n\n if (isDbl && this._mode === 'polyline' && this.points.length >= 2) {\n this._finishLine();\n return;\n }\n\n this.points.push(world);\n if ((this._mode === 'straight' || this._mode === 'arrow') && this.points.length >= 2) {\n this._finishLine();\n }\n };\n\n private _onMove = (e: FederatedPointerEvent): void => {\n const world = this.callbacks.screenToWorld(e.global.x, e.global.y);\n this._currentPos = world;\n\n if (this.points.length === 0) return;\n this.preview.visible = true;\n this.preview.clear();\n\n this.preview.moveTo(this.points[0].x, this.points[0].y);\n for (let i = 1; i < this.points.length; i++) {\n this.preview.lineTo(this.points[i].x, this.points[i].y);\n }\n this.preview.lineTo(world.x, world.y);\n this.preview.stroke({ color: previewStrokeColor(), width: 2, alpha: 0.5 });\n };\n\n private _finishLine(): void {\n const markerEnd: FlowEdgeMarkerKind = this._mode === 'arrow' ? 'arrowclosed' : 'none';\n const lineType: FlowLineType = this._mode === 'arrow' ? 'arrow' : this._mode;\n\n const line: FlowLine = {\n id: generateId('line'),\n type: lineType,\n points: [...this.points],\n strokeColor: 'theme:base-content',\n strokeWidth: 2,\n lineStyle: 'solid',\n markerEnd,\n };\n\n this.callbacks.onLineComplete(line);\n this.points = [];\n this.preview.clear();\n this.preview.visible = false;\n }\n\n destroy(): void {\n this.deactivate();\n if (!this.preview.destroyed) this.preview.destroy();\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"GeometricLineTool.js","names":[],"sources":["../../../../../src/components/pro/Flow/lines/GeometricLineTool.ts"],"sourcesContent":["import { Graphics, Container, FederatedPointerEvent } from 'pixi.js';\nimport type { FlowLine, FlowLineType, FlowEdgeMarkerKind } from '../types';\nimport { generateId } from '../nodes/nodeUtils';\nimport { resolveThemeColor } from '../utils/themeColor';\n\nfunction previewStrokeColor(): string {\n return resolveThemeColor('theme:base-content', '#374151');\n}\n\nexport interface GeometricLineToolCallbacks {\n onLineComplete: (line: FlowLine) => void;\n screenToWorld: (sx: number, sy: number) => { x: number; y: number };\n}\n\ntype GeoMode = 'straight' | 'polyline' | 'arrow';\n\n/**\n * Click-to-place geometric lines: straight, polyline, and arrow.\n * - straight/arrow: click start, click end\n * - polyline: click each point, double-click to finish\n */\nexport class GeometricLineTool {\n private stage: Container;\n private preview: Graphics;\n private callbacks: GeometricLineToolCallbacks;\n private points: Array<{ x: number; y: number }> = [];\n private _active = false;\n private _mode: GeoMode = 'straight';\n private _currentPos = { x: 0, y: 0 };\n private _lastClickTime = 0;\n private _lastClickPos = { x: 0, y: 0 };\n\n constructor(stage: Container, world: Container, callbacks: GeometricLineToolCallbacks) {\n this.stage = stage;\n this.callbacks = callbacks;\n this.preview = new Graphics();\n this.preview.label = 'geo-line-preview';\n this.preview.visible = false;\n world.addChild(this.preview);\n this._handleKeyDown = this._handleKeyDown.bind(this);\n }\n\n get active(): boolean { return this._active; }\n get mode(): GeoMode { return this._mode; }\n set mode(m: GeoMode) { this._mode = m; }\n\n activate(mode: GeoMode = 'straight'): void {\n this._active = true;\n this._mode = mode;\n this.points = [];\n this._lastClickTime = 0;\n this.stage.on('pointerdown', this._onClick, this);\n this.stage.on('globalpointermove', this._onMove, this);\n window.addEventListener('keydown', this._handleKeyDown);\n }\n\n deactivate(): void {\n this._active = false;\n this.points = [];\n if (!this.preview.destroyed) {\n this.preview.clear();\n this.preview.visible = false;\n }\n this.stage.off('pointerdown', this._onClick, this);\n this.stage.off('globalpointermove', this._onMove, this);\n window.removeEventListener('keydown', this._handleKeyDown);\n }\n\n private _handleKeyDown(e: KeyboardEvent): void {\n if (e.key === 'Enter' || e.key === 'Return') {\n if (this._mode === 'polyline' && this.points.length >= 2) {\n this._finishLine();\n }\n }\n }\n\n private _onClick = (e: FederatedPointerEvent): void => {\n if (e.button !== 0) return;\n const world = this.callbacks.screenToWorld(e.global.x, e.global.y);\n\n const now = Date.now();\n const isDbl = now - this._lastClickTime < 350\n && Math.hypot(world.x - this._lastClickPos.x, world.y - this._lastClickPos.y) < 10;\n this._lastClickTime = now;\n this._lastClickPos = world;\n\n if (isDbl && this._mode === 'polyline' && this.points.length >= 2) {\n this._finishLine();\n return;\n }\n\n this.points.push(world);\n if ((this._mode === 'straight' || this._mode === 'arrow') && this.points.length >= 2) {\n this._finishLine();\n }\n };\n\n private _onMove = (e: FederatedPointerEvent): void => {\n const world = this.callbacks.screenToWorld(e.global.x, e.global.y);\n this._currentPos = world;\n\n if (this.points.length === 0) return;\n this.preview.visible = true;\n this.preview.clear();\n\n this.preview.moveTo(this.points[0].x, this.points[0].y);\n for (let i = 1; i < this.points.length; i++) {\n this.preview.lineTo(this.points[i].x, this.points[i].y);\n }\n this.preview.lineTo(world.x, world.y);\n this.preview.stroke({ color: previewStrokeColor(), width: 2, alpha: 0.5 });\n };\n\n private _finishLine(): void {\n const markerEnd: FlowEdgeMarkerKind = this._mode === 'arrow' ? 'arrowclosed' : 'none';\n const lineType: FlowLineType = this._mode === 'arrow' ? 'arrow' : this._mode;\n\n const line: FlowLine = {\n id: generateId('line'),\n type: lineType,\n points: [...this.points],\n strokeColor: 'theme:base-content',\n strokeWidth: 2,\n lineStyle: 'solid',\n markerEnd,\n };\n\n this.callbacks.onLineComplete(line);\n this.points = [];\n this.preview.clear();\n this.preview.visible = false;\n }\n\n destroy(): void {\n this.deactivate();\n if (!this.preview.destroyed) this.preview.destroy();\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,92 +1,92 @@
|
|
|
1
|
-
import { resolveThemeColor as
|
|
2
|
-
import { drawDashedPolyline as
|
|
3
|
-
import { angleBetween as
|
|
4
|
-
import { Container as
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import { resolveThemeColor as e } from "../utils/themeColor.js";
|
|
2
|
+
import { drawDashedPolyline as t } from "../utils/dashedLine.js";
|
|
3
|
+
import { angleBetween as n, drawMarker as r } from "../edges/edgeMarkers.js";
|
|
4
|
+
import { Container as i, Graphics as a } from "pixi.js";
|
|
5
|
+
//#region src/components/pro/Flow/lines/LineRenderer.ts
|
|
6
|
+
function o(e, t = 2) {
|
|
7
|
+
if (e && e !== "solid") {
|
|
8
|
+
if (e === "dynamic") return [t * 4, t * 3];
|
|
9
|
+
if (e === "dotted") return [t, t * 2];
|
|
10
|
+
if (e === "dashed") return [t * 3, t * 2];
|
|
11
|
+
}
|
|
11
12
|
}
|
|
12
|
-
var
|
|
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
|
-
export {
|
|
89
|
-
L as LineRenderer
|
|
13
|
+
var s = class {
|
|
14
|
+
world;
|
|
15
|
+
lineLayer;
|
|
16
|
+
lines = /* @__PURE__ */ new Map();
|
|
17
|
+
_dynamicOffset = 0;
|
|
18
|
+
advanceAnimation(e) {
|
|
19
|
+
this._dynamicOffset = (this._dynamicOffset + e * .06) % 1e3;
|
|
20
|
+
}
|
|
21
|
+
constructor(e) {
|
|
22
|
+
this.world = e, this.lineLayer = new i({
|
|
23
|
+
label: "lines",
|
|
24
|
+
sortableChildren: !0
|
|
25
|
+
}), this.world.addChildAt(this.lineLayer, Math.min(1, this.world.children.length));
|
|
26
|
+
}
|
|
27
|
+
sync(e, t) {
|
|
28
|
+
let n = /* @__PURE__ */ new Set();
|
|
29
|
+
for (let r of e) {
|
|
30
|
+
n.add(r.id);
|
|
31
|
+
let e = this.lines.get(r.id);
|
|
32
|
+
e || (e = this._create(r), this.lines.set(r.id, e)), this._update(e, r, t.has(r.id));
|
|
33
|
+
}
|
|
34
|
+
for (let [e, t] of this.lines) n.has(e) || (this.lineLayer.removeChild(t.container), t.container.destroy({ children: !0 }), this.lines.delete(e));
|
|
35
|
+
}
|
|
36
|
+
_create(e) {
|
|
37
|
+
let t = new i({ label: `line-${e.id}` }), n = new a();
|
|
38
|
+
n.label = "line-hitarea", n.eventMode = "static", n.cursor = "pointer", n.alpha = .001, t.addChild(n);
|
|
39
|
+
let r = new a();
|
|
40
|
+
return r.label = "line-gfx", t.addChild(r), this.lineLayer.addChild(t), {
|
|
41
|
+
container: t,
|
|
42
|
+
gfx: r,
|
|
43
|
+
hitArea: n,
|
|
44
|
+
lineId: e.id
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
_update(i, a, s) {
|
|
48
|
+
i.container.zIndex = a.zIndex ?? 0;
|
|
49
|
+
let { gfx: c, hitArea: l } = i, u = a.points;
|
|
50
|
+
if (u.length < 2) return;
|
|
51
|
+
let d = s ? "#3b82f6" : e(a.strokeColor, "#374151"), f = a.strokeWidth;
|
|
52
|
+
c.clear();
|
|
53
|
+
let p = o(a.lineStyle, f);
|
|
54
|
+
if (p) {
|
|
55
|
+
let e = a.lineStyle === "dynamic" ? this._dynamicOffset : 0, n = a.closed ? [...u, u[0]] : u;
|
|
56
|
+
t(c, n, p, e), c.stroke({
|
|
57
|
+
color: d,
|
|
58
|
+
width: f,
|
|
59
|
+
cap: "round"
|
|
60
|
+
});
|
|
61
|
+
} else {
|
|
62
|
+
c.moveTo(u[0].x, u[0].y);
|
|
63
|
+
for (let e = 1; e < u.length; e++) c.lineTo(u[e].x, u[e].y);
|
|
64
|
+
a.closed && c.closePath(), c.stroke({
|
|
65
|
+
color: d,
|
|
66
|
+
width: f
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
if (a.markerStart && a.markerStart !== "none" && u.length >= 2) {
|
|
70
|
+
let e = n(u[1].x, u[1].y, u[0].x, u[0].y);
|
|
71
|
+
r(c, a.markerStart, u[0].x, u[0].y, e, d);
|
|
72
|
+
}
|
|
73
|
+
if (a.markerEnd && a.markerEnd !== "none" && u.length >= 2) {
|
|
74
|
+
let e = u[u.length - 1], t = u[u.length - 2], i = n(t.x, t.y, e.x, e.y);
|
|
75
|
+
r(c, a.markerEnd, e.x, e.y, i, d);
|
|
76
|
+
}
|
|
77
|
+
l.clear(), l.moveTo(u[0].x, u[0].y);
|
|
78
|
+
for (let e = 1; e < u.length; e++) l.lineTo(u[e].x, u[e].y);
|
|
79
|
+
l.stroke({
|
|
80
|
+
color: "#000000",
|
|
81
|
+
width: Math.max(f + 10, 14)
|
|
82
|
+
}), l.alpha = .001;
|
|
83
|
+
}
|
|
84
|
+
destroy() {
|
|
85
|
+
for (let [, e] of this.lines) e.container.destroy({ children: !0 });
|
|
86
|
+
this.lines.clear(), this.lineLayer.destroy({ children: !0 });
|
|
87
|
+
}
|
|
90
88
|
};
|
|
89
|
+
//#endregion
|
|
90
|
+
export { s as LineRenderer };
|
|
91
91
|
|
|
92
92
|
//# sourceMappingURL=LineRenderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LineRenderer.js","names":[],"sources":["../../../../../src/components/pro/Flow/lines/LineRenderer.ts"],"sourcesContent":["import { Container, Graphics } from 'pixi.js';\nimport type { FlowLine } from '../types';\nimport { drawMarker, angleBetween } from '../edges/edgeMarkers';\nimport { drawDashedPolyline } from '../utils/dashedLine';\nimport { resolveThemeColor } from '../utils/themeColor';\n\nfunction getLineDash(style?: string, width = 2): number[] | undefined {\n if (!style || style === 'solid') return undefined;\n if (style === 'dynamic') return [width * 4, width * 3];\n if (style === 'dotted') return [width, width * 2];\n if (style === 'dashed') return [width * 3, width * 2];\n return undefined;\n}\n\ninterface LineDisplay {\n container: Container;\n gfx: Graphics;\n hitArea: Graphics;\n lineId: string;\n}\n\n/**\n * Renders independent FlowLine[] objects on the canvas.\n */\nexport class LineRenderer {\n private world: Container;\n private lineLayer: Container;\n private lines = new Map<string, LineDisplay>();\n private _dynamicOffset = 0;\n\n /** Call once per frame to advance the dynamic dash animation. */\n advanceAnimation(deltaMs: number): void {\n this._dynamicOffset = (this._dynamicOffset + deltaMs * 0.06) % 1000;\n }\n\n constructor(world: Container) {\n this.world = world;\n this.lineLayer = new Container({ label: 'lines', sortableChildren: true });\n // Lines on top of edges but below nodes\n this.world.addChildAt(this.lineLayer, Math.min(1, this.world.children.length));\n }\n\n sync(flowLines: FlowLine[], selectedIds: Set<string>): void {\n const seen = new Set<string>();\n\n for (const line of flowLines) {\n seen.add(line.id);\n let display = this.lines.get(line.id);\n if (!display) {\n display = this._create(line);\n this.lines.set(line.id, display);\n }\n this._update(display, line, selectedIds.has(line.id));\n }\n\n for (const [id, display] of this.lines) {\n if (!seen.has(id)) {\n this.lineLayer.removeChild(display.container);\n display.container.destroy({ children: true });\n this.lines.delete(id);\n }\n }\n }\n\n private _create(line: FlowLine): LineDisplay {\n const container = new Container({ label: `line-${line.id}` });\n\n const hitArea = new Graphics();\n hitArea.label = 'line-hitarea';\n hitArea.eventMode = 'static';\n hitArea.cursor = 'pointer';\n hitArea.alpha = 0.001;\n container.addChild(hitArea);\n\n const gfx = new Graphics();\n gfx.label = 'line-gfx';\n container.addChild(gfx);\n\n this.lineLayer.addChild(container);\n return { container, gfx, hitArea, lineId: line.id };\n }\n\n private _update(display: LineDisplay, line: FlowLine, selected: boolean): void {\n display.container.zIndex = line.zIndex ?? 0;\n const { gfx, hitArea } = display;\n const pts = line.points;\n if (pts.length < 2) return;\n\n const color = selected ? '#3b82f6' : resolveThemeColor(line.strokeColor, '#374151');\n const width = line.strokeWidth;\n\n gfx.clear();\n const dash = getLineDash(line.lineStyle, width);\n if (dash) {\n const offset = line.lineStyle === 'dynamic' ? this._dynamicOffset : 0;\n const drawPts = line.closed ? [...pts, pts[0]] : pts;\n drawDashedPolyline(gfx, drawPts, dash, offset);\n gfx.stroke({ color, width, cap: 'round' as const });\n } else {\n gfx.moveTo(pts[0].x, pts[0].y);\n for (let i = 1; i < pts.length; i++) {\n gfx.lineTo(pts[i].x, pts[i].y);\n }\n if (line.closed) gfx.closePath();\n gfx.stroke({ color, width });\n }\n\n // Markers\n if (line.markerStart && line.markerStart !== 'none' && pts.length >= 2) {\n const angle = angleBetween(pts[1].x, pts[1].y, pts[0].x, pts[0].y);\n drawMarker(gfx, line.markerStart, pts[0].x, pts[0].y, angle, color);\n }\n if (line.markerEnd && line.markerEnd !== 'none' && pts.length >= 2) {\n const last = pts[pts.length - 1];\n const prev = pts[pts.length - 2];\n const angle = angleBetween(prev.x, prev.y, last.x, last.y);\n drawMarker(gfx, line.markerEnd, last.x, last.y, angle, color);\n }\n\n // Hit area\n hitArea.clear();\n hitArea.moveTo(pts[0].x, pts[0].y);\n for (let i = 1; i < pts.length; i++) {\n hitArea.lineTo(pts[i].x, pts[i].y);\n }\n hitArea.stroke({ color: '#000000', width: Math.max(width + 10, 14) });\n hitArea.alpha = 0.001;\n }\n\n destroy(): void {\n for (const [, display] of this.lines) {\n display.container.destroy({ children: true });\n }\n this.lines.clear();\n this.lineLayer.destroy({ children: true });\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"LineRenderer.js","names":[],"sources":["../../../../../src/components/pro/Flow/lines/LineRenderer.ts"],"sourcesContent":["import { Container, Graphics } from 'pixi.js';\nimport type { FlowLine } from '../types';\nimport { drawMarker, angleBetween } from '../edges/edgeMarkers';\nimport { drawDashedPolyline } from '../utils/dashedLine';\nimport { resolveThemeColor } from '../utils/themeColor';\n\nfunction getLineDash(style?: string, width = 2): number[] | undefined {\n if (!style || style === 'solid') return undefined;\n if (style === 'dynamic') return [width * 4, width * 3];\n if (style === 'dotted') return [width, width * 2];\n if (style === 'dashed') return [width * 3, width * 2];\n return undefined;\n}\n\ninterface LineDisplay {\n container: Container;\n gfx: Graphics;\n hitArea: Graphics;\n lineId: string;\n}\n\n/**\n * Renders independent FlowLine[] objects on the canvas.\n */\nexport class LineRenderer {\n private world: Container;\n private lineLayer: Container;\n private lines = new Map<string, LineDisplay>();\n private _dynamicOffset = 0;\n\n /** Call once per frame to advance the dynamic dash animation. */\n advanceAnimation(deltaMs: number): void {\n this._dynamicOffset = (this._dynamicOffset + deltaMs * 0.06) % 1000;\n }\n\n constructor(world: Container) {\n this.world = world;\n this.lineLayer = new Container({ label: 'lines', sortableChildren: true });\n // Lines on top of edges but below nodes\n this.world.addChildAt(this.lineLayer, Math.min(1, this.world.children.length));\n }\n\n sync(flowLines: FlowLine[], selectedIds: Set<string>): void {\n const seen = new Set<string>();\n\n for (const line of flowLines) {\n seen.add(line.id);\n let display = this.lines.get(line.id);\n if (!display) {\n display = this._create(line);\n this.lines.set(line.id, display);\n }\n this._update(display, line, selectedIds.has(line.id));\n }\n\n for (const [id, display] of this.lines) {\n if (!seen.has(id)) {\n this.lineLayer.removeChild(display.container);\n display.container.destroy({ children: true });\n this.lines.delete(id);\n }\n }\n }\n\n private _create(line: FlowLine): LineDisplay {\n const container = new Container({ label: `line-${line.id}` });\n\n const hitArea = new Graphics();\n hitArea.label = 'line-hitarea';\n hitArea.eventMode = 'static';\n hitArea.cursor = 'pointer';\n hitArea.alpha = 0.001;\n container.addChild(hitArea);\n\n const gfx = new Graphics();\n gfx.label = 'line-gfx';\n container.addChild(gfx);\n\n this.lineLayer.addChild(container);\n return { container, gfx, hitArea, lineId: line.id };\n }\n\n private _update(display: LineDisplay, line: FlowLine, selected: boolean): void {\n display.container.zIndex = line.zIndex ?? 0;\n const { gfx, hitArea } = display;\n const pts = line.points;\n if (pts.length < 2) return;\n\n const color = selected ? '#3b82f6' : resolveThemeColor(line.strokeColor, '#374151');\n const width = line.strokeWidth;\n\n gfx.clear();\n const dash = getLineDash(line.lineStyle, width);\n if (dash) {\n const offset = line.lineStyle === 'dynamic' ? this._dynamicOffset : 0;\n const drawPts = line.closed ? [...pts, pts[0]] : pts;\n drawDashedPolyline(gfx, drawPts, dash, offset);\n gfx.stroke({ color, width, cap: 'round' as const });\n } else {\n gfx.moveTo(pts[0].x, pts[0].y);\n for (let i = 1; i < pts.length; i++) {\n gfx.lineTo(pts[i].x, pts[i].y);\n }\n if (line.closed) gfx.closePath();\n gfx.stroke({ color, width });\n }\n\n // Markers\n if (line.markerStart && line.markerStart !== 'none' && pts.length >= 2) {\n const angle = angleBetween(pts[1].x, pts[1].y, pts[0].x, pts[0].y);\n drawMarker(gfx, line.markerStart, pts[0].x, pts[0].y, angle, color);\n }\n if (line.markerEnd && line.markerEnd !== 'none' && pts.length >= 2) {\n const last = pts[pts.length - 1];\n const prev = pts[pts.length - 2];\n const angle = angleBetween(prev.x, prev.y, last.x, last.y);\n drawMarker(gfx, line.markerEnd, last.x, last.y, angle, color);\n }\n\n // Hit area\n hitArea.clear();\n hitArea.moveTo(pts[0].x, pts[0].y);\n for (let i = 1; i < pts.length; i++) {\n hitArea.lineTo(pts[i].x, pts[i].y);\n }\n hitArea.stroke({ color: '#000000', width: Math.max(width + 10, 14) });\n hitArea.alpha = 0.001;\n }\n\n destroy(): void {\n for (const [, display] of this.lines) {\n display.container.destroy({ children: true });\n }\n this.lines.clear();\n this.lineLayer.destroy({ children: true });\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,39 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
//#region src/components/pro/Flow/lines/lineSmoothing.ts
|
|
2
|
+
function e(e, t = 8) {
|
|
3
|
+
if (e.length < 3) return [...e];
|
|
4
|
+
let n = [e[0]];
|
|
5
|
+
for (let r = 0; r < e.length - 1; r++) {
|
|
6
|
+
let i = e[Math.max(0, r - 1)], a = e[r], o = e[Math.min(e.length - 1, r + 1)], s = e[Math.min(e.length - 1, r + 2)];
|
|
7
|
+
for (let e = 1; e <= t; e++) {
|
|
8
|
+
let r = e / t, c = r * r, l = c * r, u = .5 * (2 * a.x + (-i.x + o.x) * r + (2 * i.x - 5 * a.x + 4 * o.x - s.x) * c + (-i.x + 3 * a.x - 3 * o.x + s.x) * l), d = .5 * (2 * a.y + (-i.y + o.y) * r + (2 * i.y - 5 * a.y + 4 * o.y - s.y) * c + (-i.y + 3 * a.y - 3 * o.y + s.y) * l);
|
|
9
|
+
n.push({
|
|
10
|
+
x: u,
|
|
11
|
+
y: d
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return n;
|
|
15
16
|
}
|
|
16
|
-
function
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return [y, h];
|
|
17
|
+
function t(e, r = 1.5) {
|
|
18
|
+
if (e.length < 3) return [...e];
|
|
19
|
+
let i = 0, a = 0, o = e[0], s = e[e.length - 1];
|
|
20
|
+
for (let t = 1; t < e.length - 1; t++) {
|
|
21
|
+
let r = n(e[t], o, s);
|
|
22
|
+
r > i && (i = r, a = t);
|
|
23
|
+
}
|
|
24
|
+
if (i > r) {
|
|
25
|
+
let n = t(e.slice(0, a + 1), r), i = t(e.slice(a), r);
|
|
26
|
+
return [...n.slice(0, -1), ...i];
|
|
27
|
+
}
|
|
28
|
+
return [o, s];
|
|
29
29
|
}
|
|
30
|
-
function
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
function n(e, t, n) {
|
|
31
|
+
let r = n.x - t.x, i = n.y - t.y, a = r * r + i * i;
|
|
32
|
+
return a === 0 ? Math.hypot(e.x - t.x, e.y - t.y) : Math.abs(i * e.x - r * e.y + n.x * t.y - n.y * t.x) / Math.sqrt(a);
|
|
33
33
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
M as smoothCatmullRom
|
|
37
|
-
};
|
|
34
|
+
//#endregion
|
|
35
|
+
export { t as simplifyPath, e as smoothCatmullRom };
|
|
38
36
|
|
|
39
37
|
//# sourceMappingURL=lineSmoothing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lineSmoothing.js","names":[],"sources":["../../../../../src/components/pro/Flow/lines/lineSmoothing.ts"],"sourcesContent":["export interface Point {\n x: number;\n y: number;\n}\n\n/**\n * Catmull-Rom spline interpolation for smoothing freehand lines.\n * Produces additional intermediate points between each pair of original points.\n */\nexport function smoothCatmullRom(points: Point[], segments = 8): Point[] {\n if (points.length < 3) return [...points];\n\n const result: Point[] = [points[0]];\n\n for (let i = 0; i < points.length - 1; i++) {\n const p0 = points[Math.max(0, i - 1)];\n const p1 = points[i];\n const p2 = points[Math.min(points.length - 1, i + 1)];\n const p3 = points[Math.min(points.length - 1, i + 2)];\n\n for (let t = 1; t <= segments; t++) {\n const f = t / segments;\n const f2 = f * f;\n const f3 = f2 * f;\n\n const x = 0.5 * (\n (2 * p1.x) +\n (-p0.x + p2.x) * f +\n (2 * p0.x - 5 * p1.x + 4 * p2.x - p3.x) * f2 +\n (-p0.x + 3 * p1.x - 3 * p2.x + p3.x) * f3\n );\n const y = 0.5 * (\n (2 * p1.y) +\n (-p0.y + p2.y) * f +\n (2 * p0.y - 5 * p1.y + 4 * p2.y - p3.y) * f2 +\n (-p0.y + 3 * p1.y - 3 * p2.y + p3.y) * f3\n );\n\n result.push({ x, y });\n }\n }\n\n return result;\n}\n\n/**\n * Douglas-Peucker simplification to reduce point count.\n */\nexport function simplifyPath(points: Point[], epsilon = 1.5): Point[] {\n if (points.length < 3) return [...points];\n\n let maxDist = 0;\n let maxIdx = 0;\n const first = points[0];\n const last = points[points.length - 1];\n\n for (let i = 1; i < points.length - 1; i++) {\n const d = perpendicularDistance(points[i], first, last);\n if (d > maxDist) {\n maxDist = d;\n maxIdx = i;\n }\n }\n\n if (maxDist > epsilon) {\n const left = simplifyPath(points.slice(0, maxIdx + 1), epsilon);\n const right = simplifyPath(points.slice(maxIdx), epsilon);\n return [...left.slice(0, -1), ...right];\n }\n\n return [first, last];\n}\n\nfunction perpendicularDistance(point: Point, lineStart: Point, lineEnd: Point): number {\n const dx = lineEnd.x - lineStart.x;\n const dy = lineEnd.y - lineStart.y;\n const lenSq = dx * dx + dy * dy;\n if (lenSq === 0) return Math.hypot(point.x - lineStart.x, point.y - lineStart.y);\n const num = Math.abs(dy * point.x - dx * point.y + lineEnd.x * lineStart.y - lineEnd.y * lineStart.x);\n return num / Math.sqrt(lenSq);\n}\n"],"mappings":"AASA,SAAgB,EAAiB,GAAiB,IAAW,GAAY;
|
|
1
|
+
{"version":3,"file":"lineSmoothing.js","names":[],"sources":["../../../../../src/components/pro/Flow/lines/lineSmoothing.ts"],"sourcesContent":["export interface Point {\n x: number;\n y: number;\n}\n\n/**\n * Catmull-Rom spline interpolation for smoothing freehand lines.\n * Produces additional intermediate points between each pair of original points.\n */\nexport function smoothCatmullRom(points: Point[], segments = 8): Point[] {\n if (points.length < 3) return [...points];\n\n const result: Point[] = [points[0]];\n\n for (let i = 0; i < points.length - 1; i++) {\n const p0 = points[Math.max(0, i - 1)];\n const p1 = points[i];\n const p2 = points[Math.min(points.length - 1, i + 1)];\n const p3 = points[Math.min(points.length - 1, i + 2)];\n\n for (let t = 1; t <= segments; t++) {\n const f = t / segments;\n const f2 = f * f;\n const f3 = f2 * f;\n\n const x = 0.5 * (\n (2 * p1.x) +\n (-p0.x + p2.x) * f +\n (2 * p0.x - 5 * p1.x + 4 * p2.x - p3.x) * f2 +\n (-p0.x + 3 * p1.x - 3 * p2.x + p3.x) * f3\n );\n const y = 0.5 * (\n (2 * p1.y) +\n (-p0.y + p2.y) * f +\n (2 * p0.y - 5 * p1.y + 4 * p2.y - p3.y) * f2 +\n (-p0.y + 3 * p1.y - 3 * p2.y + p3.y) * f3\n );\n\n result.push({ x, y });\n }\n }\n\n return result;\n}\n\n/**\n * Douglas-Peucker simplification to reduce point count.\n */\nexport function simplifyPath(points: Point[], epsilon = 1.5): Point[] {\n if (points.length < 3) return [...points];\n\n let maxDist = 0;\n let maxIdx = 0;\n const first = points[0];\n const last = points[points.length - 1];\n\n for (let i = 1; i < points.length - 1; i++) {\n const d = perpendicularDistance(points[i], first, last);\n if (d > maxDist) {\n maxDist = d;\n maxIdx = i;\n }\n }\n\n if (maxDist > epsilon) {\n const left = simplifyPath(points.slice(0, maxIdx + 1), epsilon);\n const right = simplifyPath(points.slice(maxIdx), epsilon);\n return [...left.slice(0, -1), ...right];\n }\n\n return [first, last];\n}\n\nfunction perpendicularDistance(point: Point, lineStart: Point, lineEnd: Point): number {\n const dx = lineEnd.x - lineStart.x;\n const dy = lineEnd.y - lineStart.y;\n const lenSq = dx * dx + dy * dy;\n if (lenSq === 0) return Math.hypot(point.x - lineStart.x, point.y - lineStart.y);\n const num = Math.abs(dy * point.x - dx * point.y + lineEnd.x * lineStart.y - lineEnd.y * lineStart.x);\n return num / Math.sqrt(lenSq);\n}\n"],"mappings":";AASA,SAAgB,EAAiB,GAAiB,IAAW,GAAY;CACvE,IAAI,EAAO,SAAS,GAAG,OAAO,CAAC,GAAG,CAAM;CAExC,IAAM,IAAkB,CAAC,EAAO,EAAE;CAElC,KAAK,IAAI,IAAI,GAAG,IAAI,EAAO,SAAS,GAAG,KAAK;EAC1C,IAAM,IAAK,EAAO,KAAK,IAAI,GAAG,IAAI,CAAC,IAC7B,IAAK,EAAO,IACZ,IAAK,EAAO,KAAK,IAAI,EAAO,SAAS,GAAG,IAAI,CAAC,IAC7C,IAAK,EAAO,KAAK,IAAI,EAAO,SAAS,GAAG,IAAI,CAAC;EAEnD,KAAK,IAAI,IAAI,GAAG,KAAK,GAAU,KAAK;GAClC,IAAM,IAAI,IAAI,GACR,IAAK,IAAI,GACT,IAAK,IAAK,GAEV,IAAI,MACP,IAAI,EAAG,KACP,CAAC,EAAG,IAAI,EAAG,KAAK,KAChB,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,EAAG,KAAK,KACzC,CAAC,EAAG,IAAI,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,EAAG,KAAK,IAEnC,IAAI,MACP,IAAI,EAAG,KACP,CAAC,EAAG,IAAI,EAAG,KAAK,KAChB,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,EAAG,KAAK,KACzC,CAAC,EAAG,IAAI,IAAI,EAAG,IAAI,IAAI,EAAG,IAAI,EAAG,KAAK;GAGzC,EAAO,KAAK;IAAE;IAAG;GAAE,CAAC;EACtB;CACF;CAEA,OAAO;AACT;AAKA,SAAgB,EAAa,GAAiB,IAAU,KAAc;CACpE,IAAI,EAAO,SAAS,GAAG,OAAO,CAAC,GAAG,CAAM;CAExC,IAAI,IAAU,GACV,IAAS,GACP,IAAQ,EAAO,IACf,IAAO,EAAO,EAAO,SAAS;CAEpC,KAAK,IAAI,IAAI,GAAG,IAAI,EAAO,SAAS,GAAG,KAAK;EAC1C,IAAM,IAAI,EAAsB,EAAO,IAAI,GAAO,CAAI;EACtD,AAAI,IAAI,MACN,IAAU,GACV,IAAS;CAEb;CAEA,IAAI,IAAU,GAAS;EACrB,IAAM,IAAO,EAAa,EAAO,MAAM,GAAG,IAAS,CAAC,GAAG,CAAO,GACxD,IAAQ,EAAa,EAAO,MAAM,CAAM,GAAG,CAAO;EACxD,OAAO,CAAC,GAAG,EAAK,MAAM,GAAG,EAAE,GAAG,GAAG,CAAK;CACxC;CAEA,OAAO,CAAC,GAAO,CAAI;AACrB;AAEA,SAAS,EAAsB,GAAc,GAAkB,GAAwB;CACrF,IAAM,IAAK,EAAQ,IAAI,EAAU,GAC3B,IAAK,EAAQ,IAAI,EAAU,GAC3B,IAAQ,IAAK,IAAK,IAAK;CAG7B,OAFI,MAAU,IAAU,KAAK,MAAM,EAAM,IAAI,EAAU,GAAG,EAAM,IAAI,EAAU,CAAC,IACnE,KAAK,IAAI,IAAK,EAAM,IAAI,IAAK,EAAM,IAAI,EAAQ,IAAI,EAAU,IAAI,EAAQ,IAAI,EAAU,CAC5F,IAAM,KAAK,KAAK,CAAK;AAC9B"}
|