@yh-ui/flow 0.1.21
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/LICENSE +21 -0
- package/README.md +234 -0
- package/dist/Flow.d.vue.ts +306 -0
- package/dist/Flow.vue +959 -0
- package/dist/Flow.vue.d.ts +306 -0
- package/dist/__tests__/ai-workflow.ssr.test.cjs +352 -0
- package/dist/__tests__/ai-workflow.ssr.test.d.ts +1 -0
- package/dist/__tests__/ai-workflow.ssr.test.mjs +283 -0
- package/dist/__tests__/ai-workflow.test.cjs +109 -0
- package/dist/__tests__/ai-workflow.test.d.ts +1 -0
- package/dist/__tests__/ai-workflow.test.mjs +112 -0
- package/dist/__tests__/bpmn.ssr.test.cjs +278 -0
- package/dist/__tests__/bpmn.ssr.test.d.ts +1 -0
- package/dist/__tests__/bpmn.ssr.test.mjs +237 -0
- package/dist/__tests__/bpmn.test.cjs +103 -0
- package/dist/__tests__/bpmn.test.d.ts +1 -0
- package/dist/__tests__/bpmn.test.mjs +106 -0
- package/dist/__tests__/custom-types.test.cjs +300 -0
- package/dist/__tests__/custom-types.test.d.ts +1 -0
- package/dist/__tests__/custom-types.test.mjs +248 -0
- package/dist/__tests__/edge.test.cjs +56 -0
- package/dist/__tests__/edge.test.d.ts +1 -0
- package/dist/__tests__/edge.test.mjs +69 -0
- package/dist/__tests__/event-bus.test.cjs +80 -0
- package/dist/__tests__/event-bus.test.d.ts +1 -0
- package/dist/__tests__/event-bus.test.mjs +51 -0
- package/dist/__tests__/flow.ssr.test.cjs +156 -0
- package/dist/__tests__/flow.ssr.test.d.ts +1 -0
- package/dist/__tests__/flow.ssr.test.mjs +112 -0
- package/dist/__tests__/geometry.test.cjs +191 -0
- package/dist/__tests__/geometry.test.d.ts +1 -0
- package/dist/__tests__/geometry.test.mjs +105 -0
- package/dist/__tests__/graph.test.cjs +115 -0
- package/dist/__tests__/graph.test.d.ts +1 -0
- package/dist/__tests__/graph.test.mjs +85 -0
- package/dist/__tests__/history-plugin.test.cjs +191 -0
- package/dist/__tests__/history-plugin.test.d.ts +1 -0
- package/dist/__tests__/history-plugin.test.mjs +161 -0
- package/dist/__tests__/history.test.cjs +81 -0
- package/dist/__tests__/history.test.d.ts +1 -0
- package/dist/__tests__/history.test.mjs +43 -0
- package/dist/__tests__/layout.test.cjs +213 -0
- package/dist/__tests__/layout.test.d.ts +1 -0
- package/dist/__tests__/layout.test.mjs +170 -0
- package/dist/__tests__/node-edit-panel.ssr.test.cjs +168 -0
- package/dist/__tests__/node-edit-panel.ssr.test.d.ts +1 -0
- package/dist/__tests__/node-edit-panel.ssr.test.mjs +118 -0
- package/dist/__tests__/node-group-plugin.test.cjs +235 -0
- package/dist/__tests__/node-group-plugin.test.d.ts +1 -0
- package/dist/__tests__/node-group-plugin.test.mjs +187 -0
- package/dist/__tests__/node-handles.test.cjs +340 -0
- package/dist/__tests__/node-handles.test.d.ts +1 -0
- package/dist/__tests__/node-handles.test.mjs +230 -0
- package/dist/__tests__/plugin.test.cjs +151 -0
- package/dist/__tests__/plugin.test.d.ts +1 -0
- package/dist/__tests__/plugin.test.mjs +116 -0
- package/dist/__tests__/transform.test.cjs +58 -0
- package/dist/__tests__/transform.test.d.ts +1 -0
- package/dist/__tests__/transform.test.mjs +38 -0
- package/dist/__tests__/useAlignment.test.cjs +91 -0
- package/dist/__tests__/useAlignment.test.d.ts +1 -0
- package/dist/__tests__/useAlignment.test.mjs +52 -0
- package/dist/__tests__/useEdges.test.cjs +117 -0
- package/dist/__tests__/useEdges.test.d.ts +1 -0
- package/dist/__tests__/useEdges.test.mjs +80 -0
- package/dist/__tests__/useKeyboard.test.cjs +88 -0
- package/dist/__tests__/useKeyboard.test.d.ts +1 -0
- package/dist/__tests__/useKeyboard.test.mjs +56 -0
- package/dist/__tests__/useNodes.test.cjs +150 -0
- package/dist/__tests__/useNodes.test.d.ts +1 -0
- package/dist/__tests__/useNodes.test.mjs +80 -0
- package/dist/__tests__/useSelection.test.cjs +112 -0
- package/dist/__tests__/useSelection.test.d.ts +1 -0
- package/dist/__tests__/useSelection.test.mjs +76 -0
- package/dist/__tests__/useViewport.test.cjs +171 -0
- package/dist/__tests__/useViewport.test.d.ts +1 -0
- package/dist/__tests__/useViewport.test.mjs +82 -0
- package/dist/__tests__/utils/ssr.cjs +124 -0
- package/dist/__tests__/utils/ssr.d.ts +33 -0
- package/dist/__tests__/utils/ssr.mjs +129 -0
- package/dist/__tests__/validation.test.cjs +95 -0
- package/dist/__tests__/validation.test.d.ts +1 -0
- package/dist/__tests__/validation.test.mjs +36 -0
- package/dist/components/AiNodeEditPanel.d.vue.ts +13 -0
- package/dist/components/AiNodeEditPanel.vue +413 -0
- package/dist/components/AiNodeEditPanel.vue.d.ts +13 -0
- package/dist/components/EdgeEditPanel.d.vue.ts +14 -0
- package/dist/components/EdgeEditPanel.vue +205 -0
- package/dist/components/EdgeEditPanel.vue.d.ts +14 -0
- package/dist/components/NodeEditPanel.d.vue.ts +13 -0
- package/dist/components/NodeEditPanel.vue +214 -0
- package/dist/components/NodeEditPanel.vue.d.ts +13 -0
- package/dist/components/edges/BaseEdge.d.vue.ts +23 -0
- package/dist/components/edges/BaseEdge.vue +55 -0
- package/dist/components/edges/BaseEdge.vue.d.ts +23 -0
- package/dist/components/edges/BezierEdge.d.vue.ts +22 -0
- package/dist/components/edges/BezierEdge.vue +57 -0
- package/dist/components/edges/BezierEdge.vue.d.ts +22 -0
- package/dist/components/edges/DataFlowEdge.d.vue.ts +41 -0
- package/dist/components/edges/DataFlowEdge.vue +211 -0
- package/dist/components/edges/DataFlowEdge.vue.d.ts +41 -0
- package/dist/components/edges/SmoothEdge.d.vue.ts +22 -0
- package/dist/components/edges/SmoothEdge.vue +53 -0
- package/dist/components/edges/SmoothEdge.vue.d.ts +22 -0
- package/dist/components/edges/StepEdge.d.vue.ts +22 -0
- package/dist/components/edges/StepEdge.vue +42 -0
- package/dist/components/edges/StepEdge.vue.d.ts +22 -0
- package/dist/components/edges/index.cjs +41 -0
- package/dist/components/edges/index.d.ts +5 -0
- package/dist/components/edges/index.mjs +5 -0
- package/dist/components/nodes/BaseNode.d.vue.ts +25 -0
- package/dist/components/nodes/BaseNode.vue +93 -0
- package/dist/components/nodes/BaseNode.vue.d.ts +25 -0
- package/dist/components/nodes/CustomNode.d.vue.ts +36 -0
- package/dist/components/nodes/CustomNode.vue +44 -0
- package/dist/components/nodes/CustomNode.vue.d.ts +36 -0
- package/dist/components/nodes/DatabaseNode.d.vue.ts +19 -0
- package/dist/components/nodes/DatabaseNode.vue +62 -0
- package/dist/components/nodes/DatabaseNode.vue.d.ts +19 -0
- package/dist/components/nodes/DiamondNode.d.vue.ts +19 -0
- package/dist/components/nodes/DiamondNode.vue +62 -0
- package/dist/components/nodes/DiamondNode.vue.d.ts +19 -0
- package/dist/components/nodes/GroupNode.d.vue.ts +31 -0
- package/dist/components/nodes/GroupNode.vue +48 -0
- package/dist/components/nodes/GroupNode.vue.d.ts +31 -0
- package/dist/components/nodes/InputNode.d.vue.ts +23 -0
- package/dist/components/nodes/InputNode.vue +63 -0
- package/dist/components/nodes/InputNode.vue.d.ts +23 -0
- package/dist/components/nodes/NodeResizer.d.vue.ts +27 -0
- package/dist/components/nodes/NodeResizer.vue +89 -0
- package/dist/components/nodes/NodeResizer.vue.d.ts +27 -0
- package/dist/components/nodes/NodeToolbar.d.vue.ts +32 -0
- package/dist/components/nodes/NodeToolbar.vue +101 -0
- package/dist/components/nodes/NodeToolbar.vue.d.ts +32 -0
- package/dist/components/nodes/OutputNode.d.vue.ts +21 -0
- package/dist/components/nodes/OutputNode.vue +53 -0
- package/dist/components/nodes/OutputNode.vue.d.ts +21 -0
- package/dist/components/nodes/ai-workflow/AiAgentNode.d.vue.ts +20 -0
- package/dist/components/nodes/ai-workflow/AiAgentNode.vue +59 -0
- package/dist/components/nodes/ai-workflow/AiAgentNode.vue.d.ts +20 -0
- package/dist/components/nodes/ai-workflow/AiConditionNode.d.vue.ts +19 -0
- package/dist/components/nodes/ai-workflow/AiConditionNode.vue +65 -0
- package/dist/components/nodes/ai-workflow/AiConditionNode.vue.d.ts +19 -0
- package/dist/components/nodes/ai-workflow/AiEndNode.d.vue.ts +19 -0
- package/dist/components/nodes/ai-workflow/AiEndNode.vue +47 -0
- package/dist/components/nodes/ai-workflow/AiEndNode.vue.d.ts +19 -0
- package/dist/components/nodes/ai-workflow/AiLlmNode.d.vue.ts +19 -0
- package/dist/components/nodes/ai-workflow/AiLlmNode.vue +64 -0
- package/dist/components/nodes/ai-workflow/AiLlmNode.vue.d.ts +19 -0
- package/dist/components/nodes/ai-workflow/AiMemoryNode.d.vue.ts +19 -0
- package/dist/components/nodes/ai-workflow/AiMemoryNode.vue +59 -0
- package/dist/components/nodes/ai-workflow/AiMemoryNode.vue.d.ts +19 -0
- package/dist/components/nodes/ai-workflow/AiPromptNode.d.vue.ts +19 -0
- package/dist/components/nodes/ai-workflow/AiPromptNode.vue +61 -0
- package/dist/components/nodes/ai-workflow/AiPromptNode.vue.d.ts +19 -0
- package/dist/components/nodes/ai-workflow/AiStartNode.d.vue.ts +19 -0
- package/dist/components/nodes/ai-workflow/AiStartNode.vue +47 -0
- package/dist/components/nodes/ai-workflow/AiStartNode.vue.d.ts +19 -0
- package/dist/components/nodes/ai-workflow/AiToolNode.d.vue.ts +19 -0
- package/dist/components/nodes/ai-workflow/AiToolNode.vue +59 -0
- package/dist/components/nodes/ai-workflow/AiToolNode.vue.d.ts +19 -0
- package/dist/components/nodes/ai-workflow/index.cjs +109 -0
- package/dist/components/nodes/ai-workflow/index.d.ts +23 -0
- package/dist/components/nodes/ai-workflow/index.mjs +37 -0
- package/dist/components/nodes/bpmn/BpmnEndEvent.d.vue.ts +19 -0
- package/dist/components/nodes/bpmn/BpmnEndEvent.vue +50 -0
- package/dist/components/nodes/bpmn/BpmnEndEvent.vue.d.ts +19 -0
- package/dist/components/nodes/bpmn/BpmnExclusiveGateway.d.vue.ts +19 -0
- package/dist/components/nodes/bpmn/BpmnExclusiveGateway.vue +60 -0
- package/dist/components/nodes/bpmn/BpmnExclusiveGateway.vue.d.ts +19 -0
- package/dist/components/nodes/bpmn/BpmnInclusiveGateway.d.vue.ts +19 -0
- package/dist/components/nodes/bpmn/BpmnInclusiveGateway.vue +60 -0
- package/dist/components/nodes/bpmn/BpmnInclusiveGateway.vue.d.ts +19 -0
- package/dist/components/nodes/bpmn/BpmnParallelGateway.d.vue.ts +19 -0
- package/dist/components/nodes/bpmn/BpmnParallelGateway.vue +60 -0
- package/dist/components/nodes/bpmn/BpmnParallelGateway.vue.d.ts +19 -0
- package/dist/components/nodes/bpmn/BpmnServiceTask.d.vue.ts +19 -0
- package/dist/components/nodes/bpmn/BpmnServiceTask.vue +55 -0
- package/dist/components/nodes/bpmn/BpmnServiceTask.vue.d.ts +19 -0
- package/dist/components/nodes/bpmn/BpmnStartEvent.d.vue.ts +19 -0
- package/dist/components/nodes/bpmn/BpmnStartEvent.vue +50 -0
- package/dist/components/nodes/bpmn/BpmnStartEvent.vue.d.ts +19 -0
- package/dist/components/nodes/bpmn/BpmnTask.d.vue.ts +19 -0
- package/dist/components/nodes/bpmn/BpmnTask.vue +54 -0
- package/dist/components/nodes/bpmn/BpmnTask.vue.d.ts +19 -0
- package/dist/components/nodes/bpmn/BpmnUserTask.d.vue.ts +19 -0
- package/dist/components/nodes/bpmn/BpmnUserTask.vue +55 -0
- package/dist/components/nodes/bpmn/BpmnUserTask.vue.d.ts +19 -0
- package/dist/components/nodes/bpmn/index.cjs +109 -0
- package/dist/components/nodes/bpmn/index.d.ts +23 -0
- package/dist/components/nodes/bpmn/index.mjs +37 -0
- package/dist/components/nodes/index.cjs +246 -0
- package/dist/components/nodes/index.d.ts +13 -0
- package/dist/components/nodes/index.mjs +44 -0
- package/dist/core/FlowContext.cjs +21 -0
- package/dist/core/FlowContext.d.ts +10 -0
- package/dist/core/FlowContext.mjs +13 -0
- package/dist/core/index.cjs +104 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.mjs +9 -0
- package/dist/core/useAlignment.cjs +81 -0
- package/dist/core/useAlignment.d.ts +33 -0
- package/dist/core/useAlignment.mjs +71 -0
- package/dist/core/useEdges.cjs +132 -0
- package/dist/core/useEdges.d.ts +29 -0
- package/dist/core/useEdges.mjs +89 -0
- package/dist/core/useFlow.cjs +40 -0
- package/dist/core/useFlow.d.ts +31 -0
- package/dist/core/useFlow.mjs +32 -0
- package/dist/core/useHistory.cjs +63 -0
- package/dist/core/useHistory.d.ts +15 -0
- package/dist/core/useHistory.mjs +54 -0
- package/dist/core/useKeyboard.cjs +54 -0
- package/dist/core/useKeyboard.d.ts +18 -0
- package/dist/core/useKeyboard.mjs +45 -0
- package/dist/core/useNodeDistribution.cjs +171 -0
- package/dist/core/useNodeDistribution.d.ts +12 -0
- package/dist/core/useNodeDistribution.mjs +145 -0
- package/dist/core/useNodes.cjs +146 -0
- package/dist/core/useNodes.d.ts +26 -0
- package/dist/core/useNodes.mjs +101 -0
- package/dist/core/useSelection.cjs +83 -0
- package/dist/core/useSelection.d.ts +18 -0
- package/dist/core/useSelection.mjs +53 -0
- package/dist/core/useViewport.cjs +157 -0
- package/dist/core/useViewport.d.ts +65 -0
- package/dist/core/useViewport.mjs +125 -0
- package/dist/flow.cjs +240 -0
- package/dist/flow.d.ts +276 -0
- package/dist/flow.mjs +230 -0
- package/dist/index.cjs +378 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.mjs +50 -0
- package/dist/plugins/index.cjs +96 -0
- package/dist/plugins/index.d.ts +34 -0
- package/dist/plugins/index.mjs +47 -0
- package/dist/plugins/plugin.cjs +117 -0
- package/dist/plugins/plugin.d.ts +72 -0
- package/dist/plugins/plugin.mjs +110 -0
- package/dist/plugins/plugins/controls.cjs +38 -0
- package/dist/plugins/plugins/controls.d.ts +12 -0
- package/dist/plugins/plugins/controls.mjs +28 -0
- package/dist/plugins/plugins/export.cjs +102 -0
- package/dist/plugins/plugins/export.d.ts +12 -0
- package/dist/plugins/plugins/export.mjs +89 -0
- package/dist/plugins/plugins/grid.cjs +36 -0
- package/dist/plugins/plugins/grid.d.ts +11 -0
- package/dist/plugins/plugins/grid.mjs +26 -0
- package/dist/plugins/plugins/history.cjs +140 -0
- package/dist/plugins/plugins/history.d.ts +53 -0
- package/dist/plugins/plugins/history.mjs +132 -0
- package/dist/plugins/plugins/index.cjs +104 -0
- package/dist/plugins/plugins/index.d.ts +9 -0
- package/dist/plugins/plugins/index.mjs +9 -0
- package/dist/plugins/plugins/keyboard.cjs +27 -0
- package/dist/plugins/plugins/keyboard.d.ts +10 -0
- package/dist/plugins/plugins/keyboard.mjs +18 -0
- package/dist/plugins/plugins/layout.cjs +275 -0
- package/dist/plugins/plugins/layout.d.ts +34 -0
- package/dist/plugins/plugins/layout.mjs +246 -0
- package/dist/plugins/plugins/minimap.cjs +60 -0
- package/dist/plugins/plugins/minimap.d.ts +25 -0
- package/dist/plugins/plugins/minimap.mjs +50 -0
- package/dist/plugins/plugins/node-group.cjs +209 -0
- package/dist/plugins/plugins/node-group.d.ts +26 -0
- package/dist/plugins/plugins/node-group.mjs +178 -0
- package/dist/plugins/plugins/snap.cjs +36 -0
- package/dist/plugins/plugins/snap.d.ts +12 -0
- package/dist/plugins/plugins/snap.mjs +26 -0
- package/dist/renderer/AlignmentLines.d.vue.ts +5 -0
- package/dist/renderer/AlignmentLines.vue +113 -0
- package/dist/renderer/AlignmentLines.vue.d.ts +5 -0
- package/dist/renderer/Background.d.vue.ts +7 -0
- package/dist/renderer/Background.vue +86 -0
- package/dist/renderer/Background.vue.d.ts +7 -0
- package/dist/renderer/Controls.d.vue.ts +13 -0
- package/dist/renderer/Controls.vue +82 -0
- package/dist/renderer/Controls.vue.d.ts +13 -0
- package/dist/renderer/EdgeHandlesRenderer.d.vue.ts +11 -0
- package/dist/renderer/EdgeHandlesRenderer.vue +75 -0
- package/dist/renderer/EdgeHandlesRenderer.vue.d.ts +11 -0
- package/dist/renderer/EdgeRenderer.d.vue.ts +39 -0
- package/dist/renderer/EdgeRenderer.vue +204 -0
- package/dist/renderer/EdgeRenderer.vue.d.ts +39 -0
- package/dist/renderer/FlowBackground.d.vue.ts +11 -0
- package/dist/renderer/FlowBackground.vue +82 -0
- package/dist/renderer/FlowBackground.vue.d.ts +11 -0
- package/dist/renderer/Minimap.d.vue.ts +30 -0
- package/dist/renderer/Minimap.vue +290 -0
- package/dist/renderer/Minimap.vue.d.ts +30 -0
- package/dist/renderer/NodeRenderer.d.vue.ts +56 -0
- package/dist/renderer/NodeRenderer.vue +328 -0
- package/dist/renderer/NodeRenderer.vue.d.ts +56 -0
- package/dist/renderer/SelectionBox.d.vue.ts +11 -0
- package/dist/renderer/SelectionBox.vue +28 -0
- package/dist/renderer/SelectionBox.vue.d.ts +11 -0
- package/dist/types/edge.cjs +13 -0
- package/dist/types/edge.d.ts +65 -0
- package/dist/types/edge.mjs +6 -0
- package/dist/types/events.cjs +1 -0
- package/dist/types/events.d.ts +115 -0
- package/dist/types/events.mjs +0 -0
- package/dist/types/index.cjs +1 -0
- package/dist/types/index.d.ts +366 -0
- package/dist/types/index.mjs +0 -0
- package/dist/types/node.cjs +9 -0
- package/dist/types/node.d.ts +90 -0
- package/dist/types/node.mjs +3 -0
- package/dist/types/viewport.cjs +42 -0
- package/dist/types/viewport.d.ts +62 -0
- package/dist/types/viewport.mjs +36 -0
- package/dist/utils/bpmn-engine.cjs +390 -0
- package/dist/utils/bpmn-engine.d.ts +164 -0
- package/dist/utils/bpmn-engine.mjs +378 -0
- package/dist/utils/bpmn.cjs +492 -0
- package/dist/utils/bpmn.d.ts +53 -0
- package/dist/utils/bpmn.mjs +430 -0
- package/dist/utils/collaboration.cjs +537 -0
- package/dist/utils/collaboration.d.ts +189 -0
- package/dist/utils/collaboration.mjs +521 -0
- package/dist/utils/custom-types.cjs +138 -0
- package/dist/utils/custom-types.d.ts +78 -0
- package/dist/utils/custom-types.mjs +108 -0
- package/dist/utils/edge.cjs +235 -0
- package/dist/utils/edge.d.ts +79 -0
- package/dist/utils/edge.mjs +172 -0
- package/dist/utils/event-bus.cjs +91 -0
- package/dist/utils/event-bus.d.ts +39 -0
- package/dist/utils/event-bus.mjs +82 -0
- package/dist/utils/geometry.cjs +178 -0
- package/dist/utils/geometry.d.ts +186 -0
- package/dist/utils/geometry.mjs +144 -0
- package/dist/utils/graph.cjs +158 -0
- package/dist/utils/graph.d.ts +40 -0
- package/dist/utils/graph.mjs +147 -0
- package/dist/utils/index.cjs +137 -0
- package/dist/utils/index.d.ts +12 -0
- package/dist/utils/index.mjs +12 -0
- package/dist/utils/performance.cjs +94 -0
- package/dist/utils/performance.d.ts +18 -0
- package/dist/utils/performance.mjs +82 -0
- package/dist/utils/screenshot.cjs +87 -0
- package/dist/utils/screenshot.d.ts +22 -0
- package/dist/utils/screenshot.mjs +66 -0
- package/dist/utils/theme.cjs +228 -0
- package/dist/utils/theme.d.ts +92 -0
- package/dist/utils/theme.mjs +217 -0
- package/dist/utils/transform.cjs +76 -0
- package/dist/utils/transform.d.ts +45 -0
- package/dist/utils/transform.mjs +57 -0
- package/dist/utils/validation.cjs +107 -0
- package/dist/utils/validation.d.ts +29 -0
- package/dist/utils/validation.mjs +85 -0
- package/package.json +61 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { screenToCanvas, canvasToScreen } from "../utils/transform.mjs";
|
|
2
|
+
export function useViewport(initialTransform, options = {}) {
|
|
3
|
+
const { minZoom = 0.1, maxZoom = 5, zoomStep: _zoomStep = 0.1, panZoomSpeed = 1 } = options;
|
|
4
|
+
const transform = initialTransform;
|
|
5
|
+
const setTransform = (newTransform) => {
|
|
6
|
+
transform.value = {
|
|
7
|
+
x: newTransform.x,
|
|
8
|
+
y: newTransform.y,
|
|
9
|
+
zoom: Math.min(Math.max(newTransform.zoom, minZoom), maxZoom)
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
const setViewport = (x, y, zoom) => {
|
|
13
|
+
setTransform({ x, y, zoom });
|
|
14
|
+
};
|
|
15
|
+
const zoomIn = (factor = 1.2) => {
|
|
16
|
+
const newZoom = Math.min(transform.value.zoom * factor, maxZoom);
|
|
17
|
+
transform.value = { ...transform.value, zoom: newZoom };
|
|
18
|
+
};
|
|
19
|
+
const zoomOut = (factor = 1.2) => {
|
|
20
|
+
const newZoom = Math.max(transform.value.zoom / factor, minZoom);
|
|
21
|
+
transform.value = { ...transform.value, zoom: newZoom };
|
|
22
|
+
};
|
|
23
|
+
const zoomTo = (zoom, point) => {
|
|
24
|
+
const boundedZoom = Math.min(Math.max(zoom, minZoom), maxZoom);
|
|
25
|
+
if (!point) {
|
|
26
|
+
transform.value = { ...transform.value, zoom: boundedZoom };
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const canvasPoint = screenToCanvas(point.x, point.y, transform.value);
|
|
30
|
+
const newTransform = {
|
|
31
|
+
...transform.value,
|
|
32
|
+
zoom: boundedZoom
|
|
33
|
+
};
|
|
34
|
+
const screenPoint = canvasToScreen(canvasPoint.x, canvasPoint.y, newTransform);
|
|
35
|
+
const dx = point.x - screenPoint.x;
|
|
36
|
+
const dy = point.y - screenPoint.y;
|
|
37
|
+
transform.value = {
|
|
38
|
+
...newTransform,
|
|
39
|
+
x: newTransform.x + dx,
|
|
40
|
+
y: newTransform.y + dy
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
const pan = (dx, dy) => {
|
|
44
|
+
transform.value = {
|
|
45
|
+
...transform.value,
|
|
46
|
+
x: transform.value.x + dx * panZoomSpeed,
|
|
47
|
+
y: transform.value.y + dy * panZoomSpeed
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
const panTo = (x, y) => {
|
|
51
|
+
transform.value = { ...transform.value, x, y };
|
|
52
|
+
};
|
|
53
|
+
const fitView = (bounds, nodes, options2 = {}) => {
|
|
54
|
+
if (nodes.length === 0) return;
|
|
55
|
+
const padding = options2.padding ?? 50;
|
|
56
|
+
let minX = Infinity;
|
|
57
|
+
let minY = Infinity;
|
|
58
|
+
let maxX = -Infinity;
|
|
59
|
+
let maxY = -Infinity;
|
|
60
|
+
for (const node of nodes) {
|
|
61
|
+
const w = node.width || 200;
|
|
62
|
+
const h = node.height || 50;
|
|
63
|
+
minX = Math.min(minX, node.position.x);
|
|
64
|
+
minY = Math.min(minY, node.position.y);
|
|
65
|
+
maxX = Math.max(maxX, node.position.x + w);
|
|
66
|
+
maxY = Math.max(maxY, node.position.y + h);
|
|
67
|
+
}
|
|
68
|
+
const graphWidth = maxX - minX + padding * 2;
|
|
69
|
+
const graphHeight = maxY - minY + padding * 2;
|
|
70
|
+
const zoomX = bounds.width / graphWidth;
|
|
71
|
+
const zoomY = bounds.height / graphHeight;
|
|
72
|
+
const zoom = Math.min(zoomX, zoomY, 1);
|
|
73
|
+
const x = (bounds.width - graphWidth * zoom) / 2 - minX * zoom + padding * zoom;
|
|
74
|
+
const y = (bounds.height - graphHeight * zoom) / 2 - minY * zoom + padding * zoom;
|
|
75
|
+
setTransform({ x, y, zoom });
|
|
76
|
+
};
|
|
77
|
+
const center = (bounds, nodes, options2 = {}) => {
|
|
78
|
+
if (nodes.length === 0) return;
|
|
79
|
+
const padding = options2.padding ?? 50;
|
|
80
|
+
let centerX = 0;
|
|
81
|
+
let centerY = 0;
|
|
82
|
+
for (const node of nodes) {
|
|
83
|
+
const w = node.width || 200;
|
|
84
|
+
const h = node.height || 50;
|
|
85
|
+
centerX += node.position.x + w / 2;
|
|
86
|
+
centerY += node.position.y + h / 2;
|
|
87
|
+
}
|
|
88
|
+
centerX /= nodes.length;
|
|
89
|
+
centerY /= nodes.length;
|
|
90
|
+
const x = bounds.width / 2 - centerX * transform.value.zoom + padding;
|
|
91
|
+
const y = bounds.height / 2 - centerY * transform.value.zoom + padding;
|
|
92
|
+
panTo(x, y);
|
|
93
|
+
};
|
|
94
|
+
const _screenToCanvas = (screenX, screenY) => {
|
|
95
|
+
return screenToCanvas(screenX, screenY, transform.value);
|
|
96
|
+
};
|
|
97
|
+
const _canvasToScreen = (canvasX, canvasY) => {
|
|
98
|
+
return canvasToScreen(canvasX, canvasY, transform.value);
|
|
99
|
+
};
|
|
100
|
+
const isNodeVisible = (nodeBounds, containerBounds) => {
|
|
101
|
+
const padding = 100;
|
|
102
|
+
const visibleBounds = {
|
|
103
|
+
x: -transform.value.x / transform.value.zoom - padding,
|
|
104
|
+
y: -transform.value.y / transform.value.zoom - padding,
|
|
105
|
+
width: containerBounds.width / transform.value.zoom + padding * 2,
|
|
106
|
+
height: containerBounds.height / transform.value.zoom + padding * 2
|
|
107
|
+
};
|
|
108
|
+
return !(nodeBounds.x + nodeBounds.width < visibleBounds.x || nodeBounds.x > visibleBounds.x + visibleBounds.width || nodeBounds.y + nodeBounds.height < visibleBounds.y || nodeBounds.y > visibleBounds.y + visibleBounds.height);
|
|
109
|
+
};
|
|
110
|
+
return {
|
|
111
|
+
transform,
|
|
112
|
+
setTransform,
|
|
113
|
+
setViewport,
|
|
114
|
+
zoomIn,
|
|
115
|
+
zoomOut,
|
|
116
|
+
zoomTo,
|
|
117
|
+
pan,
|
|
118
|
+
panTo,
|
|
119
|
+
fitView,
|
|
120
|
+
center,
|
|
121
|
+
screenToCanvas: _screenToCanvas,
|
|
122
|
+
canvasToScreen: _canvasToScreen,
|
|
123
|
+
isNodeVisible
|
|
124
|
+
};
|
|
125
|
+
}
|
package/dist/flow.cjs
ADDED
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.flowProps = exports.flowEmits = void 0;
|
|
7
|
+
const flowProps = exports.flowProps = {
|
|
8
|
+
/**
|
|
9
|
+
* @description 节点数据
|
|
10
|
+
*/
|
|
11
|
+
nodes: {
|
|
12
|
+
type: Array,
|
|
13
|
+
default: () => []
|
|
14
|
+
},
|
|
15
|
+
/**
|
|
16
|
+
* @description 连线数据
|
|
17
|
+
*/
|
|
18
|
+
edges: {
|
|
19
|
+
type: Array,
|
|
20
|
+
default: () => []
|
|
21
|
+
},
|
|
22
|
+
/**
|
|
23
|
+
* @description 视口变换 (支持 v-model)
|
|
24
|
+
*/
|
|
25
|
+
modelValue: {
|
|
26
|
+
type: Object,
|
|
27
|
+
default: () => ({
|
|
28
|
+
x: 0,
|
|
29
|
+
y: 0,
|
|
30
|
+
zoom: 1
|
|
31
|
+
})
|
|
32
|
+
},
|
|
33
|
+
/**
|
|
34
|
+
* @description 最小缩放比例
|
|
35
|
+
*/
|
|
36
|
+
minZoom: {
|
|
37
|
+
type: Number,
|
|
38
|
+
default: 0.1
|
|
39
|
+
},
|
|
40
|
+
/**
|
|
41
|
+
* @description 最大缩放比例
|
|
42
|
+
*/
|
|
43
|
+
maxZoom: {
|
|
44
|
+
type: Number,
|
|
45
|
+
default: 5
|
|
46
|
+
},
|
|
47
|
+
/**
|
|
48
|
+
* @description 缩放步长
|
|
49
|
+
*/
|
|
50
|
+
zoomStep: {
|
|
51
|
+
type: Number,
|
|
52
|
+
default: 0.1
|
|
53
|
+
},
|
|
54
|
+
/**
|
|
55
|
+
* @description 平移速度
|
|
56
|
+
*/
|
|
57
|
+
panZoomSpeed: {
|
|
58
|
+
type: Number,
|
|
59
|
+
default: 1
|
|
60
|
+
},
|
|
61
|
+
/**
|
|
62
|
+
* @description 默认节点类型
|
|
63
|
+
*/
|
|
64
|
+
defaultNodeType: {
|
|
65
|
+
type: String,
|
|
66
|
+
default: "default"
|
|
67
|
+
},
|
|
68
|
+
/**
|
|
69
|
+
* @description 默认连线类型
|
|
70
|
+
*/
|
|
71
|
+
defaultEdgeType: {
|
|
72
|
+
type: String,
|
|
73
|
+
default: "bezier"
|
|
74
|
+
},
|
|
75
|
+
/**
|
|
76
|
+
* @description 是否启用拖拽
|
|
77
|
+
*/
|
|
78
|
+
nodesDraggable: {
|
|
79
|
+
type: Boolean,
|
|
80
|
+
default: true
|
|
81
|
+
},
|
|
82
|
+
/**
|
|
83
|
+
* @description 是否启用连线
|
|
84
|
+
*/
|
|
85
|
+
edgesConnectable: {
|
|
86
|
+
type: Boolean,
|
|
87
|
+
default: true
|
|
88
|
+
},
|
|
89
|
+
/**
|
|
90
|
+
* @description 是否启用选择
|
|
91
|
+
*/
|
|
92
|
+
selectable: {
|
|
93
|
+
type: Boolean,
|
|
94
|
+
default: true
|
|
95
|
+
},
|
|
96
|
+
/**
|
|
97
|
+
* @description 是否支持多选
|
|
98
|
+
*/
|
|
99
|
+
multiSelectKey: {
|
|
100
|
+
type: String,
|
|
101
|
+
default: "Shift"
|
|
102
|
+
},
|
|
103
|
+
/**
|
|
104
|
+
* @description 背景类型
|
|
105
|
+
*/
|
|
106
|
+
background: {
|
|
107
|
+
type: String,
|
|
108
|
+
default: "dots"
|
|
109
|
+
},
|
|
110
|
+
/**
|
|
111
|
+
* @description 背景颜色
|
|
112
|
+
*/
|
|
113
|
+
backgroundColor: {
|
|
114
|
+
type: String,
|
|
115
|
+
default: "#f8f9fa"
|
|
116
|
+
},
|
|
117
|
+
/**
|
|
118
|
+
* @description 网格大小
|
|
119
|
+
*/
|
|
120
|
+
gridSize: {
|
|
121
|
+
type: Number,
|
|
122
|
+
default: 20
|
|
123
|
+
},
|
|
124
|
+
/**
|
|
125
|
+
* @description 是否吸附到网格
|
|
126
|
+
*/
|
|
127
|
+
snapToGrid: {
|
|
128
|
+
type: Boolean,
|
|
129
|
+
default: false
|
|
130
|
+
},
|
|
131
|
+
/**
|
|
132
|
+
* @description 吸附间距
|
|
133
|
+
*/
|
|
134
|
+
snapGrid: {
|
|
135
|
+
type: Array,
|
|
136
|
+
default: () => [15, 15]
|
|
137
|
+
},
|
|
138
|
+
/**
|
|
139
|
+
* @description 是否只读
|
|
140
|
+
*/
|
|
141
|
+
readonly: {
|
|
142
|
+
type: Boolean,
|
|
143
|
+
default: false
|
|
144
|
+
},
|
|
145
|
+
/**
|
|
146
|
+
* @description 是否启用键盘快捷键
|
|
147
|
+
*/
|
|
148
|
+
keyboardShortcuts: {
|
|
149
|
+
type: Boolean,
|
|
150
|
+
default: true
|
|
151
|
+
},
|
|
152
|
+
/**
|
|
153
|
+
* @description 是否显示控制栏
|
|
154
|
+
*/
|
|
155
|
+
showControls: {
|
|
156
|
+
type: Boolean,
|
|
157
|
+
default: true
|
|
158
|
+
},
|
|
159
|
+
/**
|
|
160
|
+
* @description 是否显示小地图
|
|
161
|
+
*/
|
|
162
|
+
showMinimap: {
|
|
163
|
+
type: Boolean,
|
|
164
|
+
default: false
|
|
165
|
+
},
|
|
166
|
+
/**
|
|
167
|
+
* @description 小地图颜色
|
|
168
|
+
*/
|
|
169
|
+
minimapNodeColor: {
|
|
170
|
+
type: String,
|
|
171
|
+
default: "#b1b1b7"
|
|
172
|
+
},
|
|
173
|
+
/**
|
|
174
|
+
* @description 是否显示对齐线
|
|
175
|
+
*/
|
|
176
|
+
showAlignmentGuides: {
|
|
177
|
+
type: Boolean,
|
|
178
|
+
default: true
|
|
179
|
+
},
|
|
180
|
+
/**
|
|
181
|
+
* @description 是否启用撤销/重做
|
|
182
|
+
*/
|
|
183
|
+
history: {
|
|
184
|
+
type: Boolean,
|
|
185
|
+
default: true
|
|
186
|
+
},
|
|
187
|
+
/**
|
|
188
|
+
* @description 最大历史记录数
|
|
189
|
+
*/
|
|
190
|
+
maxHistory: {
|
|
191
|
+
type: Number,
|
|
192
|
+
default: 50
|
|
193
|
+
},
|
|
194
|
+
/**
|
|
195
|
+
* @description 是否启用虚拟滚动
|
|
196
|
+
*/
|
|
197
|
+
virtualized: {
|
|
198
|
+
type: Boolean,
|
|
199
|
+
default: false
|
|
200
|
+
},
|
|
201
|
+
/**
|
|
202
|
+
* @description 虚拟滚动缓冲区
|
|
203
|
+
*/
|
|
204
|
+
virtualizationThreshold: {
|
|
205
|
+
type: Number,
|
|
206
|
+
default: 100
|
|
207
|
+
},
|
|
208
|
+
/**
|
|
209
|
+
* @description 连接校验函数
|
|
210
|
+
*/
|
|
211
|
+
isValidConnection: {
|
|
212
|
+
type: Function,
|
|
213
|
+
default: null
|
|
214
|
+
},
|
|
215
|
+
/**
|
|
216
|
+
* @description 主题覆盖变量
|
|
217
|
+
*/
|
|
218
|
+
themeOverrides: {
|
|
219
|
+
type: Object,
|
|
220
|
+
default: void 0
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
const flowEmits = exports.flowEmits = {
|
|
224
|
+
"update:modelValue": transform => typeof transform.x === "number" && typeof transform.y === "number" && typeof transform.zoom === "number",
|
|
225
|
+
"update:nodes": nodes => Array.isArray(nodes),
|
|
226
|
+
"update:edges": edges => Array.isArray(edges),
|
|
227
|
+
nodeClick: event => !!event,
|
|
228
|
+
nodeDblClick: event => !!event,
|
|
229
|
+
nodeDragStart: event => !!event,
|
|
230
|
+
nodeDrag: event => !!event,
|
|
231
|
+
nodeDragEnd: event => !!event,
|
|
232
|
+
nodeContextMenu: event => !!event,
|
|
233
|
+
edgeClick: event => !!event,
|
|
234
|
+
edgeDblClick: event => !!event,
|
|
235
|
+
edgeContextMenu: event => !!event,
|
|
236
|
+
edgeConnect: _connection => true,
|
|
237
|
+
selectionChange: event => !!event,
|
|
238
|
+
historyChange: event => !!event,
|
|
239
|
+
viewportChange: transform => !!transform
|
|
240
|
+
};
|
package/dist/flow.d.ts
ADDED
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
import type { ExtractPropTypes, PropType } from 'vue';
|
|
2
|
+
import type { Node, Edge, ViewportTransform, ValidConnectionFunc } from './types';
|
|
3
|
+
export declare const flowProps: {
|
|
4
|
+
/**
|
|
5
|
+
* @description 节点数据
|
|
6
|
+
*/
|
|
7
|
+
readonly nodes: {
|
|
8
|
+
readonly type: PropType<Node[]>;
|
|
9
|
+
readonly default: () => never[];
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* @description 连线数据
|
|
13
|
+
*/
|
|
14
|
+
readonly edges: {
|
|
15
|
+
readonly type: PropType<Edge[]>;
|
|
16
|
+
readonly default: () => never[];
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* @description 视口变换 (支持 v-model)
|
|
20
|
+
*/
|
|
21
|
+
readonly modelValue: {
|
|
22
|
+
readonly type: PropType<ViewportTransform>;
|
|
23
|
+
readonly default: () => {
|
|
24
|
+
x: number;
|
|
25
|
+
y: number;
|
|
26
|
+
zoom: number;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* @description 最小缩放比例
|
|
31
|
+
*/
|
|
32
|
+
readonly minZoom: {
|
|
33
|
+
readonly type: NumberConstructor;
|
|
34
|
+
readonly default: 0.1;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* @description 最大缩放比例
|
|
38
|
+
*/
|
|
39
|
+
readonly maxZoom: {
|
|
40
|
+
readonly type: NumberConstructor;
|
|
41
|
+
readonly default: 5;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* @description 缩放步长
|
|
45
|
+
*/
|
|
46
|
+
readonly zoomStep: {
|
|
47
|
+
readonly type: NumberConstructor;
|
|
48
|
+
readonly default: 0.1;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* @description 平移速度
|
|
52
|
+
*/
|
|
53
|
+
readonly panZoomSpeed: {
|
|
54
|
+
readonly type: NumberConstructor;
|
|
55
|
+
readonly default: 1;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* @description 默认节点类型
|
|
59
|
+
*/
|
|
60
|
+
readonly defaultNodeType: {
|
|
61
|
+
readonly type: StringConstructor;
|
|
62
|
+
readonly default: "default";
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* @description 默认连线类型
|
|
66
|
+
*/
|
|
67
|
+
readonly defaultEdgeType: {
|
|
68
|
+
readonly type: StringConstructor;
|
|
69
|
+
readonly default: "bezier";
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* @description 是否启用拖拽
|
|
73
|
+
*/
|
|
74
|
+
readonly nodesDraggable: {
|
|
75
|
+
readonly type: BooleanConstructor;
|
|
76
|
+
readonly default: true;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* @description 是否启用连线
|
|
80
|
+
*/
|
|
81
|
+
readonly edgesConnectable: {
|
|
82
|
+
readonly type: BooleanConstructor;
|
|
83
|
+
readonly default: true;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* @description 是否启用选择
|
|
87
|
+
*/
|
|
88
|
+
readonly selectable: {
|
|
89
|
+
readonly type: BooleanConstructor;
|
|
90
|
+
readonly default: true;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* @description 是否支持多选
|
|
94
|
+
*/
|
|
95
|
+
readonly multiSelectKey: {
|
|
96
|
+
readonly type: StringConstructor;
|
|
97
|
+
readonly default: "Shift";
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* @description 背景类型
|
|
101
|
+
*/
|
|
102
|
+
readonly background: {
|
|
103
|
+
readonly type: PropType<"none" | "dots" | "grid">;
|
|
104
|
+
readonly default: "dots";
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* @description 背景颜色
|
|
108
|
+
*/
|
|
109
|
+
readonly backgroundColor: {
|
|
110
|
+
readonly type: StringConstructor;
|
|
111
|
+
readonly default: "#f8f9fa";
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* @description 网格大小
|
|
115
|
+
*/
|
|
116
|
+
readonly gridSize: {
|
|
117
|
+
readonly type: NumberConstructor;
|
|
118
|
+
readonly default: 20;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* @description 是否吸附到网格
|
|
122
|
+
*/
|
|
123
|
+
readonly snapToGrid: {
|
|
124
|
+
readonly type: BooleanConstructor;
|
|
125
|
+
readonly default: false;
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* @description 吸附间距
|
|
129
|
+
*/
|
|
130
|
+
readonly snapGrid: {
|
|
131
|
+
readonly type: PropType<[number, number]>;
|
|
132
|
+
readonly default: () => number[];
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* @description 是否只读
|
|
136
|
+
*/
|
|
137
|
+
readonly readonly: {
|
|
138
|
+
readonly type: BooleanConstructor;
|
|
139
|
+
readonly default: false;
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* @description 是否启用键盘快捷键
|
|
143
|
+
*/
|
|
144
|
+
readonly keyboardShortcuts: {
|
|
145
|
+
readonly type: BooleanConstructor;
|
|
146
|
+
readonly default: true;
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* @description 是否显示控制栏
|
|
150
|
+
*/
|
|
151
|
+
readonly showControls: {
|
|
152
|
+
readonly type: BooleanConstructor;
|
|
153
|
+
readonly default: true;
|
|
154
|
+
};
|
|
155
|
+
/**
|
|
156
|
+
* @description 是否显示小地图
|
|
157
|
+
*/
|
|
158
|
+
readonly showMinimap: {
|
|
159
|
+
readonly type: BooleanConstructor;
|
|
160
|
+
readonly default: false;
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* @description 小地图颜色
|
|
164
|
+
*/
|
|
165
|
+
readonly minimapNodeColor: {
|
|
166
|
+
readonly type: StringConstructor;
|
|
167
|
+
readonly default: "#b1b1b7";
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* @description 是否显示对齐线
|
|
171
|
+
*/
|
|
172
|
+
readonly showAlignmentGuides: {
|
|
173
|
+
readonly type: BooleanConstructor;
|
|
174
|
+
readonly default: true;
|
|
175
|
+
};
|
|
176
|
+
/**
|
|
177
|
+
* @description 是否启用撤销/重做
|
|
178
|
+
*/
|
|
179
|
+
readonly history: {
|
|
180
|
+
readonly type: BooleanConstructor;
|
|
181
|
+
readonly default: true;
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* @description 最大历史记录数
|
|
185
|
+
*/
|
|
186
|
+
readonly maxHistory: {
|
|
187
|
+
readonly type: NumberConstructor;
|
|
188
|
+
readonly default: 50;
|
|
189
|
+
};
|
|
190
|
+
/**
|
|
191
|
+
* @description 是否启用虚拟滚动
|
|
192
|
+
*/
|
|
193
|
+
readonly virtualized: {
|
|
194
|
+
readonly type: BooleanConstructor;
|
|
195
|
+
readonly default: false;
|
|
196
|
+
};
|
|
197
|
+
/**
|
|
198
|
+
* @description 虚拟滚动缓冲区
|
|
199
|
+
*/
|
|
200
|
+
readonly virtualizationThreshold: {
|
|
201
|
+
readonly type: NumberConstructor;
|
|
202
|
+
readonly default: 100;
|
|
203
|
+
};
|
|
204
|
+
/**
|
|
205
|
+
* @description 连接校验函数
|
|
206
|
+
*/
|
|
207
|
+
readonly isValidConnection: {
|
|
208
|
+
readonly type: PropType<ValidConnectionFunc>;
|
|
209
|
+
readonly default: null;
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* @description 主题覆盖变量
|
|
213
|
+
*/
|
|
214
|
+
readonly themeOverrides: {
|
|
215
|
+
readonly type: PropType<Record<string, unknown>>;
|
|
216
|
+
readonly default: undefined;
|
|
217
|
+
};
|
|
218
|
+
};
|
|
219
|
+
export type FlowProps = ExtractPropTypes<typeof flowProps>;
|
|
220
|
+
export declare const flowEmits: {
|
|
221
|
+
'update:modelValue': (transform: ViewportTransform) => boolean;
|
|
222
|
+
'update:nodes': (nodes: Node[]) => boolean;
|
|
223
|
+
'update:edges': (edges: Edge[]) => boolean;
|
|
224
|
+
nodeClick: (event: {
|
|
225
|
+
node: Node;
|
|
226
|
+
nativeEvent: MouseEvent;
|
|
227
|
+
}) => boolean;
|
|
228
|
+
nodeDblClick: (event: {
|
|
229
|
+
node: Node;
|
|
230
|
+
nativeEvent: MouseEvent;
|
|
231
|
+
}) => boolean;
|
|
232
|
+
nodeDragStart: (event: {
|
|
233
|
+
node: Node;
|
|
234
|
+
nativeEvent: MouseEvent;
|
|
235
|
+
}) => boolean;
|
|
236
|
+
nodeDrag: (event: {
|
|
237
|
+
node: Node;
|
|
238
|
+
nativeEvent: MouseEvent;
|
|
239
|
+
}) => boolean;
|
|
240
|
+
nodeDragEnd: (event: {
|
|
241
|
+
node: Node;
|
|
242
|
+
nativeEvent: MouseEvent;
|
|
243
|
+
}) => boolean;
|
|
244
|
+
nodeContextMenu: (event: {
|
|
245
|
+
node: Node;
|
|
246
|
+
nativeEvent: MouseEvent;
|
|
247
|
+
}) => boolean;
|
|
248
|
+
edgeClick: (event: {
|
|
249
|
+
edge: Edge;
|
|
250
|
+
nativeEvent: MouseEvent;
|
|
251
|
+
}) => boolean;
|
|
252
|
+
edgeDblClick: (event: {
|
|
253
|
+
edge: Edge;
|
|
254
|
+
nativeEvent: MouseEvent;
|
|
255
|
+
}) => boolean;
|
|
256
|
+
edgeContextMenu: (event: {
|
|
257
|
+
edge: Edge;
|
|
258
|
+
nativeEvent: MouseEvent;
|
|
259
|
+
}) => boolean;
|
|
260
|
+
edgeConnect: (_connection: {
|
|
261
|
+
source: string;
|
|
262
|
+
target: string;
|
|
263
|
+
sourceHandle?: string;
|
|
264
|
+
targetHandle?: string;
|
|
265
|
+
}) => boolean;
|
|
266
|
+
selectionChange: (event: {
|
|
267
|
+
selectedNodes: Node[];
|
|
268
|
+
selectedEdges: Edge[];
|
|
269
|
+
}) => boolean;
|
|
270
|
+
historyChange: (event: {
|
|
271
|
+
canUndo: boolean;
|
|
272
|
+
canRedo: boolean;
|
|
273
|
+
}) => boolean;
|
|
274
|
+
viewportChange: (transform: ViewportTransform) => boolean;
|
|
275
|
+
};
|
|
276
|
+
export type FlowEmits = typeof flowEmits;
|