@xyflow/system 0.0.72 → 0.0.74

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/esm/index.js CHANGED
@@ -84,6 +84,7 @@ const initialConnection = {
84
84
  toHandle: null,
85
85
  toPosition: null,
86
86
  toNode: null,
87
+ pointer: null,
87
88
  };
88
89
 
89
90
  /**
@@ -994,11 +995,11 @@ function getEdgeCenter({ sourceX, sourceY, targetX, targetY, }) {
994
995
  * By default, edges are rendered below nodes. This behaviour is different for edges that are
995
996
  * connected to nodes with a parent, as they are rendered above the parent node.
996
997
  */
997
- function getElevatedEdgeZIndex({ sourceNode, targetNode, selected = false, zIndex, elevateOnSelect = false, }) {
998
- if (zIndex !== undefined) {
998
+ function getElevatedEdgeZIndex({ sourceNode, targetNode, selected = false, zIndex = 0, elevateOnSelect = false, zIndexMode = 'basic', }) {
999
+ if (zIndexMode === 'manual') {
999
1000
  return zIndex;
1000
1001
  }
1001
- const edgeZ = elevateOnSelect && selected ? 1000 : 0;
1002
+ const edgeZ = elevateOnSelect && selected ? zIndex + 1000 : zIndex;
1002
1003
  const nodeZ = Math.max(sourceNode.parentId || (elevateOnSelect && sourceNode.selected) ? sourceNode.internals.z : 0, targetNode.parentId || (elevateOnSelect && targetNode.selected) ? targetNode.internals.z : 0);
1003
1004
  return edgeZ + nodeZ;
1004
1005
  }
@@ -1018,6 +1019,12 @@ function isEdgeVisible({ sourceNode, targetNode, width, height, transform }) {
1018
1019
  };
1019
1020
  return getOverlappingArea(viewRect, boxToRect(edgeBox)) > 0;
1020
1021
  }
1022
+ /**
1023
+ * The default edge ID generator function. Generates an ID based on the source, target, and handles.
1024
+ * @public
1025
+ * @param params - The connection or edge to generate an ID for.
1026
+ * @returns The generated edge ID.
1027
+ */
1021
1028
  const getEdgeId = ({ source, sourceHandle, target, targetHandle }) => `xy-edge__${source}${sourceHandle || ''}-${target}${targetHandle || ''}`;
1022
1029
  const connectionExists = (edge, edges) => {
1023
1030
  return edges.some((el) => el.source === edge.source &&
@@ -1030,6 +1037,7 @@ const connectionExists = (edge, edges) => {
1030
1037
  * @public
1031
1038
  * @param edgeParams - Either an `Edge` or a `Connection` you want to add.
1032
1039
  * @param edges - The array of all current edges.
1040
+ * @param options - Optional configuration object.
1033
1041
  * @returns A new array of edges with the new edge added.
1034
1042
  *
1035
1043
  * @remarks If an edge with the same `target` and `source` already exists (and the same
@@ -1037,11 +1045,12 @@ const connectionExists = (edge, edges) => {
1037
1045
  *a new edge even if the `id` property is different.
1038
1046
  *
1039
1047
  */
1040
- const addEdge = (edgeParams, edges) => {
1048
+ const addEdge = (edgeParams, edges, options = {}) => {
1041
1049
  if (!edgeParams.source || !edgeParams.target) {
1042
1050
  devWarn('006', errorMessages['error006']());
1043
1051
  return edges;
1044
1052
  }
1053
+ const edgeIdGenerator = options.getEdgeId || getEdgeId;
1045
1054
  let edge;
1046
1055
  if (isEdgeBase(edgeParams)) {
1047
1056
  edge = { ...edgeParams };
@@ -1049,7 +1058,7 @@ const addEdge = (edgeParams, edges) => {
1049
1058
  else {
1050
1059
  edge = {
1051
1060
  ...edgeParams,
1052
- id: getEdgeId(edgeParams),
1061
+ id: edgeIdGenerator(edgeParams),
1053
1062
  };
1054
1063
  }
1055
1064
  if (connectionExists(edge, edges)) {
@@ -1090,10 +1099,11 @@ const reconnectEdge = (oldEdge, newConnection, edges, options = { shouldReplaceI
1090
1099
  devWarn('007', errorMessages['error007'](oldEdgeId));
1091
1100
  return edges;
1092
1101
  }
1102
+ const edgeIdGenerator = options.getEdgeId || getEdgeId;
1093
1103
  // Remove old edge and create the new edge with parameters of old edge.
1094
1104
  const edge = {
1095
1105
  ...rest,
1096
- id: options.shouldReplaceId ? getEdgeId(newConnection) : oldEdgeId,
1106
+ id: options.shouldReplaceId ? edgeIdGenerator(newConnection) : oldEdgeId,
1097
1107
  source: newConnection.source,
1098
1108
  target: newConnection.target,
1099
1109
  sourceHandle: newConnection.sourceHandle,
@@ -1527,6 +1537,7 @@ const defaultOptions = {
1527
1537
  nodeOrigin: [0, 0],
1528
1538
  nodeExtent: infiniteExtent,
1529
1539
  elevateNodesOnSelect: true,
1540
+ zIndexMode: 'basic',
1530
1541
  defaults: {},
1531
1542
  };
1532
1543
  const adoptUserNodesDefaultOptions = {
@@ -1586,12 +1597,15 @@ function parseHandles(userNode, internalNode) {
1586
1597
  target,
1587
1598
  };
1588
1599
  }
1589
- function adoptUserNodes(nodes, nodeLookup, parentLookup, options) {
1600
+ function isManualZIndexMode(zIndexMode) {
1601
+ return zIndexMode === 'manual';
1602
+ }
1603
+ function adoptUserNodes(nodes, nodeLookup, parentLookup, options = {}) {
1590
1604
  const _options = mergeObjects(adoptUserNodesDefaultOptions, options);
1591
- let rootParentIndex = { i: -1 };
1592
- let nodesInitialized = nodes.length > 0;
1605
+ const rootParentIndex = { i: 0 };
1593
1606
  const tmpLookup = new Map(nodeLookup);
1594
- const selectedNodeZ = _options?.elevateNodesOnSelect ? SELECTED_NODE_Z : 0;
1607
+ const selectedNodeZ = _options?.elevateNodesOnSelect && !isManualZIndexMode(_options.zIndexMode) ? SELECTED_NODE_Z : 0;
1608
+ let nodesInitialized = nodes.length > 0;
1595
1609
  nodeLookup.clear();
1596
1610
  parentLookup.clear();
1597
1611
  for (const userNode of nodes) {
@@ -1614,7 +1628,7 @@ function adoptUserNodes(nodes, nodeLookup, parentLookup, options) {
1614
1628
  positionAbsolute: clampedPosition,
1615
1629
  // if user re-initializes the node or removes `measured` for whatever reason, we reset the handleBounds so that the node gets re-measured
1616
1630
  handleBounds: parseHandles(userNode, internalNode),
1617
- z: calculateZ(userNode, selectedNodeZ),
1631
+ z: calculateZ(userNode, selectedNodeZ, _options.zIndexMode),
1618
1632
  userNode,
1619
1633
  },
1620
1634
  };
@@ -1648,7 +1662,7 @@ function updateParentLookup(node, parentLookup) {
1648
1662
  * Updates positionAbsolute and zIndex of a child node and the parentLookup.
1649
1663
  */
1650
1664
  function updateChildNode(node, nodeLookup, parentLookup, options, rootParentIndex) {
1651
- const { elevateNodesOnSelect, nodeOrigin, nodeExtent } = mergeObjects(defaultOptions, options);
1665
+ const { elevateNodesOnSelect, nodeOrigin, nodeExtent, zIndexMode } = mergeObjects(defaultOptions, options);
1652
1666
  const parentId = node.parentId;
1653
1667
  const parentNode = nodeLookup.get(parentId);
1654
1668
  if (!parentNode) {
@@ -1657,7 +1671,10 @@ function updateChildNode(node, nodeLookup, parentLookup, options, rootParentInde
1657
1671
  }
1658
1672
  updateParentLookup(node, parentLookup);
1659
1673
  // We just want to set the rootParentIndex for the first child
1660
- if (rootParentIndex && !parentNode.parentId && parentNode.internals.rootParentIndex === undefined) {
1674
+ if (rootParentIndex &&
1675
+ !parentNode.parentId &&
1676
+ parentNode.internals.rootParentIndex === undefined &&
1677
+ zIndexMode === 'auto') {
1661
1678
  parentNode.internals.rootParentIndex = ++rootParentIndex.i;
1662
1679
  parentNode.internals.z = parentNode.internals.z + rootParentIndex.i * ROOT_PARENT_Z_INCREMENT;
1663
1680
  }
@@ -1665,8 +1682,8 @@ function updateChildNode(node, nodeLookup, parentLookup, options, rootParentInde
1665
1682
  if (rootParentIndex && parentNode.internals.rootParentIndex !== undefined) {
1666
1683
  rootParentIndex.i = parentNode.internals.rootParentIndex;
1667
1684
  }
1668
- const selectedNodeZ = elevateNodesOnSelect ? SELECTED_NODE_Z : 0;
1669
- const { x, y, z } = calculateChildXYZ(node, parentNode, nodeOrigin, nodeExtent, selectedNodeZ);
1685
+ const selectedNodeZ = elevateNodesOnSelect && !isManualZIndexMode(zIndexMode) ? SELECTED_NODE_Z : 0;
1686
+ const { x, y, z } = calculateChildXYZ(node, parentNode, nodeOrigin, nodeExtent, selectedNodeZ, zIndexMode);
1670
1687
  const { positionAbsolute } = node.internals;
1671
1688
  const positionChanged = x !== positionAbsolute.x || y !== positionAbsolute.y;
1672
1689
  if (positionChanged || z !== node.internals.z) {
@@ -1681,10 +1698,14 @@ function updateChildNode(node, nodeLookup, parentLookup, options, rootParentInde
1681
1698
  });
1682
1699
  }
1683
1700
  }
1684
- function calculateZ(node, selectedNodeZ) {
1685
- return (isNumeric(node.zIndex) ? node.zIndex : 0) + (node.selected ? selectedNodeZ : 0);
1701
+ function calculateZ(node, selectedNodeZ, zIndexMode) {
1702
+ const zIndex = isNumeric(node.zIndex) ? node.zIndex : 0;
1703
+ if (isManualZIndexMode(zIndexMode)) {
1704
+ return zIndex;
1705
+ }
1706
+ return zIndex + (node.selected ? selectedNodeZ : 0);
1686
1707
  }
1687
- function calculateChildXYZ(childNode, parentNode, nodeOrigin, nodeExtent, selectedNodeZ) {
1708
+ function calculateChildXYZ(childNode, parentNode, nodeOrigin, nodeExtent, selectedNodeZ, zIndexMode) {
1688
1709
  const { x: parentX, y: parentY } = parentNode.internals.positionAbsolute;
1689
1710
  const childDimensions = getNodeDimensions(childNode);
1690
1711
  const positionWithOrigin = getNodePositionWithOrigin(childNode, nodeOrigin);
@@ -1695,7 +1716,7 @@ function calculateChildXYZ(childNode, parentNode, nodeOrigin, nodeExtent, select
1695
1716
  if (childNode.extent === 'parent') {
1696
1717
  absolutePosition = clampPositionToParent(absolutePosition, childDimensions, parentNode);
1697
1718
  }
1698
- const childZ = calculateZ(childNode, selectedNodeZ);
1719
+ const childZ = calculateZ(childNode, selectedNodeZ, zIndexMode);
1699
1720
  const parentZ = parentNode.internals.z ?? 0;
1700
1721
  return {
1701
1722
  x: absolutePosition.x,
@@ -1772,7 +1793,7 @@ function handleExpandParent(children, nodeLookup, parentLookup, nodeOrigin = [0,
1772
1793
  }
1773
1794
  return changes;
1774
1795
  }
1775
- function updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOrigin, nodeExtent) {
1796
+ function updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOrigin, nodeExtent, zIndexMode) {
1776
1797
  const viewportNode = domNode?.querySelector('.xyflow__viewport');
1777
1798
  let updatedInternals = false;
1778
1799
  if (!viewportNode) {
@@ -1828,7 +1849,7 @@ function updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOri
1828
1849
  };
1829
1850
  nodeLookup.set(node.id, newNode);
1830
1851
  if (node.parentId) {
1831
- updateChildNode(newNode, nodeLookup, parentLookup, { nodeOrigin });
1852
+ updateChildNode(newNode, nodeLookup, parentLookup, { nodeOrigin, zIndexMode });
1832
1853
  }
1833
1854
  updatedInternals = true;
1834
1855
  if (dimensionChanged) {
@@ -2399,19 +2420,20 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
2399
2420
  type: handleType,
2400
2421
  position: fromHandleInternal.position,
2401
2422
  };
2402
- const fromNodeInternal = nodeLookup.get(nodeId);
2403
- const from = getHandlePosition(fromNodeInternal, fromHandle, Position.Left, true);
2423
+ const fromInternalNode = nodeLookup.get(nodeId);
2424
+ const from = getHandlePosition(fromInternalNode, fromHandle, Position.Left, true);
2404
2425
  let previousConnection = {
2405
2426
  inProgress: true,
2406
2427
  isValid: null,
2407
2428
  from,
2408
2429
  fromHandle,
2409
2430
  fromPosition: fromHandle.position,
2410
- fromNode: fromNodeInternal,
2431
+ fromNode: fromInternalNode,
2411
2432
  to: position,
2412
2433
  toHandle: null,
2413
2434
  toPosition: oppositePosition[fromHandle.position],
2414
2435
  toNode: null,
2436
+ pointer: position,
2415
2437
  };
2416
2438
  function startConnection() {
2417
2439
  connectionStarted = true;
@@ -2458,9 +2480,13 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
2458
2480
  resultHandleDomNode = result.handleDomNode;
2459
2481
  connection = result.connection;
2460
2482
  isValid = isConnectionValid(!!closestHandle, result.isValid);
2483
+ const fromInternalNode = nodeLookup.get(nodeId);
2484
+ const from = fromInternalNode
2485
+ ? getHandlePosition(fromInternalNode, fromHandle, Position.Left, true)
2486
+ : previousConnection.from;
2461
2487
  const newConnection = {
2462
- // from stays the same
2463
2488
  ...previousConnection,
2489
+ from,
2464
2490
  isValid,
2465
2491
  to: result.toHandle && isValid
2466
2492
  ? rendererPointToPoint({ x: result.toHandle.x, y: result.toHandle.y }, transform)
@@ -2468,22 +2494,8 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
2468
2494
  toHandle: result.toHandle,
2469
2495
  toPosition: isValid && result.toHandle ? result.toHandle.position : oppositePosition[fromHandle.position],
2470
2496
  toNode: result.toHandle ? nodeLookup.get(result.toHandle.nodeId) : null,
2497
+ pointer: position,
2471
2498
  };
2472
- /*
2473
- * we don't want to trigger an update when the connection
2474
- * is snapped to the same handle as before
2475
- */
2476
- if (isValid &&
2477
- closestHandle &&
2478
- previousConnection.toHandle &&
2479
- newConnection.toHandle &&
2480
- previousConnection.toHandle.type === newConnection.toHandle.type &&
2481
- previousConnection.toHandle.nodeId === newConnection.toHandle.nodeId &&
2482
- previousConnection.toHandle.id === newConnection.toHandle.id &&
2483
- previousConnection.to.x === newConnection.to.x &&
2484
- previousConnection.to.y === newConnection.to.y) {
2485
- return;
2486
- }
2487
2499
  updateConnection(newConnection);
2488
2500
  previousConnection = newConnection;
2489
2501
  }
@@ -3498,4 +3510,4 @@ function XYResizer({ domNode, nodeId, getStoreItems, onChange, onEnd }) {
3498
3510
  };
3499
3511
  }
3500
3512
 
3501
- export { ConnectionLineType, ConnectionMode, MarkerType, PanOnScrollMode, Position, ResizeControlVariant, SelectionMode, XYDrag, XYHandle, XYMinimap, XYPanZoom, XYResizer, XY_RESIZER_HANDLE_POSITIONS, XY_RESIZER_LINE_POSITIONS, addEdge, adoptUserNodes, areConnectionMapsEqual, areSetsEqual, boxToRect, calcAutoPan, calculateNodePosition, clamp, clampPosition, clampPositionToParent, createMarkerIds, defaultAriaLabelConfig, devWarn, elementSelectionKeys, errorMessages, evaluateAbsolutePosition, fitViewport, getBezierEdgeCenter, getBezierPath, getBoundsOfBoxes, getBoundsOfRects, getConnectedEdges, getConnectionStatus, getDimensions, getEdgeCenter, getEdgePosition, getEdgeToolbarTransform, getElementsToRemove, getElevatedEdgeZIndex, getEventPosition, getHandleBounds, getHandlePosition, getHostForElement, getIncomers, getInternalNodesBounds, getMarkerId, getNodeDimensions, getNodePositionWithOrigin, getNodeToolbarTransform, getNodesBounds, getNodesInside, getOutgoers, getOverlappingArea, getPointerPosition, getSmoothStepPath, getStraightPath, getViewportForBounds, handleConnectionChange, handleExpandParent, infiniteExtent, initialConnection, isCoordinateExtent, isEdgeBase, isEdgeVisible, isInputDOMNode, isInternalNodeBase, isMacOs, isMouseEvent, isNodeBase, isNumeric, isRectObject, mergeAriaLabelConfig, nodeHasDimensions, nodeToBox, nodeToRect, oppositePosition, panBy, pointToRendererPoint, reconnectEdge, rectToBox, rendererPointToPoint, shallowNodeData, snapPosition, updateAbsolutePositions, updateConnectionLookup, updateNodeInternals, withResolvers };
3513
+ export { ConnectionLineType, ConnectionMode, MarkerType, PanOnScrollMode, Position, ResizeControlVariant, SelectionMode, XYDrag, XYHandle, XYMinimap, XYPanZoom, XYResizer, XY_RESIZER_HANDLE_POSITIONS, XY_RESIZER_LINE_POSITIONS, addEdge, adoptUserNodes, areConnectionMapsEqual, areSetsEqual, boxToRect, calcAutoPan, calculateNodePosition, clamp, clampPosition, clampPositionToParent, createMarkerIds, defaultAriaLabelConfig, devWarn, elementSelectionKeys, errorMessages, evaluateAbsolutePosition, fitViewport, getBezierEdgeCenter, getBezierPath, getBoundsOfBoxes, getBoundsOfRects, getConnectedEdges, getConnectionStatus, getDimensions, getEdgeCenter, getEdgeId, getEdgePosition, getEdgeToolbarTransform, getElementsToRemove, getElevatedEdgeZIndex, getEventPosition, getHandleBounds, getHandlePosition, getHostForElement, getIncomers, getInternalNodesBounds, getMarkerId, getNodeDimensions, getNodePositionWithOrigin, getNodeToolbarTransform, getNodesBounds, getNodesInside, getOutgoers, getOverlappingArea, getPointerPosition, getSmoothStepPath, getStraightPath, getViewportForBounds, handleConnectionChange, handleExpandParent, infiniteExtent, initialConnection, isCoordinateExtent, isEdgeBase, isEdgeVisible, isInputDOMNode, isInternalNodeBase, isMacOs, isManualZIndexMode, isMouseEvent, isNodeBase, isNumeric, isRectObject, mergeAriaLabelConfig, nodeHasDimensions, nodeToBox, nodeToRect, oppositePosition, panBy, pointToRendererPoint, reconnectEdge, rectToBox, rendererPointToPoint, shallowNodeData, snapPosition, updateAbsolutePositions, updateConnectionLookup, updateNodeInternals, withResolvers };
@@ -84,6 +84,7 @@ const initialConnection = {
84
84
  toHandle: null,
85
85
  toPosition: null,
86
86
  toNode: null,
87
+ pointer: null,
87
88
  };
88
89
 
89
90
  /**
@@ -994,11 +995,11 @@ function getEdgeCenter({ sourceX, sourceY, targetX, targetY, }) {
994
995
  * By default, edges are rendered below nodes. This behaviour is different for edges that are
995
996
  * connected to nodes with a parent, as they are rendered above the parent node.
996
997
  */
997
- function getElevatedEdgeZIndex({ sourceNode, targetNode, selected = false, zIndex, elevateOnSelect = false, }) {
998
- if (zIndex !== undefined) {
998
+ function getElevatedEdgeZIndex({ sourceNode, targetNode, selected = false, zIndex = 0, elevateOnSelect = false, zIndexMode = 'basic', }) {
999
+ if (zIndexMode === 'manual') {
999
1000
  return zIndex;
1000
1001
  }
1001
- const edgeZ = elevateOnSelect && selected ? 1000 : 0;
1002
+ const edgeZ = elevateOnSelect && selected ? zIndex + 1000 : zIndex;
1002
1003
  const nodeZ = Math.max(sourceNode.parentId || (elevateOnSelect && sourceNode.selected) ? sourceNode.internals.z : 0, targetNode.parentId || (elevateOnSelect && targetNode.selected) ? targetNode.internals.z : 0);
1003
1004
  return edgeZ + nodeZ;
1004
1005
  }
@@ -1018,6 +1019,12 @@ function isEdgeVisible({ sourceNode, targetNode, width, height, transform }) {
1018
1019
  };
1019
1020
  return getOverlappingArea(viewRect, boxToRect(edgeBox)) > 0;
1020
1021
  }
1022
+ /**
1023
+ * The default edge ID generator function. Generates an ID based on the source, target, and handles.
1024
+ * @public
1025
+ * @param params - The connection or edge to generate an ID for.
1026
+ * @returns The generated edge ID.
1027
+ */
1021
1028
  const getEdgeId = ({ source, sourceHandle, target, targetHandle }) => `xy-edge__${source}${sourceHandle || ''}-${target}${targetHandle || ''}`;
1022
1029
  const connectionExists = (edge, edges) => {
1023
1030
  return edges.some((el) => el.source === edge.source &&
@@ -1030,6 +1037,7 @@ const connectionExists = (edge, edges) => {
1030
1037
  * @public
1031
1038
  * @param edgeParams - Either an `Edge` or a `Connection` you want to add.
1032
1039
  * @param edges - The array of all current edges.
1040
+ * @param options - Optional configuration object.
1033
1041
  * @returns A new array of edges with the new edge added.
1034
1042
  *
1035
1043
  * @remarks If an edge with the same `target` and `source` already exists (and the same
@@ -1037,11 +1045,12 @@ const connectionExists = (edge, edges) => {
1037
1045
  *a new edge even if the `id` property is different.
1038
1046
  *
1039
1047
  */
1040
- const addEdge = (edgeParams, edges) => {
1048
+ const addEdge = (edgeParams, edges, options = {}) => {
1041
1049
  if (!edgeParams.source || !edgeParams.target) {
1042
1050
  devWarn('006', errorMessages['error006']());
1043
1051
  return edges;
1044
1052
  }
1053
+ const edgeIdGenerator = options.getEdgeId || getEdgeId;
1045
1054
  let edge;
1046
1055
  if (isEdgeBase(edgeParams)) {
1047
1056
  edge = { ...edgeParams };
@@ -1049,7 +1058,7 @@ const addEdge = (edgeParams, edges) => {
1049
1058
  else {
1050
1059
  edge = {
1051
1060
  ...edgeParams,
1052
- id: getEdgeId(edgeParams),
1061
+ id: edgeIdGenerator(edgeParams),
1053
1062
  };
1054
1063
  }
1055
1064
  if (connectionExists(edge, edges)) {
@@ -1090,10 +1099,11 @@ const reconnectEdge = (oldEdge, newConnection, edges, options = { shouldReplaceI
1090
1099
  devWarn('007', errorMessages['error007'](oldEdgeId));
1091
1100
  return edges;
1092
1101
  }
1102
+ const edgeIdGenerator = options.getEdgeId || getEdgeId;
1093
1103
  // Remove old edge and create the new edge with parameters of old edge.
1094
1104
  const edge = {
1095
1105
  ...rest,
1096
- id: options.shouldReplaceId ? getEdgeId(newConnection) : oldEdgeId,
1106
+ id: options.shouldReplaceId ? edgeIdGenerator(newConnection) : oldEdgeId,
1097
1107
  source: newConnection.source,
1098
1108
  target: newConnection.target,
1099
1109
  sourceHandle: newConnection.sourceHandle,
@@ -1527,6 +1537,7 @@ const defaultOptions = {
1527
1537
  nodeOrigin: [0, 0],
1528
1538
  nodeExtent: infiniteExtent,
1529
1539
  elevateNodesOnSelect: true,
1540
+ zIndexMode: 'basic',
1530
1541
  defaults: {},
1531
1542
  };
1532
1543
  const adoptUserNodesDefaultOptions = {
@@ -1586,12 +1597,15 @@ function parseHandles(userNode, internalNode) {
1586
1597
  target,
1587
1598
  };
1588
1599
  }
1589
- function adoptUserNodes(nodes, nodeLookup, parentLookup, options) {
1600
+ function isManualZIndexMode(zIndexMode) {
1601
+ return zIndexMode === 'manual';
1602
+ }
1603
+ function adoptUserNodes(nodes, nodeLookup, parentLookup, options = {}) {
1590
1604
  const _options = mergeObjects(adoptUserNodesDefaultOptions, options);
1591
- let rootParentIndex = { i: -1 };
1592
- let nodesInitialized = nodes.length > 0;
1605
+ const rootParentIndex = { i: 0 };
1593
1606
  const tmpLookup = new Map(nodeLookup);
1594
- const selectedNodeZ = _options?.elevateNodesOnSelect ? SELECTED_NODE_Z : 0;
1607
+ const selectedNodeZ = _options?.elevateNodesOnSelect && !isManualZIndexMode(_options.zIndexMode) ? SELECTED_NODE_Z : 0;
1608
+ let nodesInitialized = nodes.length > 0;
1595
1609
  nodeLookup.clear();
1596
1610
  parentLookup.clear();
1597
1611
  for (const userNode of nodes) {
@@ -1614,7 +1628,7 @@ function adoptUserNodes(nodes, nodeLookup, parentLookup, options) {
1614
1628
  positionAbsolute: clampedPosition,
1615
1629
  // if user re-initializes the node or removes `measured` for whatever reason, we reset the handleBounds so that the node gets re-measured
1616
1630
  handleBounds: parseHandles(userNode, internalNode),
1617
- z: calculateZ(userNode, selectedNodeZ),
1631
+ z: calculateZ(userNode, selectedNodeZ, _options.zIndexMode),
1618
1632
  userNode,
1619
1633
  },
1620
1634
  };
@@ -1648,7 +1662,7 @@ function updateParentLookup(node, parentLookup) {
1648
1662
  * Updates positionAbsolute and zIndex of a child node and the parentLookup.
1649
1663
  */
1650
1664
  function updateChildNode(node, nodeLookup, parentLookup, options, rootParentIndex) {
1651
- const { elevateNodesOnSelect, nodeOrigin, nodeExtent } = mergeObjects(defaultOptions, options);
1665
+ const { elevateNodesOnSelect, nodeOrigin, nodeExtent, zIndexMode } = mergeObjects(defaultOptions, options);
1652
1666
  const parentId = node.parentId;
1653
1667
  const parentNode = nodeLookup.get(parentId);
1654
1668
  if (!parentNode) {
@@ -1657,7 +1671,10 @@ function updateChildNode(node, nodeLookup, parentLookup, options, rootParentInde
1657
1671
  }
1658
1672
  updateParentLookup(node, parentLookup);
1659
1673
  // We just want to set the rootParentIndex for the first child
1660
- if (rootParentIndex && !parentNode.parentId && parentNode.internals.rootParentIndex === undefined) {
1674
+ if (rootParentIndex &&
1675
+ !parentNode.parentId &&
1676
+ parentNode.internals.rootParentIndex === undefined &&
1677
+ zIndexMode === 'auto') {
1661
1678
  parentNode.internals.rootParentIndex = ++rootParentIndex.i;
1662
1679
  parentNode.internals.z = parentNode.internals.z + rootParentIndex.i * ROOT_PARENT_Z_INCREMENT;
1663
1680
  }
@@ -1665,8 +1682,8 @@ function updateChildNode(node, nodeLookup, parentLookup, options, rootParentInde
1665
1682
  if (rootParentIndex && parentNode.internals.rootParentIndex !== undefined) {
1666
1683
  rootParentIndex.i = parentNode.internals.rootParentIndex;
1667
1684
  }
1668
- const selectedNodeZ = elevateNodesOnSelect ? SELECTED_NODE_Z : 0;
1669
- const { x, y, z } = calculateChildXYZ(node, parentNode, nodeOrigin, nodeExtent, selectedNodeZ);
1685
+ const selectedNodeZ = elevateNodesOnSelect && !isManualZIndexMode(zIndexMode) ? SELECTED_NODE_Z : 0;
1686
+ const { x, y, z } = calculateChildXYZ(node, parentNode, nodeOrigin, nodeExtent, selectedNodeZ, zIndexMode);
1670
1687
  const { positionAbsolute } = node.internals;
1671
1688
  const positionChanged = x !== positionAbsolute.x || y !== positionAbsolute.y;
1672
1689
  if (positionChanged || z !== node.internals.z) {
@@ -1681,10 +1698,14 @@ function updateChildNode(node, nodeLookup, parentLookup, options, rootParentInde
1681
1698
  });
1682
1699
  }
1683
1700
  }
1684
- function calculateZ(node, selectedNodeZ) {
1685
- return (isNumeric(node.zIndex) ? node.zIndex : 0) + (node.selected ? selectedNodeZ : 0);
1701
+ function calculateZ(node, selectedNodeZ, zIndexMode) {
1702
+ const zIndex = isNumeric(node.zIndex) ? node.zIndex : 0;
1703
+ if (isManualZIndexMode(zIndexMode)) {
1704
+ return zIndex;
1705
+ }
1706
+ return zIndex + (node.selected ? selectedNodeZ : 0);
1686
1707
  }
1687
- function calculateChildXYZ(childNode, parentNode, nodeOrigin, nodeExtent, selectedNodeZ) {
1708
+ function calculateChildXYZ(childNode, parentNode, nodeOrigin, nodeExtent, selectedNodeZ, zIndexMode) {
1688
1709
  const { x: parentX, y: parentY } = parentNode.internals.positionAbsolute;
1689
1710
  const childDimensions = getNodeDimensions(childNode);
1690
1711
  const positionWithOrigin = getNodePositionWithOrigin(childNode, nodeOrigin);
@@ -1695,7 +1716,7 @@ function calculateChildXYZ(childNode, parentNode, nodeOrigin, nodeExtent, select
1695
1716
  if (childNode.extent === 'parent') {
1696
1717
  absolutePosition = clampPositionToParent(absolutePosition, childDimensions, parentNode);
1697
1718
  }
1698
- const childZ = calculateZ(childNode, selectedNodeZ);
1719
+ const childZ = calculateZ(childNode, selectedNodeZ, zIndexMode);
1699
1720
  const parentZ = parentNode.internals.z ?? 0;
1700
1721
  return {
1701
1722
  x: absolutePosition.x,
@@ -1772,7 +1793,7 @@ function handleExpandParent(children, nodeLookup, parentLookup, nodeOrigin = [0,
1772
1793
  }
1773
1794
  return changes;
1774
1795
  }
1775
- function updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOrigin, nodeExtent) {
1796
+ function updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOrigin, nodeExtent, zIndexMode) {
1776
1797
  const viewportNode = domNode?.querySelector('.xyflow__viewport');
1777
1798
  let updatedInternals = false;
1778
1799
  if (!viewportNode) {
@@ -1828,7 +1849,7 @@ function updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOri
1828
1849
  };
1829
1850
  nodeLookup.set(node.id, newNode);
1830
1851
  if (node.parentId) {
1831
- updateChildNode(newNode, nodeLookup, parentLookup, { nodeOrigin });
1852
+ updateChildNode(newNode, nodeLookup, parentLookup, { nodeOrigin, zIndexMode });
1832
1853
  }
1833
1854
  updatedInternals = true;
1834
1855
  if (dimensionChanged) {
@@ -2399,19 +2420,20 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
2399
2420
  type: handleType,
2400
2421
  position: fromHandleInternal.position,
2401
2422
  };
2402
- const fromNodeInternal = nodeLookup.get(nodeId);
2403
- const from = getHandlePosition(fromNodeInternal, fromHandle, Position.Left, true);
2423
+ const fromInternalNode = nodeLookup.get(nodeId);
2424
+ const from = getHandlePosition(fromInternalNode, fromHandle, Position.Left, true);
2404
2425
  let previousConnection = {
2405
2426
  inProgress: true,
2406
2427
  isValid: null,
2407
2428
  from,
2408
2429
  fromHandle,
2409
2430
  fromPosition: fromHandle.position,
2410
- fromNode: fromNodeInternal,
2431
+ fromNode: fromInternalNode,
2411
2432
  to: position,
2412
2433
  toHandle: null,
2413
2434
  toPosition: oppositePosition[fromHandle.position],
2414
2435
  toNode: null,
2436
+ pointer: position,
2415
2437
  };
2416
2438
  function startConnection() {
2417
2439
  connectionStarted = true;
@@ -2458,9 +2480,13 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
2458
2480
  resultHandleDomNode = result.handleDomNode;
2459
2481
  connection = result.connection;
2460
2482
  isValid = isConnectionValid(!!closestHandle, result.isValid);
2483
+ const fromInternalNode = nodeLookup.get(nodeId);
2484
+ const from = fromInternalNode
2485
+ ? getHandlePosition(fromInternalNode, fromHandle, Position.Left, true)
2486
+ : previousConnection.from;
2461
2487
  const newConnection = {
2462
- // from stays the same
2463
2488
  ...previousConnection,
2489
+ from,
2464
2490
  isValid,
2465
2491
  to: result.toHandle && isValid
2466
2492
  ? rendererPointToPoint({ x: result.toHandle.x, y: result.toHandle.y }, transform)
@@ -2468,22 +2494,8 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
2468
2494
  toHandle: result.toHandle,
2469
2495
  toPosition: isValid && result.toHandle ? result.toHandle.position : oppositePosition[fromHandle.position],
2470
2496
  toNode: result.toHandle ? nodeLookup.get(result.toHandle.nodeId) : null,
2497
+ pointer: position,
2471
2498
  };
2472
- /*
2473
- * we don't want to trigger an update when the connection
2474
- * is snapped to the same handle as before
2475
- */
2476
- if (isValid &&
2477
- closestHandle &&
2478
- previousConnection.toHandle &&
2479
- newConnection.toHandle &&
2480
- previousConnection.toHandle.type === newConnection.toHandle.type &&
2481
- previousConnection.toHandle.nodeId === newConnection.toHandle.nodeId &&
2482
- previousConnection.toHandle.id === newConnection.toHandle.id &&
2483
- previousConnection.to.x === newConnection.to.x &&
2484
- previousConnection.to.y === newConnection.to.y) {
2485
- return;
2486
- }
2487
2499
  updateConnection(newConnection);
2488
2500
  previousConnection = newConnection;
2489
2501
  }
@@ -3498,4 +3510,4 @@ function XYResizer({ domNode, nodeId, getStoreItems, onChange, onEnd }) {
3498
3510
  };
3499
3511
  }
3500
3512
 
3501
- export { ConnectionLineType, ConnectionMode, MarkerType, PanOnScrollMode, Position, ResizeControlVariant, SelectionMode, XYDrag, XYHandle, XYMinimap, XYPanZoom, XYResizer, XY_RESIZER_HANDLE_POSITIONS, XY_RESIZER_LINE_POSITIONS, addEdge, adoptUserNodes, areConnectionMapsEqual, areSetsEqual, boxToRect, calcAutoPan, calculateNodePosition, clamp, clampPosition, clampPositionToParent, createMarkerIds, defaultAriaLabelConfig, devWarn, elementSelectionKeys, errorMessages, evaluateAbsolutePosition, fitViewport, getBezierEdgeCenter, getBezierPath, getBoundsOfBoxes, getBoundsOfRects, getConnectedEdges, getConnectionStatus, getDimensions, getEdgeCenter, getEdgePosition, getEdgeToolbarTransform, getElementsToRemove, getElevatedEdgeZIndex, getEventPosition, getHandleBounds, getHandlePosition, getHostForElement, getIncomers, getInternalNodesBounds, getMarkerId, getNodeDimensions, getNodePositionWithOrigin, getNodeToolbarTransform, getNodesBounds, getNodesInside, getOutgoers, getOverlappingArea, getPointerPosition, getSmoothStepPath, getStraightPath, getViewportForBounds, handleConnectionChange, handleExpandParent, infiniteExtent, initialConnection, isCoordinateExtent, isEdgeBase, isEdgeVisible, isInputDOMNode, isInternalNodeBase, isMacOs, isMouseEvent, isNodeBase, isNumeric, isRectObject, mergeAriaLabelConfig, nodeHasDimensions, nodeToBox, nodeToRect, oppositePosition, panBy, pointToRendererPoint, reconnectEdge, rectToBox, rendererPointToPoint, shallowNodeData, snapPosition, updateAbsolutePositions, updateConnectionLookup, updateNodeInternals, withResolvers };
3513
+ export { ConnectionLineType, ConnectionMode, MarkerType, PanOnScrollMode, Position, ResizeControlVariant, SelectionMode, XYDrag, XYHandle, XYMinimap, XYPanZoom, XYResizer, XY_RESIZER_HANDLE_POSITIONS, XY_RESIZER_LINE_POSITIONS, addEdge, adoptUserNodes, areConnectionMapsEqual, areSetsEqual, boxToRect, calcAutoPan, calculateNodePosition, clamp, clampPosition, clampPositionToParent, createMarkerIds, defaultAriaLabelConfig, devWarn, elementSelectionKeys, errorMessages, evaluateAbsolutePosition, fitViewport, getBezierEdgeCenter, getBezierPath, getBoundsOfBoxes, getBoundsOfRects, getConnectedEdges, getConnectionStatus, getDimensions, getEdgeCenter, getEdgeId, getEdgePosition, getEdgeToolbarTransform, getElementsToRemove, getElevatedEdgeZIndex, getEventPosition, getHandleBounds, getHandlePosition, getHostForElement, getIncomers, getInternalNodesBounds, getMarkerId, getNodeDimensions, getNodePositionWithOrigin, getNodeToolbarTransform, getNodesBounds, getNodesInside, getOutgoers, getOverlappingArea, getPointerPosition, getSmoothStepPath, getStraightPath, getViewportForBounds, handleConnectionChange, handleExpandParent, infiniteExtent, initialConnection, isCoordinateExtent, isEdgeBase, isEdgeVisible, isInputDOMNode, isInternalNodeBase, isMacOs, isManualZIndexMode, isMouseEvent, isNodeBase, isNumeric, isRectObject, mergeAriaLabelConfig, nodeHasDimensions, nodeToBox, nodeToRect, oppositePosition, panBy, pointToRendererPoint, reconnectEdge, rectToBox, rendererPointToPoint, shallowNodeData, snapPosition, updateAbsolutePositions, updateConnectionLookup, updateNodeInternals, withResolvers };
@@ -236,6 +236,7 @@ export type NoConnection = {
236
236
  toHandle: null;
237
237
  toPosition: null;
238
238
  toNode: null;
239
+ pointer: null;
239
240
  };
240
241
  export type ConnectionInProgress<NodeType extends InternalNodeBase = InternalNodeBase> = {
241
242
  /** Indicates whether a connection is currently in progress. */
@@ -261,6 +262,8 @@ export type ConnectionInProgress<NodeType extends InternalNodeBase = InternalNod
261
262
  toPosition: Position;
262
263
  /** Returns the end node or `null` if no connection is in progress. */
263
264
  toNode: NodeType | null;
265
+ /** Returns the pointer position or `null` if no connection is in progress. */
266
+ pointer: XYPosition;
264
267
  };
265
268
  /**
266
269
  * The `ConnectionState` type bundles all information about an ongoing connection.
@@ -281,4 +284,13 @@ export type OnBeforeDeleteBase<NodeType extends NodeBase = NodeBase, EdgeType ex
281
284
  nodes: NodeType[];
282
285
  edges: EdgeType[];
283
286
  }>;
287
+ /**
288
+ * The `ZIndexMode` type is used to define how z-indexing is calculated for nodes and edges.
289
+ * `auto` mode will automatically manage z-indexing for selections and sub flows.
290
+ * `basic` mode will only manage z-indexing for selections.
291
+ * `manual` mode does not apply any automatic z-indexing.
292
+ *
293
+ * @public
294
+ */
295
+ export type ZIndexMode = 'auto' | 'basic' | 'manual';
284
296
  //# sourceMappingURL=general.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../src/types/general.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../src/types/general.ts"],"names":[],"mappings":"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"}