@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,36 @@
|
|
|
1
|
+
import type { Node, NodeStyle } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
data: Node['data'];
|
|
6
|
+
selected: boolean;
|
|
7
|
+
dragging: boolean;
|
|
8
|
+
connectable: boolean;
|
|
9
|
+
style?: NodeStyle;
|
|
10
|
+
label?: string;
|
|
11
|
+
}
|
|
12
|
+
declare var __VLS_1: {
|
|
13
|
+
node: {
|
|
14
|
+
id: any;
|
|
15
|
+
type: any;
|
|
16
|
+
data: any;
|
|
17
|
+
selected: any;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
type __VLS_Slots = {} & {
|
|
21
|
+
default?: (props: typeof __VLS_1) => any;
|
|
22
|
+
};
|
|
23
|
+
declare const __VLS_component: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
24
|
+
label: string;
|
|
25
|
+
style: NodeStyle;
|
|
26
|
+
connectable: boolean;
|
|
27
|
+
selected: boolean;
|
|
28
|
+
dragging: boolean;
|
|
29
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
30
|
+
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
31
|
+
export default _default;
|
|
32
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
33
|
+
new (): {
|
|
34
|
+
$slots: S;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { computed } from "vue";
|
|
3
|
+
const props = defineProps({
|
|
4
|
+
id: { type: String, required: true },
|
|
5
|
+
type: { type: String, required: true },
|
|
6
|
+
data: { type: null, required: true },
|
|
7
|
+
selected: { type: Boolean, required: true, default: false },
|
|
8
|
+
dragging: { type: Boolean, required: true, default: false },
|
|
9
|
+
connectable: { type: Boolean, required: true, default: true },
|
|
10
|
+
style: { type: Object, required: false, default: () => ({}) },
|
|
11
|
+
label: { type: String, required: false, default: "" }
|
|
12
|
+
});
|
|
13
|
+
const nodeStyle = computed(() => {
|
|
14
|
+
const base = {
|
|
15
|
+
padding: "12px",
|
|
16
|
+
borderRadius: "8px",
|
|
17
|
+
border: "1px solid #dcdfe6",
|
|
18
|
+
backgroundColor: "#ffffff",
|
|
19
|
+
minWidth: "120px",
|
|
20
|
+
transition: "all 0.2s"
|
|
21
|
+
};
|
|
22
|
+
if (props.selected) {
|
|
23
|
+
base.border = "2px solid #409eff";
|
|
24
|
+
base.boxShadow = "0 0 8px rgba(64, 158, 255, 0.4)";
|
|
25
|
+
}
|
|
26
|
+
if (props.dragging) {
|
|
27
|
+
base.opacity = "0.8";
|
|
28
|
+
}
|
|
29
|
+
return { ...base, ...props.style };
|
|
30
|
+
});
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<template>
|
|
34
|
+
<div :class="['flow-custom-node', {
|
|
35
|
+
selected,
|
|
36
|
+
dragging
|
|
37
|
+
}]" :style="nodeStyle">
|
|
38
|
+
<slot :node="{ id, type, data, selected }" />
|
|
39
|
+
</div>
|
|
40
|
+
</template>
|
|
41
|
+
|
|
42
|
+
<style scoped>
|
|
43
|
+
.flow-custom-node{cursor:pointer;display:inline-block;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.flow-custom-node.selected{z-index:10}.flow-custom-node.dragging{cursor:grabbing;z-index:100}
|
|
44
|
+
</style>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Node, NodeStyle } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
data: Node['data'];
|
|
6
|
+
selected: boolean;
|
|
7
|
+
dragging: boolean;
|
|
8
|
+
connectable: boolean;
|
|
9
|
+
style?: NodeStyle;
|
|
10
|
+
label?: string;
|
|
11
|
+
}
|
|
12
|
+
declare var __VLS_1: {
|
|
13
|
+
node: {
|
|
14
|
+
id: any;
|
|
15
|
+
type: any;
|
|
16
|
+
data: any;
|
|
17
|
+
selected: any;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
type __VLS_Slots = {} & {
|
|
21
|
+
default?: (props: typeof __VLS_1) => any;
|
|
22
|
+
};
|
|
23
|
+
declare const __VLS_component: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
24
|
+
label: string;
|
|
25
|
+
style: NodeStyle;
|
|
26
|
+
connectable: boolean;
|
|
27
|
+
selected: boolean;
|
|
28
|
+
dragging: boolean;
|
|
29
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
30
|
+
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
31
|
+
export default _default;
|
|
32
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
33
|
+
new (): {
|
|
34
|
+
$slots: S;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Node, NodeStyle } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
data: Node['data'];
|
|
6
|
+
selected?: boolean;
|
|
7
|
+
dragging?: boolean;
|
|
8
|
+
connectable?: boolean;
|
|
9
|
+
style?: NodeStyle;
|
|
10
|
+
label?: string;
|
|
11
|
+
}
|
|
12
|
+
declare const _default: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
13
|
+
label: string;
|
|
14
|
+
style: NodeStyle;
|
|
15
|
+
connectable: boolean;
|
|
16
|
+
selected: boolean;
|
|
17
|
+
dragging: boolean;
|
|
18
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
19
|
+
export default _default;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { computed } from "vue";
|
|
3
|
+
const props = defineProps({
|
|
4
|
+
id: { type: String, required: true },
|
|
5
|
+
type: { type: String, required: true },
|
|
6
|
+
data: { type: null, required: true },
|
|
7
|
+
selected: { type: Boolean, required: false, default: false },
|
|
8
|
+
dragging: { type: Boolean, required: false, default: false },
|
|
9
|
+
connectable: { type: Boolean, required: false, default: true },
|
|
10
|
+
style: { type: Object, required: false, default: () => ({}) },
|
|
11
|
+
label: { type: String, required: false, default: "" }
|
|
12
|
+
});
|
|
13
|
+
const nodeStyle = computed(() => {
|
|
14
|
+
return { ...props.style };
|
|
15
|
+
});
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<template>
|
|
19
|
+
<div :class="['flow-database-node', {
|
|
20
|
+
selected,
|
|
21
|
+
dragging
|
|
22
|
+
}]" :style="nodeStyle">
|
|
23
|
+
<div class="yh-flow-node-database__content" :style="data?.style">
|
|
24
|
+
<div class="yh-flow-node-database__top"></div>
|
|
25
|
+
<div class="yh-flow-node-database__body">
|
|
26
|
+
<span class="yh-flow-node-database__label">{{ label || data?.label }}</span>
|
|
27
|
+
</div>
|
|
28
|
+
<!-- Handles -->
|
|
29
|
+
<div
|
|
30
|
+
v-if="connectable"
|
|
31
|
+
class="flow-handle position-top"
|
|
32
|
+
data-handle-type="target"
|
|
33
|
+
data-handle-position="top"
|
|
34
|
+
>
|
|
35
|
+
</div>
|
|
36
|
+
<div
|
|
37
|
+
v-if="connectable"
|
|
38
|
+
class="flow-handle position-bottom"
|
|
39
|
+
data-handle-type="source"
|
|
40
|
+
data-handle-position="bottom"
|
|
41
|
+
></div>
|
|
42
|
+
<div
|
|
43
|
+
v-if="connectable"
|
|
44
|
+
class="flow-handle position-left"
|
|
45
|
+
data-handle-type="target"
|
|
46
|
+
data-handle-position="left"
|
|
47
|
+
>
|
|
48
|
+
</div>
|
|
49
|
+
<div
|
|
50
|
+
v-if="connectable"
|
|
51
|
+
class="flow-handle position-right"
|
|
52
|
+
data-handle-type="source"
|
|
53
|
+
data-handle-position="right"
|
|
54
|
+
>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</template>
|
|
59
|
+
|
|
60
|
+
<style scoped>
|
|
61
|
+
.flow-database-node{cursor:pointer;display:inline-block;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.flow-database-node.dragging{cursor:grabbing}.yh-flow-node-database__content{height:80px;position:relative;width:120px}.yh-flow-node-database__top{background:#fff;border:1px solid #1a192b;border-radius:50%;height:24px;left:0;position:absolute;top:0;width:100%;z-index:2}.yh-flow-node-database__body{align-items:center;background:#fff;border:1px solid #1a192b;border-bottom-left-radius:50% 12px;border-bottom-right-radius:50% 12px;border-top:none;box-shadow:0 4px 6px -1px rgba(0,0,0,.1);display:flex;height:calc(100% - 12px);justify-content:center;left:0;position:absolute;top:12px;width:100%;z-index:1}.yh-flow-node-database__label{color:#222;font-size:12px;margin-top:10px;padding:0 10px;text-align:center}.flow-handle{background:#fff;border:1px solid #1a192b;border-radius:50%;height:10px;position:absolute;width:10px;z-index:20}.flow-handle.position-top{left:50%;top:0;transform:translate(-50%,-50%)}.flow-handle.position-bottom{bottom:0;left:50%;transform:translate(-50%,50%)}.flow-handle.position-left{left:0;top:50%;transform:translate(-50%,-50%)}.flow-handle.position-right{right:0;top:50%;transform:translate(50%,-50%)}
|
|
62
|
+
</style>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Node, NodeStyle } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
data: Node['data'];
|
|
6
|
+
selected?: boolean;
|
|
7
|
+
dragging?: boolean;
|
|
8
|
+
connectable?: boolean;
|
|
9
|
+
style?: NodeStyle;
|
|
10
|
+
label?: string;
|
|
11
|
+
}
|
|
12
|
+
declare const _default: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
13
|
+
label: string;
|
|
14
|
+
style: NodeStyle;
|
|
15
|
+
connectable: boolean;
|
|
16
|
+
selected: boolean;
|
|
17
|
+
dragging: boolean;
|
|
18
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
19
|
+
export default _default;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Node, NodeStyle } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
data: Node['data'];
|
|
6
|
+
selected?: boolean;
|
|
7
|
+
dragging?: boolean;
|
|
8
|
+
connectable?: boolean;
|
|
9
|
+
style?: NodeStyle;
|
|
10
|
+
label?: string;
|
|
11
|
+
}
|
|
12
|
+
declare const _default: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
13
|
+
label: string;
|
|
14
|
+
style: NodeStyle;
|
|
15
|
+
connectable: boolean;
|
|
16
|
+
selected: boolean;
|
|
17
|
+
dragging: boolean;
|
|
18
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
19
|
+
export default _default;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { computed } from "vue";
|
|
3
|
+
const props = defineProps({
|
|
4
|
+
id: { type: String, required: true },
|
|
5
|
+
type: { type: String, required: true },
|
|
6
|
+
data: { type: null, required: true },
|
|
7
|
+
selected: { type: Boolean, required: false, default: false },
|
|
8
|
+
dragging: { type: Boolean, required: false, default: false },
|
|
9
|
+
connectable: { type: Boolean, required: false, default: true },
|
|
10
|
+
style: { type: Object, required: false, default: () => ({}) },
|
|
11
|
+
label: { type: String, required: false, default: "" }
|
|
12
|
+
});
|
|
13
|
+
const nodeStyle = computed(() => {
|
|
14
|
+
return { ...props.style };
|
|
15
|
+
});
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<template>
|
|
19
|
+
<div :class="['flow-diamond-node', {
|
|
20
|
+
selected,
|
|
21
|
+
dragging
|
|
22
|
+
}]" :style="nodeStyle">
|
|
23
|
+
<!-- Decision Node (Diamond shape using CSS transform) -->
|
|
24
|
+
<div class="yh-flow-node-diamond__content">
|
|
25
|
+
<div class="yh-flow-node-diamond__shape" :style="data?.style">
|
|
26
|
+
<span class="yh-flow-node-diamond__label">{{ label || data?.label }}</span>
|
|
27
|
+
</div>
|
|
28
|
+
<!-- Handles -->
|
|
29
|
+
<div
|
|
30
|
+
v-if="connectable"
|
|
31
|
+
class="flow-handle position-top"
|
|
32
|
+
data-handle-type="target"
|
|
33
|
+
data-handle-position="top"
|
|
34
|
+
>
|
|
35
|
+
</div>
|
|
36
|
+
<div
|
|
37
|
+
v-if="connectable"
|
|
38
|
+
class="flow-handle position-bottom"
|
|
39
|
+
data-handle-type="source"
|
|
40
|
+
data-handle-position="bottom"
|
|
41
|
+
></div>
|
|
42
|
+
<div
|
|
43
|
+
v-if="connectable"
|
|
44
|
+
class="flow-handle position-left"
|
|
45
|
+
data-handle-type="source"
|
|
46
|
+
data-handle-position="left"
|
|
47
|
+
>
|
|
48
|
+
</div>
|
|
49
|
+
<div
|
|
50
|
+
v-if="connectable"
|
|
51
|
+
class="flow-handle position-right"
|
|
52
|
+
data-handle-type="source"
|
|
53
|
+
data-handle-position="right"
|
|
54
|
+
>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</template>
|
|
59
|
+
|
|
60
|
+
<style scoped>
|
|
61
|
+
.flow-diamond-node{cursor:pointer;display:inline-block;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.flow-diamond-node.dragging{cursor:grabbing}.yh-flow-node-diamond__content{align-items:center;display:flex;height:100px;justify-content:center;position:relative;width:100px}.yh-flow-node-diamond__shape{background:#fff;border:1px solid #1a192b;border-radius:4px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1);height:100%;left:0;position:absolute;top:0;transform:rotate(45deg);width:100%}.yh-flow-node-diamond__label{color:#222;font-size:12px;max-width:70px;position:relative;text-align:center;transform:rotate(0deg);z-index:10}.flow-handle{background:#fff;border:1px solid #1a192b;border-radius:50%;height:10px;position:absolute;width:10px;z-index:20}.flow-handle.position-top{left:50%;top:0;transform:translate(-50%,-50%)}.flow-handle.position-bottom{bottom:0;left:50%;transform:translate(-50%,50%)}.flow-handle.position-left{left:0;top:50%;transform:translate(-50%,-50%)}.flow-handle.position-right{right:0;top:50%;transform:translate(50%,-50%)}
|
|
62
|
+
</style>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Node, NodeStyle } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
data: Node['data'];
|
|
6
|
+
selected?: boolean;
|
|
7
|
+
dragging?: boolean;
|
|
8
|
+
connectable?: boolean;
|
|
9
|
+
style?: NodeStyle;
|
|
10
|
+
label?: string;
|
|
11
|
+
}
|
|
12
|
+
declare const _default: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
13
|
+
label: string;
|
|
14
|
+
style: NodeStyle;
|
|
15
|
+
connectable: boolean;
|
|
16
|
+
selected: boolean;
|
|
17
|
+
dragging: boolean;
|
|
18
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
19
|
+
export default _default;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Node, NodeStyle } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
data: Node['data'];
|
|
6
|
+
selected: boolean;
|
|
7
|
+
dragging: boolean;
|
|
8
|
+
connectable: boolean;
|
|
9
|
+
style?: NodeStyle;
|
|
10
|
+
label?: string;
|
|
11
|
+
expanded?: boolean;
|
|
12
|
+
}
|
|
13
|
+
declare var __VLS_1: {};
|
|
14
|
+
type __VLS_Slots = {} & {
|
|
15
|
+
default?: (props: typeof __VLS_1) => any;
|
|
16
|
+
};
|
|
17
|
+
declare const __VLS_component: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
18
|
+
label: string;
|
|
19
|
+
style: NodeStyle;
|
|
20
|
+
connectable: boolean;
|
|
21
|
+
selected: boolean;
|
|
22
|
+
dragging: boolean;
|
|
23
|
+
expanded: boolean;
|
|
24
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
25
|
+
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
26
|
+
export default _default;
|
|
27
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
28
|
+
new (): {
|
|
29
|
+
$slots: S;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { computed } from "vue";
|
|
3
|
+
const props = defineProps({
|
|
4
|
+
id: { type: String, required: true },
|
|
5
|
+
type: { type: String, required: true },
|
|
6
|
+
data: { type: null, required: true },
|
|
7
|
+
selected: { type: Boolean, required: true, default: false },
|
|
8
|
+
dragging: { type: Boolean, required: true, default: false },
|
|
9
|
+
connectable: { type: Boolean, required: true, default: false },
|
|
10
|
+
style: { type: Object, required: false, default: () => ({}) },
|
|
11
|
+
label: { type: String, required: false, default: "" },
|
|
12
|
+
expanded: { type: Boolean, required: false, default: true }
|
|
13
|
+
});
|
|
14
|
+
const nodeStyle = computed(() => {
|
|
15
|
+
const base = {
|
|
16
|
+
padding: "15px",
|
|
17
|
+
borderRadius: "8px",
|
|
18
|
+
border: "2px dashed #909399",
|
|
19
|
+
backgroundColor: "#f5f7fa",
|
|
20
|
+
minWidth: "200px",
|
|
21
|
+
minHeight: "150px",
|
|
22
|
+
transition: "all 0.2s"
|
|
23
|
+
};
|
|
24
|
+
if (props.selected) {
|
|
25
|
+
base.border = "2px solid #409eff";
|
|
26
|
+
}
|
|
27
|
+
return { ...base, ...props.style };
|
|
28
|
+
});
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
<template>
|
|
32
|
+
<div :class="['flow-group-node', {
|
|
33
|
+
selected,
|
|
34
|
+
dragging,
|
|
35
|
+
expanded
|
|
36
|
+
}]" :style="nodeStyle">
|
|
37
|
+
<div class="flow-group-header">
|
|
38
|
+
<span class="flow-group-label">{{ label || data?.label || 'Group' }}</span>
|
|
39
|
+
</div>
|
|
40
|
+
<div class="flow-group-content">
|
|
41
|
+
<slot />
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</template>
|
|
45
|
+
|
|
46
|
+
<style scoped>
|
|
47
|
+
.flow-group-node{cursor:pointer;display:flex;flex-direction:column;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.flow-group-node.dragging{cursor:grabbing}.flow-group-header{border-bottom:1px solid #dcdfe6;margin-bottom:10px;padding-bottom:10px}.flow-group-label{color:#909399;font-size:12px;font-weight:600;text-transform:uppercase}.flow-group-content{flex:1;min-height:100px}
|
|
48
|
+
</style>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Node, NodeStyle } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
data: Node['data'];
|
|
6
|
+
selected: boolean;
|
|
7
|
+
dragging: boolean;
|
|
8
|
+
connectable: boolean;
|
|
9
|
+
style?: NodeStyle;
|
|
10
|
+
label?: string;
|
|
11
|
+
expanded?: boolean;
|
|
12
|
+
}
|
|
13
|
+
declare var __VLS_1: {};
|
|
14
|
+
type __VLS_Slots = {} & {
|
|
15
|
+
default?: (props: typeof __VLS_1) => any;
|
|
16
|
+
};
|
|
17
|
+
declare const __VLS_component: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
18
|
+
label: string;
|
|
19
|
+
style: NodeStyle;
|
|
20
|
+
connectable: boolean;
|
|
21
|
+
selected: boolean;
|
|
22
|
+
dragging: boolean;
|
|
23
|
+
expanded: boolean;
|
|
24
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
25
|
+
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
26
|
+
export default _default;
|
|
27
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
28
|
+
new (): {
|
|
29
|
+
$slots: S;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Node, NodeStyle } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
data: Node['data'];
|
|
6
|
+
selected: boolean;
|
|
7
|
+
dragging: boolean;
|
|
8
|
+
connectable: boolean;
|
|
9
|
+
style?: NodeStyle;
|
|
10
|
+
label?: string;
|
|
11
|
+
labelColor?: string;
|
|
12
|
+
descriptionColor?: string;
|
|
13
|
+
}
|
|
14
|
+
declare const _default: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
15
|
+
label: string;
|
|
16
|
+
style: NodeStyle;
|
|
17
|
+
connectable: boolean;
|
|
18
|
+
selected: boolean;
|
|
19
|
+
dragging: boolean;
|
|
20
|
+
labelColor: string;
|
|
21
|
+
descriptionColor: string;
|
|
22
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
23
|
+
export default _default;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<script setup>
|
|
2
|
+
import { computed } from "vue";
|
|
3
|
+
const props = defineProps({
|
|
4
|
+
id: { type: String, required: true },
|
|
5
|
+
type: { type: String, required: true },
|
|
6
|
+
data: { type: null, required: true },
|
|
7
|
+
selected: { type: Boolean, required: true, default: false },
|
|
8
|
+
dragging: { type: Boolean, required: true, default: false },
|
|
9
|
+
connectable: { type: Boolean, required: true, default: true },
|
|
10
|
+
style: { type: Object, required: false, default: () => ({}) },
|
|
11
|
+
label: { type: String, required: false, default: "" },
|
|
12
|
+
labelColor: { type: String, required: false, default: "" },
|
|
13
|
+
descriptionColor: { type: String, required: false, default: "" }
|
|
14
|
+
});
|
|
15
|
+
const nodeStyle = computed(() => {
|
|
16
|
+
const base = {
|
|
17
|
+
padding: "10px 15px",
|
|
18
|
+
borderRadius: "4px 4px 12px 4px",
|
|
19
|
+
border: "1px solid #67c23a",
|
|
20
|
+
backgroundColor: "#f0f9ff",
|
|
21
|
+
minWidth: "80px",
|
|
22
|
+
textAlign: "center",
|
|
23
|
+
transition: "all 0.2s"
|
|
24
|
+
};
|
|
25
|
+
if (props.selected) {
|
|
26
|
+
base.border = "2px solid #67c23a";
|
|
27
|
+
base.boxShadow = "0 0 8px rgba(103, 194, 58, 0.4)";
|
|
28
|
+
}
|
|
29
|
+
return { ...base, ...props.style };
|
|
30
|
+
});
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<template>
|
|
34
|
+
<div :class="['flow-input-node', {
|
|
35
|
+
selected,
|
|
36
|
+
dragging
|
|
37
|
+
}]" :style="nodeStyle">
|
|
38
|
+
<div class="flow-node-label" :style="{
|
|
39
|
+
color: labelColor || data?.labelColor || '#000'
|
|
40
|
+
}">
|
|
41
|
+
{{ label || data?.label || 'Input' }}
|
|
42
|
+
</div>
|
|
43
|
+
<div
|
|
44
|
+
v-if="data?.description"
|
|
45
|
+
class="flow-node-description"
|
|
46
|
+
:style="{
|
|
47
|
+
color: descriptionColor || data?.descriptionColor || 'var(--flow-node-description-color, #909399)'
|
|
48
|
+
}"
|
|
49
|
+
>
|
|
50
|
+
{{ data.description }}
|
|
51
|
+
</div>
|
|
52
|
+
<div
|
|
53
|
+
class="flow-handle-right"
|
|
54
|
+
v-if="connectable"
|
|
55
|
+
data-handle-type="source"
|
|
56
|
+
data-handle-position="right"
|
|
57
|
+
/>
|
|
58
|
+
</div>
|
|
59
|
+
</template>
|
|
60
|
+
|
|
61
|
+
<style scoped>
|
|
62
|
+
.flow-input-node{cursor:pointer;display:inline-block;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.flow-input-node.dragging{cursor:grabbing}.flow-input-node .flow-handle-right{background-color:#67c23a;border:2px solid #fff;border-radius:50%;cursor:crosshair;height:12px;position:absolute;right:-6px;top:50%;transform:translateY(-50%);width:12px}.flow-node-label{color:#000;font-family:Courier New,Courier,monospace;font-size:13px;font-weight:400}
|
|
63
|
+
</style>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Node, NodeStyle } from '../../types';
|
|
2
|
+
interface Props {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
data: Node['data'];
|
|
6
|
+
selected: boolean;
|
|
7
|
+
dragging: boolean;
|
|
8
|
+
connectable: boolean;
|
|
9
|
+
style?: NodeStyle;
|
|
10
|
+
label?: string;
|
|
11
|
+
labelColor?: string;
|
|
12
|
+
descriptionColor?: string;
|
|
13
|
+
}
|
|
14
|
+
declare const _default: import("vue").DefineComponent<Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
15
|
+
label: string;
|
|
16
|
+
style: NodeStyle;
|
|
17
|
+
connectable: boolean;
|
|
18
|
+
selected: boolean;
|
|
19
|
+
dragging: boolean;
|
|
20
|
+
labelColor: string;
|
|
21
|
+
descriptionColor: string;
|
|
22
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
23
|
+
export default _default;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
nodeId: string;
|
|
3
|
+
selected?: boolean;
|
|
4
|
+
minWidth?: number;
|
|
5
|
+
minHeight?: number;
|
|
6
|
+
keepAspectRatio?: boolean;
|
|
7
|
+
};
|
|
8
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
9
|
+
resize: (data: {
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
x?: number;
|
|
13
|
+
y?: number;
|
|
14
|
+
}) => any;
|
|
15
|
+
resizeStart: (event: MouseEvent) => any;
|
|
16
|
+
resizeEnd: (event: MouseEvent) => any;
|
|
17
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
18
|
+
onResize?: ((data: {
|
|
19
|
+
width: number;
|
|
20
|
+
height: number;
|
|
21
|
+
x?: number;
|
|
22
|
+
y?: number;
|
|
23
|
+
}) => any) | undefined;
|
|
24
|
+
onResizeStart?: ((event: MouseEvent) => any) | undefined;
|
|
25
|
+
onResizeEnd?: ((event: MouseEvent) => any) | undefined;
|
|
26
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
27
|
+
export default _default;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div v-if="isVisible" class="yh-flow-node-resizer" @mousedown.stop @click.stop>
|
|
3
|
+
<div
|
|
4
|
+
v-for="handle in handles"
|
|
5
|
+
:key="handle"
|
|
6
|
+
class="resizer-handle"
|
|
7
|
+
:class="`handle-${handle}`"
|
|
8
|
+
@mousedown.stop="onResizeStart($event, handle)"
|
|
9
|
+
@click.stop
|
|
10
|
+
></div>
|
|
11
|
+
</div>
|
|
12
|
+
</template>
|
|
13
|
+
|
|
14
|
+
<script setup>
|
|
15
|
+
import { computed } from "vue";
|
|
16
|
+
import { useFlowContext } from "../../core/FlowContext";
|
|
17
|
+
const props = defineProps({
|
|
18
|
+
nodeId: { type: String, required: true },
|
|
19
|
+
selected: { type: Boolean, required: false },
|
|
20
|
+
minWidth: { type: Number, required: false },
|
|
21
|
+
minHeight: { type: Number, required: false },
|
|
22
|
+
keepAspectRatio: { type: Boolean, required: false }
|
|
23
|
+
});
|
|
24
|
+
const flow = useFlowContext();
|
|
25
|
+
const emit = defineEmits(["resize", "resizeStart", "resizeEnd"]);
|
|
26
|
+
const isVisible = computed(() => props.selected);
|
|
27
|
+
const handles = ["n", "s", "e", "w", "ne", "nw", "se", "sw"];
|
|
28
|
+
let startX = 0;
|
|
29
|
+
let startY = 0;
|
|
30
|
+
let lastX = 0;
|
|
31
|
+
let lastY = 0;
|
|
32
|
+
let startWidth = 0;
|
|
33
|
+
let startHeight = 0;
|
|
34
|
+
let currentHandle = "";
|
|
35
|
+
const onResizeStart = (event, handle) => {
|
|
36
|
+
event.preventDefault();
|
|
37
|
+
startX = event.clientX;
|
|
38
|
+
startY = event.clientY;
|
|
39
|
+
lastX = event.clientX;
|
|
40
|
+
lastY = event.clientY;
|
|
41
|
+
currentHandle = handle;
|
|
42
|
+
const nodeEl = document.getElementById(`node-${props.nodeId}`);
|
|
43
|
+
if (!nodeEl) return;
|
|
44
|
+
startWidth = nodeEl.offsetWidth;
|
|
45
|
+
startHeight = nodeEl.offsetHeight;
|
|
46
|
+
emit("resizeStart", event);
|
|
47
|
+
document.addEventListener("mousemove", onResizing);
|
|
48
|
+
document.addEventListener("mouseup", onResizeEnd);
|
|
49
|
+
};
|
|
50
|
+
const onResizing = (event) => {
|
|
51
|
+
const zoom = flow.viewport.value.zoom || 1;
|
|
52
|
+
const totalDX = (event.clientX - startX) / zoom;
|
|
53
|
+
const totalDY = (event.clientY - startY) / zoom;
|
|
54
|
+
const incrementalDX = (event.clientX - lastX) / zoom;
|
|
55
|
+
const incrementalDY = (event.clientY - lastY) / zoom;
|
|
56
|
+
lastX = event.clientX;
|
|
57
|
+
lastY = event.clientY;
|
|
58
|
+
let newWidth = startWidth;
|
|
59
|
+
let newHeight = startHeight;
|
|
60
|
+
let deltaX = 0;
|
|
61
|
+
let deltaY = 0;
|
|
62
|
+
if (currentHandle.includes("e")) {
|
|
63
|
+
newWidth = startWidth + totalDX;
|
|
64
|
+
}
|
|
65
|
+
if (currentHandle.includes("w")) {
|
|
66
|
+
newWidth = startWidth - totalDX;
|
|
67
|
+
deltaX = incrementalDX;
|
|
68
|
+
}
|
|
69
|
+
if (currentHandle.includes("s")) {
|
|
70
|
+
newHeight = startHeight + totalDY;
|
|
71
|
+
}
|
|
72
|
+
if (currentHandle.includes("n")) {
|
|
73
|
+
newHeight = startHeight - totalDY;
|
|
74
|
+
deltaY = incrementalDY;
|
|
75
|
+
}
|
|
76
|
+
newWidth = Math.max(newWidth, props.minWidth || 50);
|
|
77
|
+
newHeight = Math.max(newHeight, props.minHeight || 30);
|
|
78
|
+
emit("resize", { width: newWidth, height: newHeight, x: deltaX, y: deltaY });
|
|
79
|
+
};
|
|
80
|
+
const onResizeEnd = (event) => {
|
|
81
|
+
emit("resizeEnd", event);
|
|
82
|
+
document.removeEventListener("mousemove", onResizing);
|
|
83
|
+
document.removeEventListener("mouseup", onResizeEnd);
|
|
84
|
+
};
|
|
85
|
+
</script>
|
|
86
|
+
|
|
87
|
+
<style scoped>
|
|
88
|
+
.yh-flow-node-resizer{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:1001}.resizer-handle{background:transparent;cursor:pointer;height:16px;pointer-events:auto;position:absolute;width:16px;z-index:1002}.resizer-handle:after{background:#3b82f6;border:1px solid #fff;border-radius:2px;content:"";height:8px;left:4px;position:absolute;top:4px;width:8px}.handle-n{top:-8px}.handle-n,.handle-s{cursor:ns-resize;left:50%;transform:translateX(-50%)}.handle-s{bottom:-8px}.handle-e{right:-8px}.handle-e,.handle-w{cursor:ew-resize;top:50%;transform:translateY(-50%)}.handle-w{left:-8px}.handle-ne{cursor:nesw-resize;right:-8px;top:-8px}.handle-nw{cursor:nwse-resize;left:-8px;top:-8px}.handle-se{bottom:-8px;cursor:nwse-resize;right:-8px}.handle-sw{bottom:-8px;cursor:nesw-resize;left:-8px}
|
|
89
|
+
</style>
|