@particle-academy/fancy-flow 0.3.0 → 0.4.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.
Files changed (41) hide show
  1. package/dist/{chunk-DDHKYIH2.js → chunk-2BZ6OE5H.js} +229 -435
  2. package/dist/chunk-2BZ6OE5H.js.map +1 -0
  3. package/dist/{chunk-FGUJNX65.js → chunk-35OXF6W3.js} +3 -3
  4. package/dist/{chunk-FGUJNX65.js.map → chunk-35OXF6W3.js.map} +1 -1
  5. package/dist/chunk-4PZQRN5Y.js +114 -0
  6. package/dist/chunk-4PZQRN5Y.js.map +1 -0
  7. package/dist/chunk-DW66NGU5.js +138 -0
  8. package/dist/chunk-DW66NGU5.js.map +1 -0
  9. package/dist/{chunk-YPINKH2D.js → engine.cjs} +4 -111
  10. package/dist/engine.cjs.map +1 -0
  11. package/dist/engine.d.cts +35 -0
  12. package/dist/engine.d.ts +35 -0
  13. package/dist/engine.js +3 -0
  14. package/dist/engine.js.map +1 -0
  15. package/dist/index.cjs +227 -464
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.css +1 -0
  18. package/dist/index.css.map +1 -1
  19. package/dist/index.d.cts +19 -19
  20. package/dist/index.d.ts +19 -19
  21. package/dist/index.js +6 -6
  22. package/dist/registry/index.d.cts +2 -3
  23. package/dist/registry/index.d.ts +2 -3
  24. package/dist/registry.cjs +225 -462
  25. package/dist/registry.cjs.map +1 -1
  26. package/dist/registry.js +2 -3
  27. package/dist/runtime/index.d.cts +4 -32
  28. package/dist/runtime/index.d.ts +4 -32
  29. package/dist/runtime.cjs +226 -463
  30. package/dist/runtime.cjs.map +1 -1
  31. package/dist/runtime.js +3 -3
  32. package/dist/schema/index.d.cts +1 -1
  33. package/dist/schema/index.d.ts +1 -1
  34. package/dist/schema.js +0 -1
  35. package/dist/{types-Ch4sAvum.d.cts → types-TemTtb04.d.cts} +1 -1
  36. package/dist/{types-Ch4sAvum.d.ts → types-TemTtb04.d.ts} +1 -1
  37. package/package.json +46 -9
  38. package/dist/chunk-7D4SUZUM.js +0 -35
  39. package/dist/chunk-7D4SUZUM.js.map +0 -1
  40. package/dist/chunk-DDHKYIH2.js.map +0 -1
  41. package/dist/chunk-YPINKH2D.js.map +0 -1
package/dist/registry.cjs CHANGED
@@ -8,309 +8,6 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
8
 
9
9
  var ReactExports__default = /*#__PURE__*/_interopDefault(ReactExports);
10
10
 
11
- var __create = Object.create;
12
- var __defProp = Object.defineProperty;
13
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
14
- var __getOwnPropNames = Object.getOwnPropertyNames;
15
- var __getProtoOf = Object.getPrototypeOf;
16
- var __hasOwnProp = Object.prototype.hasOwnProperty;
17
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
18
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
19
- }) : x)(function(x) {
20
- if (typeof require !== "undefined") return require.apply(this, arguments);
21
- throw Error('Dynamic require of "' + x + '" is not supported');
22
- });
23
- var __commonJS = (cb, mod) => function __require2() {
24
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
25
- };
26
- var __copyProps = (to, from, except, desc) => {
27
- if (from && typeof from === "object" || typeof from === "function") {
28
- for (let key of __getOwnPropNames(from))
29
- if (!__hasOwnProp.call(to, key) && key !== except)
30
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
31
- }
32
- return to;
33
- };
34
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
35
- // If the importer is in node compatibility mode or this is not an ESM
36
- // file that has been converted to a CommonJS file using a Babel-
37
- // compatible transform (i.e. "__esModule" has not been set), then set
38
- // "default" to the CommonJS "module.exports" for node compatibility.
39
- __defProp(target, "default", { value: mod, enumerable: true }) ,
40
- mod
41
- ));
42
-
43
- // node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js
44
- var require_use_sync_external_store_shim_production = __commonJS({
45
- "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js"(exports) {
46
- var React = __require("react");
47
- function is(x, y) {
48
- return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y;
49
- }
50
- var objectIs = "function" === typeof Object.is ? Object.is : is;
51
- var useState2 = React.useState;
52
- var useEffect2 = React.useEffect;
53
- var useLayoutEffect2 = React.useLayoutEffect;
54
- var useDebugValue2 = React.useDebugValue;
55
- function useSyncExternalStore$2(subscribe, getSnapshot) {
56
- var value = getSnapshot(), _useState = useState2({ inst: { value, getSnapshot } }), inst = _useState[0].inst, forceUpdate = _useState[1];
57
- useLayoutEffect2(
58
- function() {
59
- inst.value = value;
60
- inst.getSnapshot = getSnapshot;
61
- checkIfSnapshotChanged(inst) && forceUpdate({ inst });
62
- },
63
- [subscribe, value, getSnapshot]
64
- );
65
- useEffect2(
66
- function() {
67
- checkIfSnapshotChanged(inst) && forceUpdate({ inst });
68
- return subscribe(function() {
69
- checkIfSnapshotChanged(inst) && forceUpdate({ inst });
70
- });
71
- },
72
- [subscribe]
73
- );
74
- useDebugValue2(value);
75
- return value;
76
- }
77
- function checkIfSnapshotChanged(inst) {
78
- var latestGetSnapshot = inst.getSnapshot;
79
- inst = inst.value;
80
- try {
81
- var nextValue = latestGetSnapshot();
82
- return !objectIs(inst, nextValue);
83
- } catch (error) {
84
- return true;
85
- }
86
- }
87
- function useSyncExternalStore$1(subscribe, getSnapshot) {
88
- return getSnapshot();
89
- }
90
- var shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2;
91
- exports.useSyncExternalStore = void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;
92
- }
93
- });
94
-
95
- // node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js
96
- var require_use_sync_external_store_shim_development = __commonJS({
97
- "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js"(exports) {
98
- "production" !== process.env.NODE_ENV && (function() {
99
- function is(x, y) {
100
- return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y;
101
- }
102
- function useSyncExternalStore$2(subscribe, getSnapshot) {
103
- didWarnOld18Alpha || void 0 === React.startTransition || (didWarnOld18Alpha = true, console.error(
104
- "You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."
105
- ));
106
- var value = getSnapshot();
107
- if (!didWarnUncachedGetSnapshot) {
108
- var cachedValue = getSnapshot();
109
- objectIs(value, cachedValue) || (console.error(
110
- "The result of getSnapshot should be cached to avoid an infinite loop"
111
- ), didWarnUncachedGetSnapshot = true);
112
- }
113
- cachedValue = useState2({
114
- inst: { value, getSnapshot }
115
- });
116
- var inst = cachedValue[0].inst, forceUpdate = cachedValue[1];
117
- useLayoutEffect2(
118
- function() {
119
- inst.value = value;
120
- inst.getSnapshot = getSnapshot;
121
- checkIfSnapshotChanged(inst) && forceUpdate({ inst });
122
- },
123
- [subscribe, value, getSnapshot]
124
- );
125
- useEffect2(
126
- function() {
127
- checkIfSnapshotChanged(inst) && forceUpdate({ inst });
128
- return subscribe(function() {
129
- checkIfSnapshotChanged(inst) && forceUpdate({ inst });
130
- });
131
- },
132
- [subscribe]
133
- );
134
- useDebugValue2(value);
135
- return value;
136
- }
137
- function checkIfSnapshotChanged(inst) {
138
- var latestGetSnapshot = inst.getSnapshot;
139
- inst = inst.value;
140
- try {
141
- var nextValue = latestGetSnapshot();
142
- return !objectIs(inst, nextValue);
143
- } catch (error) {
144
- return true;
145
- }
146
- }
147
- function useSyncExternalStore$1(subscribe, getSnapshot) {
148
- return getSnapshot();
149
- }
150
- "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
151
- var React = __require("react"), objectIs = "function" === typeof Object.is ? Object.is : is, useState2 = React.useState, useEffect2 = React.useEffect, useLayoutEffect2 = React.useLayoutEffect, useDebugValue2 = React.useDebugValue, didWarnOld18Alpha = false, didWarnUncachedGetSnapshot = false, shim = "undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement ? useSyncExternalStore$1 : useSyncExternalStore$2;
152
- exports.useSyncExternalStore = void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;
153
- "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
154
- })();
155
- }
156
- });
157
-
158
- // node_modules/use-sync-external-store/shim/index.js
159
- var require_shim = __commonJS({
160
- "node_modules/use-sync-external-store/shim/index.js"(exports, module) {
161
- if (process.env.NODE_ENV === "production") {
162
- module.exports = require_use_sync_external_store_shim_production();
163
- } else {
164
- module.exports = require_use_sync_external_store_shim_development();
165
- }
166
- }
167
- });
168
-
169
- // node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js
170
- var require_with_selector_production = __commonJS({
171
- "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js"(exports) {
172
- var React = __require("react");
173
- var shim = require_shim();
174
- function is(x, y) {
175
- return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y;
176
- }
177
- var objectIs = "function" === typeof Object.is ? Object.is : is;
178
- var useSyncExternalStore = shim.useSyncExternalStore;
179
- var useRef2 = React.useRef;
180
- var useEffect2 = React.useEffect;
181
- var useMemo3 = React.useMemo;
182
- var useDebugValue2 = React.useDebugValue;
183
- exports.useSyncExternalStoreWithSelector = function(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {
184
- var instRef = useRef2(null);
185
- if (null === instRef.current) {
186
- var inst = { hasValue: false, value: null };
187
- instRef.current = inst;
188
- } else inst = instRef.current;
189
- instRef = useMemo3(
190
- function() {
191
- function memoizedSelector(nextSnapshot) {
192
- if (!hasMemo) {
193
- hasMemo = true;
194
- memoizedSnapshot = nextSnapshot;
195
- nextSnapshot = selector(nextSnapshot);
196
- if (void 0 !== isEqual && inst.hasValue) {
197
- var currentSelection = inst.value;
198
- if (isEqual(currentSelection, nextSnapshot))
199
- return memoizedSelection = currentSelection;
200
- }
201
- return memoizedSelection = nextSnapshot;
202
- }
203
- currentSelection = memoizedSelection;
204
- if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;
205
- var nextSelection = selector(nextSnapshot);
206
- if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))
207
- return memoizedSnapshot = nextSnapshot, currentSelection;
208
- memoizedSnapshot = nextSnapshot;
209
- return memoizedSelection = nextSelection;
210
- }
211
- var hasMemo = false, memoizedSnapshot, memoizedSelection, maybeGetServerSnapshot = void 0 === getServerSnapshot ? null : getServerSnapshot;
212
- return [
213
- function() {
214
- return memoizedSelector(getSnapshot());
215
- },
216
- null === maybeGetServerSnapshot ? void 0 : function() {
217
- return memoizedSelector(maybeGetServerSnapshot());
218
- }
219
- ];
220
- },
221
- [getSnapshot, getServerSnapshot, selector, isEqual]
222
- );
223
- var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);
224
- useEffect2(
225
- function() {
226
- inst.hasValue = true;
227
- inst.value = value;
228
- },
229
- [value]
230
- );
231
- useDebugValue2(value);
232
- return value;
233
- };
234
- }
235
- });
236
-
237
- // node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js
238
- var require_with_selector_development = __commonJS({
239
- "node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js"(exports) {
240
- "production" !== process.env.NODE_ENV && (function() {
241
- function is(x, y) {
242
- return x === y && (0 !== x || 1 / x === 1 / y) || x !== x && y !== y;
243
- }
244
- "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
245
- var React = __require("react"), shim = require_shim(), objectIs = "function" === typeof Object.is ? Object.is : is, useSyncExternalStore = shim.useSyncExternalStore, useRef2 = React.useRef, useEffect2 = React.useEffect, useMemo3 = React.useMemo, useDebugValue2 = React.useDebugValue;
246
- exports.useSyncExternalStoreWithSelector = function(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {
247
- var instRef = useRef2(null);
248
- if (null === instRef.current) {
249
- var inst = { hasValue: false, value: null };
250
- instRef.current = inst;
251
- } else inst = instRef.current;
252
- instRef = useMemo3(
253
- function() {
254
- function memoizedSelector(nextSnapshot) {
255
- if (!hasMemo) {
256
- hasMemo = true;
257
- memoizedSnapshot = nextSnapshot;
258
- nextSnapshot = selector(nextSnapshot);
259
- if (void 0 !== isEqual && inst.hasValue) {
260
- var currentSelection = inst.value;
261
- if (isEqual(currentSelection, nextSnapshot))
262
- return memoizedSelection = currentSelection;
263
- }
264
- return memoizedSelection = nextSnapshot;
265
- }
266
- currentSelection = memoizedSelection;
267
- if (objectIs(memoizedSnapshot, nextSnapshot))
268
- return currentSelection;
269
- var nextSelection = selector(nextSnapshot);
270
- if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))
271
- return memoizedSnapshot = nextSnapshot, currentSelection;
272
- memoizedSnapshot = nextSnapshot;
273
- return memoizedSelection = nextSelection;
274
- }
275
- var hasMemo = false, memoizedSnapshot, memoizedSelection, maybeGetServerSnapshot = void 0 === getServerSnapshot ? null : getServerSnapshot;
276
- return [
277
- function() {
278
- return memoizedSelector(getSnapshot());
279
- },
280
- null === maybeGetServerSnapshot ? void 0 : function() {
281
- return memoizedSelector(maybeGetServerSnapshot());
282
- }
283
- ];
284
- },
285
- [getSnapshot, getServerSnapshot, selector, isEqual]
286
- );
287
- var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);
288
- useEffect2(
289
- function() {
290
- inst.hasValue = true;
291
- inst.value = value;
292
- },
293
- [value]
294
- );
295
- useDebugValue2(value);
296
- return value;
297
- };
298
- "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
299
- })();
300
- }
301
- });
302
-
303
- // node_modules/use-sync-external-store/shim/with-selector.js
304
- var require_with_selector = __commonJS({
305
- "node_modules/use-sync-external-store/shim/with-selector.js"(exports, module) {
306
- if (process.env.NODE_ENV === "production") {
307
- module.exports = require_with_selector_production();
308
- } else {
309
- module.exports = require_with_selector_development();
310
- }
311
- }
312
- });
313
-
314
11
  // src/registry/registry.ts
315
12
  var kinds = /* @__PURE__ */ new Map();
316
13
  var listeners = /* @__PURE__ */ new Set();
@@ -3358,10 +3055,10 @@ function zoom_default2() {
3358
3055
 
3359
3056
  // node_modules/@xyflow/system/dist/esm/index.js
3360
3057
  var errorMessages = {
3361
- error001: () => "[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",
3058
+ error001: (lib = "react") => `Seems like you have not used zustand provider as an ancestor. Help: https://${lib}flow.dev/error#001`,
3362
3059
  error002: () => "It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",
3363
3060
  error003: (nodeType) => `Node type "${nodeType}" not found. Using fallback type "default".`,
3364
- error004: () => "The React Flow parent container needs a width and a height to render the graph.",
3061
+ error004: () => "The parent container needs a width and a height to render the graph.",
3365
3062
  error005: () => "Only child nodes can use a parent extent.",
3366
3063
  error006: () => "Can't create edge. An edge needs a source and a target.",
3367
3064
  error007: (id2) => `The old edge with id=${id2} does not exist.`,
@@ -3372,7 +3069,8 @@ var errorMessages = {
3372
3069
  error012: (id2) => `Node with id "${id2}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,
3373
3070
  error013: (lib = "react") => `It seems that you haven't loaded the styles. Please import '@xyflow/${lib}/dist/style.css' or base.css to make sure everything is working properly.`,
3374
3071
  error014: () => "useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.",
3375
- error015: () => "It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs."
3072
+ error015: () => "It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs.",
3073
+ error016: (id2) => `Edge with id "${id2}" does not exist, it may have been removed. This can happen when an edge is deleted before the "onEdgeClick" handler is called.`
3376
3074
  };
3377
3075
  var infiniteExtent = [
3378
3076
  [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],
@@ -3540,7 +3238,7 @@ function getFitViewNodes(nodeLookup, options) {
3540
3238
  }
3541
3239
  async function fitViewport({ nodes, width, height, panZoom, minZoom, maxZoom }, options) {
3542
3240
  if (nodes.size === 0) {
3543
- return Promise.resolve(true);
3241
+ return true;
3544
3242
  }
3545
3243
  const nodesToFit = getFitViewNodes(nodes, options);
3546
3244
  const bounds = getInternalNodesBounds(nodesToFit);
@@ -3550,7 +3248,7 @@ async function fitViewport({ nodes, width, height, panZoom, minZoom, maxZoom },
3550
3248
  ease: options?.ease,
3551
3249
  interpolate: options?.interpolate
3552
3250
  });
3553
- return Promise.resolve(true);
3251
+ return true;
3554
3252
  }
3555
3253
  function calculateNodePosition({ nodeId, nextPosition, nodeLookup, nodeOrigin = [0, 0], nodeExtent, onError }) {
3556
3254
  const node = nodeLookup.get(nodeId);
@@ -3697,9 +3395,9 @@ var getOverlappingArea = (rectA, rectB) => {
3697
3395
  };
3698
3396
  var isRectObject = (obj) => isNumeric(obj.width) && isNumeric(obj.height) && isNumeric(obj.x) && isNumeric(obj.y);
3699
3397
  var isNumeric = (n) => !isNaN(n) && isFinite(n);
3700
- var devWarn = (id2, message) => {
3398
+ var createDevWarn = (lib, helpUrl) => (id2, message) => {
3701
3399
  if (process.env.NODE_ENV === "development") {
3702
- console.warn(`[React Flow]: ${message} Help: https://reactflow.dev/error#${id2}`);
3400
+ console.warn(`[${lib}]: ${message} Help: ${helpUrl}error#${id2}`);
3703
3401
  }
3704
3402
  };
3705
3403
  var snapPosition = (position, snapGrid = [1, 1]) => {
@@ -3737,7 +3435,7 @@ function parsePadding(padding, viewport) {
3737
3435
  return Math.floor(viewport * paddingValue * 0.01);
3738
3436
  }
3739
3437
  }
3740
- console.error(`[React Flow] The padding value "${padding}" is invalid. Please provide a number or a string with a valid unit (px or %).`);
3438
+ console.error(`The padding value "${padding}" is invalid. Please provide a number or a string with a valid unit (px or %).`);
3741
3439
  return 0;
3742
3440
  }
3743
3441
  function parsePaddings(padding, width, height) {
@@ -3991,7 +3689,7 @@ var connectionExists = (edge, edges) => {
3991
3689
  };
3992
3690
  var addEdge = (edgeParams, edges, options = {}) => {
3993
3691
  if (!edgeParams.source || !edgeParams.target) {
3994
- devWarn("006", errorMessages["error006"]());
3692
+ options.onError?.("006", errorMessages["error006"]());
3995
3693
  return edges;
3996
3694
  }
3997
3695
  const edgeIdGenerator = options.getEdgeId || getEdgeId;
@@ -4587,7 +4285,7 @@ function updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOri
4587
4285
  }
4588
4286
  async function panBy({ delta, panZoom, transform: transform2, translateExtent, width, height }) {
4589
4287
  if (!panZoom || !delta.x && !delta.y) {
4590
- return Promise.resolve(false);
4288
+ return false;
4591
4289
  }
4592
4290
  const nextViewport = await panZoom.setViewportConstrained({
4593
4291
  x: transform2[0] + delta.x,
@@ -4598,7 +4296,7 @@ async function panBy({ delta, panZoom, transform: transform2, translateExtent, w
4598
4296
  [width, height]
4599
4297
  ], translateExtent);
4600
4298
  const transformChanged = !!nextViewport && (nextViewport.x !== transform2[0] || nextViewport.y !== transform2[1] || nextViewport.k !== transform2[2]);
4601
- return Promise.resolve(transformChanged);
4299
+ return transformChanged;
4602
4300
  }
4603
4301
  function addConnectionToLookup(type, connection, connectionKey, connectionLookup, nodeId, handleId) {
4604
4302
  let key = nodeId;
@@ -4888,6 +4586,9 @@ function XYDrag({ onNodeMouseDown, getStoreItems, onDragStart, onDrag, onDragSto
4888
4586
  }
4889
4587
  }).on("end", (event) => {
4890
4588
  if (!dragStarted || abortDrag) {
4589
+ if (abortDrag && dragItems.size > 0) {
4590
+ getStoreItems().updateNodePositions(dragItems, false);
4591
+ }
4891
4592
  return;
4892
4593
  }
4893
4594
  autoPanStarted = false;
@@ -5429,7 +5130,7 @@ function XYPanZoom({ domNode, minZoom, maxZoom, translateExtent, viewport, onPan
5429
5130
  const zoomPanValues = {
5430
5131
  isZoomingOrPanning: false,
5431
5132
  usedRightMouseButton: false,
5432
- prevViewport: { },
5133
+ prevViewport: {},
5433
5134
  mouseButton: 0,
5434
5135
  timerId: void 0,
5435
5136
  panScrollTimeout: void 0,
@@ -5449,13 +5150,13 @@ function XYPanZoom({ domNode, minZoom, maxZoom, translateExtent, viewport, onPan
5449
5150
  const d3ZoomHandler = d3Selection.on("wheel.zoom");
5450
5151
  const d3DblClickZoomHandler = d3Selection.on("dblclick.zoom");
5451
5152
  d3ZoomInstance.wheelDelta(wheelDelta);
5452
- function setTransform(transform2, options) {
5153
+ async function setTransform(transform2, options) {
5453
5154
  if (d3Selection) {
5454
5155
  return new Promise((resolve) => {
5455
5156
  d3ZoomInstance?.interpolate(options?.interpolate === "linear" ? value_default : zoom_default).transform(getD3Transition(d3Selection, options?.duration, options?.ease, () => resolve(true)), transform2);
5456
5157
  });
5457
5158
  }
5458
- return Promise.resolve(false);
5159
+ return false;
5459
5160
  }
5460
5161
  function update({ noWheelClassName, noPanClassName, onPaneContextMenu, userSelectionActive, panOnScroll, panOnDrag, panOnScrollMode, panOnScrollSpeed, preventScrolling, zoomOnPinch, zoomOnScroll, zoomOnDoubleClick, zoomActivationKeyPressed, lib, onTransformChange, connectionInProgress, paneClickDistance, selectionOnDrag }) {
5461
5162
  if (userSelectionActive && !zoomPanValues.isZoomingOrPanning) {
@@ -5480,31 +5181,29 @@ function XYPanZoom({ domNode, minZoom, maxZoom, translateExtent, viewport, onPan
5480
5181
  d3ZoomHandler
5481
5182
  });
5482
5183
  d3Selection.on("wheel.zoom", wheelHandler, { passive: false });
5483
- if (!userSelectionActive) {
5484
- const startHandler = createPanZoomStartHandler({
5485
- zoomPanValues,
5486
- onDraggingChange,
5487
- onPanZoomStart
5488
- });
5489
- d3ZoomInstance.on("start", startHandler);
5490
- const panZoomHandler = createPanZoomHandler({
5491
- zoomPanValues,
5492
- panOnDrag,
5493
- onPaneContextMenu: !!onPaneContextMenu,
5494
- onPanZoom,
5495
- onTransformChange
5496
- });
5497
- d3ZoomInstance.on("zoom", panZoomHandler);
5498
- const panZoomEndHandler = createPanZoomEndHandler({
5499
- zoomPanValues,
5500
- panOnDrag,
5501
- panOnScroll,
5502
- onPaneContextMenu,
5503
- onPanZoomEnd,
5504
- onDraggingChange
5505
- });
5506
- d3ZoomInstance.on("end", panZoomEndHandler);
5507
- }
5184
+ const startHandler = createPanZoomStartHandler({
5185
+ zoomPanValues,
5186
+ onDraggingChange,
5187
+ onPanZoomStart
5188
+ });
5189
+ d3ZoomInstance.on("start", startHandler);
5190
+ const panZoomHandler = createPanZoomHandler({
5191
+ zoomPanValues,
5192
+ panOnDrag,
5193
+ onPaneContextMenu: !!onPaneContextMenu,
5194
+ onPanZoom,
5195
+ onTransformChange
5196
+ });
5197
+ d3ZoomInstance.on("zoom", panZoomHandler);
5198
+ const panZoomEndHandler = createPanZoomEndHandler({
5199
+ zoomPanValues,
5200
+ panOnDrag,
5201
+ panOnScroll,
5202
+ onPaneContextMenu,
5203
+ onPanZoomEnd,
5204
+ onDraggingChange
5205
+ });
5206
+ d3ZoomInstance.on("end", panZoomEndHandler);
5508
5207
  const filter2 = createFilter({
5509
5208
  zoomActivationKeyPressed,
5510
5209
  panOnDrag,
@@ -5534,12 +5233,12 @@ function XYPanZoom({ domNode, minZoom, maxZoom, translateExtent, viewport, onPan
5534
5233
  if (contrainedTransform) {
5535
5234
  await setTransform(contrainedTransform);
5536
5235
  }
5537
- return new Promise((resolve) => resolve(contrainedTransform));
5236
+ return contrainedTransform;
5538
5237
  }
5539
5238
  async function setViewport(viewport2, options) {
5540
5239
  const nextTransform = viewportToTransform(viewport2);
5541
5240
  await setTransform(nextTransform, options);
5542
- return new Promise((resolve) => resolve(nextTransform));
5241
+ return nextTransform;
5543
5242
  }
5544
5243
  function syncViewport(viewport2) {
5545
5244
  if (d3Selection) {
@@ -5554,21 +5253,21 @@ function XYPanZoom({ domNode, minZoom, maxZoom, translateExtent, viewport, onPan
5554
5253
  const transform2 = d3Selection ? transform(d3Selection.node()) : { x: 0, y: 0, k: 1 };
5555
5254
  return { x: transform2.x, y: transform2.y, zoom: transform2.k };
5556
5255
  }
5557
- function scaleTo(zoom, options) {
5256
+ async function scaleTo(zoom, options) {
5558
5257
  if (d3Selection) {
5559
5258
  return new Promise((resolve) => {
5560
5259
  d3ZoomInstance?.interpolate(options?.interpolate === "linear" ? value_default : zoom_default).scaleTo(getD3Transition(d3Selection, options?.duration, options?.ease, () => resolve(true)), zoom);
5561
5260
  });
5562
5261
  }
5563
- return Promise.resolve(false);
5262
+ return false;
5564
5263
  }
5565
- function scaleBy(factor, options) {
5264
+ async function scaleBy(factor, options) {
5566
5265
  if (d3Selection) {
5567
5266
  return new Promise((resolve) => {
5568
5267
  d3ZoomInstance?.interpolate(options?.interpolate === "linear" ? value_default : zoom_default).scaleBy(getD3Transition(d3Selection, options?.duration, options?.ease, () => resolve(true)), factor);
5569
5268
  });
5570
5269
  }
5571
- return Promise.resolve(false);
5270
+ return false;
5572
5271
  }
5573
5272
  function setScaleExtent(scaleExtent) {
5574
5273
  d3ZoomInstance?.scaleExtent(scaleExtent);
@@ -5763,12 +5462,6 @@ var initStartValues = {
5763
5462
  pointerY: 0,
5764
5463
  aspectRatio: 1
5765
5464
  };
5766
- function nodeToParentExtent(node) {
5767
- return [
5768
- [0, 0],
5769
- [node.measured.width, node.measured.height]
5770
- ];
5771
- }
5772
5465
  function nodeToChildExtent(child, parent, nodeOrigin) {
5773
5466
  const x = parent.position.x + child.position.x;
5774
5467
  const y = parent.position.y + child.position.y;
@@ -5807,7 +5500,7 @@ function XYResizer({ domNode, nodeId, getStoreItems, onChange, onEnd }) {
5807
5500
  let containerBounds = null;
5808
5501
  let childNodes = [];
5809
5502
  let parentNode = void 0;
5810
- let parentExtent = void 0;
5503
+ let nodeExtent = void 0;
5811
5504
  let childExtent = void 0;
5812
5505
  let resizeDetected = false;
5813
5506
  const dragHandler = drag_default().on("start", (event) => {
@@ -5836,9 +5529,15 @@ function XYResizer({ domNode, nodeId, getStoreItems, onChange, onEnd }) {
5836
5529
  aspectRatio: prevValues.width / prevValues.height
5837
5530
  };
5838
5531
  parentNode = void 0;
5532
+ nodeExtent = isCoordinateExtent(node.extent) ? node.extent : void 0;
5839
5533
  if (node.parentId && (node.extent === "parent" || node.expandParent)) {
5840
5534
  parentNode = nodeLookup.get(node.parentId);
5841
- parentExtent = parentNode && node.extent === "parent" ? nodeToParentExtent(parentNode) : void 0;
5535
+ }
5536
+ if (parentNode && node.extent === "parent") {
5537
+ nodeExtent = [
5538
+ [0, 0],
5539
+ [parentNode.measured.width, parentNode.measured.height]
5540
+ ];
5842
5541
  }
5843
5542
  childNodes = [];
5844
5543
  childExtent = void 0;
@@ -5878,7 +5577,7 @@ function XYResizer({ domNode, nodeId, getStoreItems, onChange, onEnd }) {
5878
5577
  const { x: prevX, y: prevY, width: prevWidth, height: prevHeight } = prevValues;
5879
5578
  const change = {};
5880
5579
  const nodeOrigin = node.origin ?? storeNodeOrigin;
5881
- const { width, height, x, y } = getDimensionsAfterResize(startValues, params.controlDirection, pointerPosition, params.boundaries, params.keepAspectRatio, nodeOrigin, parentExtent, childExtent);
5580
+ const { width, height, x, y } = getDimensionsAfterResize(startValues, params.controlDirection, pointerPosition, params.boundaries, params.keepAspectRatio, nodeOrigin, nodeExtent, childExtent);
5882
5581
  const isWidthChange = width !== prevWidth;
5883
5582
  const isHeightChange = height !== prevHeight;
5884
5583
  const isXPosChange = x !== prevX && isWidthChange;
@@ -5955,9 +5654,62 @@ function XYResizer({ domNode, nodeId, getStoreItems, onChange, onEnd }) {
5955
5654
  destroy
5956
5655
  };
5957
5656
  }
5958
-
5959
- // node_modules/zustand/esm/traditional.mjs
5960
- var import_with_selector = __toESM(require_with_selector());
5657
+ function useSyncExternalStoreWithSelector(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {
5658
+ const instRef = ReactExports.useRef(null);
5659
+ let inst;
5660
+ if (instRef.current === null) {
5661
+ inst = { hasValue: false, value: null };
5662
+ instRef.current = inst;
5663
+ } else {
5664
+ inst = instRef.current;
5665
+ }
5666
+ const [getSelection, getServerSelection] = ReactExports.useMemo(() => {
5667
+ let hasMemo = false;
5668
+ let memoizedSnapshot;
5669
+ let memoizedSelection;
5670
+ const memoizedSelector = (nextSnapshot) => {
5671
+ if (!hasMemo) {
5672
+ hasMemo = true;
5673
+ memoizedSnapshot = nextSnapshot;
5674
+ const nextSelection2 = selector(nextSnapshot);
5675
+ if (isEqual !== void 0 && inst.hasValue) {
5676
+ const currentSelection = inst.value;
5677
+ if (isEqual(currentSelection, nextSelection2)) {
5678
+ memoizedSelection = currentSelection;
5679
+ return currentSelection;
5680
+ }
5681
+ }
5682
+ memoizedSelection = nextSelection2;
5683
+ return nextSelection2;
5684
+ }
5685
+ const prevSnapshot = memoizedSnapshot;
5686
+ const prevSelection = memoizedSelection;
5687
+ if (Object.is(prevSnapshot, nextSnapshot)) {
5688
+ return prevSelection;
5689
+ }
5690
+ const nextSelection = selector(nextSnapshot);
5691
+ if (isEqual !== void 0 && isEqual(prevSelection, nextSelection)) {
5692
+ memoizedSnapshot = nextSnapshot;
5693
+ return prevSelection;
5694
+ }
5695
+ memoizedSnapshot = nextSnapshot;
5696
+ memoizedSelection = nextSelection;
5697
+ return nextSelection;
5698
+ };
5699
+ const maybeGetServerSnapshot = getServerSnapshot === void 0 || getServerSnapshot === null ? null : getServerSnapshot;
5700
+ const getSnapshotWithSelector = () => memoizedSelector(getSnapshot());
5701
+ const getServerSnapshotWithSelector = maybeGetServerSnapshot === null ? void 0 : () => memoizedSelector(maybeGetServerSnapshot());
5702
+ return [getSnapshotWithSelector, getServerSnapshotWithSelector];
5703
+ }, [getSnapshot, getServerSnapshot, selector, isEqual]);
5704
+ const value = ReactExports.useSyncExternalStore(subscribe, getSelection, getServerSelection);
5705
+ ReactExports.useEffect(() => {
5706
+ inst.hasValue = true;
5707
+ inst.value = value;
5708
+ }, [value]);
5709
+ ReactExports.useDebugValue(value);
5710
+ return value;
5711
+ }
5712
+ var use_sync_external_store_with_selector_default = { useSyncExternalStoreWithSelector };
5961
5713
 
5962
5714
  // node_modules/zustand/esm/vanilla.mjs
5963
5715
  var createStoreImpl = (createState) => {
@@ -5992,18 +5744,18 @@ var createStoreImpl = (createState) => {
5992
5744
  var createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;
5993
5745
 
5994
5746
  // node_modules/zustand/esm/traditional.mjs
5995
- var { useDebugValue } = ReactExports__default.default;
5996
- var { useSyncExternalStoreWithSelector } = import_with_selector.default;
5747
+ var { useDebugValue: useDebugValue2 } = ReactExports__default.default;
5748
+ var { useSyncExternalStoreWithSelector: useSyncExternalStoreWithSelector2 } = use_sync_external_store_with_selector_default;
5997
5749
  var identity3 = (arg) => arg;
5998
5750
  function useStoreWithEqualityFn(api, selector = identity3, equalityFn) {
5999
- const slice = useSyncExternalStoreWithSelector(
5751
+ const slice = useSyncExternalStoreWithSelector2(
6000
5752
  api.subscribe,
6001
5753
  api.getState,
6002
5754
  api.getServerState || api.getInitialState,
6003
5755
  selector,
6004
5756
  equalityFn
6005
5757
  );
6006
- useDebugValue(slice);
5758
+ useDebugValue2(slice);
6007
5759
  return slice;
6008
5760
  }
6009
5761
  var createWithEqualityFnImpl = (createState, defaultEqualityFn) => {
@@ -6053,7 +5805,7 @@ function shallow$1(objA, objB) {
6053
5805
  }
6054
5806
  var StoreContext = ReactExports.createContext(null);
6055
5807
  var Provider$1 = StoreContext.Provider;
6056
- var zustandErrorMessage = errorMessages["error001"]();
5808
+ var zustandErrorMessage = errorMessages["error001"]("react");
6057
5809
  function useStore(selector, equalityFn) {
6058
5810
  const store = ReactExports.useContext(StoreContext);
6059
5811
  if (store === null) {
@@ -6145,7 +5897,6 @@ function SelectionListener({ onSelectionChange }) {
6145
5897
  }
6146
5898
  return null;
6147
5899
  }
6148
- var useIsomorphicLayoutEffect = typeof window !== "undefined" ? ReactExports.useLayoutEffect : ReactExports.useEffect;
6149
5900
  var defaultNodeOrigin = [0, 0];
6150
5901
  var defaultViewport = { x: 0, y: 0, zoom: 1 };
6151
5902
  var reactFlowFieldsToTrack = [
@@ -6236,7 +5987,7 @@ var initPrevValues2 = {
6236
5987
  function StoreUpdater(props) {
6237
5988
  const { setNodes, setEdges, setMinZoom, setMaxZoom, setTranslateExtent, setNodeExtent, reset, setDefaultNodesAndEdges } = useStore(selector$l, shallow$1);
6238
5989
  const store = useStoreApi();
6239
- useIsomorphicLayoutEffect(() => {
5990
+ ReactExports.useEffect(() => {
6240
5991
  setDefaultNodesAndEdges(props.defaultNodes, props.defaultEdges);
6241
5992
  return () => {
6242
5993
  previousFields.current = initPrevValues2;
@@ -6244,7 +5995,7 @@ function StoreUpdater(props) {
6244
5995
  };
6245
5996
  }, []);
6246
5997
  const previousFields = ReactExports.useRef(initPrevValues2);
6247
- useIsomorphicLayoutEffect(
5998
+ ReactExports.useEffect(
6248
5999
  () => {
6249
6000
  for (const fieldName of fieldsToTrack) {
6250
6001
  const fieldValue = props[fieldName];
@@ -6380,30 +6131,30 @@ var useViewportHelper = () => {
6380
6131
  const store = useStoreApi();
6381
6132
  return ReactExports.useMemo(() => {
6382
6133
  return {
6383
- zoomIn: (options) => {
6134
+ zoomIn: async (options) => {
6384
6135
  const { panZoom } = store.getState();
6385
- return panZoom ? panZoom.scaleBy(1.2, options) : Promise.resolve(false);
6136
+ return panZoom ? panZoom.scaleBy(1.2, options) : false;
6386
6137
  },
6387
- zoomOut: (options) => {
6138
+ zoomOut: async (options) => {
6388
6139
  const { panZoom } = store.getState();
6389
- return panZoom ? panZoom.scaleBy(1 / 1.2, options) : Promise.resolve(false);
6140
+ return panZoom ? panZoom.scaleBy(1 / 1.2, options) : false;
6390
6141
  },
6391
- zoomTo: (zoomLevel, options) => {
6142
+ zoomTo: async (zoomLevel, options) => {
6392
6143
  const { panZoom } = store.getState();
6393
- return panZoom ? panZoom.scaleTo(zoomLevel, options) : Promise.resolve(false);
6144
+ return panZoom ? panZoom.scaleTo(zoomLevel, options) : false;
6394
6145
  },
6395
6146
  getZoom: () => store.getState().transform[2],
6396
6147
  setViewport: async (viewport, options) => {
6397
6148
  const { transform: [tX, tY, tZoom], panZoom } = store.getState();
6398
6149
  if (!panZoom) {
6399
- return Promise.resolve(false);
6150
+ return false;
6400
6151
  }
6401
6152
  await panZoom.setViewport({
6402
6153
  x: viewport.x ?? tX,
6403
6154
  y: viewport.y ?? tY,
6404
6155
  zoom: viewport.zoom ?? tZoom
6405
6156
  }, options);
6406
- return Promise.resolve(true);
6157
+ return true;
6407
6158
  },
6408
6159
  getViewport: () => {
6409
6160
  const [x, y, zoom] = store.getState().transform;
@@ -6416,14 +6167,14 @@ var useViewportHelper = () => {
6416
6167
  const { width, height, minZoom, maxZoom, panZoom } = store.getState();
6417
6168
  const viewport = getViewportForBounds(bounds, width, height, minZoom, maxZoom, options?.padding ?? 0.1);
6418
6169
  if (!panZoom) {
6419
- return Promise.resolve(false);
6170
+ return false;
6420
6171
  }
6421
6172
  await panZoom.setViewport(viewport, {
6422
6173
  duration: options?.duration,
6423
6174
  ease: options?.ease,
6424
6175
  interpolate: options?.interpolate
6425
6176
  });
6426
- return Promise.resolve(true);
6177
+ return true;
6427
6178
  },
6428
6179
  screenToFlowPosition: (clientPosition, options = {}) => {
6429
6180
  const { transform: transform2, snapGrid, snapToGrid, domNode } = store.getState();
@@ -6592,11 +6343,19 @@ function elementToRemoveChange(item) {
6592
6343
  type: "remove"
6593
6344
  };
6594
6345
  }
6346
+ var defaultOnError = createDevWarn("React Flow", "https://reactflow.dev/");
6347
+ function addEdge2(edgeParams, edges, options = {}) {
6348
+ return addEdge(edgeParams, edges, {
6349
+ ...options,
6350
+ onError: options.onError ?? defaultOnError
6351
+ });
6352
+ }
6595
6353
  var isNode = (element) => isNodeBase(element);
6596
6354
  var isEdge = (element) => isEdgeBase(element);
6597
6355
  function fixedForwardRef(render) {
6598
6356
  return ReactExports.forwardRef(render);
6599
6357
  }
6358
+ var useIsomorphicLayoutEffect = typeof window !== "undefined" ? ReactExports.useLayoutEffect : ReactExports.useEffect;
6600
6359
  function useQueue(runQueue) {
6601
6360
  const [serial, setSerial] = ReactExports.useState(BigInt(0));
6602
6361
  const [queue] = ReactExports.useState(() => createQueue(() => setSerial((n) => n + BigInt(1))));
@@ -7027,17 +6786,22 @@ var selector$h = (s) => ({
7027
6786
  userSelectionActive: s.userSelectionActive,
7028
6787
  elementsSelectable: s.elementsSelectable,
7029
6788
  connectionInProgress: s.connection.inProgress,
7030
- dragging: s.paneDragging
6789
+ dragging: s.paneDragging,
6790
+ panBy: s.panBy,
6791
+ autoPanSpeed: s.autoPanSpeed
7031
6792
  });
7032
- function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.Full, panOnDrag, paneClickDistance, selectionOnDrag, onSelectionStart, onSelectionEnd, onPaneClick, onPaneContextMenu, onPaneScroll, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, children: children2 }) {
6793
+ function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.Full, panOnDrag, autoPanOnSelection, paneClickDistance, selectionOnDrag, onSelectionStart, onSelectionEnd, onPaneClick, onPaneContextMenu, onPaneScroll, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, children: children2 }) {
6794
+ const autoPanId = ReactExports.useRef(0);
7033
6795
  const store = useStoreApi();
7034
- const { userSelectionActive, elementsSelectable, dragging, connectionInProgress } = useStore(selector$h, shallow$1);
6796
+ const { userSelectionActive, elementsSelectable, dragging, connectionInProgress, panBy: panBy2, autoPanSpeed } = useStore(selector$h, shallow$1);
7035
6797
  const isSelectionEnabled = elementsSelectable && (isSelecting || userSelectionActive);
7036
6798
  const container = ReactExports.useRef(null);
7037
6799
  const containerBounds = ReactExports.useRef();
7038
6800
  const selectedNodeIds = ReactExports.useRef(/* @__PURE__ */ new Set());
7039
6801
  const selectedEdgeIds = ReactExports.useRef(/* @__PURE__ */ new Set());
7040
6802
  const selectionInProgress = ReactExports.useRef(false);
6803
+ const position = ReactExports.useRef({ x: 0, y: 0 });
6804
+ const autoPanStarted = ReactExports.useRef(false);
7041
6805
  const onClick = (event) => {
7042
6806
  if (selectionInProgress.current || connectionInProgress) {
7043
6807
  selectionInProgress.current = false;
@@ -7062,7 +6826,7 @@ function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.
7062
6826
  }
7063
6827
  };
7064
6828
  const onPointerDownCapture = (event) => {
7065
- const { domNode } = store.getState();
6829
+ const { domNode, transform: transform2 } = store.getState();
7066
6830
  containerBounds.current = domNode?.getBoundingClientRect();
7067
6831
  if (!containerBounds.current)
7068
6832
  return;
@@ -7075,12 +6839,13 @@ function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.
7075
6839
  event.target?.setPointerCapture?.(event.pointerId);
7076
6840
  selectionInProgress.current = false;
7077
6841
  const { x, y } = getEventPosition(event.nativeEvent, containerBounds.current);
6842
+ const userSelectionStartPosition = pointToRendererPoint({ x, y }, transform2);
7078
6843
  store.setState({
7079
6844
  userSelectionRect: {
7080
6845
  width: 0,
7081
6846
  height: 0,
7082
- startX: x,
7083
- startY: y,
6847
+ startX: userSelectionStartPosition.x,
6848
+ startY: userSelectionStartPosition.y,
7084
6849
  x,
7085
6850
  y
7086
6851
  }
@@ -7090,30 +6855,21 @@ function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.
7090
6855
  event.preventDefault();
7091
6856
  }
7092
6857
  };
7093
- const onPointerMove = (event) => {
7094
- const { userSelectionRect, transform: transform2, nodeLookup, edgeLookup, connectionLookup, triggerNodeChanges, triggerEdgeChanges, defaultEdgeOptions, resetSelectedElements } = store.getState();
7095
- if (!containerBounds.current || !userSelectionRect) {
6858
+ function commitUserSelectionRect(mouseX, mouseY) {
6859
+ const { userSelectionRect } = store.getState();
6860
+ if (!userSelectionRect) {
7096
6861
  return;
7097
6862
  }
7098
- const { x: mouseX, y: mouseY } = getEventPosition(event.nativeEvent, containerBounds.current);
7099
- const { startX, startY } = userSelectionRect;
7100
- if (!selectionInProgress.current) {
7101
- const requiredDistance = selectionKeyPressed ? 0 : paneClickDistance;
7102
- const distance2 = Math.hypot(mouseX - startX, mouseY - startY);
7103
- if (distance2 <= requiredDistance) {
7104
- return;
7105
- }
7106
- resetSelectedElements();
7107
- onSelectionStart?.(event);
7108
- }
7109
- selectionInProgress.current = true;
6863
+ const { transform: transform2, nodeLookup, edgeLookup, connectionLookup, triggerNodeChanges, triggerEdgeChanges, defaultEdgeOptions } = store.getState();
6864
+ const userStartPosition = { x: userSelectionRect.startX, y: userSelectionRect.startY };
6865
+ const { x: screenStartX, y: screenStartY } = rendererPointToPoint(userStartPosition, transform2);
7110
6866
  const nextUserSelectRect = {
7111
- startX,
7112
- startY,
7113
- x: mouseX < startX ? mouseX : startX,
7114
- y: mouseY < startY ? mouseY : startY,
7115
- width: Math.abs(mouseX - startX),
7116
- height: Math.abs(mouseY - startY)
6867
+ startX: userStartPosition.x,
6868
+ startY: userStartPosition.y,
6869
+ x: mouseX < screenStartX ? mouseX : screenStartX,
6870
+ y: mouseY < screenStartY ? mouseY : screenStartY,
6871
+ width: Math.abs(mouseX - screenStartX),
6872
+ height: Math.abs(mouseY - screenStartY)
7117
6873
  };
7118
6874
  const prevSelectedNodeIds = selectedNodeIds.current;
7119
6875
  const prevSelectedEdgeIds = selectedEdgeIds.current;
@@ -7144,6 +6900,53 @@ function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.
7144
6900
  userSelectionActive: true,
7145
6901
  nodesSelectionActive: false
7146
6902
  });
6903
+ }
6904
+ function autoPan() {
6905
+ if (!autoPanOnSelection || !containerBounds.current) {
6906
+ return;
6907
+ }
6908
+ const [x, y] = calcAutoPan(position.current, containerBounds.current, autoPanSpeed);
6909
+ panBy2({ x, y }).then((panned) => {
6910
+ if (!selectionInProgress.current || !panned) {
6911
+ autoPanId.current = requestAnimationFrame(autoPan);
6912
+ return;
6913
+ }
6914
+ const { x: mx, y: my } = position.current;
6915
+ commitUserSelectionRect(mx, my);
6916
+ autoPanId.current = requestAnimationFrame(autoPan);
6917
+ });
6918
+ }
6919
+ const cleanupAutoPan = () => {
6920
+ cancelAnimationFrame(autoPanId.current);
6921
+ autoPanId.current = 0;
6922
+ autoPanStarted.current = false;
6923
+ };
6924
+ ReactExports.useEffect(() => {
6925
+ return () => cleanupAutoPan();
6926
+ }, []);
6927
+ const onPointerMove = (event) => {
6928
+ const { userSelectionRect, transform: transform2, resetSelectedElements } = store.getState();
6929
+ if (!containerBounds.current || !userSelectionRect) {
6930
+ return;
6931
+ }
6932
+ const { x: mouseX, y: mouseY } = getEventPosition(event.nativeEvent, containerBounds.current);
6933
+ position.current = { x: mouseX, y: mouseY };
6934
+ const screenStart = rendererPointToPoint({ x: userSelectionRect.startX, y: userSelectionRect.startY }, transform2);
6935
+ if (!selectionInProgress.current) {
6936
+ const requiredDistance = selectionKeyPressed ? 0 : paneClickDistance;
6937
+ const distance2 = Math.hypot(mouseX - screenStart.x, mouseY - screenStart.y);
6938
+ if (distance2 <= requiredDistance) {
6939
+ return;
6940
+ }
6941
+ resetSelectedElements();
6942
+ onSelectionStart?.(event);
6943
+ }
6944
+ selectionInProgress.current = true;
6945
+ if (!autoPanStarted.current) {
6946
+ autoPan();
6947
+ autoPanStarted.current = true;
6948
+ }
6949
+ commitUserSelectionRect(mouseX, mouseY);
7147
6950
  };
7148
6951
  const onPointerUp = (event) => {
7149
6952
  if (event.button !== 0) {
@@ -7163,9 +6966,14 @@ function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.
7163
6966
  nodesSelectionActive: selectedNodeIds.current.size > 0
7164
6967
  });
7165
6968
  }
6969
+ cleanupAutoPan();
6970
+ };
6971
+ const onPointerCancel = (event) => {
6972
+ event.target?.releasePointerCapture?.(event.pointerId);
6973
+ cleanupAutoPan();
7166
6974
  };
7167
6975
  const draggable = panOnDrag === true || Array.isArray(panOnDrag) && panOnDrag.includes(0);
7168
- return jsxRuntime.jsxs("div", { className: cc(["react-flow__pane", { draggable, dragging, selection: isSelecting }]), onClick: isSelectionEnabled ? void 0 : wrapHandler(onClick, container), onContextMenu: wrapHandler(onContextMenu, container), onWheel: wrapHandler(onWheel, container), onPointerEnter: isSelectionEnabled ? void 0 : onPaneMouseEnter, onPointerMove: isSelectionEnabled ? onPointerMove : onPaneMouseMove, onPointerUp: isSelectionEnabled ? onPointerUp : void 0, onPointerDownCapture: isSelectionEnabled ? onPointerDownCapture : void 0, onClickCapture: isSelectionEnabled ? onClickCapture : void 0, onPointerLeave: onPaneMouseLeave, ref: container, style: containerStyle, children: [children2, jsxRuntime.jsx(UserSelection, {})] });
6976
+ return jsxRuntime.jsxs("div", { className: cc(["react-flow__pane", { draggable, dragging, selection: isSelecting }]), onClick: isSelectionEnabled ? void 0 : wrapHandler(onClick, container), onContextMenu: wrapHandler(onContextMenu, container), onWheel: wrapHandler(onWheel, container), onPointerEnter: isSelectionEnabled ? void 0 : onPaneMouseEnter, onPointerMove: isSelectionEnabled ? onPointerMove : onPaneMouseMove, onPointerUp: isSelectionEnabled ? onPointerUp : void 0, onPointerCancel: isSelectionEnabled ? onPointerCancel : void 0, onPointerDownCapture: isSelectionEnabled ? onPointerDownCapture : void 0, onClickCapture: isSelectionEnabled ? onClickCapture : void 0, onPointerLeave: onPaneMouseLeave, ref: container, style: containerStyle, children: [children2, jsxRuntime.jsx(UserSelection, {})] });
7169
6977
  }
7170
6978
  function handleNodeClick({ id: id2, store, unselect = false, nodeRef }) {
7171
6979
  const { addSelectedNodes, unselectNodesAndEdges, multiSelectionActive, nodeLookup, onError } = store.getState();
@@ -7303,8 +7111,8 @@ function HandleComponent({ type = "source", position = Position.Top, isValidConn
7303
7111
  ...params
7304
7112
  };
7305
7113
  if (hasDefaultEdges) {
7306
- const { edges, setEdges } = store.getState();
7307
- setEdges(addEdge(edgeParams, edges));
7114
+ const { edges, setEdges, onError } = store.getState();
7115
+ setEdges(addEdge2(edgeParams, edges, { onError }));
7308
7116
  }
7309
7117
  onConnectAction?.(edgeParams);
7310
7118
  onConnect?.(edgeParams);
@@ -7500,7 +7308,7 @@ var win = typeof window !== "undefined" ? window : void 0;
7500
7308
  var selector$e = (s) => {
7501
7309
  return { nodesSelectionActive: s.nodesSelectionActive, userSelectionActive: s.userSelectionActive };
7502
7310
  };
7503
- function FlowRendererComponent({ children: children2, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, paneClickDistance, deleteKeyCode, selectionKeyCode, selectionOnDrag, selectionMode, onSelectionStart, onSelectionEnd, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, elementsSelectable, zoomOnScroll, zoomOnPinch, panOnScroll: _panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag: _panOnDrag, defaultViewport: defaultViewport2, translateExtent, minZoom, maxZoom, preventScrolling, onSelectionContextMenu, noWheelClassName, noPanClassName, disableKeyboardA11y, onViewportChange, isControlledViewport }) {
7311
+ function FlowRendererComponent({ children: children2, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, paneClickDistance, deleteKeyCode, selectionKeyCode, selectionOnDrag, selectionMode, onSelectionStart, onSelectionEnd, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, elementsSelectable, zoomOnScroll, zoomOnPinch, panOnScroll: _panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag: _panOnDrag, autoPanOnSelection, defaultViewport: defaultViewport2, translateExtent, minZoom, maxZoom, preventScrolling, onSelectionContextMenu, noWheelClassName, noPanClassName, disableKeyboardA11y, onViewportChange, isControlledViewport }) {
7504
7312
  const { nodesSelectionActive, userSelectionActive } = useStore(selector$e, shallow$1);
7505
7313
  const selectionKeyPressed = useKeyPress(selectionKeyCode, { target: win });
7506
7314
  const panActivationKeyPressed = useKeyPress(panActivationKeyCode, { target: win });
@@ -7509,7 +7317,7 @@ function FlowRendererComponent({ children: children2, onPaneClick, onPaneMouseEn
7509
7317
  const _selectionOnDrag = selectionOnDrag && panOnDrag !== true;
7510
7318
  const isSelecting = selectionKeyPressed || userSelectionActive || _selectionOnDrag;
7511
7319
  useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode });
7512
- return jsxRuntime.jsx(ZoomPane, { onPaneContextMenu, elementsSelectable, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag: !selectionKeyPressed && panOnDrag, defaultViewport: defaultViewport2, translateExtent, minZoom, maxZoom, zoomActivationKeyCode, preventScrolling, noWheelClassName, noPanClassName, onViewportChange, isControlledViewport, paneClickDistance, selectionOnDrag: _selectionOnDrag, children: jsxRuntime.jsxs(Pane, { onSelectionStart, onSelectionEnd, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, panOnDrag, isSelecting: !!isSelecting, selectionMode, selectionKeyPressed, paneClickDistance, selectionOnDrag: _selectionOnDrag, children: [children2, nodesSelectionActive && jsxRuntime.jsx(NodesSelection, { onSelectionContextMenu, noPanClassName, disableKeyboardA11y })] }) });
7320
+ return jsxRuntime.jsx(ZoomPane, { onPaneContextMenu, elementsSelectable, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag: !selectionKeyPressed && panOnDrag, defaultViewport: defaultViewport2, translateExtent, minZoom, maxZoom, zoomActivationKeyCode, preventScrolling, noWheelClassName, noPanClassName, onViewportChange, isControlledViewport, paneClickDistance, selectionOnDrag: _selectionOnDrag, children: jsxRuntime.jsxs(Pane, { onSelectionStart, onSelectionEnd, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, panOnDrag, autoPanOnSelection, isSelecting: !!isSelecting, selectionMode, selectionKeyPressed, paneClickDistance, selectionOnDrag: _selectionOnDrag, children: [children2, nodesSelectionActive && jsxRuntime.jsx(NodesSelection, { onSelectionContextMenu, noPanClassName, disableKeyboardA11y })] }) });
7513
7321
  }
7514
7322
  FlowRendererComponent.displayName = "FlowRenderer";
7515
7323
  var FlowRenderer = ReactExports.memo(FlowRendererComponent);
@@ -8314,16 +8122,17 @@ function useStylesLoadedWarning() {
8314
8122
  }
8315
8123
  }, []);
8316
8124
  }
8317
- function GraphViewComponent({ nodeTypes, edgeTypes, onInit, onNodeClick, onEdgeClick, onNodeDoubleClick, onEdgeDoubleClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onSelectionContextMenu, onSelectionStart, onSelectionEnd, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, deleteKeyCode, onlyRenderVisibleElements, elementsSelectable, defaultViewport: defaultViewport2, translateExtent, minZoom, maxZoom, preventScrolling, defaultMarkerColor, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance, nodeClickDistance, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, noDragClassName, noWheelClassName, noPanClassName, disableKeyboardA11y, nodeExtent, rfId, viewport, onViewportChange }) {
8125
+ function GraphViewComponent({ nodeTypes, edgeTypes, onInit, onNodeClick, onEdgeClick, onNodeDoubleClick, onEdgeDoubleClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onSelectionContextMenu, onSelectionStart, onSelectionEnd, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, deleteKeyCode, onlyRenderVisibleElements, elementsSelectable, defaultViewport: defaultViewport2, translateExtent, minZoom, maxZoom, preventScrolling, defaultMarkerColor, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag, autoPanOnSelection, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance, nodeClickDistance, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, noDragClassName, noWheelClassName, noPanClassName, disableKeyboardA11y, nodeExtent, rfId, viewport, onViewportChange }) {
8318
8126
  useNodeOrEdgeTypesWarning(nodeTypes);
8319
8127
  useNodeOrEdgeTypesWarning(edgeTypes);
8320
8128
  useStylesLoadedWarning();
8321
8129
  useOnInitHandler(onInit);
8322
8130
  useViewportSync(viewport);
8323
- return jsxRuntime.jsx(FlowRenderer, { onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, paneClickDistance, deleteKeyCode, selectionKeyCode, selectionOnDrag, selectionMode, onSelectionStart, onSelectionEnd, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, elementsSelectable, zoomOnScroll, zoomOnPinch, zoomOnDoubleClick, panOnScroll, panOnScrollSpeed, panOnScrollMode, panOnDrag, defaultViewport: defaultViewport2, translateExtent, minZoom, maxZoom, onSelectionContextMenu, preventScrolling, noDragClassName, noWheelClassName, noPanClassName, disableKeyboardA11y, onViewportChange, isControlledViewport: !!viewport, children: jsxRuntime.jsxs(Viewport, { children: [jsxRuntime.jsx(EdgeRenderer, { edgeTypes, onEdgeClick, onEdgeDoubleClick, onReconnect, onReconnectStart, onReconnectEnd, onlyRenderVisibleElements, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, defaultMarkerColor, noPanClassName, disableKeyboardA11y, rfId }), jsxRuntime.jsx(ConnectionLineWrapper, { style: connectionLineStyle, type: connectionLineType, component: connectionLineComponent, containerStyle: connectionLineContainerStyle }), jsxRuntime.jsx("div", { className: "react-flow__edgelabel-renderer" }), jsxRuntime.jsx(NodeRenderer, { nodeTypes, onNodeClick, onNodeDoubleClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, nodeClickDistance, onlyRenderVisibleElements, noPanClassName, noDragClassName, disableKeyboardA11y, nodeExtent, rfId }), jsxRuntime.jsx("div", { className: "react-flow__viewport-portal" })] }) });
8131
+ return jsxRuntime.jsx(FlowRenderer, { onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, paneClickDistance, deleteKeyCode, selectionKeyCode, selectionOnDrag, selectionMode, onSelectionStart, onSelectionEnd, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, elementsSelectable, zoomOnScroll, zoomOnPinch, zoomOnDoubleClick, panOnScroll, panOnScrollSpeed, panOnScrollMode, panOnDrag, autoPanOnSelection, defaultViewport: defaultViewport2, translateExtent, minZoom, maxZoom, onSelectionContextMenu, preventScrolling, noDragClassName, noWheelClassName, noPanClassName, disableKeyboardA11y, onViewportChange, isControlledViewport: !!viewport, children: jsxRuntime.jsxs(Viewport, { children: [jsxRuntime.jsx(EdgeRenderer, { edgeTypes, onEdgeClick, onEdgeDoubleClick, onReconnect, onReconnectStart, onReconnectEnd, onlyRenderVisibleElements, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, defaultMarkerColor, noPanClassName, disableKeyboardA11y, rfId }), jsxRuntime.jsx(ConnectionLineWrapper, { style: connectionLineStyle, type: connectionLineType, component: connectionLineComponent, containerStyle: connectionLineContainerStyle }), jsxRuntime.jsx("div", { className: "react-flow__edgelabel-renderer" }), jsxRuntime.jsx(NodeRenderer, { nodeTypes, onNodeClick, onNodeDoubleClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, nodeClickDistance, onlyRenderVisibleElements, noPanClassName, noDragClassName, disableKeyboardA11y, nodeExtent, rfId }), jsxRuntime.jsx("div", { className: "react-flow__viewport-portal" })] }) });
8324
8132
  }
8325
8133
  GraphViewComponent.displayName = "GraphView";
8326
8134
  var GraphView = ReactExports.memo(GraphViewComponent);
8135
+ var devWarn = createDevWarn("React Flow", "https://reactflow.dev/");
8327
8136
  var getInitialState = ({ nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom = 0.5, maxZoom = 2, nodeOrigin, nodeExtent, zIndexMode = "basic" } = {}) => {
8328
8137
  const nodeLookup = /* @__PURE__ */ new Map();
8329
8138
  const parentLookup = /* @__PURE__ */ new Map();
@@ -8670,7 +8479,7 @@ var createStore2 = ({ nodes, edges, defaultNodes, defaultEdges, width, height, f
8670
8479
  setCenter: async (x, y, options) => {
8671
8480
  const { width: width2, height: height2, maxZoom: maxZoom2, panZoom } = get3();
8672
8481
  if (!panZoom) {
8673
- return Promise.resolve(false);
8482
+ return false;
8674
8483
  }
8675
8484
  const nextZoom = typeof options?.zoom !== "undefined" ? options.zoom : maxZoom2;
8676
8485
  await panZoom.setViewport({
@@ -8678,7 +8487,7 @@ var createStore2 = ({ nodes, edges, defaultNodes, defaultEdges, width, height, f
8678
8487
  y: height2 / 2 - y * nextZoom,
8679
8488
  zoom: nextZoom
8680
8489
  }, { duration: options?.duration, ease: options?.ease, interpolate: options?.interpolate });
8681
- return Promise.resolve(true);
8490
+ return true;
8682
8491
  },
8683
8492
  cancelConnection: () => {
8684
8493
  set3({
@@ -8723,14 +8532,14 @@ var wrapperStyle = {
8723
8532
  position: "relative",
8724
8533
  zIndex: 0
8725
8534
  };
8726
- function ReactFlow({ nodes, edges, defaultNodes, defaultEdges, className, nodeTypes, edgeTypes, onNodeClick, onEdgeClick, onInit, onMove, onMoveStart, onMoveEnd, onConnect, onConnectStart, onConnectEnd, onClickConnectStart, onClickConnectEnd, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onNodeDoubleClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onNodesDelete, onEdgesDelete, onDelete, onSelectionChange, onSelectionDragStart, onSelectionDrag, onSelectionDragStop, onSelectionContextMenu, onSelectionStart, onSelectionEnd, onBeforeDelete, connectionMode, connectionLineType = ConnectionLineType.Bezier, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, deleteKeyCode = "Backspace", selectionKeyCode = "Shift", selectionOnDrag = false, selectionMode = SelectionMode.Full, panActivationKeyCode = "Space", multiSelectionKeyCode = isMacOs() ? "Meta" : "Control", zoomActivationKeyCode = isMacOs() ? "Meta" : "Control", snapToGrid, snapGrid, onlyRenderVisibleElements = false, selectNodesOnDrag, nodesDraggable, autoPanOnNodeFocus, nodesConnectable, nodesFocusable, nodeOrigin = defaultNodeOrigin, edgesFocusable, edgesReconnectable, elementsSelectable = true, defaultViewport: defaultViewport$1 = defaultViewport, minZoom = 0.5, maxZoom = 2, translateExtent = infiniteExtent, preventScrolling = true, nodeExtent, defaultMarkerColor = "#b1b1b7", zoomOnScroll = true, zoomOnPinch = true, panOnScroll = false, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = true, panOnDrag = true, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance = 1, nodeClickDistance = 0, children: children2, onReconnect, onReconnectStart, onReconnectEnd, onEdgeContextMenu, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius = 10, onNodesChange, onEdgesChange, noDragClassName = "nodrag", noWheelClassName = "nowheel", noPanClassName = "nopan", fitView, fitViewOptions, connectOnClick, attributionPosition, proOptions, defaultEdgeOptions, elevateNodesOnSelect = true, elevateEdgesOnSelect = false, disableKeyboardA11y = false, autoPanOnConnect, autoPanOnNodeDrag, autoPanSpeed, connectionRadius, isValidConnection, onError, style: style2, id: id2, nodeDragThreshold, connectionDragThreshold, viewport, onViewportChange, width, height, colorMode = "light", debug, onScroll, ariaLabelConfig, zIndexMode = "basic", ...rest }, ref) {
8535
+ function ReactFlow({ nodes, edges, defaultNodes, defaultEdges, className, nodeTypes, edgeTypes, onNodeClick, onEdgeClick, onInit, onMove, onMoveStart, onMoveEnd, onConnect, onConnectStart, onConnectEnd, onClickConnectStart, onClickConnectEnd, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onNodeDoubleClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onNodesDelete, onEdgesDelete, onDelete, onSelectionChange, onSelectionDragStart, onSelectionDrag, onSelectionDragStop, onSelectionContextMenu, onSelectionStart, onSelectionEnd, onBeforeDelete, connectionMode, connectionLineType = ConnectionLineType.Bezier, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, deleteKeyCode = "Backspace", selectionKeyCode = "Shift", selectionOnDrag = false, selectionMode = SelectionMode.Full, panActivationKeyCode = "Space", multiSelectionKeyCode = isMacOs() ? "Meta" : "Control", zoomActivationKeyCode = isMacOs() ? "Meta" : "Control", snapToGrid, snapGrid, onlyRenderVisibleElements = false, selectNodesOnDrag, nodesDraggable, autoPanOnNodeFocus, nodesConnectable, nodesFocusable, nodeOrigin = defaultNodeOrigin, edgesFocusable, edgesReconnectable, elementsSelectable = true, defaultViewport: defaultViewport$1 = defaultViewport, minZoom = 0.5, maxZoom = 2, translateExtent = infiniteExtent, preventScrolling = true, nodeExtent, defaultMarkerColor = "#b1b1b7", zoomOnScroll = true, zoomOnPinch = true, panOnScroll = false, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = true, panOnDrag = true, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance = 1, nodeClickDistance = 0, children: children2, onReconnect, onReconnectStart, onReconnectEnd, onEdgeContextMenu, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius = 10, onNodesChange, onEdgesChange, noDragClassName = "nodrag", noWheelClassName = "nowheel", noPanClassName = "nopan", fitView, fitViewOptions, connectOnClick, attributionPosition, proOptions, defaultEdgeOptions, elevateNodesOnSelect = true, elevateEdgesOnSelect = false, disableKeyboardA11y = false, autoPanOnConnect, autoPanOnNodeDrag, autoPanOnSelection = true, autoPanSpeed, connectionRadius, isValidConnection, onError, style: style2, id: id2, nodeDragThreshold, connectionDragThreshold, viewport, onViewportChange, width, height, colorMode = "light", debug, onScroll, ariaLabelConfig, zIndexMode = "basic", ...rest }, ref) {
8727
8536
  const rfId = id2 || "1";
8728
8537
  const colorModeClassName = useColorModeClass(colorMode);
8729
8538
  const wrapperOnScroll = ReactExports.useCallback((e) => {
8730
8539
  e.currentTarget.scrollTo({ top: 0, left: 0, behavior: "instant" });
8731
8540
  onScroll?.(e);
8732
8541
  }, [onScroll]);
8733
- return jsxRuntime.jsx("div", { "data-testid": "rf__wrapper", ...rest, onScroll: wrapperOnScroll, style: { ...style2, ...wrapperStyle }, ref, className: cc(["react-flow", className, colorModeClassName]), id: id2, role: "application", children: jsxRuntime.jsxs(Wrapper, { nodes, edges, width, height, fitView, fitViewOptions, minZoom, maxZoom, nodeOrigin, nodeExtent, zIndexMode, children: [jsxRuntime.jsx(StoreUpdater, { nodes, edges, defaultNodes, defaultEdges, onConnect, onConnectStart, onConnectEnd, onClickConnectStart, onClickConnectEnd, nodesDraggable, autoPanOnNodeFocus, nodesConnectable, nodesFocusable, edgesFocusable, edgesReconnectable, elementsSelectable, elevateNodesOnSelect, elevateEdgesOnSelect, minZoom, maxZoom, nodeExtent, onNodesChange, onEdgesChange, snapToGrid, snapGrid, connectionMode, translateExtent, connectOnClick, defaultEdgeOptions, fitView, fitViewOptions, onNodesDelete, onEdgesDelete, onDelete, onNodeDragStart, onNodeDrag, onNodeDragStop, onSelectionDrag, onSelectionDragStart, onSelectionDragStop, onMove, onMoveStart, onMoveEnd, noPanClassName, nodeOrigin, rfId, autoPanOnConnect, autoPanOnNodeDrag, autoPanSpeed, onError, connectionRadius, isValidConnection, selectNodesOnDrag, nodeDragThreshold, connectionDragThreshold, onBeforeDelete, debug, ariaLabelConfig, zIndexMode }), jsxRuntime.jsx(GraphView, { onInit, onNodeClick, onEdgeClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onNodeDoubleClick, nodeTypes, edgeTypes, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, deleteKeyCode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, onlyRenderVisibleElements, defaultViewport: defaultViewport$1, translateExtent, minZoom, maxZoom, preventScrolling, zoomOnScroll, zoomOnPinch, zoomOnDoubleClick, panOnScroll, panOnScrollSpeed, panOnScrollMode, panOnDrag, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance, nodeClickDistance, onSelectionContextMenu, onSelectionStart, onSelectionEnd, onReconnect, onReconnectStart, onReconnectEnd, onEdgeContextMenu, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, defaultMarkerColor, noDragClassName, noWheelClassName, noPanClassName, rfId, disableKeyboardA11y, nodeExtent, viewport, onViewportChange }), jsxRuntime.jsx(SelectionListener, { onSelectionChange }), children2, jsxRuntime.jsx(Attribution, { proOptions, position: attributionPosition }), jsxRuntime.jsx(A11yDescriptions, { rfId, disableKeyboardA11y })] }) });
8542
+ return jsxRuntime.jsx("div", { "data-testid": "rf__wrapper", ...rest, onScroll: wrapperOnScroll, style: { ...style2, ...wrapperStyle }, ref, className: cc(["react-flow", className, colorModeClassName]), id: id2, role: "application", children: jsxRuntime.jsxs(Wrapper, { nodes, edges, width, height, fitView, fitViewOptions, minZoom, maxZoom, nodeOrigin, nodeExtent, zIndexMode, children: [jsxRuntime.jsx(StoreUpdater, { nodes, edges, defaultNodes, defaultEdges, onConnect, onConnectStart, onConnectEnd, onClickConnectStart, onClickConnectEnd, nodesDraggable, autoPanOnNodeFocus, nodesConnectable, nodesFocusable, edgesFocusable, edgesReconnectable, elementsSelectable, elevateNodesOnSelect, elevateEdgesOnSelect, minZoom, maxZoom, nodeExtent, onNodesChange, onEdgesChange, snapToGrid, snapGrid, connectionMode, translateExtent, connectOnClick, defaultEdgeOptions, fitView, fitViewOptions, onNodesDelete, onEdgesDelete, onDelete, onNodeDragStart, onNodeDrag, onNodeDragStop, onSelectionDrag, onSelectionDragStart, onSelectionDragStop, onMove, onMoveStart, onMoveEnd, noPanClassName, nodeOrigin, rfId, autoPanOnConnect, autoPanOnNodeDrag, autoPanSpeed, onError, connectionRadius, isValidConnection, selectNodesOnDrag, nodeDragThreshold, connectionDragThreshold, onBeforeDelete, debug, ariaLabelConfig, zIndexMode }), jsxRuntime.jsx(GraphView, { onInit, onNodeClick, onEdgeClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onNodeDoubleClick, nodeTypes, edgeTypes, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, deleteKeyCode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, onlyRenderVisibleElements, defaultViewport: defaultViewport$1, translateExtent, minZoom, maxZoom, preventScrolling, zoomOnScroll, zoomOnPinch, zoomOnDoubleClick, panOnScroll, panOnScrollSpeed, panOnScrollMode, panOnDrag, autoPanOnSelection, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance, nodeClickDistance, onSelectionContextMenu, onSelectionStart, onSelectionEnd, onReconnect, onReconnectStart, onReconnectEnd, onEdgeContextMenu, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, defaultMarkerColor, noDragClassName, noWheelClassName, noPanClassName, rfId, disableKeyboardA11y, nodeExtent, viewport, onViewportChange }), jsxRuntime.jsx(SelectionListener, { onSelectionChange }), children2, jsxRuntime.jsx(Attribution, { proOptions, position: attributionPosition }), jsxRuntime.jsx(A11yDescriptions, { rfId, disableKeyboardA11y })] }) });
8734
8543
  }
8735
8544
  fixedForwardRef(ReactFlow);
8736
8545
  function LinePattern({ dimensions, lineWidth, variant, className }) {
@@ -9663,52 +9472,6 @@ function buildNodeTypes() {
9663
9472
  for (const k of listNodeKinds()) map[k.name] = RegistryNode;
9664
9473
  return map;
9665
9474
  }
9666
- /*! Bundled license information:
9667
-
9668
- use-sync-external-store/cjs/use-sync-external-store-shim.production.js:
9669
- (**
9670
- * @license React
9671
- * use-sync-external-store-shim.production.js
9672
- *
9673
- * Copyright (c) Meta Platforms, Inc. and affiliates.
9674
- *
9675
- * This source code is licensed under the MIT license found in the
9676
- * LICENSE file in the root directory of this source tree.
9677
- *)
9678
-
9679
- use-sync-external-store/cjs/use-sync-external-store-shim.development.js:
9680
- (**
9681
- * @license React
9682
- * use-sync-external-store-shim.development.js
9683
- *
9684
- * Copyright (c) Meta Platforms, Inc. and affiliates.
9685
- *
9686
- * This source code is licensed under the MIT license found in the
9687
- * LICENSE file in the root directory of this source tree.
9688
- *)
9689
-
9690
- use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js:
9691
- (**
9692
- * @license React
9693
- * use-sync-external-store-shim/with-selector.production.js
9694
- *
9695
- * Copyright (c) Meta Platforms, Inc. and affiliates.
9696
- *
9697
- * This source code is licensed under the MIT license found in the
9698
- * LICENSE file in the root directory of this source tree.
9699
- *)
9700
-
9701
- use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js:
9702
- (**
9703
- * @license React
9704
- * use-sync-external-store-shim/with-selector.development.js
9705
- *
9706
- * Copyright (c) Meta Platforms, Inc. and affiliates.
9707
- *
9708
- * This source code is licensed under the MIT license found in the
9709
- * LICENSE file in the root directory of this source tree.
9710
- *)
9711
- */
9712
9475
 
9713
9476
  exports.BUILTIN_KINDS = BUILTIN_KINDS;
9714
9477
  exports.RegistryNode = RegistryNode;