@xyflow/vue 2.0.0-next.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.
@@ -0,0 +1,2208 @@
1
+ import { Align, AriaLabelConfig, AriaLabelConfig as AriaLabelConfig$1, ColorMode, ColorMode as ColorMode$1, ColorModeClass, Connection, Connection as Connection$1, ConnectionLineType, ConnectionLineType as ConnectionLineType$1, ConnectionMode, ConnectionMode as ConnectionMode$1, ControlLinePosition, ControlLinePosition as ControlLinePosition$1, ControlPosition, ControlPosition as ControlPosition$1, CoordinateExtent, CoordinateExtent as CoordinateExtent$1, Dimensions, Dimensions as Dimensions$1, DistributivePick, EdgeBase, EdgeRemoveChange, EdgeRemoveChange as EdgeRemoveChange$1, EdgeSelectionChange, EdgeSelectionChange as EdgeSelectionChange$1, FinalConnectionState, FinalConnectionState as FinalConnectionState$1, FitViewOptionsBase, FitViewOptionsBase as FitViewOptions, GetViewport, GetViewport as GetViewport$1, HandleType, HandleType as HandleType$1, InternalNodeBase, NodeBase, NodeConnection, NodeConnection as NodeConnection$1, NodeDimensionChange, NodeDimensionChange as NodeDimensionChange$1, NodePositionChange, NodePositionChange as NodePositionChange$1, NodeRemoveChange, NodeRemoveChange as NodeRemoveChange$1, NodeSelectionChange, NodeSelectionChange as NodeSelectionChange$1, Padding, Padding as Padding$1, PaddingUnit, PaddingWithUnit, PanOnScrollMode, PanOnScrollMode as PanOnScrollMode$1, PanZoomInstance, PanelPosition, Position, Position as Position$1, Project, Project as Project$1, Rect, Rect as Rect$1, ResizeControlVariant, ResizeControlVariant as ResizeControlVariant$1, ResizeControlVariant as ResizeControlVariant$2, ResizeDragEvent, ResizeDragEvent as ResizeDragEvent$1, ResizeParams, ResizeParams as ResizeParams$1, ResizeParamsWithDirection, ResizeParamsWithDirection as ResizeParamsWithDirection$1, SelectionMode, SelectionMode as SelectionMode$1, SelectionRect, SelectionRect as SelectionRect$1, SetCenter, SetCenter as SetCenter$1, SetCenterOptions, SetViewport, SetViewport as SetViewport$1, ShouldResize, ShouldResize as ShouldResize$1, SnapGrid, SnapGrid as SnapGrid$1, Transform, Viewport, Viewport as Viewport$1, ViewportHelperFunctionOptions, ViewportHelperFunctionOptions as ViewportHelperFunctionOptions$1, XYPosition, XYPosition as XYPosition$1, ZIndexMode, ZIndexMode as ZIndexMode$1, ZoomInOut, ZoomInOut as ZoomInOut$1, ZoomTo, ZoomTo as ZoomTo$1, clamp, getBezierEdgeCenter, getBezierPath, getBoundsOfBoxes, getBoundsOfRects, getConnectedEdges, getConnectionStatus, getIncomers, getMarkerId, getNodesBounds, getNodesInside, getOutgoers, getSmoothStepPath, getStraightPath, getViewportForBounds, isEdgeBase, isInternalNodeBase, isMacOs, isNodeBase, pointToRendererPoint, rendererPointToPoint } from "@xyflow/system";
2
+ import { CSSProperties, Component, ComputedRef, DefineComponent, HTMLAttributes, InjectionKey, MaybeRefOrGetter, SVGAttributes, ToRefs, VNode } from "vue";
3
+ import { KeyFilter } from "@vueuse/core";
4
+
5
+ //#region src/components/Background/types.d.ts
6
+ /**
7
+ * The Background can be either a dotted one or a lined one
8
+ *
9
+ * @default 'dots'
10
+ */
11
+ type BackgroundVariant = 'dots' | 'lines';
12
+ interface BackgroundProps {
13
+ /**
14
+ * `<Background>` component id
15
+ *
16
+ * This is necessary when you have multiple flows with backgrounds visible at the same time.
17
+ * If no id is explicitly assigned, an auto-generated one is used.
18
+ *
19
+ * @default `pattern-${vueFlowId}${id ? `-${id}` : ''}`
20
+ */
21
+ id?: string;
22
+ /**
23
+ * The background pattern variant {@link BackgroundVariant}
24
+ *
25
+ * @default 'dots'
26
+ */
27
+ variant?: BackgroundVariant;
28
+ /**
29
+ * The background pattern gap
30
+ *
31
+ * Can be either a number or [xGap: number, yGap: number], defining the gap on the X and Y axis respectively
32
+ *
33
+ * @default 20
34
+ */
35
+ gap?: number | number[];
36
+ /**
37
+ * Background pattern size
38
+ *
39
+ * @default 1
40
+ */
41
+ size?: number;
42
+ /**
43
+ * @default 1
44
+ */
45
+ lineWidth?: number;
46
+ /**
47
+ * The background pattern color
48
+ *
49
+ * This only changes the color of the *pattern*, not the background color itself.
50
+ *
51
+ * If you want to change the background color itself, you can apply a bg-color to the `<VueFlow>` element instead
52
+ */
53
+ color?: string;
54
+ /**
55
+ * Background x-coordinate (offset x)
56
+ *
57
+ * @default 0
58
+ */
59
+ x?: number;
60
+ /**
61
+ * Background y-coordinate (offset y)
62
+ * @default 0
63
+ */
64
+ y?: number;
65
+ /**
66
+ * Background pattern offset
67
+ *
68
+ * @default 0
69
+ */
70
+ offset?: number | [number, number];
71
+ }
72
+ //#endregion
73
+ //#region src/components/Background/Background.vue.d.ts
74
+ declare const _default: typeof __VLS_export$14;
75
+ declare const __VLS_export$14: __VLS_WithSlots$10<import("vue").DefineComponent<BackgroundProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<BackgroundProps> & Readonly<{}>, {
76
+ x: number;
77
+ y: number;
78
+ offset: number | [number, number];
79
+ size: number;
80
+ variant: BackgroundVariant;
81
+ gap: number | number[];
82
+ lineWidth: number;
83
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
84
+ 'pattern-container'?: (props: {
85
+ id: string;
86
+ }) => any;
87
+ } & {
88
+ pattern?: (props: {}) => any;
89
+ } & {
90
+ default?: (props: {
91
+ id: string;
92
+ }) => any;
93
+ }>;
94
+ type __VLS_WithSlots$10<T, S> = T & {
95
+ new (): {
96
+ $slots: S;
97
+ };
98
+ };
99
+ //#endregion
100
+ //#region src/components/Controls/ControlButton.vue.d.ts
101
+ declare const _default$2: typeof __VLS_export$13;
102
+ declare const __VLS_export$13: __VLS_WithSlots$9<import("vue").DefineComponent<{
103
+ disabled?: boolean; /** accessible label; applied as both `aria-label` and `title` (mirrors xyflow) */
104
+ label?: string;
105
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
106
+ click: (payload: MouseEvent) => any;
107
+ }, string, import("vue").PublicProps, Readonly<{
108
+ disabled?: boolean; /** accessible label; applied as both `aria-label` and `title` (mirrors xyflow) */
109
+ label?: string;
110
+ }> & Readonly<{
111
+ onClick?: ((payload: MouseEvent) => any) | undefined;
112
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
113
+ default?: (props: {}) => any;
114
+ }>;
115
+ type __VLS_WithSlots$9<T, S> = T & {
116
+ new (): {
117
+ $slots: S;
118
+ };
119
+ };
120
+ //#endregion
121
+ //#region src/components/Edges/BaseEdge.vue.d.ts
122
+ declare const _default$1: typeof __VLS_export$12;
123
+ declare const __VLS_export$12: import("vue").DefineComponent<BaseEdgeProps, {
124
+ pathEl: import("vue").ShallowRef<SVGPathElement | null, SVGPathElement | null>;
125
+ interactionEl: import("vue").ShallowRef<SVGPathElement | null, SVGPathElement | null>;
126
+ labelEl: import("vue").ShallowRef<SVGGElement | null, SVGGElement | null>;
127
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<BaseEdgeProps> & Readonly<{}>, {
128
+ interactionWidth: number;
129
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
130
+ //#endregion
131
+ //#region src/components/Edges/BezierEdge.d.ts
132
+ declare const BezierEdge: import("vue").DefineComponent<BezierEdgeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<BezierEdgeProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
133
+ //#endregion
134
+ //#region src/components/Edges/EdgeLabelRenderer.vue.d.ts
135
+ declare const _default$4: typeof __VLS_export$11;
136
+ declare const __VLS_export$11: __VLS_WithSlots$8<import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, {
137
+ default?: (props: {}) => any;
138
+ }>;
139
+ type __VLS_WithSlots$8<T, S> = T & {
140
+ new (): {
141
+ $slots: S;
142
+ };
143
+ };
144
+ //#endregion
145
+ //#region src/components/Edges/EdgeText.vue.d.ts
146
+ declare const _default$5: typeof __VLS_export$10;
147
+ declare const __VLS_export$10: __VLS_WithSlots$7<import("vue").DefineComponent<EdgeTextProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<EdgeTextProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
148
+ default?: (props: {}) => any;
149
+ }>;
150
+ type __VLS_WithSlots$7<T, S> = T & {
151
+ new (): {
152
+ $slots: S;
153
+ };
154
+ };
155
+ //#endregion
156
+ //#region src/components/Edges/SimpleBezierEdge.d.ts
157
+ interface GetSimpleBezierPathParams {
158
+ sourceX: number;
159
+ sourceY: number;
160
+ sourcePosition?: Position$1;
161
+ targetX: number;
162
+ targetY: number;
163
+ targetPosition?: Position$1;
164
+ }
165
+ /**
166
+ * Get a simple bezier path from source to target handle (no curvature)
167
+ * @public
168
+ *
169
+ * @param simpleBezierPathParams
170
+ * @param simpleBezierPathParams.sourceX - The x position of the source handle
171
+ * @param simpleBezierPathParams.sourceY - The y position of the source handle
172
+ * @param simpleBezierPathParams.sourcePosition - The position of the source handle (default: Position.Bottom)
173
+ * @param simpleBezierPathParams.targetX - The x position of the target handle
174
+ * @param simpleBezierPathParams.targetY - The y position of the target handle
175
+ * @param simpleBezierPathParams.targetPosition - The position of the target handle (default: Position.Top)
176
+ * @returns A path string you can use in an SVG, the labelX and labelY position (center of path) and offsetX, offsetY between source handle and label
177
+ */
178
+ declare function getSimpleBezierPath({
179
+ sourceX,
180
+ sourceY,
181
+ sourcePosition,
182
+ targetX,
183
+ targetY,
184
+ targetPosition
185
+ }: GetSimpleBezierPathParams): [path: string, labelX: number, labelY: number, offsetX: number, offsetY: number];
186
+ declare const SimpleBezierEdge: import("vue").DefineComponent<SimpleBezierEdgeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SimpleBezierEdgeProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
187
+ //#endregion
188
+ //#region src/components/Edges/SmoothStepEdge.d.ts
189
+ declare const SmoothStepEdge: import("vue").DefineComponent<SmoothStepEdgeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<SmoothStepEdgeProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
190
+ //#endregion
191
+ //#region src/components/Edges/StepEdge.d.ts
192
+ declare const StepEdge: import("vue").DefineComponent<StepEdgeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<StepEdgeProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
193
+ //#endregion
194
+ //#region src/components/Edges/StraightEdge.d.ts
195
+ declare const StraightEdge: import("vue").DefineComponent<StraightEdgeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<StraightEdgeProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
196
+ //#endregion
197
+ //#region src/components/Handle/Handle.vue.d.ts
198
+ declare const _default$6: typeof __VLS_export$9;
199
+ declare const __VLS_export$9: __VLS_WithSlots$6<import("vue").DefineComponent<HandleProps, {
200
+ handleClick: (event: MouseEvent) => void;
201
+ handlePointerDown: (event: MouseTouchEvent) => void;
202
+ onClick: (event: MouseEvent) => void;
203
+ onPointerDown: (event: MouseEvent | TouchEvent) => void;
204
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<HandleProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
205
+ default?: (props: {
206
+ id: string | undefined;
207
+ }) => any;
208
+ }>;
209
+ type __VLS_WithSlots$6<T, S> = T & {
210
+ new (): {
211
+ $slots: S;
212
+ };
213
+ };
214
+ //#endregion
215
+ //#region src/utils/changes.d.ts
216
+ /**
217
+ * Apply element changes IMMUTABLY (xyflow/react `applyNodeChanges` semantics): returns a NEW array where
218
+ * changed elements are NEW objects and unchanged elements are reused by reference. Immutability is required
219
+ * by the node split — the store re-adopts the result via `adoptUserNodes`, whose `checkEquality` reuses the
220
+ * existing `InternalNode` when the user-node reference is unchanged; mutating in place would keep the same
221
+ * reference and re-adopt a stale internal node. Reusing unchanged refs keeps re-adoption O(changed).
222
+ *
223
+ * `position`/`dimensions` changes are gated on `isNode` (user `Node`s have no `internals`, so the old
224
+ * `isInternalNode` guard would skip them) — edges never receive those change types anyway.
225
+ */
226
+ declare function applyChanges<T extends Node | Edge = Node | Edge, C extends ElementChange = (T extends InternalNode ? NodeChange : EdgeChange)>(changes: C[], elements: T[]): T[];
227
+ /** @deprecated Prefer the store instance's apply methods (from `useVueFlow` or the `onInit` instance). */
228
+ declare function applyEdgeChanges(changes: EdgeChange[], edges: Edge[]): Edge[];
229
+ /** @deprecated Prefer the store instance's apply methods (from `useVueFlow` or the `onInit` instance). */
230
+ declare function applyNodeChanges(changes: NodeChange[], nodes: InternalNode[]): InternalNode[];
231
+ //#endregion
232
+ //#region src/utils/createExtendedEventHook.d.ts
233
+ /**
234
+ * vue-flow's own event-hook types. We intentionally do NOT reuse `@vueuse/core`'s `EventHook*` types:
235
+ * since v14 its `Callback<T>` spreads array payloads (for `T extends any[]` it becomes
236
+ * `(...param: T) => void`), which is incompatible with vue-flow's single-array-payload hooks — e.g.
237
+ * `onNodesChange((changes: NodeChange[]) => void)` and `trigger(changes)`. Owning these types keeps the
238
+ * public hook contract stable regardless of `@vueuse/core`'s internal callback variance.
239
+ */
240
+ type EventHookOn<T = any> = (fn: (param: T) => void) => {
241
+ off: () => void;
242
+ };
243
+ type EventHookOff<T = any> = (fn: (param: T) => void) => void;
244
+ type EventHookTrigger<T = any> = (param: T) => Promise<unknown[]>;
245
+ interface EventHook<T = any> {
246
+ on: EventHookOn<T>;
247
+ off: EventHookOff<T>;
248
+ trigger: EventHookTrigger<T>;
249
+ }
250
+ interface EventHookExtended<T> extends EventHook<T> {
251
+ /** true if any user listeners are registered (emitter ignored) */
252
+ hasListeners: () => boolean;
253
+ /** current user listeners (read-only; do not mutate externally) */
254
+ listeners: ReadonlySet<(param: T) => void>;
255
+ /** wire a single external emitter (e.g., for `emit`) */
256
+ setEmitter: (fn: (param: T) => void) => void;
257
+ /** remove the external emitter */
258
+ removeEmitter: () => void;
259
+ /** wire a function to detect if any emit listeners exist (e.g., for `$listeners` in Vue 2) */
260
+ setHasEmitListeners: (fn: () => boolean) => void;
261
+ /** remove the emit listeners detector */
262
+ removeHasEmitListeners: () => void;
263
+ }
264
+ //#endregion
265
+ //#region src/utils/errors.d.ts
266
+ declare enum ErrorCode {
267
+ MISSING_STYLES = "MISSING_STYLES",
268
+ MISSING_VIEWPORT_DIMENSIONS = "MISSING_VIEWPORT_DIMENSIONS",
269
+ NODE_INVALID = "NODE_INVALID",
270
+ NODE_NOT_FOUND = "NODE_NOT_FOUND",
271
+ NODE_MISSING_PARENT = "NODE_MISSING_PARENT",
272
+ NODE_TYPE_MISSING = "NODE_TYPE_MISSING",
273
+ NODE_EXTENT_INVALID = "NODE_EXTENT_INVALID",
274
+ EDGE_INVALID = "EDGE_INVALID",
275
+ EDGE_NOT_FOUND = "EDGE_NOT_FOUND",
276
+ EDGE_SOURCE_MISSING = "EDGE_SOURCE_MISSING",
277
+ EDGE_TARGET_MISSING = "EDGE_TARGET_MISSING",
278
+ EDGE_TYPE_MISSING = "EDGE_TYPE_MISSING",
279
+ EDGE_SOURCE_TARGET_MISSING = "EDGE_SOURCE_TARGET_MISSING",
280
+ USE_VUE_FLOW_OUTSIDE_PROVIDER = "USE_VUE_FLOW_OUTSIDE_PROVIDER"
281
+ }
282
+ declare const messages: {
283
+ readonly MISSING_STYLES: () => string;
284
+ readonly MISSING_VIEWPORT_DIMENSIONS: () => string;
285
+ readonly NODE_INVALID: (id?: string) => string;
286
+ readonly NODE_NOT_FOUND: (id: string | null) => string;
287
+ readonly NODE_MISSING_PARENT: (id: string, parentId: string) => string;
288
+ readonly NODE_TYPE_MISSING: (type: string) => string;
289
+ readonly NODE_EXTENT_INVALID: (id: string) => string;
290
+ readonly EDGE_INVALID: (id: string) => string;
291
+ readonly EDGE_SOURCE_MISSING: (id: string, source: string) => string;
292
+ readonly EDGE_TARGET_MISSING: (id: string, target: string) => string;
293
+ readonly EDGE_TYPE_MISSING: (type: string) => string;
294
+ readonly EDGE_SOURCE_TARGET_MISSING: (id: string, source: string, target: string) => string;
295
+ readonly EDGE_NOT_FOUND: (id: string) => string;
296
+ readonly USE_VUE_FLOW_OUTSIDE_PROVIDER: () => string;
297
+ };
298
+ type ErrorArgs<T extends ErrorCode> = (typeof messages)[T] extends ((...args: any[]) => string) ? Parameters<(typeof messages)[T]> : never;
299
+ declare class VueFlowError<T extends ErrorCode = ErrorCode, Args extends ErrorArgs<T> = ErrorArgs<T>> extends Error {
300
+ name: string;
301
+ code: T;
302
+ args: Args;
303
+ constructor(code: T, ...args: Args);
304
+ }
305
+ declare function isErrorOfType<T extends ErrorCode>(error: VueFlowError, code: T): error is VueFlowError<T>;
306
+ //#endregion
307
+ //#region src/utils/graph.d.ts
308
+ declare function isEdge<EdgeType extends Edge = Edge>(element: unknown): element is EdgeType;
309
+ declare function isNode<NodeType extends Node = Node>(element: unknown): element is NodeType;
310
+ declare function isInternalNode<NodeType extends Node = Node>(element: unknown): element is InternalNode<NodeType>;
311
+ declare function connectionExists(edge: Edge | Connection$1, edges: Edge[]): boolean;
312
+ //#endregion
313
+ //#region src/types/handle.d.ts
314
+ interface HandleElement extends XYPosition$1, Dimensions$1 {
315
+ id?: string | null;
316
+ position: Position$1;
317
+ type: HandleType$1;
318
+ nodeId: string;
319
+ }
320
+ interface ConnectingHandle extends XYPosition$1 {
321
+ nodeId: string;
322
+ type: HandleType$1;
323
+ id?: string | null;
324
+ position: Position$1;
325
+ }
326
+ /** A valid connection function can determine if an attempted connection is valid or not, i.e. abort creating a new edge */
327
+ type ValidConnectionFunc = (connection: Connection$1, elements: {
328
+ edges: Edge[];
329
+ nodes: Node[];
330
+ sourceNode: InternalNode;
331
+ targetNode: InternalNode;
332
+ }) => boolean;
333
+ type HandleConnectableFunc = (node: InternalNode, connectedEdges: Edge[]) => boolean;
334
+ /**
335
+ * set to true to allow unlimited connections,
336
+ * single for only one connection
337
+ * or use a cb function to determine connect-ability
338
+ *
339
+ * if set to single and the handle already has more than one connection, it will act the same as setting it to false
340
+ */
341
+ type HandleConnectable = boolean | number | 'single' | HandleConnectableFunc;
342
+ interface HandleProps {
343
+ /** Unique id of handle element */
344
+ id?: string;
345
+ /** Handle type (source / target) {@link HandleType} */
346
+ type?: HandleType$1;
347
+ /** Handle position (top, bottom, left, right) {@link Position} */
348
+ position?: Position$1;
349
+ /** A valid connection func {@link ValidConnectionFunc} */
350
+ isValidConnection?: ValidConnectionFunc;
351
+ /** Enable/disable connecting to handle altogether */
352
+ isConnectable?: HandleConnectable;
353
+ /** Can this handle be used to *start* a connection */
354
+ connectableStart?: boolean;
355
+ /** Can this handle be used to *end* a connection */
356
+ connectableEnd?: boolean;
357
+ }
358
+ interface IsValidParams {
359
+ handle: ConnectingHandle | null;
360
+ connectionMode: ConnectionMode$1;
361
+ fromNodeId: string;
362
+ fromHandleId: string | null;
363
+ fromType: HandleType$1;
364
+ isValidConnection?: ValidConnectionFunc;
365
+ doc: Document | ShadowRoot;
366
+ lib: string;
367
+ flowId: string | null;
368
+ }
369
+ interface Result {
370
+ handleDomNode: Element | null;
371
+ isValid: boolean;
372
+ connection: Connection$1 | null;
373
+ toHandle: ConnectingHandle | null;
374
+ }
375
+ //#endregion
376
+ //#region src/types/connection.d.ts
377
+ interface ConnectionLineOptions {
378
+ type?: ConnectionLineType$1;
379
+ style?: CSSProperties;
380
+ class?: ClassValue;
381
+ markerEnd?: EdgeMarkerType;
382
+ markerStart?: EdgeMarkerType;
383
+ }
384
+ type Connector = (params: Connection$1) => Promise<(Connection$1 & Partial<Edge>) | false> | ((Connection$1 & Partial<Edge>) | false);
385
+ type ConnectionStatus = 'valid' | 'invalid';
386
+ /**
387
+ * An ongoing connection, mirroring xyflow/react's `ConnectionState` (returned by `useConnection`).
388
+ * Handles are vue-flow `ConnectingHandle`s and nodes are `InternalNode`s (the resolved `InternalNode`s).
389
+ */
390
+ interface ConnectionInProgress<NodeType extends Node = Node> {
391
+ inProgress: true;
392
+ /** `true`/`false` when over a handle or inside the connection radius, otherwise `null` */
393
+ isValid: boolean | null;
394
+ /** xy start position of the connection */
395
+ from: XYPosition$1;
396
+ /** the handle the connection started from */
397
+ fromHandle: ConnectingHandle;
398
+ /** the side of the start handle */
399
+ fromPosition: Position$1;
400
+ /** the node the connection started from */
401
+ fromNode: InternalNode<NodeType>;
402
+ /** xy end position of the connection (the current pointer position) */
403
+ to: XYPosition$1;
404
+ /** the handle the connection currently ends on, or `null` */
405
+ toHandle: ConnectingHandle | null;
406
+ /** the side of the end handle, or `null` */
407
+ toPosition: Position$1 | null;
408
+ /** the node the connection currently ends on, or `null` */
409
+ toNode: InternalNode<NodeType> | null;
410
+ /** the current pointer position */
411
+ pointer: XYPosition$1;
412
+ }
413
+ /** No connection in progress — the resting `ConnectionState`. */
414
+ interface NoConnection {
415
+ inProgress: false;
416
+ isValid: null;
417
+ from: null;
418
+ fromHandle: null;
419
+ fromPosition: null;
420
+ fromNode: null;
421
+ to: null;
422
+ toHandle: null;
423
+ toPosition: null;
424
+ toNode: null;
425
+ pointer: null;
426
+ }
427
+ /**
428
+ * The full connection state bundled for `useConnection`, mirroring xyflow/react's `ConnectionState`.
429
+ */
430
+ type ConnectionState<NodeType extends Node = Node> = ConnectionInProgress<NodeType> | NoConnection;
431
+ /** The source nodes params when connection is initiated */
432
+ interface OnConnectStartParams {
433
+ /** Source node id */
434
+ nodeId?: string;
435
+ /** Source handle id */
436
+ handleId: string | null;
437
+ /** Source handle type */
438
+ handleType?: HandleType$1;
439
+ }
440
+ interface ConnectionLineProps<NodeType extends Node = Node> {
441
+ /** X start position of the connection line */
442
+ fromX: number;
443
+ /** Y start position of the connection line */
444
+ fromY: number;
445
+ /** the side of the start handle */
446
+ fromPosition: Position$1;
447
+ /** X end position of the connection line (the current pointer) */
448
+ toX: number;
449
+ /** Y end position of the connection line (the current pointer) */
450
+ toY: number;
451
+ /** the side of the end handle */
452
+ toPosition: Position$1;
453
+ /** the node the connection started from */
454
+ fromNode: InternalNode<NodeType>;
455
+ /** the handle the connection started from (not the DOM element) */
456
+ fromHandle: HandleElement | null;
457
+ /** the node the connection currently ends on, or `null` */
458
+ toNode: InternalNode<NodeType> | null;
459
+ /** the handle the connection currently ends on (not the DOM element), or `null` */
460
+ toHandle: HandleElement | null;
461
+ /** marker url */
462
+ markerStart?: string;
463
+ /** marker url */
464
+ markerEnd?: string;
465
+ /** status of the connection (valid, invalid) */
466
+ connectionStatus: ConnectionStatus | null;
467
+ /** the raw pointer position in flow coordinates (unsnapped, unlike `toX`/`toY`) */
468
+ pointer: XYPosition$1;
469
+ }
470
+ type ConnectionLookup = Map<string, Map<string, NodeConnection$1>>;
471
+ //#endregion
472
+ //#region src/composables/storeToRefs.d.ts
473
+ /**
474
+ * Destructure the reactive state from {@link useStore} into refs without losing reactivity (Pinia's
475
+ * `storeToRefs`). Destructuring the reactive state object directly hands back plain values for
476
+ * scalar/array fields; this projects them to refs instead:
477
+ *
478
+ * ```ts
479
+ * const { nodes, transform } = storeToRefs(useStore()) // Ref<Node[]>, Ref<Transform>
480
+ * ```
481
+ *
482
+ * Reference-type fields (the `nodeLookup`/`parentLookup`/`edgeLookup`/`connectionLookup` Maps) stay
483
+ * reactive when destructured straight off `useStore()` — you only need this for the value-type fields.
484
+ *
485
+ * @public
486
+ */
487
+ declare function storeToRefs<NodeType extends Node = Node, EdgeType extends Edge = Edge>(store: VueFlowState<NodeType, EdgeType>): ToRefs<VueFlowState<NodeType, EdgeType>>;
488
+ //#endregion
489
+ //#region src/composables/useEdge.d.ts
490
+ /**
491
+ * Composable that provides access to an edge object and it's dom element
492
+ *
493
+ * If no edge id is provided, the edge id is injected from context
494
+ *
495
+ * If you do not provide an id, this composable has to be called in a child of your custom edge component, or it will throw
496
+ *
497
+ * @public
498
+ * @param id - The id of the edge to access
499
+ * @returns the edge id, the edge (a `ComputedRef`) and the edge dom element
500
+ */
501
+ declare function useEdge<EdgeType extends Edge = Edge>(id?: string): {
502
+ id: string;
503
+ edge: import("vue").ComputedRef<EdgeType | undefined>;
504
+ edgeEl: import("vue").ShallowRef<SVGElement | null>;
505
+ };
506
+ //#endregion
507
+ //#region src/composables/useHandle.d.ts
508
+ interface UseHandleProps {
509
+ handleId: MaybeRefOrGetter<string | null>;
510
+ nodeId: MaybeRefOrGetter<string>;
511
+ type: MaybeRefOrGetter<HandleType$1>;
512
+ isValidConnection?: MaybeRefOrGetter<ValidConnectionFunc | null>;
513
+ reconnectHandleType?: MaybeRefOrGetter<HandleType$1>;
514
+ onReconnectStart?: (event: MouseTouchEvent) => void;
515
+ onReconnect?: (event: MouseTouchEvent, connection: Connection$1) => void;
516
+ onReconnectEnd?: (event: MouseTouchEvent, connectionState: FinalConnectionState$1<InternalNode>) => void;
517
+ }
518
+ /**
519
+ * Connection-drag composable. Drag-to-connect is delegated to `@xyflow/system`'s `XYHandle` instance
520
+ * (same pattern as `XYDrag` / `XYResizer`). Click-to-connect stays vue-flow specific because the click
521
+ * path interacts with the richer `ValidConnectionFunc` signature (which receives full source/target
522
+ * `InternalNode`s on top of the bare `Connection`).
523
+ *
524
+ * Generally it's recommended to use the `<Handle />` component instead of this composable.
525
+ *
526
+ * @public
527
+ */
528
+ declare function useHandle({
529
+ handleId,
530
+ nodeId,
531
+ type,
532
+ isValidConnection,
533
+ reconnectHandleType,
534
+ onReconnectStart,
535
+ onReconnect,
536
+ onReconnectEnd
537
+ }: UseHandleProps): {
538
+ handlePointerDown: (event: MouseTouchEvent) => void;
539
+ handleClick: (event: MouseEvent) => void;
540
+ };
541
+ //#endregion
542
+ //#region src/composables/useInternalNode.d.ts
543
+ /**
544
+ * Access the enriched {@link InternalNode} (store-computed `internals.{positionAbsolute, z, handleBounds}` +
545
+ * authoritative `measured`) for an id, as a `computed` that re-resolves whenever the store re-adopts the node.
546
+ *
547
+ * Mirrors xyflow/react's `useInternalNode`. If no id is given it is read from node context (call inside a
548
+ * custom node). Use {@link useNode} for the user-facing node + dom element + connected edges.
549
+ *
550
+ * The id accepts a ref/getter so it can track a reactive source — e.g. a custom edge resolving its
551
+ * endpoint with `useInternalNode(() => props.source)` stays correct after a reconnect changes the source.
552
+ *
553
+ * @public
554
+ * @param id - The id of the node to access (a value, ref, or getter; defaults to the node context id)
555
+ */
556
+ declare function useInternalNode<NodeType extends Node = Node>(id?: MaybeRefOrGetter<string | undefined>): import("vue").ComputedRef<InternalNode<NodeType> | undefined>;
557
+ //#endregion
558
+ //#region src/composables/useKeyPress.d.ts
559
+ interface UseKeyPressOptions {
560
+ target?: MaybeRefOrGetter<EventTarget | null | undefined>;
561
+ actInsideInputWithModifier?: MaybeRefOrGetter<boolean>;
562
+ preventDefault?: MaybeRefOrGetter<boolean>;
563
+ }
564
+ /**
565
+ * Composable that returns a boolean value if a key is pressed
566
+ *
567
+ * @public
568
+ * @param keyFilter - Can be a boolean, a string, an array of strings or a function that returns a boolean. If it's a boolean, it will act as if the key is always pressed. If it's a string, it will return true if a key matching that string is pressed. If it's an array of strings, it will return true if any of the strings match a key being pressed, or a combination (e.g. ['ctrl+a', 'ctrl+b'])
569
+ * @param options - Options object
570
+ */
571
+ declare function useKeyPress(keyFilter: MaybeRefOrGetter<KeyFilter | boolean | null>, options?: UseKeyPressOptions): import("vue").ShallowRef<boolean, boolean>;
572
+ //#endregion
573
+ //#region src/composables/useNode.d.ts
574
+ /**
575
+ * Composable that provides access to a node object, parent node object, connected edges and it's dom element
576
+ *
577
+ * If no node id is provided, the node id is injected from context
578
+ *
579
+ * If you do not provide an id, this composable has to be called in a child of your custom node component, or it will throw
580
+ *
581
+ * @public
582
+ * @param id - The id of the node to access
583
+ * @returns the node id, the node (a `ComputedRef`), the node dom element, it's parent and connected edges
584
+ */
585
+ declare function useNode<NodeType extends Node = Node>(id?: string): {
586
+ id: string;
587
+ nodeEl: import("vue").ShallowRef<HTMLDivElement | null>;
588
+ node: import("vue").ComputedRef<InternalNode<NodeType> | undefined>;
589
+ parentNode: import("vue").ComputedRef<InternalNode<NodeType> | undefined>;
590
+ connectedEdges: import("vue").ComputedRef<Edge[]>;
591
+ };
592
+ //#endregion
593
+ //#region src/composables/useStore.d.ts
594
+ /**
595
+ * Access the raw reactive state of the surrounding flow — every {@link VueFlowState} field plus the
596
+ * lookups, read directly (`store.nodes`, `store.transform`, `store.nodeLookup`, …; no `.value`, like
597
+ * `xyflow/svelte`'s store). Mirrors `useStore` in `xyflow/react`+`svelte`.
598
+ *
599
+ * Reading a field inside a `computed`/`watch`/template tracks it reactively; reading it in a plain
600
+ * callback is just a current-value read. To destructure scalar/array fields as refs, wrap the result in
601
+ * `storeToRefs`; reference-type lookups (`nodeLookup`, …) can be destructured directly.
602
+ *
603
+ * For actions, getters, and event hooks use {@link useVueFlow} instead. Throws if called outside a
604
+ * provider (or outside a component `setup`).
605
+ *
606
+ * @public
607
+ * @returns the reactive state for the current context
608
+ */
609
+ declare function useStore<NodeType extends Node = Node, EdgeType extends Edge = Edge>(): VueFlowState<NodeType, EdgeType>;
610
+ //#endregion
611
+ //#region src/composables/useViewportHelper.d.ts
612
+ interface ViewportHelper<NodeType extends Node = Node> extends ViewportFunctions<NodeType> {
613
+ viewportInitialized: boolean;
614
+ screenToFlowPosition: Project$1;
615
+ flowToScreenPosition: Project$1;
616
+ }
617
+ //#endregion
618
+ //#region src/composables/useVueFlow.d.ts
619
+ /**
620
+ * Access the VueFlow instance for the surrounding flow — actions, computed getters, and event hooks
621
+ * (mirrors `useReactFlow` / `useSvelteFlow`). For the raw reactive state (`nodes`, `transform`,
622
+ * lookups, …) use {@link useStore} (and `storeToRefs` to destructure it).
623
+ *
624
+ * Pure context consumer — resolves the instance provided by the nearest `<VueFlow>` /
625
+ * `<VueFlowProvider>` ancestor. It takes **no arguments**: there is no global registry, no
626
+ * lookup-by-id, and no store creation here. To create/own a store, render a `<VueFlowProvider>` (or
627
+ * `<VueFlow>`, which provides its own); to share one across components, wrap them in a common
628
+ * `<VueFlowProvider>`.
629
+ *
630
+ * Throws if called outside a provider (or outside a component `setup`, where `inject` is unavailable).
631
+ *
632
+ * @public
633
+ * @returns the VueFlow instance for the current context
634
+ */
635
+ declare function useVueFlow<NodeType extends Node = Node, EdgeType extends Edge = Edge>(): VueFlowInstance<NodeType, EdgeType>;
636
+ //#endregion
637
+ //#region src/types/store.d.ts
638
+ type NodeLookup<NodeType extends Node = Node> = Map<string, InternalNode<NodeType>>;
639
+ type EdgeLookup<EdgeType extends Edge = Edge> = Map<string, EdgeType>;
640
+ interface UpdateNodeDimensionsParams {
641
+ id: string;
642
+ nodeElement: HTMLDivElement;
643
+ forceUpdate?: boolean;
644
+ }
645
+ interface State<NodeType extends Node = Node, EdgeType extends Edge = Edge> extends Omit<FlowProps<NodeType, EdgeType>, 'id' | 'nodes' | 'edges' | 'fitView'> {
646
+ /** Vue flow element ref */
647
+ vueFlowRef: HTMLDivElement | null;
648
+ /** Vue flow viewport element */
649
+ viewportRef: HTMLDivElement | null;
650
+ /** Event hooks, you can manipulate the triggers at your own peril */
651
+ readonly hooks: FlowHooks<NodeType, EdgeType>;
652
+ /** all stored nodes (the user-facing `Node`s; enriched `InternalNode`s live in `nodeLookup`) */
653
+ nodes: NodeType[];
654
+ /** all stored edges — the user-facing `Edge`s, stored verbatim (no enriched edge representation) */
655
+ edges: EdgeType[];
656
+ /** id → enriched `InternalNode` (`internals`/`measured`); the canonical source for node-derived data */
657
+ readonly nodeLookup: NodeLookup<NodeType>;
658
+ /** parentId → map of child id → child `InternalNode`. Matches `@xyflow/system`'s `ParentLookup`. */
659
+ readonly parentLookup: Map<string, Map<string, InternalNode<NodeType>>>;
660
+ /** id → user-facing `Edge` */
661
+ readonly edgeLookup: EdgeLookup<EdgeType>;
662
+ connectionLookup: ConnectionLookup;
663
+ /** The panzoom instance */
664
+ panZoom: PanZoomInstance | null;
665
+ /** use setMinZoom action to change minZoom */
666
+ minZoom: number;
667
+ /** use setMaxZoom action to change maxZoom */
668
+ maxZoom: number;
669
+ defaultViewport: Partial<Viewport$1>;
670
+ /** use setTranslateExtent action to change translateExtent */
671
+ translateExtent: CoordinateExtent$1;
672
+ nodeExtent: CoordinateExtent$1;
673
+ nodeOrigin: NodeOrigin;
674
+ colorMode: ColorMode$1;
675
+ /** viewport dimensions - do not change! */
676
+ readonly dimensions: Dimensions$1;
677
+ /** canonical viewport transform `[x, y, zoom]` (the `@xyflow/system` representation) - do not change! Read `viewport` for the `{ x, y, zoom }` shape. */
678
+ readonly transform: Transform;
679
+ /** if true will skip rendering any elements currently not inside viewport until they become visible */
680
+ onlyRenderVisibleElements: boolean;
681
+ nodesSelectionActive: boolean;
682
+ userSelectionActive: boolean;
683
+ multiSelectionActive: boolean;
684
+ deleteKeyCode: KeyFilter | null;
685
+ selectionKeyCode: KeyFilter | null;
686
+ selectionOnDrag: boolean;
687
+ multiSelectionKeyCode: KeyFilter | null;
688
+ zoomActivationKeyCode: KeyFilter | null;
689
+ panActivationKeyCode: KeyFilter | null;
690
+ connectionMode: ConnectionMode$1;
691
+ connectionLineOptions: ConnectionLineOptions;
692
+ connectionStartHandle: ConnectingHandle | null;
693
+ connectionEndHandle: ConnectingHandle | null;
694
+ connectionClickStartHandle: ConnectingHandle | null;
695
+ /** the raw pointer position during a connection drag (screen coords); the snapped end is `connectionEndHandle` */
696
+ connectionPosition: XYPosition$1;
697
+ connectionRadius: number;
698
+ connectionDragThreshold: number;
699
+ connectionStatus: ConnectionStatus | null;
700
+ isValidConnection: ValidConnectionFunc | null;
701
+ onBeforeDelete: OnBeforeDelete<NodeType, EdgeType> | null;
702
+ connectOnClick: boolean;
703
+ reconnectRadius: number;
704
+ snapToGrid: boolean;
705
+ snapGrid: SnapGrid$1;
706
+ defaultMarkerColor: string | null;
707
+ edgesReconnectable: EdgeReconnectable;
708
+ edgesFocusable: boolean;
709
+ nodesFocusable: boolean;
710
+ nodesDraggable: boolean;
711
+ nodesConnectable: boolean;
712
+ nodeDragThreshold: number;
713
+ elementsSelectable: boolean;
714
+ selectNodesOnDrag: boolean;
715
+ userSelectionRect: SelectionRect$1 | null;
716
+ selectionMode: SelectionMode$1;
717
+ panOnDrag: boolean | number[];
718
+ zoomOnScroll: boolean;
719
+ zoomOnPinch: boolean;
720
+ panOnScroll: boolean;
721
+ panOnScrollSpeed: number;
722
+ panOnScrollMode: PanOnScrollMode$1;
723
+ paneClickDistance: number;
724
+ nodeClickDistance: number;
725
+ zoomOnDoubleClick: boolean;
726
+ preventScrolling: boolean;
727
+ paneDragging: boolean;
728
+ initialized: boolean;
729
+ autoApplyChanges: boolean;
730
+ autoConnect: boolean | Connector;
731
+ fitViewOnInit: boolean;
732
+ fitViewOnInitDone: boolean;
733
+ noDragClassName: 'nodrag' | string;
734
+ noWheelClassName: 'nowheel' | string;
735
+ noPanClassName: 'nopan' | string;
736
+ defaultEdgeOptions: DefaultEdgeOptions | undefined;
737
+ elevateEdgesOnSelect: boolean;
738
+ elevateNodesOnSelect: boolean;
739
+ zIndexMode: ZIndexMode$1;
740
+ autoPanOnConnect: boolean;
741
+ autoPanOnNodeDrag: boolean;
742
+ autoPanOnNodeFocus: boolean;
743
+ autoPanOnSelection: boolean;
744
+ /**
745
+ * The speed at which the viewport pans while dragging a node or a selection box.
746
+ * @default 15
747
+ */
748
+ autoPanSpeed: number;
749
+ disableKeyboardA11y: boolean;
750
+ /** the merged aria-label / a11y text config (defaults overlaid with the `ariaLabelConfig` prop) */
751
+ ariaLabelConfig: AriaLabelConfig$1;
752
+ ariaLiveMessage: string;
753
+ }
754
+ type SetNodes<NodeType extends Node = Node> = (nodes: NodeType[] | ((nodes: NodeType[]) => NodeType[])) => void;
755
+ type SetEdges<EdgeType extends Edge = Edge> = (edges: EdgeType[] | ((edges: EdgeType[]) => EdgeType[])) => void;
756
+ type AddNodes<NodeType extends Node = Node> = (nodes: NodeType | NodeType[] | ((nodes: NodeType[]) => NodeType | NodeType[])) => void;
757
+ type RemoveNodes<NodeType extends Node = Node> = (nodes: (string | NodeType) | (NodeType | string)[] | ((nodes: NodeType[]) => (string | NodeType) | (NodeType | string)[]), removeConnectedEdges?: boolean, removeChildren?: boolean) => void;
758
+ type RemoveEdges<EdgeType extends Edge = Edge> = (edges: (string | EdgeType) | (EdgeType | string)[] | ((edges: EdgeType[]) => (string | EdgeType) | (EdgeType | string)[])) => void;
759
+ /**
760
+ * Delete the given nodes/edges along with their connected edges and child nodes, gated by `onBeforeDelete`.
761
+ * Resolves to the elements actually removed. Mirrors xyflow/react's `deleteElements`.
762
+ */
763
+ type DeleteElements<NodeType extends Node = Node, EdgeType extends Edge = Edge> = (elements: {
764
+ nodes?: (Partial<NodeType> & {
765
+ id: string;
766
+ })[];
767
+ edges?: (Partial<EdgeType> & {
768
+ id: string;
769
+ })[];
770
+ }) => Promise<{
771
+ deletedNodes: NodeType[];
772
+ deletedEdges: EdgeType[];
773
+ }>;
774
+ type AddEdges<EdgeType extends Edge = Edge> = (edgesOrConnections: (EdgeType | Connection$1) | (EdgeType | Connection$1)[] | ((edges: EdgeType[]) => (EdgeType | Connection$1) | (EdgeType | Connection$1)[])) => void;
775
+ type ReconnectEdge<EdgeType extends Edge = Edge> = (oldEdge: EdgeType, newConnection: Connection$1, shouldReplaceId?: boolean) => EdgeType | false;
776
+ type UpdateEdge<EdgeType extends Edge = Edge> = (id: string, edgeUpdate: Partial<EdgeType> | ((edge: EdgeType) => Partial<EdgeType>), options?: {
777
+ replace: boolean;
778
+ }) => void;
779
+ type UpdateEdgeData<EdgeType extends Edge = Edge> = (id: string, dataUpdate: Partial<EdgeType['data']> | ((edge: EdgeType) => Partial<EdgeType['data']>), options?: {
780
+ replace: boolean;
781
+ }) => void;
782
+ type SetStateOptions<NodeType extends Node = Node, EdgeType extends Edge = Edge> = Partial<State<NodeType, EdgeType>> & Partial<Pick<FlowProps<NodeType, EdgeType>, 'fitView'>>;
783
+ type SetState<NodeType extends Node = Node, EdgeType extends Edge = Edge> = (state: SetStateOptions<NodeType, EdgeType> | ((state: State<NodeType, EdgeType>) => SetStateOptions<NodeType, EdgeType>)) => void;
784
+ type UpdateNodePosition = (dragItems: NodeDragItem[], changed: boolean, dragging: boolean) => void;
785
+ type UpdateNodeDimensions = (updates: UpdateNodeDimensionsParams[]) => void;
786
+ type UpdateNodeInternals = (nodeIds?: string[]) => void;
787
+ type GetNode<NodeType extends Node = Node> = (id: string | undefined | null) => NodeType | undefined;
788
+ /**
789
+ * Returns the enriched {@link InternalNode} (`internals.{positionAbsolute, z, handleBounds, userNode}` +
790
+ * authoritative `measured`) for an id, mirroring xyflow/react's `getInternalNode`. This is the accessor
791
+ * for store-computed data; `getNode` exposes the user-facing node.
792
+ */
793
+ type GetInternalNode<NodeType extends Node = Node> = (id: string | undefined | null) => InternalNode<NodeType> | undefined;
794
+ type GetEdge<EdgeType extends Edge = Edge> = (id: string | undefined | null) => EdgeType | undefined;
795
+ type GetIntersectingNodes<NodeType extends Node = Node> = (node: (Partial<NodeType> & {
796
+ id: NodeType['id'];
797
+ }) | Rect$1, partially?: boolean, nodes?: InternalNode<NodeType>[]) => InternalNode<NodeType>[];
798
+ type UpdateNode<NodeType extends Node = Node> = (id: string, nodeUpdate: Partial<NodeType> | ((node: InternalNode<NodeType>) => Partial<NodeType>), options?: {
799
+ replace: boolean;
800
+ }) => void;
801
+ type UpdateNodeData<NodeType extends Node = Node> = (id: string, dataUpdate: Partial<NodeType['data']> | ((node: InternalNode<NodeType>) => Partial<NodeType['data']>), options?: {
802
+ replace: boolean;
803
+ }) => void;
804
+ type IsNodeIntersecting<NodeType extends Node = Node> = (node: (Partial<NodeType> & {
805
+ id: NodeType['id'];
806
+ }) | Rect$1, area: Rect$1, partially?: boolean) => boolean;
807
+ interface Actions<NodeType extends Node = Node, EdgeType extends Edge = Edge> extends Omit<ViewportHelper<NodeType>, 'viewportInitialized'> {
808
+ /** parses nodes and re-sets the state */
809
+ setNodes: SetNodes<NodeType>;
810
+ /** parses edges and re-sets the state */
811
+ setEdges: SetEdges<EdgeType>;
812
+ /** parses nodes and adds to state */
813
+ addNodes: AddNodes<NodeType>;
814
+ /** parses edges and adds to state */
815
+ addEdges: AddEdges<EdgeType>;
816
+ /** remove nodes (and possibly connected edges and children) from state */
817
+ removeNodes: RemoveNodes<NodeType>;
818
+ /** remove edges from state */
819
+ removeEdges: RemoveEdges<EdgeType>;
820
+ /** delete nodes/edges (with connected edges + children), gated by `onBeforeDelete`; mirrors xyflow/react */
821
+ deleteElements: DeleteElements<NodeType, EdgeType>;
822
+ /** find a node by id */
823
+ getNode: GetNode<NodeType>;
824
+ /** get the enriched internal node (store-computed `internals` + `measured`) by id */
825
+ getInternalNode: GetInternalNode<NodeType>;
826
+ /** find an edge by id */
827
+ getEdge: GetEdge<EdgeType>;
828
+ /** reconnects an edge to a new source/target (connection) */
829
+ reconnectEdge: ReconnectEdge<EdgeType>;
830
+ /** partially updates an edge */
831
+ updateEdge: UpdateEdge<EdgeType>;
832
+ /** updates the data of an edge */
833
+ updateEdgeData: UpdateEdgeData<EdgeType>;
834
+ /** updates a node */
835
+ updateNode: UpdateNode<NodeType>;
836
+ /** updates the data of a node */
837
+ updateNodeData: UpdateNodeData<NodeType>;
838
+ /** applies default edge change handler */
839
+ applyEdgeChanges: (changes: EdgeChange<EdgeType>[]) => EdgeType[];
840
+ /** applies default node change handler; returns the resulting user nodes */
841
+ applyNodeChanges: (changes: NodeChange<NodeType>[]) => NodeType[];
842
+ /** manually select edges and add to state */
843
+ addSelectedEdges: (edges: EdgeType[]) => void;
844
+ /** manually select nodes and add to state */
845
+ addSelectedNodes: (nodes: NodeType[]) => void;
846
+ /** manually unselect edges and remove from state */
847
+ removeSelectedEdges: (edges?: EdgeType[]) => void;
848
+ /** manually unselect nodes and remove from state */
849
+ removeSelectedNodes: (nodes?: NodeType[]) => void;
850
+ /**
851
+ * Clear the selection the way a pane click does — but only while `elementsSelectable` is `true`; otherwise
852
+ * it's a no-op, so a selection set before selection was disabled survives. Use `removeSelectedNodes`/
853
+ * `removeSelectedEdges` to clear unconditionally.
854
+ */
855
+ resetSelectedElements: () => void;
856
+ /** apply min zoom value to panzoom */
857
+ setMinZoom: (zoom: number) => void;
858
+ /** apply max zoom value to panzoom */
859
+ setMaxZoom: (zoom: number) => void;
860
+ /** apply translate extent to panzoom */
861
+ setTranslateExtent: (translateExtent: CoordinateExtent$1) => void;
862
+ /** apply extent to nodes */
863
+ setNodeExtent: (nodeExtent: CoordinateExtent$1) => void;
864
+ setPaneClickDistance: (distance: number) => void;
865
+ /** enable/disable node interaction (dragging, selecting etc) */
866
+ setInteractive: (isInteractive: boolean) => void;
867
+ /** set new state */
868
+ setState: SetState<NodeType, EdgeType>;
869
+ /** return an object of graph values (elements, viewport transform) for storage and re-loading a graph */
870
+ toObject: () => FlowExportObject;
871
+ /** force update node internal data, if handle bounds are incorrect, you might want to use this */
872
+ updateNodeInternals: UpdateNodeInternals;
873
+ /** start a connection */
874
+ startConnection: (startHandle: ConnectingHandle, position?: XYPosition$1, isClick?: boolean) => void;
875
+ /** update connection position */
876
+ updateConnection: (position: XYPosition$1, result?: ConnectingHandle | null, status?: ConnectionStatus | null) => void;
877
+ /** end (or cancel) a connection */
878
+ endConnection: (event?: MouseEvent | TouchEvent, isClick?: boolean) => void;
879
+ /** internal position updater, you probably don't want to use this */
880
+ updateNodePositions: UpdateNodePosition;
881
+ /** internal dimensions' updater, you probably don't want to use this */
882
+ updateNodeDimensions: UpdateNodeDimensions;
883
+ /** returns all node intersections */
884
+ getIntersectingNodes: GetIntersectingNodes<NodeType>;
885
+ /** check if a node is intersecting with a defined area */
886
+ isNodeIntersecting: IsNodeIntersecting<NodeType>;
887
+ /** get a node's connected edges (accepts any nodes — it matches by id; output is the flow's `EdgeType`) */
888
+ getConnectedEdges: (nodes: Node[]) => EdgeType[];
889
+ /** get all connections of a handle belonging to a node */
890
+ getHandleConnections: ({
891
+ id,
892
+ type,
893
+ nodeId
894
+ }: {
895
+ id?: string | null;
896
+ type: HandleType$1;
897
+ nodeId: string;
898
+ }) => NodeConnection$1[];
899
+ /** pan the viewport; return indicates if a transform has happened or not */
900
+ panBy: (delta: XYPosition$1) => Promise<boolean>;
901
+ /** whether the viewport (panzoom) is initialized — `true` once `<ZoomPane>` has mounted and measured */
902
+ viewportInitialized: ComputedRef<boolean>;
903
+ /** reset state to defaults */
904
+ $reset: () => void;
905
+ /** destroy the store instance (invalidates its effect scopes); runs the `onDestroy` hook if one was set */
906
+ $destroy: () => void;
907
+ }
908
+ interface Getters<NodeType extends Node = Node, EdgeType extends Edge = Edge> {
909
+ /** returns object containing current edge types */
910
+ getEdgeTypes: Record<keyof DefaultEdgeTypes | string, EdgeComponent<EdgeType>>;
911
+ /** returns object containing current node types */
912
+ getNodeTypes: Record<keyof DefaultNodeTypes | string, NodeComponent<NodeType | BuiltInNode>>;
913
+ /** all visible nodes (user-facing `Node`s; use `getInternalNode`/`nodeLookup` for enriched data) */
914
+ getNodes: readonly NodeType[];
915
+ /** all visible edges (user-facing `Edge`s) */
916
+ getEdges: readonly EdgeType[];
917
+ /** returns all currently selected nodes (user-facing `Node`s) */
918
+ getSelectedNodes: readonly NodeType[];
919
+ /** returns all currently selected edges */
920
+ getSelectedEdges: readonly EdgeType[];
921
+ /** the viewport as `{ x, y, zoom }`, derived from the canonical `transform` — read-only; set via `setViewport`/`zoom*`/`fitView` */
922
+ viewport: Viewport$1;
923
+ }
924
+ type ComputedGetters<NodeType extends Node = Node, EdgeType extends Edge = Edge> = { [key in keyof Getters<NodeType, EdgeType>]: ComputedRef<Getters<NodeType, EdgeType>[key]> };
925
+ /**
926
+ * The reactive state object returned by {@link useStore} — every {@link State} field plus the lookups,
927
+ * read directly (`store.nodes`, no `.value`, like `xyflow/svelte`'s store / a Pinia store). Use
928
+ * `storeToRefs(useStore())` to destructure scalar/array fields as refs.
929
+ */
930
+ type VueFlowState<NodeType extends Node = Node, EdgeType extends Edge = Edge> = State<NodeType, EdgeType>;
931
+ /**
932
+ * The curated instance returned by {@link useVueFlow} — actions, computed getters, and event hooks
933
+ * (mirrors `useReactFlow` / `useSvelteFlow`). Raw reactive state lives on {@link useStore} instead.
934
+ */
935
+ type VueFlowInstance<NodeType extends Node = Node, EdgeType extends Edge = Edge> = {
936
+ readonly id: string;
937
+ readonly emits: FlowHooksEmit<NodeType, EdgeType>; /** tear the store down (internal) */
938
+ $destroy: () => void;
939
+ } & FlowHooksOn<NodeType, EdgeType> & Readonly<ComputedGetters<NodeType, EdgeType>> & Readonly<Actions<NodeType, EdgeType>>;
940
+ /** Internal handle bundling the two views a created store exposes; provided to descendants. */
941
+ interface VueFlowStoreHandle<NodeType extends Node = Node, EdgeType extends Edge = Edge> {
942
+ instance: VueFlowInstance<NodeType, EdgeType>;
943
+ state: VueFlowState<NodeType, EdgeType>;
944
+ }
945
+ //#endregion
946
+ //#region src/types/hooks.d.ts
947
+ type MouseTouchEvent = MouseEvent | TouchEvent;
948
+ interface NodeMouseEvent<NodeType extends Node = Node> {
949
+ event: MouseTouchEvent;
950
+ node: NodeType;
951
+ }
952
+ interface NodeDragEvent<NodeType extends Node = Node> {
953
+ event: MouseTouchEvent;
954
+ node: NodeType;
955
+ nodes: NodeType[];
956
+ }
957
+ interface EdgeMouseEvent<EdgeType extends Edge = Edge> {
958
+ event: MouseTouchEvent;
959
+ edge: EdgeType;
960
+ }
961
+ interface EdgeReconnectEvent<EdgeType extends Edge = Edge> {
962
+ event: MouseTouchEvent;
963
+ edge: EdgeType;
964
+ connection: Connection$1;
965
+ }
966
+ /**
967
+ * Payload for `connectEnd`/`clickConnectEnd` — the pointer event plus the {@link FinalConnectionState}
968
+ * (whether the connection was valid, the from/to handles and nodes), mirroring xyflow/react's `OnConnectEnd`.
969
+ */
970
+ interface ConnectEndEvent<NodeType extends Node = Node> {
971
+ event: MouseTouchEvent;
972
+ connectionState: FinalConnectionState$1<InternalNode<NodeType>>;
973
+ }
974
+ interface EdgeReconnectStartEvent<EdgeType extends Edge = Edge> {
975
+ event: MouseTouchEvent;
976
+ edge: EdgeType;
977
+ /** the type of the handle being reconnected (the fixed end, opposite the grabbed anchor), as in xyflow/react */
978
+ handleType: HandleType$1;
979
+ }
980
+ interface EdgeReconnectEndEvent<NodeType extends Node = Node, EdgeType extends Edge = Edge> {
981
+ event: MouseTouchEvent;
982
+ edge: EdgeType;
983
+ /** the type of the handle that was reconnected */
984
+ handleType: HandleType$1;
985
+ /** the {@link FinalConnectionState} at the moment the reconnect ended */
986
+ connectionState: FinalConnectionState$1<InternalNode<NodeType>>;
987
+ }
988
+ /** Payload for `selectionChange` — the currently selected nodes and edges, mirroring xyflow/react's `OnSelectionChange`. */
989
+ interface SelectionChangeEvent<NodeType extends Node = Node, EdgeType extends Edge = Edge> {
990
+ nodes: NodeType[];
991
+ edges: EdgeType[];
992
+ }
993
+ interface FlowEvents<NodeType extends Node = Node, EdgeType extends Edge = Edge> {
994
+ nodesChange: NodeChange<NodeType>[];
995
+ edgesChange: EdgeChange<EdgeType>[];
996
+ nodeDoubleClick: NodeMouseEvent<NodeType>;
997
+ nodeClick: NodeMouseEvent<NodeType>;
998
+ nodeMouseEnter: NodeMouseEvent<NodeType>;
999
+ nodeMouseMove: NodeMouseEvent<NodeType>;
1000
+ nodeMouseLeave: NodeMouseEvent<NodeType>;
1001
+ nodeContextMenu: NodeMouseEvent<NodeType>;
1002
+ nodeDragStart: NodeDragEvent<NodeType>;
1003
+ nodeDrag: NodeDragEvent<NodeType>;
1004
+ nodeDragStop: NodeDragEvent<NodeType>;
1005
+ nodesInitialized: NodeType[];
1006
+ updateNodeInternals: string[];
1007
+ miniMapNodeClick: NodeMouseEvent<NodeType>;
1008
+ miniMapNodeDoubleClick: NodeMouseEvent<NodeType>;
1009
+ miniMapNodeMouseEnter: NodeMouseEvent<NodeType>;
1010
+ miniMapNodeMouseMove: NodeMouseEvent<NodeType>;
1011
+ miniMapNodeMouseLeave: NodeMouseEvent<NodeType>;
1012
+ connect: Connection$1;
1013
+ connectStart: {
1014
+ event?: MouseEvent | TouchEvent;
1015
+ } & OnConnectStartParams;
1016
+ connectEnd: ConnectEndEvent<NodeType>;
1017
+ clickConnectStart: {
1018
+ event?: MouseEvent | TouchEvent;
1019
+ } & OnConnectStartParams;
1020
+ clickConnectEnd: ConnectEndEvent<NodeType>;
1021
+ init: VueFlowInstance<NodeType, EdgeType>;
1022
+ move: {
1023
+ event: MouseTouchEvent | null;
1024
+ viewport: Viewport$1;
1025
+ };
1026
+ moveStart: {
1027
+ event: MouseTouchEvent | null;
1028
+ viewport: Viewport$1;
1029
+ };
1030
+ moveEnd: {
1031
+ event: MouseTouchEvent | null;
1032
+ viewport: Viewport$1;
1033
+ };
1034
+ selectionDragStart: NodeDragEvent<NodeType>;
1035
+ selectionDrag: NodeDragEvent<NodeType>;
1036
+ selectionDragStop: NodeDragEvent<NodeType>;
1037
+ selectionContextMenu: {
1038
+ event: MouseEvent;
1039
+ nodes: NodeType[];
1040
+ };
1041
+ selectionStart: MouseEvent;
1042
+ selectionEnd: MouseEvent;
1043
+ selectionChange: SelectionChangeEvent<NodeType, EdgeType>;
1044
+ viewportChangeStart: Viewport$1;
1045
+ viewportChange: Viewport$1;
1046
+ viewportChangeEnd: Viewport$1;
1047
+ paneScroll: WheelEvent | undefined;
1048
+ paneClick: MouseEvent;
1049
+ paneContextMenu: MouseEvent;
1050
+ paneMouseEnter: PointerEvent;
1051
+ paneMouseMove: PointerEvent;
1052
+ paneMouseLeave: PointerEvent;
1053
+ edgeContextMenu: EdgeMouseEvent<EdgeType>;
1054
+ edgeMouseEnter: EdgeMouseEvent<EdgeType>;
1055
+ edgeMouseMove: EdgeMouseEvent<EdgeType>;
1056
+ edgeMouseLeave: EdgeMouseEvent<EdgeType>;
1057
+ edgeDoubleClick: EdgeMouseEvent<EdgeType>;
1058
+ edgeClick: EdgeMouseEvent<EdgeType>;
1059
+ reconnectStart: EdgeReconnectStartEvent<EdgeType>;
1060
+ reconnect: EdgeReconnectEvent<EdgeType>;
1061
+ reconnectEnd: EdgeReconnectEndEvent<NodeType, EdgeType>;
1062
+ error: VueFlowError;
1063
+ }
1064
+ type FlowHooks<NodeType extends Node = Node, EdgeType extends Edge = Edge> = Readonly<{ [key in keyof FlowEvents<NodeType, EdgeType>]: EventHookExtended<FlowEvents<NodeType, EdgeType>[key]> }>;
1065
+ type FlowHooksOn<NodeType extends Node = Node, EdgeType extends Edge = Edge> = Readonly<{ [key in keyof FlowEvents<NodeType, EdgeType> as `on${Capitalize<key>}`]: EventHookOn<FlowEvents<NodeType, EdgeType>[key]> }>;
1066
+ type FlowHooksEmit<NodeType extends Node = Node, EdgeType extends Edge = Edge> = Readonly<{ [key in keyof FlowEvents<NodeType, EdgeType>]: EventHookTrigger<FlowEvents<NodeType, EdgeType>[key]> }>;
1067
+ interface NodeEventsHandler<NodeType extends Node = Node> {
1068
+ doubleClick: (event: NodeMouseEvent<NodeType>) => void | {
1069
+ off: () => void;
1070
+ };
1071
+ click: (event: NodeMouseEvent<NodeType>) => void | {
1072
+ off: () => void;
1073
+ };
1074
+ mouseEnter: (event: NodeMouseEvent<NodeType>) => void | {
1075
+ off: () => void;
1076
+ };
1077
+ mouseMove: (event: NodeMouseEvent<NodeType>) => void | {
1078
+ off: () => void;
1079
+ };
1080
+ mouseLeave: (event: NodeMouseEvent<NodeType>) => void | {
1081
+ off: () => void;
1082
+ };
1083
+ contextMenu: (event: NodeMouseEvent<NodeType>) => void | {
1084
+ off: () => void;
1085
+ };
1086
+ dragStart: (event: NodeDragEvent<NodeType>) => void | {
1087
+ off: () => void;
1088
+ };
1089
+ drag: (event: NodeDragEvent<NodeType>) => void | {
1090
+ off: () => void;
1091
+ };
1092
+ dragStop: (event: NodeDragEvent<NodeType>) => void | {
1093
+ off: () => void;
1094
+ };
1095
+ }
1096
+ type NodeEventsOn<NodeType extends Node = Node> = { [key in keyof NodeEventsHandler<NodeType>]: EventHookOn<NodeEventsHandler<NodeType>[key] extends ((event: infer Event) => any) ? Event : never> };
1097
+ interface EdgeEventsHandler<EdgeType extends Edge = Edge> {
1098
+ doubleClick: (event: EdgeMouseEvent<EdgeType>) => void | {
1099
+ off: () => void;
1100
+ };
1101
+ click: (event: EdgeMouseEvent<EdgeType>) => void | {
1102
+ off: () => void;
1103
+ };
1104
+ mouseEnter: (event: EdgeMouseEvent<EdgeType>) => void | {
1105
+ off: () => void;
1106
+ };
1107
+ mouseMove: (event: EdgeMouseEvent<EdgeType>) => void | {
1108
+ off: () => void;
1109
+ };
1110
+ mouseLeave: (event: EdgeMouseEvent<EdgeType>) => void | {
1111
+ off: () => void;
1112
+ };
1113
+ contextMenu: (event: EdgeMouseEvent<EdgeType>) => void | {
1114
+ off: () => void;
1115
+ };
1116
+ reconnectStart: (event: EdgeReconnectStartEvent<EdgeType>) => void | {
1117
+ off: () => void;
1118
+ };
1119
+ reconnect: (event: EdgeReconnectEvent<EdgeType>) => void | {
1120
+ off: () => void;
1121
+ };
1122
+ reconnectEnd: (event: EdgeReconnectEndEvent<Node, EdgeType>) => void | {
1123
+ off: () => void;
1124
+ };
1125
+ }
1126
+ type EdgeEventsOn<EdgeType extends Edge = Edge> = { [key in keyof EdgeEventsHandler<EdgeType>]: EventHookOn<EdgeEventsHandler<EdgeType>[key] extends ((event: infer Event) => any) ? Event : never> };
1127
+ //#endregion
1128
+ //#region src/types/flow.d.ts
1129
+ /**
1130
+ * Consulted before nodes/edges are deleted (via the delete key or `deleteElements`). Receives the full set
1131
+ * about to be removed (the targeted nodes/edges plus connected edges and child nodes). Return `false` to
1132
+ * cancel, `true` to delete that set, or `{ nodes, edges }` to delete only a subset. Mirrors xyflow/react.
1133
+ */
1134
+ type OnBeforeDelete<NodeType extends Node = Node, EdgeType extends Edge = Edge> = (params: {
1135
+ nodes: NodeType[];
1136
+ edges: EdgeType[];
1137
+ }) => Promise<boolean | {
1138
+ nodes: NodeType[];
1139
+ edges: EdgeType[];
1140
+ }>;
1141
+ interface CustomThemeVars {
1142
+ [key: string]: string | number | undefined;
1143
+ }
1144
+ /**
1145
+ * The overridable `--xy-*` CSS custom properties, mirroring `@xyflow/system` (shared with
1146
+ * `@xyflow/react`/`@xyflow/svelte`). Set the un-suffixed var to override; the stylesheet falls back to
1147
+ * the shipped `--xy-*-default` value (`var(--xy-x, var(--xy-x-default))`).
1148
+ */
1149
+ type CSSVars = '--xy-edge-stroke' | '--xy-edge-stroke-width' | '--xy-edge-stroke-selected' | '--xy-connectionline-stroke' | '--xy-connectionline-stroke-width' | '--xy-attribution-background-color' | '--xy-minimap-background-color' | '--xy-minimap-mask-background-color' | '--xy-minimap-mask-stroke-color' | '--xy-minimap-mask-stroke-width' | '--xy-minimap-node-background-color' | '--xy-minimap-node-stroke-color' | '--xy-minimap-node-stroke-width' | '--xy-background-color' | '--xy-background-pattern-color' | '--xy-resize-background-color' | '--xy-node-color' | '--xy-node-border' | '--xy-node-border-selected' | '--xy-node-background-color' | '--xy-node-boxshadow-hover' | '--xy-node-boxshadow-selected' | '--xy-node-border-radius' | '--xy-handle-background-color' | '--xy-handle-border-color' | '--xy-selection-background-color' | '--xy-selection-border' | '--xy-controls-button-background-color' | '--xy-controls-button-background-color-hover' | '--xy-controls-button-color' | '--xy-controls-button-color-hover' | '--xy-controls-button-border-color' | '--xy-controls-box-shadow' | '--xy-edge-label-background-color' | '--xy-edge-label-color';
1150
+ type ThemeVars = { [key in CSSVars]?: CSSProperties['color'] };
1151
+ type Styles = CSSProperties & ThemeVars & CustomThemeVars;
1152
+ type ClassValue = string | Record<string, boolean> | ClassValue[];
1153
+ interface FlowExportObject {
1154
+ /** exported nodes */
1155
+ nodes: Node[];
1156
+ /** exported edges */
1157
+ edges: Edge[];
1158
+ /** exported viewport (position + zoom) */
1159
+ viewport: Viewport$1;
1160
+ }
1161
+ type FlowOptions<NodeType extends Node = Node, EdgeType extends Edge = Edge> = FlowProps<NodeType, EdgeType>;
1162
+ interface FlowProps<NodeType extends Node = Node, EdgeType extends Edge = Edge> {
1163
+ id?: string;
1164
+ nodes?: NodeType[];
1165
+ edges?: EdgeType[];
1166
+ /** either use the edgeTypes prop to define your edge-types or use slots (<template #edge-mySpecialType="props">) */
1167
+ edgeTypes?: EdgeTypesObject<EdgeType>;
1168
+ /** either use the nodeTypes prop to define your node-types or use slots (<template #node-mySpecialType="props">) */
1169
+ nodeTypes?: NodeTypesObject<NodeType>;
1170
+ connectionMode?: ConnectionMode$1;
1171
+ connectionLineOptions?: ConnectionLineOptions;
1172
+ connectionRadius?: number;
1173
+ /**
1174
+ * The threshold in pixels that the pointer must move before a connection line starts to drag.
1175
+ * Useful to prevent accidental connections when clicking on a handle.
1176
+ * @default 1
1177
+ */
1178
+ connectionDragThreshold?: number;
1179
+ isValidConnection?: ValidConnectionFunc | null;
1180
+ /** consulted before delete-key/`deleteElements` removals — cancel, confirm, or filter the set */
1181
+ onBeforeDelete?: OnBeforeDelete<NodeType, EdgeType> | null;
1182
+ deleteKeyCode?: KeyFilter | null;
1183
+ /** hold this key (default `'Shift'`) and drag to draw a selection box. For dragging without a key, see `selectionOnDrag` */
1184
+ selectionKeyCode?: KeyFilter | null;
1185
+ /**
1186
+ * Draw a selection box on a plain pane drag (no key held). Pair it with `panOnDrag` set to a non-left
1187
+ * button (e.g. `[1, 2]`) or `false` so a left-drag selects instead of panning. Mirrors xyflow/react.
1188
+ * @default false
1189
+ */
1190
+ selectionOnDrag?: boolean;
1191
+ multiSelectionKeyCode?: KeyFilter | null;
1192
+ zoomActivationKeyCode?: KeyFilter | null;
1193
+ panActivationKeyCode?: KeyFilter | null;
1194
+ snapToGrid?: boolean;
1195
+ snapGrid?: SnapGrid$1;
1196
+ onlyRenderVisibleElements?: boolean;
1197
+ edgesReconnectable?: EdgeReconnectable;
1198
+ nodesDraggable?: boolean;
1199
+ nodesConnectable?: boolean;
1200
+ nodeDragThreshold?: number;
1201
+ elementsSelectable?: boolean;
1202
+ selectNodesOnDrag?: boolean;
1203
+ /** move pane on drag, replaced prop `paneMovable` */
1204
+ panOnDrag?: boolean | number[];
1205
+ minZoom?: number;
1206
+ maxZoom?: number;
1207
+ /** initial viewport for an uncontrolled flow; ignored once the user pans/zooms */
1208
+ defaultViewport?: Partial<Viewport$1>;
1209
+ /** controlled viewport (`v-model:viewport`) — keeps the flow's transform in sync with the bound value */
1210
+ viewport?: Viewport$1;
1211
+ translateExtent?: CoordinateExtent$1;
1212
+ nodeExtent?: CoordinateExtent$1;
1213
+ /** origin of all nodes relative to their position — `[0, 0]` top-left, `[0.5, 0.5]` center, `[1, 1]` bottom-right */
1214
+ nodeOrigin?: NodeOrigin;
1215
+ /** light/dark/system — applies the resolved `light`/`dark` class to the flow container; `system` follows `prefers-color-scheme` @default 'light' */
1216
+ colorMode?: ColorMode$1;
1217
+ /** color of edge markers; pass `null` to drive the arrowhead color from the `--xy-edge-stroke` CSS variable @default '#b1b1b7' */
1218
+ defaultMarkerColor?: string | null;
1219
+ zoomOnScroll?: boolean;
1220
+ zoomOnPinch?: boolean;
1221
+ panOnScroll?: boolean;
1222
+ panOnScrollSpeed?: number;
1223
+ panOnScrollMode?: PanOnScrollMode$1;
1224
+ /**
1225
+ * Distance that the mouse can move between mousedown/up that will trigger a click
1226
+ * @default 0
1227
+ */
1228
+ paneClickDistance?: number;
1229
+ /**
1230
+ * Distance that the mouse can move between mousedown/up on a node that will trigger a click
1231
+ * @default 0
1232
+ */
1233
+ nodeClickDistance?: number;
1234
+ zoomOnDoubleClick?: boolean;
1235
+ /** If set to false, scrolling inside the viewport will be disabled and instead the page scroll will be used */
1236
+ preventScrolling?: boolean;
1237
+ selectionMode?: SelectionMode$1;
1238
+ reconnectRadius?: number;
1239
+ /** fit the view to the nodes once they're measured on init (xyflow/react's `fitView` prop) */
1240
+ fitView?: boolean;
1241
+ /** options for the initial `fitView` (padding, includeHiddenNodes, etc.) */
1242
+ fitViewOptions?: FitViewOptionsBase<NodeType>;
1243
+ /** allow connection with click handlers, i.e. support touch devices */
1244
+ connectOnClick?: boolean;
1245
+ /**
1246
+ * Automatically apply node/edge changes (position, dimensions, add/remove, select) back to `nodes`/`edges`.
1247
+ * Set to `false` to handle the `nodes-change` / `edges-change` events and apply the changes yourself.
1248
+ */
1249
+ autoApplyChanges?: boolean;
1250
+ /**
1251
+ * automatically create an edge when connection is triggered
1252
+ */
1253
+ autoConnect?: boolean | Connector;
1254
+ noDragClassName?: string;
1255
+ noWheelClassName?: string;
1256
+ noPanClassName?: string;
1257
+ /** does not work for the `addEdge` utility! */
1258
+ defaultEdgeOptions?: DefaultEdgeOptions;
1259
+ /** elevates edges when selected and applies z-Index to put them above their nodes */
1260
+ elevateEdgesOnSelect?: boolean;
1261
+ /** elevates nodes when selected and applies z-Index + 1000 */
1262
+ elevateNodesOnSelect?: boolean;
1263
+ /**
1264
+ * controls how the z-index of nodes and edges is calculated.
1265
+ * - `basic` (default): z-index is derived from the element's `zIndex`, parentage and selection state
1266
+ * - `auto`: same as `basic`, but parented nodes are always lifted above their parent
1267
+ * - `manual`: the element's explicit `zIndex` is used verbatim (no elevation)
1268
+ */
1269
+ zIndexMode?: ZIndexMode$1;
1270
+ disableKeyboardA11y?: boolean;
1271
+ /** customize the aria labels / a11y descriptions (node/edge descriptions, the aria-live move message, and the Controls/MiniMap/Handle labels); merged over the defaults */
1272
+ ariaLabelConfig?: Partial<AriaLabelConfig$1>;
1273
+ edgesFocusable?: boolean;
1274
+ nodesFocusable?: boolean;
1275
+ autoPanOnConnect?: boolean;
1276
+ autoPanOnNodeDrag?: boolean;
1277
+ /**
1278
+ * Pan the viewport to a node when it receives keyboard focus (Tab) and isn't currently within the
1279
+ * viewport — keeps keyboard navigation from landing on off-screen nodes.
1280
+ * @default true
1281
+ */
1282
+ autoPanOnNodeFocus?: boolean;
1283
+ /**
1284
+ * Pan the viewport automatically when the cursor reaches the edge of the viewport while dragging a
1285
+ * selection box.
1286
+ * @default true
1287
+ */
1288
+ autoPanOnSelection?: boolean;
1289
+ autoPanSpeed?: number;
1290
+ }
1291
+ interface FlowEmits<NodeType extends Node = Node, EdgeType extends Edge = Edge> {
1292
+ nodesChange: [changes: NodeChange<NodeType>[]];
1293
+ edgesChange: [changes: EdgeChange<EdgeType>[]];
1294
+ nodesInitialized: [nodes: NodeType[]];
1295
+ miniMapNodeClick: [nodeMouseEvent: NodeMouseEvent<NodeType>];
1296
+ miniMapNodeDoubleClick: [nodeMouseEvent: NodeMouseEvent<NodeType>];
1297
+ miniMapNodeMouseEnter: [nodeMouseEvent: NodeMouseEvent<NodeType>];
1298
+ miniMapNodeMouseMove: [nodeMouseEvent: NodeMouseEvent<NodeType>];
1299
+ miniMapNodeMouseLeave: [nodeMouseEvent: NodeMouseEvent<NodeType>];
1300
+ connect: [connectionEvent: Connection$1];
1301
+ connectStart: [connectionEvent: {
1302
+ event?: MouseEvent;
1303
+ } & OnConnectStartParams];
1304
+ connectEnd: [connectionEvent: ConnectEndEvent<NodeType>];
1305
+ clickConnectStart: [connectionEvent: {
1306
+ event?: MouseEvent;
1307
+ } & OnConnectStartParams];
1308
+ clickConnectEnd: [connectionEvent: ConnectEndEvent<NodeType>];
1309
+ moveStart: [moveEvent: {
1310
+ event: MouseTouchEvent | null;
1311
+ viewport: Viewport$1;
1312
+ }];
1313
+ move: [moveEvent: {
1314
+ event: MouseTouchEvent | null;
1315
+ viewport: Viewport$1;
1316
+ }];
1317
+ moveEnd: [moveEvent: {
1318
+ event: MouseTouchEvent | null;
1319
+ viewport: Viewport$1;
1320
+ }];
1321
+ selectionDragStart: [selectionEvent: NodeDragEvent<NodeType>];
1322
+ selectionDrag: [selectionEvent: NodeDragEvent<NodeType>];
1323
+ selectionDragStop: [selectionEvent: NodeDragEvent<NodeType>];
1324
+ selectionContextMenu: [selectionEvent: {
1325
+ event: MouseEvent;
1326
+ nodes: NodeType[];
1327
+ }];
1328
+ selectionStart: [selectionEvent: MouseEvent];
1329
+ selectionEnd: [selectionEvent: MouseEvent];
1330
+ selectionChange: [selectionEvent: SelectionChangeEvent<NodeType, EdgeType>];
1331
+ viewportChangeStart: [viewport: Viewport$1];
1332
+ viewportChange: [viewport: Viewport$1];
1333
+ viewportChangeEnd: [viewport: Viewport$1];
1334
+ init: [paneEvent: VueFlowInstance<NodeType, EdgeType>];
1335
+ paneScroll: [paneEvent: WheelEvent | undefined];
1336
+ paneClick: [paneEvent: MouseEvent];
1337
+ paneContextMenu: [paneEvent: MouseEvent];
1338
+ paneMouseEnter: [paneEvent: MouseEvent];
1339
+ paneMouseMove: [paneEvent: MouseEvent];
1340
+ paneMouseLeave: [paneEvent: MouseEvent];
1341
+ updateNodeInternals: [];
1342
+ error: [error: VueFlowError];
1343
+ edgeContextMenu: [edgeMouseEvent: EdgeMouseEvent<EdgeType>];
1344
+ edgeMouseEnter: [edgeMouseEvent: EdgeMouseEvent<EdgeType>];
1345
+ edgeMouseMove: [edgeMouseEvent: EdgeMouseEvent<EdgeType>];
1346
+ edgeMouseLeave: [edgeMouseEvent: EdgeMouseEvent<EdgeType>];
1347
+ edgeDoubleClick: [edgeMouseEvent: EdgeMouseEvent<EdgeType>];
1348
+ edgeClick: [edgeMouseEvent: EdgeMouseEvent<EdgeType>];
1349
+ reconnectStart: [edgeReconnectEvent: EdgeReconnectStartEvent<EdgeType>];
1350
+ reconnect: [reconnectEvent: EdgeReconnectEvent<EdgeType>];
1351
+ reconnectEnd: [edgeReconnectEvent: EdgeReconnectEndEvent<NodeType, EdgeType>];
1352
+ nodeDoubleClick: [nodeMouseEvent: NodeMouseEvent<NodeType>];
1353
+ nodeClick: [nodeMouseEvent: NodeMouseEvent<NodeType>];
1354
+ nodeMouseEnter: [nodeMouseEvent: NodeMouseEvent<NodeType>];
1355
+ nodeMouseMove: [nodeMouseEvent: NodeMouseEvent<NodeType>];
1356
+ nodeMouseLeave: [nodeMouseEvent: NodeMouseEvent<NodeType>];
1357
+ nodeContextMenu: [nodeMouseEvent: NodeMouseEvent<NodeType>];
1358
+ nodeDragStart: [nodeDragEvent: NodeDragEvent<NodeType>];
1359
+ nodeDrag: [nodeDragEvent: NodeDragEvent<NodeType>];
1360
+ nodeDragStop: [nodeDragEvent: NodeDragEvent<NodeType>];
1361
+ }
1362
+ type NodeByType<NodeType extends Node, T extends string> = NodeType extends any ? (T extends NonNullable<NodeType['type']> ? NodeType : never) : never;
1363
+ type EdgeByType<EdgeType extends Edge, T extends string> = EdgeType extends any ? (T extends NonNullable<EdgeType['type']> ? EdgeType : never) : never;
1364
+ type NodeSlots<NodeType extends Node = Node> = Partial<{ [T in NonNullable<NodeType['type']> as `node-${T}`]: (nodeProps: NodeProps<NodeByType<NodeType, T>>) => any } & Record<`node-${string}`, (nodeProps: NodeProps<NodeType>) => any>>;
1365
+ type EdgeSlots<EdgeType extends Edge = Edge> = Partial<{ [T in NonNullable<EdgeType['type']> as `edge-${T}`]: (edgeProps: EdgeProps<EdgeByType<EdgeType, T>>) => any } & Record<`edge-${string}`, (edgeProps: EdgeProps<EdgeType>) => any>>;
1366
+ type FlowSlots<NodeType extends Node = Node, EdgeType extends Edge = Edge> = NodeSlots<NodeType> & EdgeSlots<EdgeType> & {
1367
+ 'connection-line'?: (connectionLineProps: ConnectionLineProps<NodeType>) => any;
1368
+ 'zoom-pane'?: () => any;
1369
+ 'default'?: () => any;
1370
+ };
1371
+ //#endregion
1372
+ //#region src/types/node.d.ts
1373
+ /**
1374
+ * Origin of a node relative to its position. `[0, 0]` is top-left, `[0.5, 0.5]` centers it, `[1, 1]` is bottom-right.
1375
+ *
1376
+ * Locally defined (rather than re-exported from `@xyflow/system`) so the Vue SFC compiler stays out of the
1377
+ * system d.ts (its `Optional<T, K>` utility trips vuejs/core#14236). Structurally identical to system's.
1378
+ */
1379
+ type NodeOrigin = [number, number];
1380
+ interface NodeHandleBounds {
1381
+ source: HandleElement[] | null;
1382
+ target: HandleElement[] | null;
1383
+ }
1384
+ /**
1385
+ * User-facing node type — reuses `@xyflow/system`'s `NodeBase`.
1386
+ */
1387
+ type Node<NodeData extends Record<string, unknown> = Record<string, unknown>, NodeType extends string | undefined = string | undefined> = NodeBase<NodeData, NodeType> & {
1388
+ class?: ClassValue;
1389
+ style?: Styles;
1390
+ resizing?: boolean;
1391
+ focusable?: boolean;
1392
+ ariaRole?: string;
1393
+ domAttributes?: Omit<HTMLAttributes, 'id' | 'style' | 'className' | 'draggable' | 'aria-label' | 'onMouseenter' | 'onMousemove' | 'onMouseleave' | 'onContextmenu' | 'onClick' | 'onDblclick' | 'onKeydown'>;
1394
+ };
1395
+ /**
1396
+ * The enriched, store-internal node — what `nodeLookup`/`getInternalNode(id)`/`useInternalNode(id)` return,
1397
+ * once a user-provided `Node` has been processed by the store. Carries the user `Node`
1398
+ * (`internals.userNode`) plus the store-computed `internals.{positionAbsolute, z, handleBounds}` and
1399
+ * authoritative `measured`.
1400
+ */
1401
+ type InternalNode<NodeType extends Node = Node> = InternalNodeBase<NodeType>;
1402
+ /**
1403
+ * Props passed to custom node components, parameterized on a `NodeType`.
1404
+ */
1405
+ interface NodeProps<NodeType extends Node = Node> {
1406
+ id: string;
1407
+ data: NodeType['data'];
1408
+ type: NodeType['type'];
1409
+ selected: boolean;
1410
+ selectable: boolean;
1411
+ deletable: boolean;
1412
+ draggable: boolean;
1413
+ dragging: boolean;
1414
+ zIndex: number;
1415
+ isConnectable: boolean;
1416
+ positionAbsoluteX: number;
1417
+ positionAbsoluteY: number;
1418
+ width?: NodeType['width'];
1419
+ height?: NodeType['height'];
1420
+ sourcePosition?: NodeType['sourcePosition'];
1421
+ targetPosition?: NodeType['targetPosition'];
1422
+ dragHandle?: NodeType['dragHandle'];
1423
+ parentId?: NodeType['parentId'];
1424
+ }
1425
+ type BuiltInNode = Node<{
1426
+ label: string;
1427
+ }, 'input' | 'output' | 'default'> | Node<Record<string, never>, 'group'>;
1428
+ //#endregion
1429
+ //#region src/types/components.d.ts
1430
+ /** Global component names are components registered to the vue instance and are "autoloaded" by their string name */
1431
+ type GlobalComponentName = string;
1432
+ /** Node Components can either be a component definition or a string name */
1433
+ type NodeComponent<NodeType extends Node = Node> = Component<NodeProps<NodeType>> | DefineComponent<NodeProps<NodeType>, any, any, any, any> | GlobalComponentName;
1434
+ type NodeTypesObject<NodeType extends Node = Node> = { [key in keyof DefaultNodeTypes]?: NodeComponent<BuiltInNode> } & Record<string, NodeComponent<NodeType>>;
1435
+ type EdgeTypesObject<EdgeType extends Edge = Edge> = { [key in keyof DefaultEdgeTypes]?: EdgeComponent } & Record<string, EdgeComponent<EdgeType>>;
1436
+ /** Edge Components can either be a component definition or a string name */
1437
+ type EdgeComponent<EdgeType extends Edge = Edge> = Component<EdgeProps<EdgeType>> | DefineComponent<EdgeProps<EdgeType>, any, any, any, any, any> | GlobalComponentName;
1438
+ interface DefaultEdgeTypes {
1439
+ default: typeof BezierEdge;
1440
+ straight: typeof StraightEdge;
1441
+ simplebezier: typeof SimpleBezierEdge;
1442
+ step: typeof StepEdge;
1443
+ smoothstep: typeof SmoothStepEdge;
1444
+ }
1445
+ type DefaultNodeTypes = { [key in 'input' | 'output' | 'default']: NodeComponent<BuiltInNode> };
1446
+ /** these props are passed to edge texts */
1447
+ interface EdgeTextProps {
1448
+ x: number;
1449
+ y: number;
1450
+ label?: string | VNode | Component<EdgeTextProps> | object;
1451
+ labelStyle?: CSSProperties;
1452
+ labelShowBg?: boolean;
1453
+ labelBgStyle?: CSSProperties;
1454
+ labelBgPadding?: [number, number];
1455
+ labelBgBorderRadius?: number;
1456
+ }
1457
+ //#endregion
1458
+ //#region src/types/edge.d.ts
1459
+ /** Edge markers */
1460
+ declare enum MarkerType {
1461
+ Arrow = "arrow",
1462
+ ArrowClosed = "arrowclosed"
1463
+ }
1464
+ /** Edge marker definition */
1465
+ interface EdgeMarker {
1466
+ /** Unique marker id */
1467
+ id?: string;
1468
+ /** Marker type */
1469
+ type: MarkerType;
1470
+ /** Marker color */
1471
+ color?: string;
1472
+ /** Marker width */
1473
+ width?: number;
1474
+ /** Marker height */
1475
+ height?: number;
1476
+ /** Marker units */
1477
+ markerUnits?: string;
1478
+ /** Marker orientation */
1479
+ orient?: string;
1480
+ /** Marker stroke width */
1481
+ strokeWidth?: number;
1482
+ }
1483
+ interface MarkerProps {
1484
+ id: string;
1485
+ type: MarkerType | string;
1486
+ /** Marker color; `null`/unset lets the `--xy-edge-stroke` CSS variable drive the arrowhead color */
1487
+ color?: string | null;
1488
+ width?: number;
1489
+ height?: number;
1490
+ markerUnits?: string;
1491
+ orient?: string;
1492
+ strokeWidth?: number;
1493
+ }
1494
+ type EdgeMarkerType = string | EdgeMarker;
1495
+ type EdgeReconnectable = boolean | 'target' | 'source';
1496
+ interface EdgeLabelOptions {
1497
+ /** Label styles (CSSProperties) */
1498
+ labelStyle?: CSSProperties;
1499
+ /** Show label bg */
1500
+ labelShowBg?: boolean;
1501
+ /** Label Bg styles (CSSProperties) */
1502
+ labelBgStyle?: CSSProperties;
1503
+ /** Label Bg padding */
1504
+ labelBgPadding?: [number, number];
1505
+ /** Label Bg border radius */
1506
+ labelBgBorderRadius?: number;
1507
+ }
1508
+ /**
1509
+ * User-facing edge type — reuses `@xyflow/system`'s `EdgeBase` (id, source/target(+handles), type,
1510
+ * animated, markers, data, deletable/selectable/selected, hidden, zIndex, ariaLabel, interactionWidth)
1511
+ * plus vue-flow-specific fields, mirroring how xyflow/react does `Edge = EdgeBase & EdgeLabelOptions & {…}`.
1512
+ */
1513
+ interface DefaultEdge<Data extends Record<string, unknown> = Record<string, unknown>, Type extends string = string> extends EdgeBase<Data, Type>, EdgeLabelOptions {
1514
+ /** An edge label */
1515
+ label?: string | VNode | Component<EdgeTextProps>;
1516
+ /** EdgeMarker — vue-flow's `EdgeMarkerType` (own `MarkerType` enum + `EdgeMarker`), overriding `EdgeBase`'s */
1517
+ markerStart?: EdgeMarkerType;
1518
+ /** EdgeMarker */
1519
+ markerEnd?: EdgeMarkerType;
1520
+ /** Disable/enable updating edge */
1521
+ reconnectable?: EdgeReconnectable;
1522
+ /** Disable/enable focusing edge (a11y) */
1523
+ focusable?: boolean;
1524
+ /** Additional class names */
1525
+ class?: ClassValue;
1526
+ /** Additional styles */
1527
+ style?: Styles;
1528
+ /** Overwrites current edge type */
1529
+ template?: EdgeComponent;
1530
+ /**
1531
+ * General escape hatch for adding custom attributes to the edge's DOM element.
1532
+ */
1533
+ domAttributes?: Omit<SVGAttributes, 'id' | 'style' | 'className' | 'role' | 'aria-label' | 'onClick' | 'onMouseenter' | 'onMousemove' | 'onMouseleave' | 'onContextmenu' | 'onDblclick' | 'onKeyDown'>;
1534
+ }
1535
+ interface SmoothStepPathOptions {
1536
+ offset?: number;
1537
+ borderRadius?: number;
1538
+ /** where the bend sits along the path: 0 = at source, 1 = at target, 0.5 = midpoint @default 0.5 */
1539
+ stepPosition?: number;
1540
+ }
1541
+ type SmoothStepEdgeType<Data extends Record<string, unknown> = Record<string, unknown>> = DefaultEdge<Data> & {
1542
+ type: 'smoothstep';
1543
+ pathOptions?: SmoothStepPathOptions;
1544
+ };
1545
+ interface BezierPathOptions {
1546
+ curvature?: number;
1547
+ }
1548
+ type BezierEdgeType<Data extends Record<string, unknown> = Record<string, unknown>> = DefaultEdge<Data> & {
1549
+ type: 'default';
1550
+ pathOptions?: BezierPathOptions;
1551
+ };
1552
+ type Edge<Data extends Record<string, unknown> = Record<string, unknown>, Type extends string = string> = DefaultEdge<Data, Type> | SmoothStepEdgeType<Data> | BezierEdgeType<Data>;
1553
+ type DefaultEdgeOptions = Omit<Edge, 'id' | 'source' | 'target' | 'sourceHandle' | 'targetHandle' | 'selected'>;
1554
+ /**
1555
+ * The computed positions an edge renders with — a render-OUTPUT type (xyflow's `EdgePosition`),
1556
+ * computed per render from the source/target `InternalNode`s. Never stored on an edge.
1557
+ */
1558
+ interface EdgePositions {
1559
+ sourceX: number;
1560
+ sourceY: number;
1561
+ targetX: number;
1562
+ targetY: number;
1563
+ }
1564
+ /**
1565
+ * Props passed to edge components. No `sourceNode`/`targetNode` (resolve them with `useInternalNode`);
1566
+ * handles are exposed as `sourceHandleId`/`targetHandleId`; markers are pre-resolved to url strings.
1567
+ */
1568
+ interface EdgeProps<EdgeType extends Edge = Edge> extends EdgeLabelOptions, EdgePositions {
1569
+ id: string;
1570
+ source: string;
1571
+ target: string;
1572
+ type?: EdgeType['type'];
1573
+ label?: string | VNode | Component<EdgeTextProps> | object;
1574
+ style?: CSSProperties;
1575
+ selected?: boolean;
1576
+ selectable?: boolean;
1577
+ deletable?: boolean;
1578
+ sourcePosition: Position$1;
1579
+ targetPosition: Position$1;
1580
+ sourceHandleId?: string | null;
1581
+ targetHandleId?: string | null;
1582
+ animated?: boolean;
1583
+ reconnectable?: EdgeReconnectable;
1584
+ markerStart?: string;
1585
+ markerEnd?: string;
1586
+ curvature?: number;
1587
+ interactionWidth?: number;
1588
+ data?: EdgeType['data'];
1589
+ }
1590
+ interface BaseEdgeProps extends EdgeLabelOptions {
1591
+ id?: string;
1592
+ labelX?: number;
1593
+ labelY?: number;
1594
+ path: string;
1595
+ label?: any;
1596
+ markerStart?: string;
1597
+ markerEnd?: string;
1598
+ interactionWidth?: number;
1599
+ }
1600
+ type BezierEdgeProps = EdgePositions & BezierPathOptions & Omit<BaseEdgeProps, 'labelX' | 'labelY' | 'path'> & Pick<EdgeProps, 'sourcePosition' | 'targetPosition'>;
1601
+ type SimpleBezierEdgeProps = EdgePositions & Omit<BaseEdgeProps, 'labelX' | 'labelY' | 'path'> & Pick<EdgeProps, 'sourcePosition' | 'targetPosition'>;
1602
+ type StraightEdgeProps = EdgePositions & Omit<BaseEdgeProps, 'labelX' | 'labelY' | 'path'>;
1603
+ type StepEdgeProps = EdgePositions & Omit<BaseEdgeProps, 'labelX' | 'labelY' | 'path'> & Pick<EdgeProps, 'sourcePosition' | 'targetPosition'>;
1604
+ type SmoothStepEdgeProps = EdgePositions & Omit<BaseEdgeProps, 'labelX' | 'labelY' | 'path'> & Pick<EdgeProps, 'sourcePosition' | 'targetPosition'> & SmoothStepPathOptions;
1605
+ //#endregion
1606
+ //#region src/types/changes.d.ts
1607
+ /**
1608
+ * Drag-item shape used by the drag pipeline.
1609
+ *
1610
+ * Mirrors `@xyflow/system`'s `NodeDragItem` exactly so vue-flow's drag items are interchangeable with
1611
+ * system types.
1612
+ */
1613
+ interface NodeDragItem {
1614
+ id: string;
1615
+ /** relative node position (to parent) */
1616
+ position: XYPosition$1;
1617
+ /** distance from the mouse cursor to the node when start dragging */
1618
+ distance: XYPosition$1;
1619
+ measured: {
1620
+ width: number;
1621
+ height: number;
1622
+ };
1623
+ internals: {
1624
+ positionAbsolute: XYPosition$1;
1625
+ };
1626
+ extent?: Node['extent'];
1627
+ expandParent?: boolean;
1628
+ dragging?: boolean;
1629
+ origin?: NodeOrigin;
1630
+ parentId?: string;
1631
+ }
1632
+ /**
1633
+ * Node change types — mirror `@xyflow/system`'s shapes (no `replace` variant yet).
1634
+ *
1635
+ * Renames vs the previous vue-flow shape:
1636
+ * - `NodeDimensionChange.updateStyle` → `setAttributes` (truthy = set width/height on the DOM element;
1637
+ * `'width'` / `'height'` restricts which axis is written).
1638
+ * - `NodePositionChange.from` (the OLD absolute position) → dropped. Use `positionAbsolute` (the NEW
1639
+ * absolute position) which now matches xyflow/react / xyflow/svelte.
1640
+ *
1641
+ * Item shapes on add changes are the user-provided `Node` / `Edge` types (not the internal `InternalNode`).
1642
+ */
1643
+ interface NodeAddChange<NodeType extends Node = Node> {
1644
+ item: NodeType;
1645
+ type: 'add';
1646
+ index?: number;
1647
+ }
1648
+ type NodeChange<NodeType extends Node = Node> = NodeDimensionChange$1 | NodePositionChange$1 | NodeSelectionChange$1 | NodeRemoveChange$1 | NodeAddChange<NodeType>;
1649
+ interface EdgeAddChange<EdgeType extends Edge = Edge> {
1650
+ item: EdgeType;
1651
+ type: 'add';
1652
+ index?: number;
1653
+ }
1654
+ type EdgeChange<EdgeType extends Edge = Edge> = EdgeSelectionChange$1 | EdgeRemoveChange$1 | EdgeAddChange<EdgeType>;
1655
+ type ElementChange = NodeChange | EdgeChange;
1656
+ //#endregion
1657
+ //#region src/types/panel.d.ts
1658
+ interface PanelProps {
1659
+ position: PanelPosition;
1660
+ /** accessible label for the panel container, applied as `aria-label` (used by `<Controls>`) */
1661
+ label?: string | null;
1662
+ }
1663
+ //#endregion
1664
+ //#region src/types/reactivity-augmentation.d.ts
1665
+ declare module '@vue/reactivity' {
1666
+ interface RefUnwrapBailTypes {
1667
+ vueFlowNode: Pick<Node, 'id' | 'position'>;
1668
+ vueFlowEdge: Pick<Edge, 'id' | 'source' | 'target'>;
1669
+ }
1670
+ }
1671
+ //#endregion
1672
+ //#region src/types/zoom.d.ts
1673
+ /** vue-flow accepts the richer `Padding` here (system's `FitBoundsOptions` is `padding?: number`) */
1674
+ type FitBoundsOptions = ViewportHelperFunctionOptions$1 & {
1675
+ padding?: Padding$1;
1676
+ };
1677
+ /** Fit the viewport around visible nodes */
1678
+ type FitView<NodeType extends Node = Node> = (fitViewOptions?: FitViewOptionsBase<NodeType>) => Promise<boolean>;
1679
+ /** fit the viewport around bounds */
1680
+ type FitBounds = (bounds: Rect$1, options?: FitBoundsOptions) => Promise<boolean>;
1681
+ interface ViewportFunctions<NodeType extends Node = Node> {
1682
+ zoomIn: ZoomInOut$1;
1683
+ zoomOut: ZoomInOut$1;
1684
+ zoomTo: ZoomTo$1;
1685
+ setViewport: SetViewport$1;
1686
+ getViewport: GetViewport$1;
1687
+ fitView: FitView<NodeType>;
1688
+ setCenter: SetCenter$1;
1689
+ fitBounds: FitBounds;
1690
+ }
1691
+ //#endregion
1692
+ //#region src/components/Controls/types.d.ts
1693
+ interface ControlProps {
1694
+ /**
1695
+ * Show the zoom control buttons (zoom-in and zoom-out)
1696
+ *
1697
+ * @default true
1698
+ */
1699
+ showZoom?: boolean;
1700
+ /**
1701
+ * Show the fit view control button
1702
+ *
1703
+ * @default true
1704
+ */
1705
+ showFitView?: boolean;
1706
+ /**
1707
+ * Show the interactivity toggle control button
1708
+ *
1709
+ * @default true
1710
+ */
1711
+ showInteractive?: boolean;
1712
+ /**
1713
+ * {@link FitViewOptionsBase Parameters} to use when the fit view control button is pressed
1714
+ *
1715
+ * @default undefined
1716
+ */
1717
+ fitViewParams?: FitViewOptionsBase<Node>;
1718
+ /**
1719
+ * The {@link PanelPosition position} of the `<Controls>` panel
1720
+ *
1721
+ * @default 'bottom-left'
1722
+ */
1723
+ position?: PanelPosition;
1724
+ /**
1725
+ * Accessible label for the controls panel; falls back to `ariaLabelConfig['controls.ariaLabel']`.
1726
+ *
1727
+ * @default 'Control Panel'
1728
+ */
1729
+ ariaLabel?: string | null;
1730
+ }
1731
+ interface ControlEmits {
1732
+ zoomIn: [];
1733
+ zoomOut: [];
1734
+ fitView: [];
1735
+ interactionChange: [isInteractive: boolean];
1736
+ }
1737
+ //#endregion
1738
+ //#region src/components/Controls/Controls.vue.d.ts
1739
+ declare const _default$3: typeof __VLS_export$8;
1740
+ declare const __VLS_export$8: __VLS_WithSlots$5<import("vue").DefineComponent<ControlProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
1741
+ zoomIn: () => any;
1742
+ zoomOut: () => any;
1743
+ fitView: () => any;
1744
+ interactionChange: (isInteractive: boolean) => any;
1745
+ }, string, import("vue").PublicProps, Readonly<ControlProps> & Readonly<{
1746
+ onZoomIn?: (() => any) | undefined;
1747
+ onZoomOut?: (() => any) | undefined;
1748
+ onFitView?: (() => any) | undefined;
1749
+ onInteractionChange?: ((isInteractive: boolean) => any) | undefined;
1750
+ }>, {
1751
+ position: import("@xyflow/system").PanelPosition;
1752
+ showZoom: boolean;
1753
+ showFitView: boolean;
1754
+ showInteractive: boolean;
1755
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
1756
+ top?: (props: {}) => any;
1757
+ } & {
1758
+ 'control-zoom-in'?: (props: {}) => any;
1759
+ } & {
1760
+ 'icon-zoom-in'?: (props: {}) => any;
1761
+ } & {
1762
+ 'control-zoom-out'?: (props: {}) => any;
1763
+ } & {
1764
+ 'icon-zoom-out'?: (props: {}) => any;
1765
+ } & {
1766
+ 'control-fit-view'?: (props: {}) => any;
1767
+ } & {
1768
+ 'icon-fit-view'?: (props: {}) => any;
1769
+ } & {
1770
+ 'control-interactive'?: (props: {}) => any;
1771
+ } & {
1772
+ 'icon-unlock'?: (props: {}) => any;
1773
+ } & {
1774
+ 'icon-lock'?: (props: {}) => any;
1775
+ } & {
1776
+ default?: (props: {}) => any;
1777
+ }>;
1778
+ type __VLS_WithSlots$5<T, S> = T & {
1779
+ new (): {
1780
+ $slots: S;
1781
+ };
1782
+ };
1783
+ //#endregion
1784
+ //#region src/components/MiniMap/types.d.ts
1785
+ /** expects a node and returns a color value */
1786
+ type MiniMapNodeFunc = (node: InternalNode) => string;
1787
+ type ShapeRendering = CSSProperties['shapeRendering'];
1788
+ interface MiniMapProps {
1789
+ /** Node color, can be either a string or a string func that receives the current node */
1790
+ nodeColor?: string | MiniMapNodeFunc;
1791
+ /** Node stroke color, can be either a string or a string func that receives the current node */
1792
+ nodeStrokeColor?: string | MiniMapNodeFunc;
1793
+ /** Additional node class name, can be either a string or a string func that receives the current node */
1794
+ nodeClassName?: string | MiniMapNodeFunc;
1795
+ /** Node border radius */
1796
+ nodeBorderRadius?: number;
1797
+ /** Node stroke width */
1798
+ nodeStrokeWidth?: number;
1799
+ /** Background color of minimap mask */
1800
+ maskColor?: string;
1801
+ /** Border color of minimap mask */
1802
+ maskStrokeColor?: string;
1803
+ /** Border width of minimap mask */
1804
+ maskStrokeWidth?: number;
1805
+ /** Position of the minimap {@link PanelPosition} */
1806
+ position?: PanelPosition;
1807
+ /** Enable drag minimap to drag viewport */
1808
+ pannable?: boolean;
1809
+ /** Enable zoom minimap to zoom viewport */
1810
+ zoomable?: boolean;
1811
+ width?: number;
1812
+ height?: number;
1813
+ ariaLabel?: string | null;
1814
+ /** Enable inverse panning, i.e. drag minimap to move viewport in opposite direction */
1815
+ inversePan?: boolean;
1816
+ /** Specify zoom step */
1817
+ zoomStep?: number;
1818
+ /** Specify minimap scale */
1819
+ offsetScale?: number;
1820
+ /** Mask border radius */
1821
+ maskBorderRadius?: number;
1822
+ }
1823
+ /** these props are passed to mini map node slots */
1824
+ interface MiniMapNodeProps {
1825
+ id: string;
1826
+ type?: string;
1827
+ selected?: boolean;
1828
+ dragging?: boolean;
1829
+ position: XYPosition$1;
1830
+ dimensions: Dimensions$1;
1831
+ borderRadius?: number;
1832
+ color?: string;
1833
+ shapeRendering?: ShapeRendering;
1834
+ strokeColor?: string;
1835
+ strokeWidth?: number;
1836
+ hidden?: boolean;
1837
+ }
1838
+ interface MiniMapEmits {
1839
+ click: [params: {
1840
+ event: MouseEvent;
1841
+ position: XYPosition$1;
1842
+ }];
1843
+ nodeClick: [params: NodeMouseEvent];
1844
+ nodeDblclick: [params: NodeMouseEvent];
1845
+ nodeMouseenter: [params: NodeMouseEvent];
1846
+ nodeMousemove: [params: NodeMouseEvent];
1847
+ nodeMouseleave: [params: NodeMouseEvent];
1848
+ }
1849
+ interface MiniMapNodeEmits {
1850
+ click: [params: MouseEvent];
1851
+ dblclick: [params: MouseEvent];
1852
+ mouseenter: [params: MouseEvent];
1853
+ mousemove: [params: MouseEvent];
1854
+ mouseleave: [params: MouseEvent];
1855
+ }
1856
+ interface MiniMapSlots extends Record<`node-${string}`, (nodeProps: MiniMapNodeProps) => any> {}
1857
+ declare const Slots: InjectionKey<MiniMapSlots>;
1858
+ //#endregion
1859
+ //#region src/components/MiniMap/MiniMap.vue.d.ts
1860
+ declare const _default$7: typeof __VLS_export$7;
1861
+ declare const __VLS_export$7: __VLS_WithSlots$4<import("vue").DefineComponent<MiniMapProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
1862
+ click: (params: {
1863
+ event: MouseEvent;
1864
+ position: import("@xyflow/system").XYPosition;
1865
+ }) => any;
1866
+ nodeClick: (params: NodeMouseEvent<Node>) => any;
1867
+ nodeDblclick: (params: NodeMouseEvent<Node>) => any;
1868
+ nodeMouseenter: (params: NodeMouseEvent<Node>) => any;
1869
+ nodeMousemove: (params: NodeMouseEvent<Node>) => any;
1870
+ nodeMouseleave: (params: NodeMouseEvent<Node>) => any;
1871
+ }, string, import("vue").PublicProps, Readonly<MiniMapProps> & Readonly<{
1872
+ onClick?: ((params: {
1873
+ event: MouseEvent;
1874
+ position: import("@xyflow/system").XYPosition;
1875
+ }) => any) | undefined;
1876
+ onNodeClick?: ((params: NodeMouseEvent<Node>) => any) | undefined;
1877
+ onNodeDblclick?: ((params: NodeMouseEvent<Node>) => any) | undefined;
1878
+ onNodeMouseenter?: ((params: NodeMouseEvent<Node>) => any) | undefined;
1879
+ onNodeMousemove?: ((params: NodeMouseEvent<Node>) => any) | undefined;
1880
+ onNodeMouseleave?: ((params: NodeMouseEvent<Node>) => any) | undefined;
1881
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, MiniMapSlots>;
1882
+ type __VLS_WithSlots$4<T, S> = T & {
1883
+ new (): {
1884
+ $slots: S;
1885
+ };
1886
+ };
1887
+ //#endregion
1888
+ //#region src/components/MiniMap/MiniMapNode.vue.d.ts
1889
+ declare const _default$8: typeof __VLS_export$6;
1890
+ declare const __VLS_export$6: import("vue").DefineComponent<MiniMapNodeProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
1891
+ click: (params: MouseEvent) => any;
1892
+ dblclick: (params: MouseEvent) => any;
1893
+ mouseenter: (params: MouseEvent) => any;
1894
+ mouseleave: (params: MouseEvent) => any;
1895
+ mousemove: (params: MouseEvent) => any;
1896
+ }, string, import("vue").PublicProps, Readonly<MiniMapNodeProps> & Readonly<{
1897
+ onClick?: ((params: MouseEvent) => any) | undefined;
1898
+ onDblclick?: ((params: MouseEvent) => any) | undefined;
1899
+ onMouseenter?: ((params: MouseEvent) => any) | undefined;
1900
+ onMouseleave?: ((params: MouseEvent) => any) | undefined;
1901
+ onMousemove?: ((params: MouseEvent) => any) | undefined;
1902
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
1903
+ //#endregion
1904
+ //#region src/components/NodeResizer/types.d.ts
1905
+ interface OnResizeStart {
1906
+ event: ResizeDragEvent$1;
1907
+ params: ResizeParams$1;
1908
+ }
1909
+ interface OnResize {
1910
+ event: ResizeDragEvent$1;
1911
+ params: ResizeParamsWithDirection$1;
1912
+ }
1913
+ interface OnResizeEnd {
1914
+ event: ResizeDragEvent$1;
1915
+ params: ResizeParams$1;
1916
+ }
1917
+ interface NodeResizerProps {
1918
+ nodeId?: string;
1919
+ color?: string;
1920
+ handleClassName?: string;
1921
+ handleStyle?: CSSProperties;
1922
+ lineClassName?: string;
1923
+ lineStyle?: CSSProperties;
1924
+ isVisible?: boolean;
1925
+ minWidth?: number;
1926
+ minHeight?: number;
1927
+ maxWidth?: number;
1928
+ maxHeight?: number;
1929
+ shouldResize?: ShouldResize$1;
1930
+ keepAspectRatio?: boolean | number;
1931
+ /**
1932
+ * Scale the controls with the zoom level.
1933
+ * @default true
1934
+ */
1935
+ autoScale?: boolean;
1936
+ }
1937
+ interface NodeResizerEmits {
1938
+ resizeStart: [resizeEvent: OnResizeStart];
1939
+ resize: [resizeEvent: OnResize];
1940
+ resizeEnd: [resizeEvent: OnResizeStart];
1941
+ }
1942
+ interface ResizeControlProps extends NodeResizerProps {
1943
+ nodeId?: string;
1944
+ color?: string;
1945
+ minWidth?: number;
1946
+ minHeight?: number;
1947
+ maxWidth?: number;
1948
+ maxHeight?: number;
1949
+ position?: ControlPosition$1;
1950
+ variant?: ResizeControlVariant$1;
1951
+ shouldResize?: ShouldResize$1;
1952
+ keepAspectRatio?: boolean | number;
1953
+ /**
1954
+ * Scale the controls with the zoom level.
1955
+ * @default true
1956
+ */
1957
+ autoScale?: boolean;
1958
+ }
1959
+ interface ResizeControlLineProps extends ResizeControlProps {
1960
+ nodeId?: string;
1961
+ color?: string;
1962
+ minWidth?: number;
1963
+ minHeight?: number;
1964
+ maxWidth?: number;
1965
+ maxHeight?: number;
1966
+ variant?: ResizeControlVariant$1;
1967
+ position?: ControlLinePosition$1;
1968
+ keepAspectRatio?: boolean | number;
1969
+ }
1970
+ //#endregion
1971
+ //#region src/components/NodeResizer/NodeResizer.vue.d.ts
1972
+ declare const _default$10: typeof __VLS_export$5;
1973
+ declare const __VLS_export$5: import("vue").DefineComponent<NodeResizerProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
1974
+ resize: (resizeEvent: OnResize) => any;
1975
+ resizeStart: (resizeEvent: OnResizeStart) => any;
1976
+ resizeEnd: (resizeEvent: OnResizeStart) => any;
1977
+ }, string, import("vue").PublicProps, Readonly<NodeResizerProps> & Readonly<{
1978
+ onResize?: ((resizeEvent: OnResize) => any) | undefined;
1979
+ onResizeStart?: ((resizeEvent: OnResizeStart) => any) | undefined;
1980
+ onResizeEnd?: ((resizeEvent: OnResizeStart) => any) | undefined;
1981
+ }>, {
1982
+ isVisible: boolean;
1983
+ autoScale: boolean;
1984
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
1985
+ //#endregion
1986
+ //#region src/components/NodeResizer/ResizeControl.vue.d.ts
1987
+ declare const _default$9: typeof __VLS_export$4;
1988
+ declare const __VLS_export$4: __VLS_WithSlots$3<import("vue").DefineComponent<ResizeControlProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
1989
+ resize: (resizeEvent: OnResize) => any;
1990
+ resizeStart: (resizeEvent: OnResizeStart) => any;
1991
+ resizeEnd: (resizeEvent: OnResizeStart) => any;
1992
+ }, string, import("vue").PublicProps, Readonly<ResizeControlProps> & Readonly<{
1993
+ onResize?: ((resizeEvent: OnResize) => any) | undefined;
1994
+ onResizeStart?: ((resizeEvent: OnResizeStart) => any) | undefined;
1995
+ onResizeEnd?: ((resizeEvent: OnResizeStart) => any) | undefined;
1996
+ }>, {
1997
+ variant: ResizeControlVariant$2;
1998
+ minWidth: number;
1999
+ minHeight: number;
2000
+ maxWidth: number;
2001
+ maxHeight: number;
2002
+ keepAspectRatio: boolean | number;
2003
+ autoScale: boolean;
2004
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
2005
+ default?: (props: {}) => any;
2006
+ }>;
2007
+ type __VLS_WithSlots$3<T, S> = T & {
2008
+ new (): {
2009
+ $slots: S;
2010
+ };
2011
+ };
2012
+ //#endregion
2013
+ //#region src/components/NodeToolbar/types.d.ts
2014
+ interface NodeToolbarProps {
2015
+ nodeId?: string | string[];
2016
+ isVisible?: boolean;
2017
+ position?: Position$1;
2018
+ offset?: number;
2019
+ align?: 'center' | 'start' | 'end';
2020
+ }
2021
+ //#endregion
2022
+ //#region src/components/NodeToolbar/NodeToolbar.vue.d.ts
2023
+ declare const _default$11: typeof __VLS_export$3;
2024
+ declare const __VLS_export$3: __VLS_WithSlots$2<import("vue").DefineComponent<NodeToolbarProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<NodeToolbarProps> & Readonly<{}>, {
2025
+ position: Position$1;
2026
+ offset: number;
2027
+ isVisible: boolean;
2028
+ align: "center" | "start" | "end";
2029
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
2030
+ default?: (props: {}) => any;
2031
+ }>;
2032
+ type __VLS_WithSlots$2<T, S> = T & {
2033
+ new (): {
2034
+ $slots: S;
2035
+ };
2036
+ };
2037
+ //#endregion
2038
+ //#region src/components/Panel/Panel.vue.d.ts
2039
+ declare const _default$12: typeof __VLS_export$2;
2040
+ declare const __VLS_export$2: __VLS_WithSlots$1<import("vue").DefineComponent<PanelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<PanelProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
2041
+ default?: (props: {}) => any;
2042
+ }>;
2043
+ type __VLS_WithSlots$1<T, S> = T & {
2044
+ new (): {
2045
+ $slots: S;
2046
+ };
2047
+ };
2048
+ //#endregion
2049
+ //#region src/composables/useConnection.d.ts
2050
+ /**
2051
+ * Access the currently ongoing connection, composed from the store's split connection fields into a
2052
+ * single {@link ConnectionState}.
2053
+ *
2054
+ * @public
2055
+ * @returns a `ComputedRef<ConnectionState>` — `inProgress: false` (all-null fields) when idle
2056
+ */
2057
+ declare function useConnection<NodeType extends Node = Node>(): ComputedRef<ConnectionState<NodeType>>;
2058
+ //#endregion
2059
+ //#region src/composables/useEdgesData.d.ts
2060
+ interface EdgeData<EdgeType extends Edge = Edge> {
2061
+ id: string;
2062
+ type: EdgeType['type'];
2063
+ data: NonNullable<EdgeType['data']> | null;
2064
+ }
2065
+ /**
2066
+ * Composable for receiving data of one or multiple nodes
2067
+ *
2068
+ * @public
2069
+ * @param edgeId - The id (or ids) of the node to get the data from
2070
+ * @param guard - Optional guard function to narrow down the node type
2071
+ * @returns An array of data objects
2072
+ */
2073
+ declare function useEdgesData<EdgeType extends Edge = Edge>(edgeId: MaybeRefOrGetter<string>): ComputedRef<EdgeData<EdgeType> | null>;
2074
+ declare function useEdgesData<EdgeType extends Edge = Edge>(edgeIds: MaybeRefOrGetter<string[]>): ComputedRef<EdgeData<EdgeType>[]>;
2075
+ declare function useEdgesData<EdgeType extends Edge = Edge>(edgeIds: MaybeRefOrGetter<string[]>, guard: (node: Edge) => node is EdgeType): ComputedRef<EdgeData<EdgeType>[]>;
2076
+ //#endregion
2077
+ //#region src/composables/useNodeConnections.d.ts
2078
+ type UseNodeConnectionsParams = {
2079
+ /** node id - if not provided, the node id from the `useNodeId` context injection is used */id?: MaybeRefOrGetter<string | null | undefined>;
2080
+ onConnect?: (connections: NodeConnection$1[]) => void;
2081
+ onDisconnect?: (connections: NodeConnection$1[]) => void;
2082
+ } & ({
2083
+ /** handle type `source` or `target` */handleType: MaybeRefOrGetter<HandleType$1 | null | undefined>; /** the handle id (only needed if the node has multiple handles of the same type). Requires `handleType` to be set. */
2084
+ handleId?: MaybeRefOrGetter<string | null | undefined>;
2085
+ } | {
2086
+ handleType?: MaybeRefOrGetter<HandleType$1 | null | undefined>;
2087
+ handleId?: never;
2088
+ });
2089
+ /**
2090
+ * Hook to retrieve all edges connected to a node. Can be filtered by handle type and id.
2091
+ *
2092
+ * @public
2093
+ * @param params
2094
+ * @param params.handleType - handle type `source` or `target`
2095
+ * @param params.id - node id - if not provided, the node id from the `useNodeId` (meaning, the context-based injection) is used
2096
+ * @param params.handleId - the handle id (only needed if the node has multiple handles of the same type; requires `handleType` to be set)
2097
+ * @param params.onConnect - gets called when a connection is created
2098
+ * @param params.onDisconnect - gets called when a connection is removed
2099
+ *
2100
+ * @returns An array of connections
2101
+ */
2102
+ declare function useNodeConnections(params?: UseNodeConnectionsParams): import("vue").ComputedRef<NodeConnection$1[]>;
2103
+ //#endregion
2104
+ //#region src/composables/useNodeId.d.ts
2105
+ /**
2106
+ * This composable returns the current node id from the ctx.
2107
+ *
2108
+ * It should be used inside a (custom-)node components ctx as the id is provided by the internal `NodeWrapper` component.
2109
+ *
2110
+ * @public
2111
+ * @returns the current node id
2112
+ */
2113
+ declare function useNodeId(): string;
2114
+ //#endregion
2115
+ //#region src/composables/useNodesData.d.ts
2116
+ type NodeData<NodeType extends Node = InternalNode> = DistributivePick<NodeType, 'id' | 'type' | 'data'>;
2117
+ /**
2118
+ * Composable for receiving data of one or multiple nodes
2119
+ *
2120
+ * @public
2121
+ * @param nodeId - The id (or ids) of the node to get the data from
2122
+ * @param guard - Optional guard function to narrow down the node type
2123
+ * @returns An array of data objects
2124
+ */
2125
+ declare function useNodesData<NodeType extends Node = InternalNode>(nodeId: MaybeRefOrGetter<string>): ComputedRef<NodeData<NodeType> | null>;
2126
+ declare function useNodesData<NodeType extends Node = InternalNode>(nodeIds: MaybeRefOrGetter<string[]>): ComputedRef<NodeData<NodeType>[]>;
2127
+ declare function useNodesData<NodeType extends Node = InternalNode>(nodeIds: MaybeRefOrGetter<string[]>, guard: (node: Node) => node is NodeType): ComputedRef<NodeData<NodeType>[]>;
2128
+ //#endregion
2129
+ //#region src/composables/useNodesInitialized.d.ts
2130
+ interface UseNodesInitializedOptions {
2131
+ includeHiddenNodes?: boolean;
2132
+ }
2133
+ /**
2134
+ * Composable for getting the initialized state of all nodes.
2135
+ *
2136
+ * When a new node is added to the graph, it is not immediately initialized.
2137
+ * That's because the node's bounds are not yet known.
2138
+ * This composable will return false and then true when all nodes are initialized, i.e. when their bounds are known.
2139
+ *
2140
+ * @public
2141
+ * @param options - Options
2142
+ * @returns boolean indicating whether all nodes are initialized
2143
+ */
2144
+ declare function useNodesInitialized(options?: UseNodesInitializedOptions): import("vue").ComputedRef<boolean>;
2145
+ //#endregion
2146
+ //#region src/container/VueFlow/VueFlow.vue.d.ts
2147
+ declare const _default$13: typeof __VLS_export$1;
2148
+ declare const __VLS_export$1: <NodeType extends Node = Node, EdgeType extends Edge = Edge>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
2149
+ props: import("vue").PublicProps & __VLS_PrettifyLocal<(FlowProps<NodeType, EdgeType> & {
2150
+ nodes?: NodeType[];
2151
+ edges?: EdgeType[];
2152
+ viewport?: Viewport$1;
2153
+ }) & {
2154
+ [x: `on${Capitalize<string>}`]: ((...args: any) => any) | undefined;
2155
+ }> & (typeof globalThis extends {
2156
+ __VLS_PROPS_FALLBACK: infer P;
2157
+ } ? P : {});
2158
+ expose: (exposed: import("vue").ShallowUnwrapRef<VueFlowInstance<NodeType, EdgeType>>) => void;
2159
+ attrs: any;
2160
+ slots: FlowSlots<NodeType, EdgeType>;
2161
+ emit: (((evt: "error", error: VueFlowError<ErrorCode, [] | [id?: string | undefined] | [id: string | null] | [id: string, parentId: string] | [type: string] | [id: string] | [id: string] | [id: string, source: string] | [id: string, target: string] | [type: string] | [id: string, source: string, target: string] | [id: string]>) => void) & ((evt: "nodesChange", changes: NodeChange<NodeType>[]) => void) & ((evt: "edgesChange", changes: EdgeChange<EdgeType>[]) => void) & ((evt: "nodeDoubleClick", nodeMouseEvent: NodeMouseEvent<NodeType>) => void) & ((evt: "nodeClick", nodeMouseEvent: NodeMouseEvent<NodeType>) => void) & ((evt: "nodeMouseEnter", nodeMouseEvent: NodeMouseEvent<NodeType>) => void) & ((evt: "nodeMouseMove", nodeMouseEvent: NodeMouseEvent<NodeType>) => void) & ((evt: "nodeMouseLeave", nodeMouseEvent: NodeMouseEvent<NodeType>) => void) & ((evt: "nodeContextMenu", nodeMouseEvent: NodeMouseEvent<NodeType>) => void) & ((evt: "nodeDragStart", nodeDragEvent: NodeDragEvent<NodeType>) => void) & ((evt: "nodeDrag", nodeDragEvent: NodeDragEvent<NodeType>) => void) & ((evt: "nodeDragStop", nodeDragEvent: NodeDragEvent<NodeType>) => void) & ((evt: "nodesInitialized", nodes: NodeType[]) => void) & ((evt: "updateNodeInternals") => void) & ((evt: "miniMapNodeClick", nodeMouseEvent: NodeMouseEvent<NodeType>) => void) & ((evt: "miniMapNodeDoubleClick", nodeMouseEvent: NodeMouseEvent<NodeType>) => void) & ((evt: "miniMapNodeMouseEnter", nodeMouseEvent: NodeMouseEvent<NodeType>) => void) & ((evt: "miniMapNodeMouseMove", nodeMouseEvent: NodeMouseEvent<NodeType>) => void) & ((evt: "miniMapNodeMouseLeave", nodeMouseEvent: NodeMouseEvent<NodeType>) => void) & ((evt: "connect", connectionEvent: import("@xyflow/system").Connection) => void) & ((evt: "connectStart", connectionEvent: {
2162
+ event?: MouseEvent;
2163
+ } & OnConnectStartParams) => void) & ((evt: "connectEnd", connectionEvent: ConnectEndEvent<NodeType>) => void) & ((evt: "clickConnectStart", connectionEvent: {
2164
+ event?: MouseEvent;
2165
+ } & OnConnectStartParams) => void) & ((evt: "clickConnectEnd", connectionEvent: ConnectEndEvent<NodeType>) => void) & ((evt: "init", paneEvent: VueFlowInstance<NodeType, EdgeType>) => void) & ((evt: "move", moveEvent: {
2166
+ event: MouseTouchEvent | null;
2167
+ viewport: Viewport$1;
2168
+ }) => void) & ((evt: "moveStart", moveEvent: {
2169
+ event: MouseTouchEvent | null;
2170
+ viewport: Viewport$1;
2171
+ }) => void) & ((evt: "moveEnd", moveEvent: {
2172
+ event: MouseTouchEvent | null;
2173
+ viewport: Viewport$1;
2174
+ }) => void) & ((evt: "selectionDragStart", selectionEvent: NodeDragEvent<NodeType>) => void) & ((evt: "selectionDrag", selectionEvent: NodeDragEvent<NodeType>) => void) & ((evt: "selectionDragStop", selectionEvent: NodeDragEvent<NodeType>) => void) & ((evt: "selectionContextMenu", selectionEvent: {
2175
+ event: MouseEvent;
2176
+ nodes: NodeType[];
2177
+ }) => void) & ((evt: "selectionStart", selectionEvent: MouseEvent) => void) & ((evt: "selectionEnd", selectionEvent: MouseEvent) => void) & ((evt: "selectionChange", selectionEvent: SelectionChangeEvent<NodeType, EdgeType>) => void) & ((evt: "viewportChangeStart", viewport: Viewport$1) => void) & ((evt: "viewportChange", viewport: Viewport$1) => void) & ((evt: "viewportChangeEnd", viewport: Viewport$1) => void) & ((evt: "paneScroll", paneEvent: WheelEvent | undefined) => void) & ((evt: "paneClick", paneEvent: MouseEvent) => void) & ((evt: "paneContextMenu", paneEvent: MouseEvent) => void) & ((evt: "paneMouseEnter", paneEvent: MouseEvent) => void) & ((evt: "paneMouseMove", paneEvent: MouseEvent) => void) & ((evt: "paneMouseLeave", paneEvent: MouseEvent) => void) & ((evt: "edgeContextMenu", edgeMouseEvent: EdgeMouseEvent<EdgeType>) => void) & ((evt: "edgeMouseEnter", edgeMouseEvent: EdgeMouseEvent<EdgeType>) => void) & ((evt: "edgeMouseMove", edgeMouseEvent: EdgeMouseEvent<EdgeType>) => void) & ((evt: "edgeMouseLeave", edgeMouseEvent: EdgeMouseEvent<EdgeType>) => void) & ((evt: "edgeDoubleClick", edgeMouseEvent: EdgeMouseEvent<EdgeType>) => void) & ((evt: "edgeClick", edgeMouseEvent: EdgeMouseEvent<EdgeType>) => void) & ((evt: "reconnectStart", edgeReconnectEvent: EdgeReconnectStartEvent<EdgeType>) => void) & ((evt: "reconnect", reconnectEvent: EdgeReconnectEvent<EdgeType>) => void) & ((evt: "reconnectEnd", edgeReconnectEvent: EdgeReconnectEndEvent<NodeType, EdgeType>) => void)) & (((event: "update:nodes", value: NodeType[] | undefined) => void) & ((event: "update:edges", value: EdgeType[] | undefined) => void) & ((event: "update:viewport", value: Viewport$1 | undefined) => void));
2178
+ }>) => import("vue").VNode & {
2179
+ __ctx?: Awaited<typeof __VLS_setup>;
2180
+ };
2181
+ type __VLS_PrettifyLocal<T> = (T extends any ? { [K in keyof T]: T[K] } : { [K in keyof T as K]: T[K] }) & {};
2182
+ //#endregion
2183
+ //#region src/container/VueFlowProvider/VueFlowProvider.vue.d.ts
2184
+ declare const _default$14: typeof __VLS_export;
2185
+ declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<{
2186
+ id?: string;
2187
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{
2188
+ id?: string;
2189
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, {
2190
+ default?: (props: {}) => any;
2191
+ }>;
2192
+ type __VLS_WithSlots<T, S> = T & {
2193
+ new (): {
2194
+ $slots: S;
2195
+ };
2196
+ };
2197
+ //#endregion
2198
+ //#region src/context/index.d.ts
2199
+ /** the curated instance (`useVueFlow()`) */
2200
+ declare const VueFlow: InjectionKey<VueFlowInstance>;
2201
+ declare const NodeId: InjectionKey<string>;
2202
+ //#endregion
2203
+ //#region src/utils/defaultNodesEdges.d.ts
2204
+ declare const defaultNodeTypes: DefaultNodeTypes;
2205
+ declare const defaultEdgeTypes: DefaultEdgeTypes;
2206
+ //#endregion
2207
+ export { Actions, AddEdges, AddNodes, type Align, type AriaLabelConfig, _default as Background, BackgroundProps, BackgroundVariant, _default$1 as BaseEdge, BaseEdgeProps, BezierEdge, BezierEdgeProps, BezierEdgeType, BezierPathOptions, BuiltInNode, CSSVars, ClassValue, type ColorMode, type ColorModeClass, ComputedGetters, ConnectEndEvent, ConnectingHandle, type Connection, ConnectionInProgress, ConnectionLineOptions, ConnectionLineProps, ConnectionLineType, ConnectionLookup, ConnectionMode, ConnectionState, ConnectionStatus, Connector, _default$2 as ControlButton, ControlEmits, type ControlLinePosition, type ControlPosition, ControlProps, _default$3 as Controls, type CoordinateExtent, CustomThemeVars, DefaultEdge, DefaultEdgeOptions, DefaultEdgeTypes, DefaultNodeTypes, DeleteElements, type Dimensions, Edge, EdgeAddChange, EdgeChange, EdgeComponent, EdgeEventsHandler, EdgeEventsOn, EdgeLabelOptions, _default$4 as EdgeLabelRenderer, EdgeLookup, EdgeMarker, EdgeMarkerType, EdgeMouseEvent, EdgePositions, EdgeProps, EdgeReconnectEndEvent, EdgeReconnectEvent, EdgeReconnectStartEvent, EdgeReconnectable, type EdgeRemoveChange, type EdgeSelectionChange, EdgeSlots, _default$5 as EdgeText, EdgeTextProps, EdgeTypesObject, ElementChange, ErrorCode, type FinalConnectionState, FitBounds, FitBoundsOptions, FitView, type FitViewOptions, FlowEmits, FlowEvents, FlowExportObject, FlowHooks, FlowHooksEmit, FlowHooksOn, FlowOptions, FlowProps, FlowSlots, GetEdge, GetInternalNode, GetIntersectingNodes, GetNode, type GetViewport, Getters, _default$6 as Handle, HandleConnectable, HandleConnectableFunc, HandleElement, HandleProps, type HandleType, InternalNode, IsNodeIntersecting, IsValidParams, MarkerProps, MarkerType, _default$7 as MiniMap, MiniMapEmits, _default$8 as MiniMapNode, MiniMapNodeEmits, MiniMapNodeFunc, MiniMapNodeProps, MiniMapProps, MiniMapSlots, MouseTouchEvent, NoConnection, Node, NodeAddChange, NodeChange, NodeComponent, type NodeConnection, type NodeDimensionChange, NodeDragEvent, NodeDragItem, NodeEventsHandler, NodeEventsOn, NodeHandleBounds, NodeId as NodeIdInjection, NodeLookup, NodeMouseEvent, NodeOrigin, type NodePositionChange, NodeProps, type NodeRemoveChange, _default$9 as NodeResizeControl, _default$10 as NodeResizer, NodeResizerEmits, NodeResizerProps, type NodeSelectionChange, NodeSlots, _default$11 as NodeToolbar, NodeToolbarProps, NodeTypesObject, OnBeforeDelete, OnConnectStartParams, OnResize, OnResizeEnd, OnResizeStart, type Padding, type PaddingUnit, type PaddingWithUnit, PanOnScrollMode, _default$12 as Panel, PanelProps, Position, type Project, ReconnectEdge, type Rect, RemoveEdges, RemoveNodes, ResizeControlLineProps, ResizeControlProps, ResizeControlVariant, type ResizeDragEvent, type ResizeParams, type ResizeParamsWithDirection, Result, SelectionChangeEvent, SelectionMode, type SelectionRect, type SetCenter, type SetCenterOptions, SetEdges, SetNodes, SetState, SetStateOptions, type SetViewport, ShapeRendering, type ShouldResize, SimpleBezierEdge, SimpleBezierEdgeProps, Slots, SmoothStepEdge, SmoothStepEdgeProps, SmoothStepEdgeType, SmoothStepPathOptions, type SnapGrid, State, StepEdge, StepEdgeProps, StraightEdge, StraightEdgeProps, Styles, ThemeVars, UpdateEdge, UpdateEdgeData, UpdateNode, UpdateNodeData, UpdateNodeDimensions, UpdateNodeDimensionsParams, UpdateNodeInternals, UpdateNodePosition, ValidConnectionFunc, type Viewport, ViewportFunctions, type ViewportHelperFunctionOptions, _default$13 as VueFlow, VueFlowError, VueFlow as VueFlowInjection, VueFlowInstance, _default$14 as VueFlowProvider, VueFlowState, VueFlowStoreHandle, type XYPosition, type ZIndexMode, type ZoomInOut, type ZoomTo, applyChanges, applyEdgeChanges, applyNodeChanges, clamp, connectionExists, defaultEdgeTypes, defaultNodeTypes, getBezierEdgeCenter, getBezierPath, getBoundsOfBoxes, getBoundsOfRects, getConnectedEdges, getConnectionStatus, getIncomers, getMarkerId, getNodesBounds, getNodesInside, getOutgoers, getSimpleBezierPath, getSmoothStepPath, getStraightPath, getViewportForBounds, isEdge, isEdgeBase, isErrorOfType, isInternalNode, isInternalNodeBase, isMacOs, isNode, isNodeBase, pointToRendererPoint, rendererPointToPoint, storeToRefs, useConnection, useEdge, useEdgesData, useHandle, useInternalNode, useKeyPress, useNode, useNodeConnections, useNodeId, useNodesData, useNodesInitialized, useStore, useVueFlow };
2208
+ //# sourceMappingURL=index.d.ts.map