@octaviaflow/core 3.0.13 → 3.0.17-beta.0
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/chunk-2AWVQFSC.js +2456 -0
- package/dist/chunk-2AWVQFSC.js.map +1 -0
- package/dist/chunk-2K7IQR2F.js +2432 -0
- package/dist/chunk-2K7IQR2F.js.map +1 -0
- package/dist/chunk-2YUWZPIT.js +2483 -0
- package/dist/chunk-2YUWZPIT.js.map +1 -0
- package/dist/chunk-4VCRGPYQ.js +2452 -0
- package/dist/chunk-4VCRGPYQ.js.map +1 -0
- package/dist/chunk-4WU5YAL2.js +2470 -0
- package/dist/chunk-4WU5YAL2.js.map +1 -0
- package/dist/chunk-5L4TGL74.js +2448 -0
- package/dist/chunk-5L4TGL74.js.map +1 -0
- package/dist/chunk-7M5HFY2J.js +2483 -0
- package/dist/chunk-7M5HFY2J.js.map +1 -0
- package/dist/chunk-AJ4556EH.js +2490 -0
- package/dist/chunk-AJ4556EH.js.map +1 -0
- package/dist/chunk-AOL365B3.js +2448 -0
- package/dist/chunk-AOL365B3.js.map +1 -0
- package/dist/chunk-D4X7RMGF.js +2481 -0
- package/dist/chunk-D4X7RMGF.js.map +1 -0
- package/dist/chunk-DCGXCPD4.js +2389 -0
- package/dist/chunk-DCGXCPD4.js.map +1 -0
- package/dist/chunk-DG35MIV3.js +2480 -0
- package/dist/chunk-DG35MIV3.js.map +1 -0
- package/dist/chunk-DRZ73Q5X.js +2503 -0
- package/dist/chunk-DRZ73Q5X.js.map +1 -0
- package/dist/chunk-DRZMET2G.js +2458 -0
- package/dist/chunk-DRZMET2G.js.map +1 -0
- package/dist/chunk-DYCW4TYB.js +2546 -0
- package/dist/chunk-DYCW4TYB.js.map +1 -0
- package/dist/chunk-E7WR7DMP.js +2451 -0
- package/dist/chunk-E7WR7DMP.js.map +1 -0
- package/dist/chunk-ELNQQAHD.js +2454 -0
- package/dist/chunk-ELNQQAHD.js.map +1 -0
- package/dist/chunk-FN3MFN6C.js +2389 -0
- package/dist/chunk-FN3MFN6C.js.map +1 -0
- package/dist/chunk-IBTEGHFT.js +10 -0
- package/dist/chunk-IBTEGHFT.js.map +1 -0
- package/dist/chunk-JCPM7YF2.js +2474 -0
- package/dist/chunk-JCPM7YF2.js.map +1 -0
- package/dist/chunk-JLPCCZKG.js +2459 -0
- package/dist/chunk-JLPCCZKG.js.map +1 -0
- package/dist/chunk-KY4JHPIE.js +2546 -0
- package/dist/chunk-KY4JHPIE.js.map +1 -0
- package/dist/chunk-LCQMQAWJ.js +2461 -0
- package/dist/chunk-LCQMQAWJ.js.map +1 -0
- package/dist/chunk-LSDAQCUJ.js +2546 -0
- package/dist/chunk-LSDAQCUJ.js.map +1 -0
- package/dist/chunk-LW4ZHQKL.js +2432 -0
- package/dist/chunk-LW4ZHQKL.js.map +1 -0
- package/dist/chunk-MMZW3Q26.js +2442 -0
- package/dist/chunk-MMZW3Q26.js.map +1 -0
- package/dist/chunk-MXJR2WHG.js +2470 -0
- package/dist/chunk-MXJR2WHG.js.map +1 -0
- package/dist/chunk-OK2CUIKQ.js +2447 -0
- package/dist/chunk-OK2CUIKQ.js.map +1 -0
- package/dist/chunk-OSOP2WPT.js +2456 -0
- package/dist/chunk-OSOP2WPT.js.map +1 -0
- package/dist/chunk-PNBZLLWT.js +2529 -0
- package/dist/chunk-PNBZLLWT.js.map +1 -0
- package/dist/chunk-PULX2GK5.js +2447 -0
- package/dist/chunk-PULX2GK5.js.map +1 -0
- package/dist/chunk-QDT45KF4.js +2480 -0
- package/dist/chunk-QDT45KF4.js.map +1 -0
- package/dist/chunk-QI3ITHAZ.js +2450 -0
- package/dist/chunk-QI3ITHAZ.js.map +1 -0
- package/dist/chunk-QSGJ3DNA.js +2475 -0
- package/dist/chunk-QSGJ3DNA.js.map +1 -0
- package/dist/chunk-RDGJWRHM.js +2490 -0
- package/dist/chunk-RDGJWRHM.js.map +1 -0
- package/dist/chunk-SDE3ARKY.js +2451 -0
- package/dist/chunk-SDE3ARKY.js.map +1 -0
- package/dist/chunk-SX7WRJGD.js +2441 -0
- package/dist/chunk-SX7WRJGD.js.map +1 -0
- package/dist/chunk-TZ56MSYM.js +2452 -0
- package/dist/chunk-TZ56MSYM.js.map +1 -0
- package/dist/chunk-UEQLKS2B.js +2445 -0
- package/dist/chunk-UEQLKS2B.js.map +1 -0
- package/dist/chunk-UNU6YNTL.js +2452 -0
- package/dist/chunk-UNU6YNTL.js.map +1 -0
- package/dist/chunk-UUG6XYUC.js +2482 -0
- package/dist/chunk-UUG6XYUC.js.map +1 -0
- package/dist/chunk-VEY3BP5E.js +2447 -0
- package/dist/chunk-VEY3BP5E.js.map +1 -0
- package/dist/chunk-WBTXV3Q2.js +2482 -0
- package/dist/chunk-WBTXV3Q2.js.map +1 -0
- package/dist/chunk-WILVB7XA.js +2512 -0
- package/dist/chunk-WILVB7XA.js.map +1 -0
- package/dist/chunk-WQCHABP3.js +2441 -0
- package/dist/chunk-WQCHABP3.js.map +1 -0
- package/dist/chunk-WUFAW3TB.js +2512 -0
- package/dist/chunk-WUFAW3TB.js.map +1 -0
- package/dist/chunk-WYBJKALZ.js +2458 -0
- package/dist/chunk-WYBJKALZ.js.map +1 -0
- package/dist/chunk-XZ7FELMT.js +2448 -0
- package/dist/chunk-XZ7FELMT.js.map +1 -0
- package/dist/chunk-YATCRJVF.js +2458 -0
- package/dist/chunk-YATCRJVF.js.map +1 -0
- package/dist/chunk-YSSD2T4M.js +2451 -0
- package/dist/chunk-YSSD2T4M.js.map +1 -0
- package/dist/chunk-YW6ZOYCG.js +2451 -0
- package/dist/chunk-YW6ZOYCG.js.map +1 -0
- package/dist/components/ActionsDrawer/ActionsDrawer.d.ts +89 -0
- package/dist/components/ActionsDrawer/ActionsDrawer.d.ts.map +1 -0
- package/dist/components/ActionsDrawer/index.d.ts +2 -0
- package/dist/components/ActionsDrawer/index.d.ts.map +1 -0
- package/dist/components/AgentCard/AgentCard.d.ts +1 -1
- package/dist/components/AgentCard/AgentCard.d.ts.map +1 -1
- package/dist/components/AuthCard/AuthCard.d.ts.map +1 -1
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/CodeEditor/CodeEditor.d.ts.map +1 -1
- package/dist/components/CodeEditor/index.d.ts +1 -1
- package/dist/components/CodeEditor/index.d.ts.map +1 -1
- package/dist/components/DataMapper/DataMapper.d.ts.map +1 -1
- package/dist/components/DataTable/DataTable.d.ts.map +1 -1
- package/dist/components/DataTable/index.d.ts +1 -1
- package/dist/components/DataTable/index.d.ts.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/ExecutionConsole/ExecutionConsole.d.ts +29 -3
- package/dist/components/ExecutionConsole/ExecutionConsole.d.ts.map +1 -1
- package/dist/components/FileDropzone/FileDropzone.d.ts.map +1 -1
- package/dist/components/FlowEdge/FlowEdge.d.ts +15 -14
- package/dist/components/FlowEdge/FlowEdge.d.ts.map +1 -1
- package/dist/components/Input/Input.d.ts.map +1 -1
- package/dist/components/MonacoEditor/MonacoDiffEditor.d.ts.map +1 -1
- package/dist/components/MonacoEditor/MonacoEditor.d.ts.map +1 -1
- package/dist/components/MonacoEditor/index.d.ts +1 -1
- package/dist/components/MonacoEditor/index.d.ts.map +1 -1
- package/dist/components/PromptInput/PromptInput.d.ts.map +1 -1
- package/dist/components/Radio/Radio.d.ts.map +1 -1
- package/dist/components/Resizable/Resizable.d.ts.map +1 -1
- package/dist/components/Resizable/index.d.ts +1 -1
- package/dist/components/Resizable/index.d.ts.map +1 -1
- package/dist/components/Select/Select.d.ts +16 -1
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Sortable/Sortable.d.ts.map +1 -1
- package/dist/components/Sortable/index.d.ts +1 -1
- package/dist/components/Sortable/index.d.ts.map +1 -1
- package/dist/components/Toast/Toast.d.ts.map +1 -1
- package/dist/components/ToolCard/ToolCard.d.ts +1 -1
- package/dist/components/ToolCard/ToolCard.d.ts.map +1 -1
- package/dist/components/TopBar/TopBar.d.ts +22 -1
- package/dist/components/TopBar/TopBar.d.ts.map +1 -1
- package/dist/components/TraceStep/TraceStep.d.ts.map +1 -1
- package/dist/components/TraceStep/index.d.ts +1 -1
- package/dist/components/TraceStep/index.d.ts.map +1 -1
- package/dist/components/WorkflowEditor/WorkflowEditor.d.ts +10 -2
- package/dist/components/WorkflowEditor/WorkflowEditor.d.ts.map +1 -1
- package/dist/components/XmlViewer/XmlViewer.d.ts.map +1 -1
- package/dist/components/YamlViewer/YamlViewer.d.ts.map +1 -1
- package/dist/index.cjs +6875 -3288
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3296 -2147
- package/dist/index.js.map +1 -1
- package/dist/monaco.cjs +344 -201
- package/dist/monaco.cjs.map +1 -1
- package/dist/monaco.js +348 -205
- package/dist/monaco.js.map +1 -1
- package/dist/stories/state-matrix.d.ts.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utils/a11y.d.ts.map +1 -1
- package/dist/utils/sanitizeUrl.d.ts.map +1 -1
- package/dist/workflow/components/ConfigPanel/ConfigPanel.d.ts +64 -0
- package/dist/workflow/components/ConfigPanel/ConfigPanel.d.ts.map +1 -0
- package/dist/workflow/components/FlowCanvas/FlowCanvas.d.ts +111 -0
- package/dist/workflow/components/FlowCanvas/FlowCanvas.d.ts.map +1 -0
- package/dist/workflow/components/FlowCanvas/FlowCanvasContext.d.ts +47 -0
- package/dist/workflow/components/FlowCanvas/FlowCanvasContext.d.ts.map +1 -0
- package/dist/workflow/components/FlowEdge/FlowEdge.d.ts +26 -0
- package/dist/workflow/components/FlowEdge/FlowEdge.d.ts.map +1 -0
- package/dist/workflow/components/FlowNode/FlowNode.d.ts +13 -0
- package/dist/workflow/components/FlowNode/FlowNode.d.ts.map +1 -0
- package/dist/workflow/components/FlowNode/FlowNodeContext.d.ts +9 -0
- package/dist/workflow/components/FlowNode/FlowNodeContext.d.ts.map +1 -0
- package/dist/workflow/components/FlowNode/nodeKinds.d.ts +25 -0
- package/dist/workflow/components/FlowNode/nodeKinds.d.ts.map +1 -0
- package/dist/workflow/components/Handle/Handle.d.ts +26 -0
- package/dist/workflow/components/Handle/Handle.d.ts.map +1 -0
- package/dist/workflow/components/Handle/handleRegistry.d.ts +32 -0
- package/dist/workflow/components/Handle/handleRegistry.d.ts.map +1 -0
- package/dist/workflow/components/NodeResizer/NodeResizer.d.ts +27 -0
- package/dist/workflow/components/NodeResizer/NodeResizer.d.ts.map +1 -0
- package/dist/workflow/components/NodeToolbar/NodeToolbar.d.ts +19 -0
- package/dist/workflow/components/NodeToolbar/NodeToolbar.d.ts.map +1 -0
- package/dist/workflow/components/kinds/BaseNode.d.ts +40 -0
- package/dist/workflow/components/kinds/BaseNode.d.ts.map +1 -0
- package/dist/workflow/components/kinds/index.d.ts +55 -0
- package/dist/workflow/components/kinds/index.d.ts.map +1 -0
- package/dist/workflow/editor.d.ts +181 -0
- package/dist/workflow/editor.d.ts.map +1 -0
- package/dist/workflow/hooks/useAutoLayout.d.ts +35 -0
- package/dist/workflow/hooks/useAutoLayout.d.ts.map +1 -0
- package/dist/workflow/hooks/useFlow.d.ts +61 -0
- package/dist/workflow/hooks/useFlow.d.ts.map +1 -0
- package/dist/workflow/hooks/useFlowState.d.ts +33 -0
- package/dist/workflow/hooks/useFlowState.d.ts.map +1 -0
- package/dist/workflow/index.d.ts +25 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/layout/dagre.d.ts +24 -0
- package/dist/workflow/layout/dagre.d.ts.map +1 -0
- package/dist/workflow/layout/elk.d.ts +22 -0
- package/dist/workflow/layout/elk.d.ts.map +1 -0
- package/dist/workflow/layout/types.d.ts +55 -0
- package/dist/workflow/layout/types.d.ts.map +1 -0
- package/dist/workflow/store/changes.d.ts +34 -0
- package/dist/workflow/store/changes.d.ts.map +1 -0
- package/dist/workflow/store/context.d.ts +4 -0
- package/dist/workflow/store/context.d.ts.map +1 -0
- package/dist/workflow/store/createFlowStore.d.ts +27 -0
- package/dist/workflow/store/createFlowStore.d.ts.map +1 -0
- package/dist/workflow/store/selectors.d.ts +33 -0
- package/dist/workflow/store/selectors.d.ts.map +1 -0
- package/dist/workflow/types/index.d.ts +181 -0
- package/dist/workflow/types/index.d.ts.map +1 -0
- package/dist/workflow/utils/collapse.d.ts +26 -0
- package/dist/workflow/utils/collapse.d.ts.map +1 -0
- package/dist/workflow/utils/collision.d.ts +37 -0
- package/dist/workflow/utils/collision.d.ts.map +1 -0
- package/dist/workflow/utils/geometry.d.ts +46 -0
- package/dist/workflow/utils/geometry.d.ts.map +1 -0
- package/dist/workflow/utils/parenting.d.ts +28 -0
- package/dist/workflow/utils/parenting.d.ts.map +1 -0
- package/dist/workflow/utils/paths.d.ts +19 -0
- package/dist/workflow/utils/paths.d.ts.map +1 -0
- package/dist/workflow.cjs +3562 -0
- package/dist/workflow.cjs.map +1 -0
- package/dist/workflow.js +1029 -0
- package/dist/workflow.js.map +1 -0
- package/package.json +6 -1
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import type { CSSProperties } from "react";
|
|
2
|
+
export interface Position {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
}
|
|
6
|
+
export interface Dimensions {
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
}
|
|
10
|
+
export interface Rect {
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
width: number;
|
|
14
|
+
height: number;
|
|
15
|
+
}
|
|
16
|
+
export interface Viewport {
|
|
17
|
+
x: number;
|
|
18
|
+
y: number;
|
|
19
|
+
zoom: number;
|
|
20
|
+
}
|
|
21
|
+
export type HandleType = "source" | "target";
|
|
22
|
+
export type HandlePosition = "top" | "right" | "bottom" | "left";
|
|
23
|
+
export type BuiltInNodeKind = "action" | "trigger" | "condition" | "loop" | "parallel" | "wait" | "output" | "error" | "group" | "sticky";
|
|
24
|
+
export type NodeKind = BuiltInNodeKind | string;
|
|
25
|
+
export interface WorkflowNode<TData = unknown> {
|
|
26
|
+
id: string;
|
|
27
|
+
/** Registry key — `"action"` etc., or any custom string. */
|
|
28
|
+
type: NodeKind;
|
|
29
|
+
/** Always absolute flow-space coordinates (see ADR-003). */
|
|
30
|
+
position: Position;
|
|
31
|
+
/** Consumer payload — the node renderer reads from `data`. */
|
|
32
|
+
data: TData;
|
|
33
|
+
selected?: boolean;
|
|
34
|
+
dragging?: boolean;
|
|
35
|
+
hidden?: boolean;
|
|
36
|
+
width?: number;
|
|
37
|
+
height?: number;
|
|
38
|
+
isConnectable?: boolean;
|
|
39
|
+
parentId?: string;
|
|
40
|
+
extent?: "parent" | [Position, Position];
|
|
41
|
+
zIndex?: number;
|
|
42
|
+
sourcePosition?: HandlePosition;
|
|
43
|
+
targetPosition?: HandlePosition;
|
|
44
|
+
ariaLabel?: string;
|
|
45
|
+
className?: string;
|
|
46
|
+
style?: CSSProperties;
|
|
47
|
+
}
|
|
48
|
+
export type BuiltInEdgeKind = "default" | "conditional" | "loop" | "error" | "straight" | "smoothstep";
|
|
49
|
+
export type EdgeKind = BuiltInEdgeKind | string;
|
|
50
|
+
/**
|
|
51
|
+
* Visual routing for the edge path. Independent of `edge.type` (which
|
|
52
|
+
* carries semantics like conditional / error). Defaults to "bezier".
|
|
53
|
+
*/
|
|
54
|
+
export type EdgeRouting = "bezier" | "step" | "smoothstep" | "straight";
|
|
55
|
+
export interface WorkflowEdge<TData = unknown> {
|
|
56
|
+
id: string;
|
|
57
|
+
source: string;
|
|
58
|
+
target: string;
|
|
59
|
+
sourceHandle?: string;
|
|
60
|
+
targetHandle?: string;
|
|
61
|
+
/** Semantic type — drives stroke colour and dash pattern. */
|
|
62
|
+
type?: EdgeKind;
|
|
63
|
+
/** Visual path routing — bezier (default), step, smoothstep, straight. */
|
|
64
|
+
routing?: EdgeRouting;
|
|
65
|
+
data?: TData;
|
|
66
|
+
selected?: boolean;
|
|
67
|
+
animated?: boolean;
|
|
68
|
+
hidden?: boolean;
|
|
69
|
+
label?: string;
|
|
70
|
+
zIndex?: number;
|
|
71
|
+
/** Hit area width — default 16 px on mouse, 32 px on coarse pointers. */
|
|
72
|
+
interactionWidth?: number;
|
|
73
|
+
ariaLabel?: string;
|
|
74
|
+
className?: string;
|
|
75
|
+
style?: CSSProperties;
|
|
76
|
+
}
|
|
77
|
+
export interface Connection {
|
|
78
|
+
source: string;
|
|
79
|
+
target: string;
|
|
80
|
+
sourceHandle?: string | null;
|
|
81
|
+
targetHandle?: string | null;
|
|
82
|
+
}
|
|
83
|
+
export interface ConnectStartParams {
|
|
84
|
+
nodeId: string;
|
|
85
|
+
handleId: string | null;
|
|
86
|
+
handleType: HandleType;
|
|
87
|
+
}
|
|
88
|
+
export interface ConnectEndState {
|
|
89
|
+
/** Was the gesture cancelled (no valid target)? */
|
|
90
|
+
cancelled: boolean;
|
|
91
|
+
/** Pixel position where the user released the pointer (screen coords). */
|
|
92
|
+
position: Position;
|
|
93
|
+
/** Same position in flow coordinates. Useful for "drop on canvas to spawn a node." */
|
|
94
|
+
flowPosition: Position;
|
|
95
|
+
/** The handle the drag started from. */
|
|
96
|
+
from: ConnectStartParams;
|
|
97
|
+
/** The handle the drag landed on, if any. */
|
|
98
|
+
to?: ConnectStartParams;
|
|
99
|
+
}
|
|
100
|
+
export type NodeChange<TData = unknown> = {
|
|
101
|
+
type: "add";
|
|
102
|
+
item: WorkflowNode<TData>;
|
|
103
|
+
} | {
|
|
104
|
+
type: "remove";
|
|
105
|
+
id: string;
|
|
106
|
+
} | {
|
|
107
|
+
type: "position";
|
|
108
|
+
id: string;
|
|
109
|
+
position: Position;
|
|
110
|
+
dragging: boolean;
|
|
111
|
+
} | {
|
|
112
|
+
type: "dimensions";
|
|
113
|
+
id: string;
|
|
114
|
+
dimensions: Dimensions;
|
|
115
|
+
} | {
|
|
116
|
+
type: "select";
|
|
117
|
+
id: string;
|
|
118
|
+
selected: boolean;
|
|
119
|
+
} | {
|
|
120
|
+
type: "replace";
|
|
121
|
+
id: string;
|
|
122
|
+
item: WorkflowNode<TData>;
|
|
123
|
+
};
|
|
124
|
+
export type EdgeChange<TData = unknown> = {
|
|
125
|
+
type: "add";
|
|
126
|
+
item: WorkflowEdge<TData>;
|
|
127
|
+
} | {
|
|
128
|
+
type: "remove";
|
|
129
|
+
id: string;
|
|
130
|
+
} | {
|
|
131
|
+
type: "select";
|
|
132
|
+
id: string;
|
|
133
|
+
selected: boolean;
|
|
134
|
+
} | {
|
|
135
|
+
type: "replace";
|
|
136
|
+
id: string;
|
|
137
|
+
item: WorkflowEdge<TData>;
|
|
138
|
+
};
|
|
139
|
+
export interface SelectionState {
|
|
140
|
+
nodes: WorkflowNode[];
|
|
141
|
+
edges: WorkflowEdge[];
|
|
142
|
+
}
|
|
143
|
+
export interface FlowStoreSnapshot {
|
|
144
|
+
nodes: WorkflowNode[];
|
|
145
|
+
edges: WorkflowEdge[];
|
|
146
|
+
viewport: Viewport;
|
|
147
|
+
selectedNodeIds: ReadonlySet<string>;
|
|
148
|
+
selectedEdgeIds: ReadonlySet<string>;
|
|
149
|
+
/** In-flight connection drag, if any. */
|
|
150
|
+
connection: ConnectStartParams | null;
|
|
151
|
+
}
|
|
152
|
+
export interface FitViewOptions {
|
|
153
|
+
padding?: number;
|
|
154
|
+
maxZoom?: number;
|
|
155
|
+
minZoom?: number;
|
|
156
|
+
duration?: number;
|
|
157
|
+
/** Restrict to a subset of nodes. */
|
|
158
|
+
nodes?: {
|
|
159
|
+
id: string;
|
|
160
|
+
}[];
|
|
161
|
+
}
|
|
162
|
+
export type LayoutDirection = "TB" | "BT" | "LR" | "RL";
|
|
163
|
+
export interface LayoutOptions {
|
|
164
|
+
direction?: LayoutDirection;
|
|
165
|
+
nodeSpacing?: number;
|
|
166
|
+
rankSpacing?: number;
|
|
167
|
+
/** Engine-specific options (typed escape hatch). */
|
|
168
|
+
engine?: Record<string, unknown>;
|
|
169
|
+
}
|
|
170
|
+
export interface LayoutEngine {
|
|
171
|
+
name: string;
|
|
172
|
+
/**
|
|
173
|
+
* Compute new positions. Engines may skip nodes (e.g. those with
|
|
174
|
+
* `data.layoutLocked`); the caller patches only the returned ids.
|
|
175
|
+
*/
|
|
176
|
+
layout(nodes: WorkflowNode[], edges: WorkflowEdge[], options?: LayoutOptions): Promise<{
|
|
177
|
+
id: string;
|
|
178
|
+
position: Position;
|
|
179
|
+
}[]>;
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../src/workflow/editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { LayoutEngine, LayoutOptions, NodeChange, WorkflowEdge, WorkflowNode } from "../editor";
|
|
2
|
+
export interface UseAutoLayoutOptions {
|
|
3
|
+
/** The engine. Required. */
|
|
4
|
+
engine: LayoutEngine | null | undefined;
|
|
5
|
+
/** Current nodes (controlled). */
|
|
6
|
+
nodes: WorkflowNode[];
|
|
7
|
+
/** Current edges (controlled). */
|
|
8
|
+
edges: WorkflowEdge[];
|
|
9
|
+
/** Where to send position changes. Required. */
|
|
10
|
+
onNodesChange?: (changes: NodeChange[]) => void;
|
|
11
|
+
/** Layout options forwarded to the engine. */
|
|
12
|
+
options?: LayoutOptions;
|
|
13
|
+
/** Re-run on every graph-shape change (debounced 250ms). Default false. */
|
|
14
|
+
auto?: boolean;
|
|
15
|
+
/** Debounce delay for `auto` mode (ms). Default 250. */
|
|
16
|
+
debounceMs?: number;
|
|
17
|
+
/** Called after each successful run. */
|
|
18
|
+
onLayout?: (positions: {
|
|
19
|
+
id: string;
|
|
20
|
+
position: {
|
|
21
|
+
x: number;
|
|
22
|
+
y: number;
|
|
23
|
+
};
|
|
24
|
+
}[]) => void;
|
|
25
|
+
/** Called when the engine throws (network / worker / library). */
|
|
26
|
+
onError?: (err: unknown) => void;
|
|
27
|
+
}
|
|
28
|
+
export interface UseAutoLayoutResult {
|
|
29
|
+
/** Manually trigger a layout pass. Returns the promise of the engine. */
|
|
30
|
+
runLayout(): Promise<void>;
|
|
31
|
+
/** True while a layout pass is in flight. */
|
|
32
|
+
isLaying: boolean;
|
|
33
|
+
}
|
|
34
|
+
export declare function useAutoLayout({ engine, nodes, edges, onNodesChange, options, auto, debounceMs, onLayout, onError, }: UseAutoLayoutOptions): UseAutoLayoutResult;
|
|
35
|
+
//# sourceMappingURL=useAutoLayout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAutoLayout.d.ts","sourceRoot":"","sources":["../../../src/workflow/hooks/useAutoLayout.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,EACZ,YAAY,EACb,MAAM,WAAW,CAAC;AAGnB,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC;IACxC,kCAAkC;IAClC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,kCAAkC;IAClC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,gDAAgD;IAChD,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAChD,8CAA8C;IAC9C,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EAAE,KAAK,IAAI,CAAC;IACrF,kEAAkE;IAClE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAmBD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,KAAK,EACL,KAAK,EACL,aAAa,EACb,OAAO,EACP,IAAY,EACZ,UAAgB,EAChB,QAAQ,EACR,OAAO,GACR,EAAE,oBAAoB,GAAG,mBAAmB,CAmH5C"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { FitViewOptions, Position, Rect, Viewport, WorkflowEdge, WorkflowNode } from "../editor";
|
|
2
|
+
export interface FlowInstance {
|
|
3
|
+
getViewport(): Viewport;
|
|
4
|
+
setViewport(viewport: Viewport, opts?: {
|
|
5
|
+
duration?: number;
|
|
6
|
+
}): void;
|
|
7
|
+
setCenter(x: number, y: number, opts?: {
|
|
8
|
+
duration?: number;
|
|
9
|
+
zoom?: number;
|
|
10
|
+
}): void;
|
|
11
|
+
fitView(opts?: FitViewOptions): Promise<boolean>;
|
|
12
|
+
zoomIn(opts?: {
|
|
13
|
+
step?: number;
|
|
14
|
+
}): void;
|
|
15
|
+
zoomOut(opts?: {
|
|
16
|
+
step?: number;
|
|
17
|
+
}): void;
|
|
18
|
+
zoomTo(level: number): void;
|
|
19
|
+
/** Convert a pointer position (relative to the canvas container) into
|
|
20
|
+
* flow-space coordinates. */
|
|
21
|
+
screenToFlowPosition(p: Position): Position;
|
|
22
|
+
/** Inverse of `screenToFlowPosition`. */
|
|
23
|
+
flowToScreenPosition(p: Position): Position;
|
|
24
|
+
getNodes(): WorkflowNode[];
|
|
25
|
+
getEdges(): WorkflowEdge[];
|
|
26
|
+
getNode(id: string): WorkflowNode | undefined;
|
|
27
|
+
getEdge(id: string): WorkflowEdge | undefined;
|
|
28
|
+
/** Axis-aligned bounding box of the given nodes (or every node when omitted). */
|
|
29
|
+
getNodesBounds(nodes?: {
|
|
30
|
+
id: string;
|
|
31
|
+
}[]): Rect;
|
|
32
|
+
/** Find every node whose bbox overlaps the given rect.
|
|
33
|
+
* `partially=true` includes partial overlaps; `false` requires full containment. */
|
|
34
|
+
getIntersectingNodes(area: Rect, partially?: boolean): WorkflowNode[];
|
|
35
|
+
addNodes(nodes: WorkflowNode | WorkflowNode[]): void;
|
|
36
|
+
addEdges(edges: WorkflowEdge | WorkflowEdge[]): void;
|
|
37
|
+
/** Merge a partial into the node's existing `data` field. Cheap shorthand
|
|
38
|
+
* for the common case of editing a node's payload without rebuilding it. */
|
|
39
|
+
updateNodeData<TData = unknown>(id: string, partial: Partial<TData>): void;
|
|
40
|
+
/** Replace the node entirely (use sparingly — usually `updateNodeData` is enough). */
|
|
41
|
+
updateNode(id: string, partial: Partial<WorkflowNode>): void;
|
|
42
|
+
/** Imperatively remove nodes and/or edges. Returns false if the host's
|
|
43
|
+
* `onBeforeDelete` vetoed; true otherwise. Synchronous for non-async
|
|
44
|
+
* vetoes; awaits the promise when the host returns one. */
|
|
45
|
+
deleteElements(params: {
|
|
46
|
+
nodes?: {
|
|
47
|
+
id: string;
|
|
48
|
+
}[];
|
|
49
|
+
edges?: {
|
|
50
|
+
id: string;
|
|
51
|
+
}[];
|
|
52
|
+
}): Promise<boolean>;
|
|
53
|
+
}
|
|
54
|
+
export declare const FlowInstanceContext: import("react").Context<FlowInstance>;
|
|
55
|
+
/**
|
|
56
|
+
* Imperative handle for `<FlowCanvas>`. Throws if called outside the
|
|
57
|
+
* canvas — the instance is canvas-scoped (not a global singleton) so
|
|
58
|
+
* multiple canvases on the same page each have their own.
|
|
59
|
+
*/
|
|
60
|
+
export declare function useFlow(): FlowInstance;
|
|
61
|
+
//# sourceMappingURL=useFlow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFlow.d.ts","sourceRoot":"","sources":["../../../src/workflow/hooks/useFlow.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,cAAc,EACd,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,YAAY,EACb,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,YAAY;IAE3B,WAAW,IAAI,QAAQ,CAAC;IACxB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpE,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACnF,OAAO,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACvC,OAAO,CAAC,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAG5B;kCAC8B;IAC9B,oBAAoB,CAAC,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5C,yCAAyC;IACzC,oBAAoB,CAAC,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAG5C,QAAQ,IAAI,YAAY,EAAE,CAAC;IAC3B,QAAQ,IAAI,YAAY,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IAC9C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAAC;IAC9C,iFAAiF;IACjF,cAAc,CAAC,KAAK,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI,CAAC;IAC/C;yFACqF;IACrF,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,YAAY,EAAE,CAAC;IAGtE,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,EAAE,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,EAAE,GAAG,IAAI,CAAC;IACrD;iFAC6E;IAC7E,cAAc,CAAC,KAAK,GAAG,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IAC3E,sFAAsF;IACtF,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;IAC7D;;gEAE4D;IAC5D,cAAc,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClG;AAED,eAAO,MAAM,mBAAmB,uCAA2C,CAAC;AAE5E;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,YAAY,CAMtC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { EdgeChange, NodeChange, WorkflowEdge, WorkflowNode } from "../editor";
|
|
2
|
+
export interface UseFlowStateOptions<TNData = unknown, TEData = unknown> {
|
|
3
|
+
initialNodes?: WorkflowNode<TNData>[];
|
|
4
|
+
initialEdges?: WorkflowEdge<TEData>[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Patch type for `updateNodeData` — accepts a partial object that gets
|
|
8
|
+
* shallow-merged, or a producer function `(prev) => next`.
|
|
9
|
+
*/
|
|
10
|
+
export type NodeDataPatch<TNData> = Partial<TNData> | ((prev: TNData | undefined) => TNData | undefined);
|
|
11
|
+
export interface FlowStateBag<TNData = unknown, TEData = unknown> {
|
|
12
|
+
nodes: WorkflowNode<TNData>[];
|
|
13
|
+
edges: WorkflowEdge<TEData>[];
|
|
14
|
+
onNodesChange: (changes: NodeChange<TNData>[]) => void;
|
|
15
|
+
onEdgesChange: (changes: EdgeChange<TEData>[]) => void;
|
|
16
|
+
setNodes: (update: WorkflowNode<TNData>[] | ((prev: WorkflowNode<TNData>[]) => WorkflowNode<TNData>[])) => void;
|
|
17
|
+
setEdges: (update: WorkflowEdge<TEData>[] | ((prev: WorkflowEdge<TEData>[]) => WorkflowEdge<TEData>[])) => void;
|
|
18
|
+
/**
|
|
19
|
+
* Update the `data` slice of a single node by id. Only that node's
|
|
20
|
+
* reference changes — every other node keeps its previous reference,
|
|
21
|
+
* so React.memo'd kind components for unrelated nodes do not re-render.
|
|
22
|
+
* No-ops when `id` is not present in the current nodes array.
|
|
23
|
+
*/
|
|
24
|
+
updateNodeData: (id: string, patch: NodeDataPatch<TNData>) => void;
|
|
25
|
+
/**
|
|
26
|
+
* Read a single node by id from the latest snapshot. Returns undefined
|
|
27
|
+
* if the id is unknown. Useful inside imperative callbacks that need
|
|
28
|
+
* the freshest value without subscribing to re-renders.
|
|
29
|
+
*/
|
|
30
|
+
getNode: (id: string) => WorkflowNode<TNData> | undefined;
|
|
31
|
+
}
|
|
32
|
+
export declare function useFlowState<TNData = unknown, TEData = unknown>(options?: UseFlowStateOptions<TNData, TEData>): FlowStateBag<TNData, TEData>;
|
|
33
|
+
//# sourceMappingURL=useFlowState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFlowState.d.ts","sourceRoot":"","sources":["../../../src/workflow/hooks/useFlowState.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGpF,MAAM,WAAW,mBAAmB,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO;IACrE,YAAY,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;IACtC,YAAY,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,MAAM,IAC5B,OAAO,CAAC,MAAM,CAAC,GACf,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC;AAEvD,MAAM,WAAW,YAAY,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO;IAC9D,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9B,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9B,aAAa,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;IACvD,aAAa,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;IACvD,QAAQ,EAAE,CACR,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,KAAK,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,KACxF,IAAI,CAAC;IACV,QAAQ,EAAE,CACR,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,KAAK,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,KACxF,IAAI,CAAC;IACV;;;;;OAKG;IACH,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACnE;;;;OAIG;IACH,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,YAAY,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;CAC3D;AAED,wBAAgB,YAAY,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO,EAC7D,OAAO,GAAE,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAM,GAChD,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAiD9B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type { BuiltInEdgeKind, BuiltInNodeKind, ConnectEndState, Connection, ConnectStartParams, Dimensions, EdgeChange, EdgeKind, FitViewOptions, HandlePosition, HandleType, LayoutDirection, LayoutEngine, LayoutOptions, NodeChange, NodeKind, Position, Rect, SelectionState, Viewport, WorkflowEdge, WorkflowNode, } from "./editor";
|
|
2
|
+
export { type UseAutoLayoutOptions, type UseAutoLayoutResult, useAutoLayout, } from "./hooks/useAutoLayout";
|
|
3
|
+
export { type FlowInstance, useFlow } from "./hooks/useFlow";
|
|
4
|
+
export { type FlowStateBag, type NodeDataPatch, type UseFlowStateOptions, useFlowState, } from "./hooks/useFlowState";
|
|
5
|
+
export { type CreateDagreEngineOptions, createDagreEngine } from "./layout/dagre";
|
|
6
|
+
export { type CreateElkEngineOptions, createElkEngine } from "./layout/elk";
|
|
7
|
+
export type { DagreGraph, DagreLike, ElkEdge, ElkGraph, ElkLike, } from "./layout/types";
|
|
8
|
+
export { applyEdgeChanges, applyNodeChanges, change } from "./store/changes";
|
|
9
|
+
export { useConnection, useEdgeById, useEdges, useFlowSelector, useIsEdgeSelected, useIsNodeSelected, useNodeById, useNodeData, useNodes, useSelection, useViewport, } from "./store/selectors";
|
|
10
|
+
export { ConfigPanel, type ConfigPanelProps, type ConfigPanelSaveState, type ConfigPanelTab, } from "./components/ConfigPanel/ConfigPanel";
|
|
11
|
+
export { FlowCanvas, type FlowCanvasProps } from "./components/FlowCanvas/FlowCanvas";
|
|
12
|
+
export { FlowEdge, type FlowEdgeProps } from "./components/FlowEdge/FlowEdge";
|
|
13
|
+
export { FlowNode, type FlowNodeProps } from "./components/FlowNode/FlowNode";
|
|
14
|
+
export { type FlowNodeContextValue, useFlowNodeContext, } from "./components/FlowNode/FlowNodeContext";
|
|
15
|
+
export { buildNodeKindRegistry, type NodeKindComponent, type NodeKindProps, type NodeKindRegistry, } from "./components/FlowNode/nodeKinds";
|
|
16
|
+
export { Handle, type HandleProps } from "./components/Handle/Handle";
|
|
17
|
+
export { ActionNode, type BuiltInNodeData, ConditionNode, DEFAULT_NODE_KINDS, ErrorNode, ForEachNode, GroupNode, HttpRequestNode, OutputNode, ParallelNode, StickyNode, TriggerNode, WaitNode, WebhookNode, } from "./components/kinds";
|
|
18
|
+
export { NodeResizer, type NodeResizerProps } from "./components/NodeResizer/NodeResizer";
|
|
19
|
+
export { NodeToolbar, type NodeToolbarProps } from "./components/NodeToolbar/NodeToolbar";
|
|
20
|
+
export type { EdgeRouting } from "./editor";
|
|
21
|
+
export { collapseFor, toggleGroupCollapse } from "./utils/collapse";
|
|
22
|
+
export { bezierPath, DEFAULT_NODE_HEIGHT, DEFAULT_NODE_WIDTH, flowToScreen, handleCentre, screenToFlow, } from "./utils/geometry";
|
|
23
|
+
export { clampToParentExtent, descendantsOf, findAncestor, findContainingGroup, } from "./utils/parenting";
|
|
24
|
+
export { bezierPath as bezierPathFn, buildEdgePath, type EdgeRouting as EdgeRoutingMode, type PathGeometry, smoothStepPath, stepPath, straightPath, } from "./utils/paths";
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { LayoutEngine, LayoutOptions } from "../editor";
|
|
2
|
+
import type { DagreLike } from "./types";
|
|
3
|
+
export interface CreateDagreEngineOptions {
|
|
4
|
+
/** Default spacing between nodes within a rank (default 60). */
|
|
5
|
+
nodeSpacing?: number;
|
|
6
|
+
/** Default spacing between ranks (default 80). */
|
|
7
|
+
rankSpacing?: number;
|
|
8
|
+
/** Default direction — TB, BT, LR, RL. Defaults to TB. */
|
|
9
|
+
direction?: LayoutOptions["direction"];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Build a `LayoutEngine` backed by a consumer-supplied `dagre` module.
|
|
13
|
+
*
|
|
14
|
+
* `dagre` can be passed as either the default export or the namespace
|
|
15
|
+
* import (`import * as dagre from "dagre"`). The adapter probes both
|
|
16
|
+
* shapes so consumers don't have to think about it.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createDagreEngine(dagre: DagreLike | {
|
|
19
|
+
default: DagreLike;
|
|
20
|
+
} | {
|
|
21
|
+
graphlib: DagreLike["graphlib"];
|
|
22
|
+
layout: DagreLike["layout"];
|
|
23
|
+
}, defaults?: CreateDagreEngineOptions): LayoutEngine;
|
|
24
|
+
//# sourceMappingURL=dagre.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dagre.d.ts","sourceRoot":"","sources":["../../../src/workflow/layout/dagre.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAwC,MAAM,WAAW,CAAC;AAEnG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,wBAAwB;IACvC,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CACxC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EACD,SAAS,GACT;IAAE,OAAO,EAAE,SAAS,CAAA;CAAE,GACtB;IAAE,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;CAAE,EACpE,QAAQ,GAAE,wBAA6B,GACtC,YAAY,CA+Dd"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { LayoutEngine, LayoutOptions } from "../editor";
|
|
2
|
+
import type { ElkLike } from "./types";
|
|
3
|
+
export interface CreateElkEngineOptions {
|
|
4
|
+
/** Default direction — TB / BT / LR / RL. Defaults to TB. */
|
|
5
|
+
direction?: LayoutOptions["direction"];
|
|
6
|
+
/** Default node-to-node spacing within a layer (default 60). */
|
|
7
|
+
nodeSpacing?: number;
|
|
8
|
+
/** Default layer-to-layer spacing (default 80). */
|
|
9
|
+
rankSpacing?: number;
|
|
10
|
+
/** Override the algorithm. Defaults to `layered` (Sugiyama). */
|
|
11
|
+
algorithm?: "layered" | "mrtree" | "force" | "stress" | "radial" | "disco" | "rectpacking" | "box";
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Build a `LayoutEngine` backed by a consumer-supplied `elkjs` instance.
|
|
15
|
+
*
|
|
16
|
+
* The consumer is responsible for constructing the ELK instance (which
|
|
17
|
+
* may or may not run in a Web Worker — that's a `workerUrl` constructor
|
|
18
|
+
* option on their end). Our adapter just calls `elk.layout(graph)` and
|
|
19
|
+
* patches positions back.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createElkEngine(elk: ElkLike, defaults?: CreateElkEngineOptions): LayoutEngine;
|
|
22
|
+
//# sourceMappingURL=elk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elk.d.ts","sourceRoot":"","sources":["../../../src/workflow/layout/elk.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAwC,MAAM,WAAW,CAAC;AAEnG,OAAO,KAAK,EAAqB,OAAO,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,WAAW,sBAAsB;IACrC,6DAA6D;IAC7D,SAAS,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACvC,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,SAAS,CAAC,EACN,SAAS,GACT,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,aAAa,GACb,KAAK,CAAC;CACX;AASD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,GAAE,sBAA2B,GAAG,YAAY,CAuFjG"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export type { LayoutDirection, LayoutEngine, LayoutOptions, } from "../editor";
|
|
2
|
+
/**
|
|
3
|
+
* Minimal Dagre surface we depend on. The consumer passes their imported
|
|
4
|
+
* `dagre` module (default or namespace). Anything our adapter touches
|
|
5
|
+
* must be on this shape.
|
|
6
|
+
*/
|
|
7
|
+
export interface DagreLike {
|
|
8
|
+
graphlib: {
|
|
9
|
+
Graph: new (opts?: {
|
|
10
|
+
multigraph?: boolean;
|
|
11
|
+
compound?: boolean;
|
|
12
|
+
}) => DagreGraph;
|
|
13
|
+
};
|
|
14
|
+
layout(g: DagreGraph): void;
|
|
15
|
+
}
|
|
16
|
+
export interface DagreGraph {
|
|
17
|
+
setGraph(opts: Record<string, unknown>): DagreGraph;
|
|
18
|
+
setDefaultEdgeLabel(fn: () => unknown): DagreGraph;
|
|
19
|
+
setNode(id: string, node: {
|
|
20
|
+
width: number;
|
|
21
|
+
height: number;
|
|
22
|
+
[k: string]: unknown;
|
|
23
|
+
}): DagreGraph;
|
|
24
|
+
setEdge(source: string, target: string, label?: Record<string, unknown>): DagreGraph;
|
|
25
|
+
node(id: string): {
|
|
26
|
+
x: number;
|
|
27
|
+
y: number;
|
|
28
|
+
width: number;
|
|
29
|
+
height: number;
|
|
30
|
+
} | undefined;
|
|
31
|
+
nodes(): string[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Minimal elkjs surface. The consumer passes either an `ELK` class or an
|
|
35
|
+
* already-constructed instance — we accept both.
|
|
36
|
+
*/
|
|
37
|
+
export interface ElkLike {
|
|
38
|
+
layout(graph: ElkGraph, options?: Record<string, unknown>): Promise<ElkGraph>;
|
|
39
|
+
}
|
|
40
|
+
export interface ElkGraph {
|
|
41
|
+
id: string;
|
|
42
|
+
layoutOptions?: Record<string, string>;
|
|
43
|
+
width?: number;
|
|
44
|
+
height?: number;
|
|
45
|
+
x?: number;
|
|
46
|
+
y?: number;
|
|
47
|
+
children?: ElkGraph[];
|
|
48
|
+
edges?: ElkEdge[];
|
|
49
|
+
}
|
|
50
|
+
export interface ElkEdge {
|
|
51
|
+
id: string;
|
|
52
|
+
sources: string[];
|
|
53
|
+
targets: string[];
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/workflow/layout/types.ts"],"names":[],"mappings":"AAOA,YAAY,EACV,eAAe,EACf,YAAY,EACZ,aAAa,GACd,MAAM,WAAW,CAAC;AAOnB;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE;QACR,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE;YAAE,UAAU,CAAC,EAAE,OAAO,CAAC;YAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;SAAE,KAAK,UAAU,CAAC;KAChF,CAAC;IACF,MAAM,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC;IACpD,mBAAmB,CAAC,EAAE,EAAE,MAAM,OAAO,GAAG,UAAU,CAAC;IACnD,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,UAAU,CAAC;IAC/F,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC;IACrF,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACtF,KAAK,IAAI,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC/E;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { EdgeChange, NodeChange, WorkflowEdge, WorkflowNode } from "../editor";
|
|
2
|
+
/**
|
|
3
|
+
* Apply a batch of node changes to an existing node list. Returns a
|
|
4
|
+
* **new array** if anything changed, the **same array** otherwise (so
|
|
5
|
+
* React.memo'd children don't re-render unnecessarily).
|
|
6
|
+
*/
|
|
7
|
+
export declare function applyNodeChanges<TData = unknown>(nodes: WorkflowNode<TData>[], changes: NodeChange<TData>[]): WorkflowNode<TData>[];
|
|
8
|
+
/**
|
|
9
|
+
* Apply a batch of edge changes. Same shape as `applyNodeChanges`.
|
|
10
|
+
*/
|
|
11
|
+
export declare function applyEdgeChanges<TData = unknown>(edges: WorkflowEdge<TData>[], changes: EdgeChange<TData>[]): WorkflowEdge<TData>[];
|
|
12
|
+
export declare const change: {
|
|
13
|
+
node: {
|
|
14
|
+
add<TData>(item: WorkflowNode<TData>): NodeChange<TData>;
|
|
15
|
+
remove<TData>(id: string): NodeChange<TData>;
|
|
16
|
+
position<TData>(id: string, position: {
|
|
17
|
+
x: number;
|
|
18
|
+
y: number;
|
|
19
|
+
}, dragging: boolean): NodeChange<TData>;
|
|
20
|
+
dimensions<TData>(id: string, dimensions: {
|
|
21
|
+
width: number;
|
|
22
|
+
height: number;
|
|
23
|
+
}): NodeChange<TData>;
|
|
24
|
+
select<TData>(id: string, selected: boolean): NodeChange<TData>;
|
|
25
|
+
replace<TData>(id: string, item: WorkflowNode<TData>): NodeChange<TData>;
|
|
26
|
+
};
|
|
27
|
+
edge: {
|
|
28
|
+
add<TData>(item: WorkflowEdge<TData>): EdgeChange<TData>;
|
|
29
|
+
remove<TData>(id: string): EdgeChange<TData>;
|
|
30
|
+
select<TData>(id: string, selected: boolean): EdgeChange<TData>;
|
|
31
|
+
replace<TData>(id: string, item: WorkflowEdge<TData>): EdgeChange<TData>;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=changes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../../../src/workflow/store/changes.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEpF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,GAAG,OAAO,EAC9C,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,EAC5B,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,GAC3B,YAAY,CAAC,KAAK,CAAC,EAAE,CA4EvB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,GAAG,OAAO,EAC9C,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,EAC5B,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,GAC3B,YAAY,CAAC,KAAK,CAAC,EAAE,CAuDvB;AAMD,eAAO,MAAM,MAAM;;YAEX,KAAK,QAAQ,YAAY,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;eAGjD,KAAK,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;iBAGnC,KAAK,MACR,MAAM,YACA;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,YACxB,OAAO,GAChB,UAAU,CAAC,KAAK,CAAC;mBAGT,KAAK,MACV,MAAM,cACE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,GAC5C,UAAU,CAAC,KAAK,CAAC;eAGb,KAAK,MAAM,MAAM,YAAY,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC;gBAGvD,KAAK,MAAM,MAAM,QAAQ,YAAY,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;;;YAKpE,KAAK,QAAQ,YAAY,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;eAGjD,KAAK,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;eAGrC,KAAK,MAAM,MAAM,YAAY,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC;gBAGvD,KAAK,MAAM,MAAM,QAAQ,YAAY,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;;CAI3E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/workflow/store/context.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,eAAO,MAAM,gBAAgB,oCAAwC,CAAC;AAEtE,wBAAgB,YAAY,IAAI,SAAS,CAQxC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ConnectStartParams, FlowStoreSnapshot, Viewport, WorkflowEdge, WorkflowNode } from "../editor";
|
|
2
|
+
type Listener = () => void;
|
|
3
|
+
export interface FlowStore {
|
|
4
|
+
/** React subscription hook contract — used by `useSyncExternalStore`. */
|
|
5
|
+
subscribe(listener: Listener): () => void;
|
|
6
|
+
/** Cheap snapshot getter — must return the same ref between mutations. */
|
|
7
|
+
getSnapshot(): FlowStoreSnapshot;
|
|
8
|
+
/** Imperative setters — called by the canvas internals, never by consumers. */
|
|
9
|
+
setNodes(nodes: WorkflowNode[]): void;
|
|
10
|
+
setEdges(edges: WorkflowEdge[]): void;
|
|
11
|
+
setViewport(viewport: Viewport): void;
|
|
12
|
+
setSelection(nodes: ReadonlySet<string>, edges: ReadonlySet<string>): void;
|
|
13
|
+
setConnection(connection: ConnectStartParams | null): void;
|
|
14
|
+
}
|
|
15
|
+
export interface CreateFlowStoreOptions {
|
|
16
|
+
initialNodes?: WorkflowNode[];
|
|
17
|
+
initialEdges?: WorkflowEdge[];
|
|
18
|
+
initialViewport?: Viewport;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Build a FlowStore for one canvas instance. Designed to be created in
|
|
22
|
+
* `useState(() => createFlowStore())` inside FlowCanvas so a single
|
|
23
|
+
* `<FlowCanvas>` owns exactly one store and unmounting cleans it up.
|
|
24
|
+
*/
|
|
25
|
+
export declare function createFlowStore({ initialNodes, initialEdges, initialViewport, }?: CreateFlowStoreOptions): FlowStore;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=createFlowStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createFlowStore.d.ts","sourceRoot":"","sources":["../../../src/workflow/store/createFlowStore.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,EACR,YAAY,EACZ,YAAY,EACb,MAAM,WAAW,CAAC;AAEnB,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC;AAE3B,MAAM,WAAW,SAAS;IACxB,yEAAyE;IACzE,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,IAAI,CAAC;IAC1C,0EAA0E;IAC1E,WAAW,IAAI,iBAAiB,CAAC;IACjC,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IACtC,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3E,aAAa,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAC;CAC5D;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IAC9B,eAAe,CAAC,EAAE,QAAQ,CAAC;CAC5B;AAID;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAC9B,YAAiB,EACjB,YAAiB,EACjB,eAAkC,GACnC,GAAE,sBAA2B,GAAG,SAAS,CA0DzC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ConnectStartParams, FlowStoreSnapshot, Viewport, WorkflowEdge, WorkflowNode } from "../editor";
|
|
2
|
+
/**
|
|
3
|
+
* Generic selector hook. Use for one-off reads in tests or rare cases.
|
|
4
|
+
* Public hooks below cover the common paths.
|
|
5
|
+
*
|
|
6
|
+
* NB: `selector` must be stable (referentially equal across renders) or
|
|
7
|
+
* memoised — otherwise it re-subscribes every render. We do NOT do this
|
|
8
|
+
* automatically because it would mask the bug.
|
|
9
|
+
*/
|
|
10
|
+
export declare function useFlowSelector<T>(selector: (snapshot: FlowStoreSnapshot) => T, isEqual?: (a: T, b: T) => boolean): T;
|
|
11
|
+
export declare function useNodes(): WorkflowNode[];
|
|
12
|
+
export declare function useEdges(): WorkflowEdge[];
|
|
13
|
+
export declare function useViewport(): Viewport;
|
|
14
|
+
export declare function useNodeById(id: string): WorkflowNode | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Subscribe to the `data` slice of a single node by id. Re-renders only
|
|
17
|
+
* when this specific node's `data` reference changes — no cross-node
|
|
18
|
+
* leakage. Pair with `FlowStateBag.updateNodeData(id, patch)` to write.
|
|
19
|
+
*
|
|
20
|
+
* Returns undefined when the node is not present; consumers should
|
|
21
|
+
* branch on that. Typed via the generic so callers get their `TData`
|
|
22
|
+
* shape back without casting.
|
|
23
|
+
*/
|
|
24
|
+
export declare function useNodeData<TData = unknown>(id: string): TData | undefined;
|
|
25
|
+
export declare function useEdgeById(id: string): WorkflowEdge | undefined;
|
|
26
|
+
export declare function useIsNodeSelected(id: string): boolean;
|
|
27
|
+
export declare function useIsEdgeSelected(id: string): boolean;
|
|
28
|
+
export declare function useConnection(): ConnectStartParams | null;
|
|
29
|
+
export declare function useSelection(): {
|
|
30
|
+
nodes: WorkflowNode[];
|
|
31
|
+
edges: WorkflowEdge[];
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=selectors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../../../src/workflow/store/selectors.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,EACR,YAAY,EACZ,YAAY,EACb,MAAM,WAAW,CAAC;AAGnB;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,QAAQ,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,CAAC,EAC5C,OAAO,GAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAmB,GAC3C,CAAC,CAYH;AAID,wBAAgB,QAAQ,IAAI,YAAY,EAAE,CAEzC;AAED,wBAAgB,QAAQ,IAAI,YAAY,EAAE,CAEzC;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEhE;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,GAAG,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAI1E;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEhE;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,wBAAgB,aAAa,IAAI,kBAAkB,GAAG,IAAI,CAEzD;AAED,wBAAgB,YAAY,IAAI;IAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,CAe/E"}
|