@xyflow/vue 2.0.0-next.3 → 2.0.0-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -21,12 +21,14 @@ let ErrorCode = /* @__PURE__ */ function(ErrorCode) {
21
21
  ErrorCode["NODE_MISSING_PARENT"] = "NODE_MISSING_PARENT";
22
22
  ErrorCode["NODE_TYPE_MISSING"] = "NODE_TYPE_MISSING";
23
23
  ErrorCode["NODE_EXTENT_INVALID"] = "NODE_EXTENT_INVALID";
24
+ ErrorCode["NODE_DUPLICATE_ID"] = "NODE_DUPLICATE_ID";
24
25
  ErrorCode["EDGE_INVALID"] = "EDGE_INVALID";
25
26
  ErrorCode["EDGE_NOT_FOUND"] = "EDGE_NOT_FOUND";
26
27
  ErrorCode["EDGE_SOURCE_MISSING"] = "EDGE_SOURCE_MISSING";
27
28
  ErrorCode["EDGE_TARGET_MISSING"] = "EDGE_TARGET_MISSING";
28
29
  ErrorCode["EDGE_TYPE_MISSING"] = "EDGE_TYPE_MISSING";
29
30
  ErrorCode["EDGE_SOURCE_TARGET_MISSING"] = "EDGE_SOURCE_TARGET_MISSING";
31
+ ErrorCode["EDGE_DUPLICATE_ID"] = "EDGE_DUPLICATE_ID";
30
32
  ErrorCode["USE_VUE_FLOW_OUTSIDE_PROVIDER"] = "USE_VUE_FLOW_OUTSIDE_PROVIDER";
31
33
  return ErrorCode;
32
34
  }({});
@@ -38,11 +40,13 @@ const messages = {
38
40
  ["NODE_MISSING_PARENT"]: (id, parentId) => `Node is missing a parent\nNode id: ${id}\nParent id: ${parentId}`,
39
41
  ["NODE_TYPE_MISSING"]: (type) => `Node type is missing\nType: ${type}`,
40
42
  ["NODE_EXTENT_INVALID"]: (id) => `Only child nodes can use a parent extent\nNode id: ${id}`,
43
+ ["NODE_DUPLICATE_ID"]: (id) => `Node id is not unique — a later node overwrites the earlier one in the lookup\nNode id: ${id}`,
41
44
  ["EDGE_INVALID"]: (id) => `An edge needs a source and a target\nEdge id: ${id}`,
42
45
  ["EDGE_SOURCE_MISSING"]: (id, source) => `Edge source is missing\nEdge id: ${id} \nSource id: ${source}`,
43
46
  ["EDGE_TARGET_MISSING"]: (id, target) => `Edge target is missing\nEdge id: ${id} \nTarget id: ${target}`,
44
47
  ["EDGE_TYPE_MISSING"]: (type) => `Edge type is missing\nType: ${type}`,
45
48
  ["EDGE_SOURCE_TARGET_MISSING"]: (id, source, target) => `Edge source or target is missing\nEdge id: ${id} \nSource id: ${source} \nTarget id: ${target}`,
49
+ ["EDGE_DUPLICATE_ID"]: (id) => `Edge id is not unique — a later edge overwrites the earlier one in the lookup\nEdge id: ${id}`,
46
50
  ["EDGE_NOT_FOUND"]: (id) => `Edge not found\nEdge id: ${id}`,
47
51
  ["USE_VUE_FLOW_OUTSIDE_PROVIDER"]: () => `useVueFlow() was called without a <VueFlow> or <VueFlowProvider> ancestor (or outside a component setup). Render one of them above the call, or wrap your components in <VueFlowProvider> to share a store.`
48
52
  };
@@ -825,12 +829,15 @@ function reconnectEdgeAction(edge, newConnection, prevEdge, shouldReplaceId, tri
825
829
  */
826
830
  function adoptNodes(nodes, nodeLookup, parentLookup, triggerError, options) {
827
831
  const validNodes = [];
832
+ const seenNodeIds = /* @__PURE__ */ new Set();
828
833
  for (let i = 0; i < nodes.length; ++i) {
829
834
  const node = nodes[i];
830
835
  if (!isNode(node)) {
831
836
  triggerError(new VueFlowError("NODE_INVALID", node?.id ?? `[ID UNKNOWN|INDEX ${i}]`));
832
837
  continue;
833
838
  }
839
+ if (seenNodeIds.has(node.id)) triggerError(new VueFlowError("NODE_DUPLICATE_ID", node.id));
840
+ else seenNodeIds.add(node.id);
834
841
  validNodes.push(markRaw(toRaw(node)));
835
842
  }
836
843
  const priorInternals = /* @__PURE__ */ new Map();
@@ -1553,9 +1560,10 @@ function useViewportHelper(state, nodeLookup) {
1553
1560
  /**
1554
1561
  * Two-way bind a `v-model` array ref to the store, identity-in / snapshot-out, with native `watch`.
1555
1562
  *
1556
- * Used only when `<VueFlow>` does NOT own its store (it reuses a `<VueFlowProvider>`'s), so the model
1557
- * refs can't back the store directly. The owned-store path is single-source instead the model refs
1558
- * ARE the store's nodes/edges (see `createStore`'s `StoreSignals` binding), needing no sync here.
1563
+ * Runs for BOTH the owned- and reused-store paths: the store's canonical nodes/edges are always an
1564
+ * internal `shallowRef` (see `createStore`), never the v-model ref, so this is the single place the model
1565
+ * ref is bridged to the store. Both directions flush synchronously so the model ref and the store's
1566
+ * synchronous reads (`getNodes`/`state.nodes`) never disagree within a tick.
1559
1567
  *
1560
1568
  * - **out** (store → model): snapshot on every membership change; element refs are shared, so per-node
1561
1569
  * field mutations surface without a copy.
@@ -1568,24 +1576,29 @@ function syncModelArray(model, storeItems, setItems) {
1568
1576
  watch([storeItems, () => storeItems.value.length], () => {
1569
1577
  lastSnapshot = [...storeItems.value];
1570
1578
  model.value = lastSnapshot;
1571
- }, { immediate: storeItems.value.length > 0 });
1579
+ }, {
1580
+ immediate: storeItems.value.length > 0,
1581
+ flush: "sync"
1582
+ });
1572
1583
  watch([model, () => model.value?.length], ([next]) => {
1573
1584
  if (!Array.isArray(next)) return;
1574
1585
  const nextRaw = toRaw(next);
1575
1586
  if (nextRaw === lastSnapshot) return;
1576
1587
  setItems(nextRaw);
1577
- }, { immediate: true });
1588
+ }, {
1589
+ immediate: true,
1590
+ flush: "sync"
1591
+ });
1578
1592
  }
1579
1593
  /**
1580
1594
  * Watches props and updates the store accordingly
1581
1595
  *
1582
1596
  * @internal
1583
- * @param models v-model refs for nodes/edges (bound only when `ownsStore` is false see {@link syncModelArray})
1597
+ * @param models v-model refs for nodes/edges bridged to the store here (see {@link syncModelArray})
1584
1598
  * @param props the `<VueFlow>` props
1585
1599
  * @param handle the created store handle ({@link VueFlowStoreHandle}) — instance (actions) + reactive state
1586
- * @param ownsStore whether this `<VueFlow>` created the store (then nodes/edges are signal-backed and skipped here)
1587
1600
  */
1588
- function useWatchProps(models, props, handle, ownsStore = false) {
1601
+ function useWatchProps(models, props, handle) {
1589
1602
  const { instance, state } = handle;
1590
1603
  const storeRefs = storeToRefs(state);
1591
1604
  const scope = effectScope(true);
@@ -1689,10 +1702,8 @@ function useWatchProps(models, props, handle, ownsStore = false) {
1689
1702
  }
1690
1703
  };
1691
1704
  const runAll = () => {
1692
- if (!ownsStore) {
1693
- watchNodesValue();
1694
- watchEdgesValue();
1695
- }
1705
+ watchNodesValue();
1706
+ watchEdgesValue();
1696
1707
  watchMinZoom();
1697
1708
  watchMaxZoom();
1698
1709
  watchTranslateExtent();
@@ -1714,7 +1725,8 @@ const _sfc_main$22 = /* @__PURE__ */ defineComponent({
1714
1725
  props: {
1715
1726
  position: {
1716
1727
  type: String,
1717
- required: true
1728
+ required: false,
1729
+ default: "top-left"
1718
1730
  },
1719
1731
  label: {
1720
1732
  type: [String, null],
@@ -3306,14 +3318,16 @@ const _sfc_main$14 = /* @__PURE__ */ defineComponent({
3306
3318
  const { nodeLookup, parentLookup } = useStore();
3307
3319
  const { transform, nodeOrigin, snapGrid, snapToGrid, vueFlowRef, noDragClassName } = storeToRefs(useStore());
3308
3320
  const resizeControlRef = shallowRef();
3321
+ const contextNodeId = inject(NodeId, null);
3322
+ const nodeId = toRef(() => typeof props.nodeId === "string" ? props.nodeId : contextNodeId ?? void 0);
3309
3323
  const controlPosition = toRef(() => props.position ?? DefaultPositions[props.variant]);
3310
3324
  const positionClassNames = computed(() => controlPosition.value.split("-"));
3311
3325
  const controlStyle = toRef(() => props.color ? { [StylingProperty[props.variant]]: props.color } : {});
3312
3326
  watchEffect((onCleanup) => {
3313
- if (!resizeControlRef.value || !props.nodeId) return;
3327
+ if (!resizeControlRef.value || !nodeId.value) return;
3314
3328
  const resizerInstance = XYResizer({
3315
3329
  domNode: resizeControlRef.value,
3316
- nodeId: props.nodeId,
3330
+ nodeId: nodeId.value,
3317
3331
  getStoreItems: () => ({
3318
3332
  nodeLookup,
3319
3333
  transform: transform.value,
@@ -3324,7 +3338,7 @@ const _sfc_main$14 = /* @__PURE__ */ defineComponent({
3324
3338
  }),
3325
3339
  onChange: (changes, childChanges) => {
3326
3340
  const nodeChanges = [];
3327
- const node = nodeLookup.get(props.nodeId);
3341
+ const node = nodeLookup.get(nodeId.value);
3328
3342
  let nextX = changes.x;
3329
3343
  let nextY = changes.y;
3330
3344
  if (node?.expandParent && node.parentId) {
@@ -3356,14 +3370,14 @@ const _sfc_main$14 = /* @__PURE__ */ defineComponent({
3356
3370
  y: nextY ?? node?.position.y ?? 0
3357
3371
  };
3358
3372
  nodeChanges.push({
3359
- id: props.nodeId,
3373
+ id: nodeId.value,
3360
3374
  type: "position",
3361
3375
  position,
3362
3376
  positionAbsolute: position
3363
3377
  });
3364
3378
  }
3365
3379
  if (typeof changes.width !== "undefined" || typeof changes.height !== "undefined") nodeChanges.push({
3366
- id: props.nodeId,
3380
+ id: nodeId.value,
3367
3381
  type: "dimensions",
3368
3382
  setAttributes: true,
3369
3383
  resizing: true,
@@ -3382,7 +3396,7 @@ const _sfc_main$14 = /* @__PURE__ */ defineComponent({
3382
3396
  },
3383
3397
  onEnd: ({ width, height }) => {
3384
3398
  triggerEmits.nodesChange([{
3385
- id: props.nodeId,
3399
+ id: nodeId.value,
3386
3400
  type: "dimensions",
3387
3401
  resizing: false,
3388
3402
  dimensions: {
@@ -3433,6 +3447,8 @@ const _sfc_main$14 = /* @__PURE__ */ defineComponent({
3433
3447
  vueFlowRef,
3434
3448
  noDragClassName,
3435
3449
  resizeControlRef,
3450
+ contextNodeId,
3451
+ nodeId,
3436
3452
  controlPosition,
3437
3453
  positionClassNames,
3438
3454
  controlStyle,
@@ -4276,8 +4292,11 @@ function useActions(state, nodeLookup, parentLookup, edgeLookup) {
4276
4292
  */
4277
4293
  function commitEdges(next) {
4278
4294
  const rawEdgeLookup = toRaw(edgeLookup);
4295
+ const seenEdgeIds = /* @__PURE__ */ new Set();
4279
4296
  for (let i = 0; i < next.length; i++) {
4280
4297
  const edge = next[i] = markRaw(toRaw(next[i]));
4298
+ if (seenEdgeIds.has(edge.id)) state.hooks.error.trigger(new VueFlowError("EDGE_DUPLICATE_ID", edge.id));
4299
+ else seenEdgeIds.add(edge.id);
4281
4300
  if (rawEdgeLookup.get(edge.id) !== edge) edgeLookup.set(edge.id, edge);
4282
4301
  }
4283
4302
  if (rawEdgeLookup.size !== next.length) {
@@ -4961,17 +4980,14 @@ function useGetters(state, nodeLookup) {
4961
4980
  * @internal
4962
4981
  */
4963
4982
  function createVueFlowStore(id, preloadedState, onDestroy, signals) {
4964
- const nodesSignal = signals?.nodes ?? shallowRef([]);
4965
- const edgesSignal = signals?.edges ?? shallowRef([]);
4966
- let lastWriteNodes;
4967
- let lastWriteEdges;
4983
+ const nodesSignal = shallowRef(signals?.nodes?.value ?? []);
4984
+ const edgesSignal = shallowRef(signals?.edges?.value ?? []);
4968
4985
  const emptyNodes = [];
4969
4986
  const emptyEdges = [];
4970
4987
  const state = useState();
4971
4988
  Object.defineProperty(state, "nodes", {
4972
4989
  get: () => nodesSignal.value ?? emptyNodes,
4973
4990
  set: (value) => {
4974
- lastWriteNodes = toRaw(value);
4975
4991
  nodesSignal.value = value;
4976
4992
  },
4977
4993
  enumerable: true,
@@ -4980,7 +4996,6 @@ function createVueFlowStore(id, preloadedState, onDestroy, signals) {
4980
4996
  Object.defineProperty(state, "edges", {
4981
4997
  get: () => edgesSignal.value ?? emptyEdges,
4982
4998
  set: (value) => {
4983
- lastWriteEdges = toRaw(value);
4984
4999
  edgesSignal.value = value;
4985
5000
  },
4986
5001
  enumerable: true,
@@ -5003,14 +5018,6 @@ function createVueFlowStore(id, preloadedState, onDestroy, signals) {
5003
5018
  ...reactiveState,
5004
5019
  ...preloadedState
5005
5020
  });
5006
- if (signals?.nodes) watch(nodesSignal, (next) => {
5007
- const nextRaw = next && toRaw(next);
5008
- if (nextRaw && nextRaw !== lastWriteNodes) actions.setNodes(nextRaw);
5009
- });
5010
- if (signals?.edges) watch(edgesSignal, (next) => {
5011
- const nextRaw = next && toRaw(next);
5012
- if (nextRaw && nextRaw !== lastWriteEdges) actions.setEdges(nextRaw);
5013
- });
5014
5021
  return {
5015
5022
  instance: {
5016
5023
  ...hooksOn,
@@ -5161,7 +5168,7 @@ function useViewportSync(model, state = useStore()) {
5161
5168
  };
5162
5169
  if (sameViewport(viewport, model.value)) return;
5163
5170
  model.value = viewport;
5164
- });
5171
+ }, { flush: "sync" });
5165
5172
  }
5166
5173
  //#endregion
5167
5174
  //#region src/components/ConnectionLine/index.ts
@@ -5194,13 +5201,13 @@ const ConnectionLine = defineComponent({
5194
5201
  }
5195
5202
  const fromHandle = (startHandleId ? handleBounds.find((d) => d.id === startHandleId) : handleBounds[0]) ?? null;
5196
5203
  const fromPosition = fromHandle?.position ?? Position$1.Top;
5197
- const { x: fromX, y: fromY } = getHandlePosition(fromNode.value, fromHandle, fromPosition);
5204
+ const { x: fromX, y: fromY } = getHandlePosition(fromNode.value, fromHandle, fromPosition, true);
5198
5205
  let toHandle = null;
5199
5206
  if (toNode.value) if (connectionMode.value === ConnectionMode$1.Strict) toHandle = toNode.value.internals.handleBounds?.[handleType === "source" ? "target" : "source"]?.find((d) => d.id === connectionEndHandle.value?.id) || null;
5200
5207
  else toHandle = [...toNode.value.internals.handleBounds?.source ?? [], ...toNode.value.internals.handleBounds?.target ?? []].find((d) => d.id === connectionEndHandle.value?.id) || null;
5201
5208
  const toPosition = connectionEndHandle.value?.position ?? (fromPosition ? oppositePosition[fromPosition] : null);
5202
5209
  if (!fromPosition || !toPosition) return null;
5203
- const { x: toX, y: toY } = toHandle && toNode.value ? getHandlePosition(toNode.value, toHandle, toPosition) : pointer.value;
5210
+ const { x: toX, y: toY } = toHandle && toNode.value ? getHandlePosition(toNode.value, toHandle, toPosition, true) : pointer.value;
5204
5211
  const type = connectionLineOptions.value.type ?? ConnectionLineType$1.Bezier;
5205
5212
  let dAttr = "";
5206
5213
  const pathParams = {
@@ -5941,6 +5948,8 @@ const NodeWrapper = defineComponent({
5941
5948
  const getStyle = computed(() => {
5942
5949
  const node = nodeRef.value;
5943
5950
  const styles = { ...node?.style };
5951
+ if (typeof styles.width === "number") styles.width = `${styles.width}px`;
5952
+ if (typeof styles.height === "number") styles.height = `${styles.height}px`;
5944
5953
  const isMeasured = !!node?.internals.handleBounds;
5945
5954
  const width = node?.width ?? (isMeasured ? void 0 : node?.initialWidth);
5946
5955
  const height = node?.height ?? (isMeasured ? void 0 : node?.initialHeight);
@@ -7309,7 +7318,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
7309
7318
  }, props, {
7310
7319
  instance,
7311
7320
  state
7312
- }, ownsStore);
7321
+ });
7313
7322
  useHooks(emit, state.hooks);
7314
7323
  useOnInitHandler(instance);
7315
7324
  useSelectionChange(instance);
@@ -7382,6 +7391,89 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
7382
7391
  }
7383
7392
  var VueFlowProvider_default = /* @__PURE__ */ export_helper_default(_sfc_main, [["render", _sfc_render], ["__file", "/Users/moritz/xyflow/xyflow/packages/vue/src/container/VueFlowProvider/VueFlowProvider.vue"]]);
7384
7393
  //#endregion
7385
- export { Background_default as Background, BaseEdge_default as BaseEdge, BezierEdge, ConnectionLineType, ConnectionMode, ControlButton_default as ControlButton, Controls_default as Controls, EdgeLabelRenderer_default as EdgeLabelRenderer, EdgeText_default as EdgeText, ErrorCode, Handle_default as Handle, MarkerType, MiniMap_default as MiniMap, MiniMapNode_default as MiniMapNode, NodeId as NodeIdInjection, ResizeControl_default as NodeResizeControl, NodeResizer_default as NodeResizer, NodeToolbar_default as NodeToolbar, PanOnScrollMode, Panel_default as Panel, Position, ResizeControlVariant, SelectionMode, SimpleBezierEdge, Slots, SmoothStepEdge, StepEdge, StraightEdge, VueFlow_default as VueFlow, VueFlowError, VueFlow as VueFlowInjection, VueFlowProvider_default as VueFlowProvider, 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 };
7394
+ //#region src/utils/prop-of.ts
7395
+ function propOf(required = false) {
7396
+ return {
7397
+ type: null,
7398
+ required
7399
+ };
7400
+ }
7401
+ //#endregion
7402
+ //#region src/props-objects.gen.ts
7403
+ function nodeProps() {
7404
+ return {
7405
+ data: propOf(true),
7406
+ deletable: propOf(true),
7407
+ dragHandle: propOf(),
7408
+ draggable: propOf(true),
7409
+ dragging: propOf(true),
7410
+ height: propOf(),
7411
+ id: propOf(true),
7412
+ isConnectable: propOf(true),
7413
+ parentId: propOf(),
7414
+ positionAbsoluteX: propOf(true),
7415
+ positionAbsoluteY: propOf(true),
7416
+ selectable: propOf(true),
7417
+ selected: propOf(true),
7418
+ sourcePosition: propOf(),
7419
+ targetPosition: propOf(),
7420
+ type: propOf(true),
7421
+ width: propOf(),
7422
+ zIndex: propOf(true)
7423
+ };
7424
+ }
7425
+ function edgeProps() {
7426
+ return {
7427
+ animated: propOf(),
7428
+ curvature: propOf(),
7429
+ data: propOf(),
7430
+ deletable: propOf(),
7431
+ id: propOf(true),
7432
+ interactionWidth: propOf(),
7433
+ label: propOf(),
7434
+ labelBgBorderRadius: propOf(),
7435
+ labelBgPadding: propOf(),
7436
+ labelBgStyle: propOf(),
7437
+ labelShowBg: propOf(),
7438
+ labelStyle: propOf(),
7439
+ markerEnd: propOf(),
7440
+ markerStart: propOf(),
7441
+ reconnectable: propOf(),
7442
+ selectable: propOf(),
7443
+ selected: propOf(),
7444
+ source: propOf(true),
7445
+ sourceHandleId: propOf(),
7446
+ sourcePosition: propOf(true),
7447
+ sourceX: propOf(true),
7448
+ sourceY: propOf(true),
7449
+ style: propOf(),
7450
+ target: propOf(true),
7451
+ targetHandleId: propOf(),
7452
+ targetPosition: propOf(true),
7453
+ targetX: propOf(true),
7454
+ targetY: propOf(true),
7455
+ type: propOf()
7456
+ };
7457
+ }
7458
+ function connectionLineProps() {
7459
+ return {
7460
+ connectionStatus: propOf(true),
7461
+ fromHandle: propOf(true),
7462
+ fromNode: propOf(true),
7463
+ fromPosition: propOf(true),
7464
+ fromX: propOf(true),
7465
+ fromY: propOf(true),
7466
+ markerEnd: propOf(),
7467
+ markerStart: propOf(),
7468
+ pointer: propOf(true),
7469
+ toHandle: propOf(true),
7470
+ toNode: propOf(true),
7471
+ toPosition: propOf(true),
7472
+ toX: propOf(true),
7473
+ toY: propOf(true)
7474
+ };
7475
+ }
7476
+ //#endregion
7477
+ export { Background_default as Background, BaseEdge_default as BaseEdge, BezierEdge, ConnectionLineType, ConnectionMode, ControlButton_default as ControlButton, Controls_default as Controls, EdgeLabelRenderer_default as EdgeLabelRenderer, EdgeText_default as EdgeText, ErrorCode, Handle_default as Handle, MarkerType, MiniMap_default as MiniMap, MiniMapNode_default as MiniMapNode, NodeId as NodeIdInjection, ResizeControl_default as NodeResizeControl, NodeResizer_default as NodeResizer, NodeToolbar_default as NodeToolbar, PanOnScrollMode, Panel_default as Panel, Position, ResizeControlVariant, SelectionMode, SimpleBezierEdge, Slots, SmoothStepEdge, StepEdge, StraightEdge, VueFlow_default as VueFlow, VueFlowError, VueFlow as VueFlowInjection, VueFlowProvider_default as VueFlowProvider, applyChanges, applyEdgeChanges, applyNodeChanges, clamp, connectionExists, connectionLineProps, defaultEdgeTypes, defaultNodeTypes, edgeProps, getBezierEdgeCenter, getBezierPath, getBoundsOfBoxes, getBoundsOfRects, getConnectedEdges, getConnectionStatus, getIncomers, getMarkerId, getNodesBounds, getNodesInside, getOutgoers, getSimpleBezierPath, getSmoothStepPath, getStraightPath, getViewportForBounds, isEdge, isEdgeBase, isErrorOfType, isInternalNode, isInternalNodeBase, isMacOs, isNode, isNodeBase, nodeProps, pointToRendererPoint, rendererPointToPoint, storeToRefs, useConnection, useEdge, useEdgesData, useHandle, useInternalNode, useKeyPress, useNode, useNodeConnections, useNodeId, useNodesData, useNodesInitialized, useStore, useVueFlow };
7386
7478
 
7387
7479
  //# sourceMappingURL=index.mjs.map