{"version":3,"file":"static/chunks/bfcefd20.7d3bd7b6b3bbfc6e.js","mappings":"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","sources":["webpack://_N_E/../../node_modules/@reactflow/core/dist/esm/index.mjs"],"sourcesContent":["import React, { createContext, useContext, useMemo, memo, useRef, useState, useEffect, forwardRef, useCallback } from 'react';\nimport cc from 'classcat';\nimport { useStoreWithEqualityFn, createWithEqualityFn } from 'zustand/traditional';\nimport { shallow } from 'zustand/shallow';\nimport { zoomIdentity, zoom } from 'd3-zoom';\nimport { select, pointer } from 'd3-selection';\nimport { drag } from 'd3-drag';\nimport { createPortal } from 'react-dom';\n\nconst StoreContext = createContext(null);\nconst Provider$1 = StoreContext.Provider;\n\nconst errorMessages = {\n error001: () => '[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001',\n 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.\",\n error003: (nodeType) => `Node type \"${nodeType}\" not found. Using fallback type \"default\".`,\n error004: () => 'The React Flow parent container needs a width and a height to render the graph.',\n error005: () => 'Only child nodes can use a parent extent.',\n error006: () => \"Can't create edge. An edge needs a source and a target.\",\n error007: (id) => `The old edge with id=${id} does not exist.`,\n error009: (type) => `Marker type \"${type}\" doesn't exist.`,\n error008: (sourceHandle, edge) => `Couldn't create edge for ${!sourceHandle ? 'source' : 'target'} handle id: \"${!sourceHandle ? edge.sourceHandle : edge.targetHandle}\", edge id: ${edge.id}.`,\n error010: () => 'Handle: No node id found. Make sure to only use a Handle inside a custom Node.',\n error011: (edgeType) => `Edge type \"${edgeType}\" not found. Using fallback type \"default\".`,\n error012: (id) => `Node with id \"${id}\" does not exist, it may have been removed. This can happen when a node is deleted before the \"onNodeClick\" handler is called.`,\n};\n\nconst zustandErrorMessage = errorMessages['error001']();\nfunction useStore(selector, equalityFn) {\n const store = useContext(StoreContext);\n if (store === null) {\n throw new Error(zustandErrorMessage);\n }\n return useStoreWithEqualityFn(store, selector, equalityFn);\n}\nconst useStoreApi = () => {\n const store = useContext(StoreContext);\n if (store === null) {\n throw new Error(zustandErrorMessage);\n }\n return useMemo(() => ({\n getState: store.getState,\n setState: store.setState,\n subscribe: store.subscribe,\n destroy: store.destroy,\n }), [store]);\n};\n\nconst selector$g = (s) => (s.userSelectionActive ? 'none' : 'all');\nfunction Panel({ position, children, className, style, ...rest }) {\n const pointerEvents = useStore(selector$g);\n const positionClasses = `${position}`.split('-');\n return (React.createElement(\"div\", { className: cc(['react-flow__panel', className, ...positionClasses]), style: { ...style, pointerEvents }, ...rest }, children));\n}\n\nfunction Attribution({ proOptions, position = 'bottom-right' }) {\n if (proOptions?.hideAttribution) {\n return null;\n }\n return (React.createElement(Panel, { position: position, className: \"react-flow__attribution\", \"data-message\": \"Please only hide this attribution when you are subscribed to React Flow Pro: https://reactflow.dev/pro\" },\n React.createElement(\"a\", { href: \"https://reactflow.dev\", target: \"_blank\", rel: \"noopener noreferrer\", \"aria-label\": \"React Flow attribution\" }, \"React Flow\")));\n}\n\nconst EdgeText = ({ x, y, label, labelStyle = {}, labelShowBg = true, labelBgStyle = {}, labelBgPadding = [2, 4], labelBgBorderRadius = 2, children, className, ...rest }) => {\n const edgeRef = useRef(null);\n const [edgeTextBbox, setEdgeTextBbox] = useState({ x: 0, y: 0, width: 0, height: 0 });\n const edgeTextClasses = cc(['react-flow__edge-textwrapper', className]);\n useEffect(() => {\n if (edgeRef.current) {\n const textBbox = edgeRef.current.getBBox();\n setEdgeTextBbox({\n x: textBbox.x,\n y: textBbox.y,\n width: textBbox.width,\n height: textBbox.height,\n });\n }\n }, [label]);\n if (typeof label === 'undefined' || !label) {\n return null;\n }\n return (React.createElement(\"g\", { transform: `translate(${x - edgeTextBbox.width / 2} ${y - edgeTextBbox.height / 2})`, className: edgeTextClasses, visibility: edgeTextBbox.width ? 'visible' : 'hidden', ...rest },\n labelShowBg && (React.createElement(\"rect\", { width: edgeTextBbox.width + 2 * labelBgPadding[0], x: -labelBgPadding[0], y: -labelBgPadding[1], height: edgeTextBbox.height + 2 * labelBgPadding[1], className: \"react-flow__edge-textbg\", style: labelBgStyle, rx: labelBgBorderRadius, ry: labelBgBorderRadius })),\n React.createElement(\"text\", { className: \"react-flow__edge-text\", y: edgeTextBbox.height / 2, dy: \"0.3em\", ref: edgeRef, style: labelStyle }, label),\n children));\n};\nvar EdgeText$1 = memo(EdgeText);\n\nconst getDimensions = (node) => ({\n width: node.offsetWidth,\n height: node.offsetHeight,\n});\nconst clamp = (val, min = 0, max = 1) => Math.min(Math.max(val, min), max);\nconst clampPosition = (position = { x: 0, y: 0 }, extent) => ({\n x: clamp(position.x, extent[0][0], extent[1][0]),\n y: clamp(position.y, extent[0][1], extent[1][1]),\n});\n// returns a number between 0 and 1 that represents the velocity of the movement\n// when the mouse is close to the edge of the canvas\nconst calcAutoPanVelocity = (value, min, max) => {\n if (value < min) {\n return clamp(Math.abs(value - min), 1, 50) / 50;\n }\n else if (value > max) {\n return -clamp(Math.abs(value - max), 1, 50) / 50;\n }\n return 0;\n};\nconst calcAutoPan = (pos, bounds) => {\n const xMovement = calcAutoPanVelocity(pos.x, 35, bounds.width - 35) * 20;\n const yMovement = calcAutoPanVelocity(pos.y, 35, bounds.height - 35) * 20;\n return [xMovement, yMovement];\n};\nconst getHostForElement = (element) => element.getRootNode?.() || window?.document;\nconst getBoundsOfBoxes = (box1, box2) => ({\n x: Math.min(box1.x, box2.x),\n y: Math.min(box1.y, box2.y),\n x2: Math.max(box1.x2, box2.x2),\n y2: Math.max(box1.y2, box2.y2),\n});\nconst rectToBox = ({ x, y, width, height }) => ({\n x,\n y,\n x2: x + width,\n y2: y + height,\n});\nconst boxToRect = ({ x, y, x2, y2 }) => ({\n x,\n y,\n width: x2 - x,\n height: y2 - y,\n});\nconst nodeToRect = (node) => ({\n ...(node.positionAbsolute || { x: 0, y: 0 }),\n width: node.width || 0,\n height: node.height || 0,\n});\nconst getBoundsOfRects = (rect1, rect2) => boxToRect(getBoundsOfBoxes(rectToBox(rect1), rectToBox(rect2)));\nconst getOverlappingArea = (rectA, rectB) => {\n const xOverlap = Math.max(0, Math.min(rectA.x + rectA.width, rectB.x + rectB.width) - Math.max(rectA.x, rectB.x));\n const yOverlap = Math.max(0, Math.min(rectA.y + rectA.height, rectB.y + rectB.height) - Math.max(rectA.y, rectB.y));\n return Math.ceil(xOverlap * yOverlap);\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst isRectObject = (obj) => isNumeric(obj.width) && isNumeric(obj.height) && isNumeric(obj.x) && isNumeric(obj.y);\n/* eslint-disable-next-line @typescript-eslint/no-explicit-any */\nconst isNumeric = (n) => !isNaN(n) && isFinite(n);\nconst internalsSymbol = Symbol.for('internals');\n// used for a11y key board controls for nodes and edges\nconst elementSelectionKeys = ['Enter', ' ', 'Escape'];\nconst devWarn = (id, message) => {\n if (process.env.NODE_ENV === 'development') {\n console.warn(`[React Flow]: ${message} Help: https://reactflow.dev/error#${id}`);\n }\n};\nconst isReactKeyboardEvent = (event) => 'nativeEvent' in event;\nfunction isInputDOMNode(event) {\n const kbEvent = isReactKeyboardEvent(event) ? event.nativeEvent : event;\n // using composed path for handling shadow dom\n const target = (kbEvent.composedPath?.()?.[0] || event.target);\n const isInput = ['INPUT', 'SELECT', 'TEXTAREA'].includes(target?.nodeName) || target?.hasAttribute('contenteditable');\n // when an input field is focused we don't want to trigger deletion or movement of nodes\n return isInput || !!target?.closest('.nokey');\n}\nconst isMouseEvent = (event) => 'clientX' in event;\nconst getEventPosition = (event, bounds) => {\n const isMouseTriggered = isMouseEvent(event);\n const evtX = isMouseTriggered ? event.clientX : event.touches?.[0].clientX;\n const evtY = isMouseTriggered ? event.clientY : event.touches?.[0].clientY;\n return {\n x: evtX - (bounds?.left ?? 0),\n y: evtY - (bounds?.top ?? 0),\n };\n};\nconst isMacOs = () => typeof navigator !== 'undefined' && navigator?.userAgent?.indexOf('Mac') >= 0;\n\nconst BaseEdge = ({ id, path, labelX, labelY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth = 20, }) => {\n return (React.createElement(React.Fragment, null,\n React.createElement(\"path\", { id: id, style: style, d: path, fill: \"none\", className: \"react-flow__edge-path\", markerEnd: markerEnd, markerStart: markerStart }),\n interactionWidth && (React.createElement(\"path\", { d: path, fill: \"none\", strokeOpacity: 0, strokeWidth: interactionWidth, className: \"react-flow__edge-interaction\" })),\n label && isNumeric(labelX) && isNumeric(labelY) ? (React.createElement(EdgeText$1, { x: labelX, y: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius })) : null));\n};\nBaseEdge.displayName = 'BaseEdge';\n\nconst getMarkerEnd = (markerType, markerEndId) => {\n if (typeof markerEndId !== 'undefined' && markerEndId) {\n return `url(#${markerEndId})`;\n }\n return typeof markerType !== 'undefined' ? `url(#react-flow__${markerType})` : 'none';\n};\nfunction getMouseHandler$1(id, getState, handler) {\n return handler === undefined\n ? handler\n : (event) => {\n const edge = getState().edges.find((e) => e.id === id);\n if (edge) {\n handler(event, { ...edge });\n }\n };\n}\n// this is used for straight edges and simple smoothstep edges (LTR, RTL, BTT, TTB)\nfunction getEdgeCenter({ sourceX, sourceY, targetX, targetY, }) {\n const xOffset = Math.abs(targetX - sourceX) / 2;\n const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n return [centerX, centerY, xOffset, yOffset];\n}\nfunction getBezierEdgeCenter({ sourceX, sourceY, targetX, targetY, sourceControlX, sourceControlY, targetControlX, targetControlY, }) {\n // cubic bezier t=0.5 mid point, not the actual mid point, but easy to calculate\n // https://stackoverflow.com/questions/67516101/how-to-find-distance-mid-point-of-bezier-curve\n const centerX = sourceX * 0.125 + sourceControlX * 0.375 + targetControlX * 0.375 + targetX * 0.125;\n const centerY = sourceY * 0.125 + sourceControlY * 0.375 + targetControlY * 0.375 + targetY * 0.125;\n const offsetX = Math.abs(centerX - sourceX);\n const offsetY = Math.abs(centerY - sourceY);\n return [centerX, centerY, offsetX, offsetY];\n}\n\nvar ConnectionMode;\n(function (ConnectionMode) {\n ConnectionMode[\"Strict\"] = \"strict\";\n ConnectionMode[\"Loose\"] = \"loose\";\n})(ConnectionMode || (ConnectionMode = {}));\nvar PanOnScrollMode;\n(function (PanOnScrollMode) {\n PanOnScrollMode[\"Free\"] = \"free\";\n PanOnScrollMode[\"Vertical\"] = \"vertical\";\n PanOnScrollMode[\"Horizontal\"] = \"horizontal\";\n})(PanOnScrollMode || (PanOnScrollMode = {}));\nvar SelectionMode;\n(function (SelectionMode) {\n SelectionMode[\"Partial\"] = \"partial\";\n SelectionMode[\"Full\"] = \"full\";\n})(SelectionMode || (SelectionMode = {}));\n\nvar ConnectionLineType;\n(function (ConnectionLineType) {\n ConnectionLineType[\"Bezier\"] = \"default\";\n ConnectionLineType[\"Straight\"] = \"straight\";\n ConnectionLineType[\"Step\"] = \"step\";\n ConnectionLineType[\"SmoothStep\"] = \"smoothstep\";\n ConnectionLineType[\"SimpleBezier\"] = \"simplebezier\";\n})(ConnectionLineType || (ConnectionLineType = {}));\nvar MarkerType;\n(function (MarkerType) {\n MarkerType[\"Arrow\"] = \"arrow\";\n MarkerType[\"ArrowClosed\"] = \"arrowclosed\";\n})(MarkerType || (MarkerType = {}));\n\nvar Position;\n(function (Position) {\n Position[\"Left\"] = \"left\";\n Position[\"Top\"] = \"top\";\n Position[\"Right\"] = \"right\";\n Position[\"Bottom\"] = \"bottom\";\n})(Position || (Position = {}));\n\nfunction getControl({ pos, x1, y1, x2, y2 }) {\n if (pos === Position.Left || pos === Position.Right) {\n return [0.5 * (x1 + x2), y1];\n }\n return [x1, 0.5 * (y1 + y2)];\n}\nfunction getSimpleBezierPath({ sourceX, sourceY, sourcePosition = Position.Bottom, targetX, targetY, targetPosition = Position.Top, }) {\n const [sourceControlX, sourceControlY] = getControl({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY,\n });\n const [targetControlX, targetControlY] = getControl({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY,\n });\n const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY,\n });\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n labelX,\n labelY,\n offsetX,\n offsetY,\n ];\n}\nconst SimpleBezierEdge = memo(({ sourceX, sourceY, targetX, targetY, sourcePosition = Position.Bottom, targetPosition = Position.Top, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }) => {\n const [path, labelX, labelY] = getSimpleBezierPath({\n sourceX,\n sourceY,\n sourcePosition,\n targetX,\n targetY,\n targetPosition,\n });\n return (React.createElement(BaseEdge, { path: path, labelX: labelX, labelY: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius, style: style, markerEnd: markerEnd, markerStart: markerStart, interactionWidth: interactionWidth }));\n});\nSimpleBezierEdge.displayName = 'SimpleBezierEdge';\n\nconst handleDirections = {\n [Position.Left]: { x: -1, y: 0 },\n [Position.Right]: { x: 1, y: 0 },\n [Position.Top]: { x: 0, y: -1 },\n [Position.Bottom]: { x: 0, y: 1 },\n};\nconst getDirection = ({ source, sourcePosition = Position.Bottom, target, }) => {\n if (sourcePosition === Position.Left || sourcePosition === Position.Right) {\n return source.x < target.x ? { x: 1, y: 0 } : { x: -1, y: 0 };\n }\n return source.y < target.y ? { x: 0, y: 1 } : { x: 0, y: -1 };\n};\nconst distance = (a, b) => Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));\n// ith this function we try to mimic a orthogonal edge routing behaviour\n// It's not as good as a real orthogonal edge routing but it's faster and good enough as a default for step and smooth step edges\nfunction getPoints({ source, sourcePosition = Position.Bottom, target, targetPosition = Position.Top, center, offset, }) {\n const sourceDir = handleDirections[sourcePosition];\n const targetDir = handleDirections[targetPosition];\n const sourceGapped = { x: source.x + sourceDir.x * offset, y: source.y + sourceDir.y * offset };\n const targetGapped = { x: target.x + targetDir.x * offset, y: target.y + targetDir.y * offset };\n const dir = getDirection({\n source: sourceGapped,\n sourcePosition,\n target: targetGapped,\n });\n const dirAccessor = dir.x !== 0 ? 'x' : 'y';\n const currDir = dir[dirAccessor];\n let points = [];\n let centerX, centerY;\n const sourceGapOffset = { x: 0, y: 0 };\n const targetGapOffset = { x: 0, y: 0 };\n const [defaultCenterX, defaultCenterY, defaultOffsetX, defaultOffsetY] = getEdgeCenter({\n sourceX: source.x,\n sourceY: source.y,\n targetX: target.x,\n targetY: target.y,\n });\n // opposite handle positions, default case\n if (sourceDir[dirAccessor] * targetDir[dirAccessor] === -1) {\n centerX = center.x ?? defaultCenterX;\n centerY = center.y ?? defaultCenterY;\n // --->\n // |\n // >---\n const verticalSplit = [\n { x: centerX, y: sourceGapped.y },\n { x: centerX, y: targetGapped.y },\n ];\n // |\n // ---\n // |\n const horizontalSplit = [\n { x: sourceGapped.x, y: centerY },\n { x: targetGapped.x, y: centerY },\n ];\n if (sourceDir[dirAccessor] === currDir) {\n points = dirAccessor === 'x' ? verticalSplit : horizontalSplit;\n }\n else {\n points = dirAccessor === 'x' ? horizontalSplit : verticalSplit;\n }\n }\n else {\n // sourceTarget means we take x from source and y from target, targetSource is the opposite\n const sourceTarget = [{ x: sourceGapped.x, y: targetGapped.y }];\n const targetSource = [{ x: targetGapped.x, y: sourceGapped.y }];\n // this handles edges with same handle positions\n if (dirAccessor === 'x') {\n points = sourceDir.x === currDir ? targetSource : sourceTarget;\n }\n else {\n points = sourceDir.y === currDir ? sourceTarget : targetSource;\n }\n if (sourcePosition === targetPosition) {\n const diff = Math.abs(source[dirAccessor] - target[dirAccessor]);\n // if an edge goes from right to right for example (sourcePosition === targetPosition) and the distance between source.x and target.x is less than the offset, the added point and the gapped source/target will overlap. This leads to a weird edge path. To avoid this we add a gapOffset to the source/target\n if (diff <= offset) {\n const gapOffset = Math.min(offset - 1, offset - diff);\n if (sourceDir[dirAccessor] === currDir) {\n sourceGapOffset[dirAccessor] = (sourceGapped[dirAccessor] > source[dirAccessor] ? -1 : 1) * gapOffset;\n }\n else {\n targetGapOffset[dirAccessor] = (targetGapped[dirAccessor] > target[dirAccessor] ? -1 : 1) * gapOffset;\n }\n }\n }\n // these are conditions for handling mixed handle positions like Right -> Bottom for example\n if (sourcePosition !== targetPosition) {\n const dirAccessorOpposite = dirAccessor === 'x' ? 'y' : 'x';\n const isSameDir = sourceDir[dirAccessor] === targetDir[dirAccessorOpposite];\n const sourceGtTargetOppo = sourceGapped[dirAccessorOpposite] > targetGapped[dirAccessorOpposite];\n const sourceLtTargetOppo = sourceGapped[dirAccessorOpposite] < targetGapped[dirAccessorOpposite];\n const flipSourceTarget = (sourceDir[dirAccessor] === 1 && ((!isSameDir && sourceGtTargetOppo) || (isSameDir && sourceLtTargetOppo))) ||\n (sourceDir[dirAccessor] !== 1 && ((!isSameDir && sourceLtTargetOppo) || (isSameDir && sourceGtTargetOppo)));\n if (flipSourceTarget) {\n points = dirAccessor === 'x' ? sourceTarget : targetSource;\n }\n }\n const sourceGapPoint = { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y };\n const targetGapPoint = { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y };\n const maxXDistance = Math.max(Math.abs(sourceGapPoint.x - points[0].x), Math.abs(targetGapPoint.x - points[0].x));\n const maxYDistance = Math.max(Math.abs(sourceGapPoint.y - points[0].y), Math.abs(targetGapPoint.y - points[0].y));\n // we want to place the label on the longest segment of the edge\n if (maxXDistance >= maxYDistance) {\n centerX = (sourceGapPoint.x + targetGapPoint.x) / 2;\n centerY = points[0].y;\n }\n else {\n centerX = points[0].x;\n centerY = (sourceGapPoint.y + targetGapPoint.y) / 2;\n }\n }\n const pathPoints = [\n source,\n { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y },\n ...points,\n { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y },\n target,\n ];\n return [pathPoints, centerX, centerY, defaultOffsetX, defaultOffsetY];\n}\nfunction getBend(a, b, c, size) {\n const bendSize = Math.min(distance(a, b) / 2, distance(b, c) / 2, size);\n const { x, y } = b;\n // no bend\n if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) {\n return `L${x} ${y}`;\n }\n // first segment is horizontal\n if (a.y === y) {\n const xDir = a.x < c.x ? -1 : 1;\n const yDir = a.y < c.y ? 1 : -1;\n return `L ${x + bendSize * xDir},${y}Q ${x},${y} ${x},${y + bendSize * yDir}`;\n }\n const xDir = a.x < c.x ? 1 : -1;\n const yDir = a.y < c.y ? -1 : 1;\n return `L ${x},${y + bendSize * yDir}Q ${x},${y} ${x + bendSize * xDir},${y}`;\n}\nfunction getSmoothStepPath({ sourceX, sourceY, sourcePosition = Position.Bottom, targetX, targetY, targetPosition = Position.Top, borderRadius = 5, centerX, centerY, offset = 20, }) {\n const [points, labelX, labelY, offsetX, offsetY] = getPoints({\n source: { x: sourceX, y: sourceY },\n sourcePosition,\n target: { x: targetX, y: targetY },\n targetPosition,\n center: { x: centerX, y: centerY },\n offset,\n });\n const path = points.reduce((res, p, i) => {\n let segment = '';\n if (i > 0 && i < points.length - 1) {\n segment = getBend(points[i - 1], p, points[i + 1], borderRadius);\n }\n else {\n segment = `${i === 0 ? 'M' : 'L'}${p.x} ${p.y}`;\n }\n res += segment;\n return res;\n }, '');\n return [path, labelX, labelY, offsetX, offsetY];\n}\nconst SmoothStepEdge = memo(({ sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, sourcePosition = Position.Bottom, targetPosition = Position.Top, markerEnd, markerStart, pathOptions, interactionWidth, }) => {\n const [path, labelX, labelY] = getSmoothStepPath({\n sourceX,\n sourceY,\n sourcePosition,\n targetX,\n targetY,\n targetPosition,\n borderRadius: pathOptions?.borderRadius,\n offset: pathOptions?.offset,\n });\n return (React.createElement(BaseEdge, { path: path, labelX: labelX, labelY: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius, style: style, markerEnd: markerEnd, markerStart: markerStart, interactionWidth: interactionWidth }));\n});\nSmoothStepEdge.displayName = 'SmoothStepEdge';\n\nconst StepEdge = memo((props) => (React.createElement(SmoothStepEdge, { ...props, pathOptions: useMemo(() => ({ borderRadius: 0, offset: props.pathOptions?.offset }), [props.pathOptions?.offset]) })));\nStepEdge.displayName = 'StepEdge';\n\nfunction getStraightPath({ sourceX, sourceY, targetX, targetY, }) {\n const [labelX, labelY, offsetX, offsetY] = getEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n });\n return [`M ${sourceX},${sourceY}L ${targetX},${targetY}`, labelX, labelY, offsetX, offsetY];\n}\nconst StraightEdge = memo(({ sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }) => {\n const [path, labelX, labelY] = getStraightPath({ sourceX, sourceY, targetX, targetY });\n return (React.createElement(BaseEdge, { path: path, labelX: labelX, labelY: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius, style: style, markerEnd: markerEnd, markerStart: markerStart, interactionWidth: interactionWidth }));\n});\nStraightEdge.displayName = 'StraightEdge';\n\nfunction calculateControlOffset(distance, curvature) {\n if (distance >= 0) {\n return 0.5 * distance;\n }\n return curvature * 25 * Math.sqrt(-distance);\n}\nfunction getControlWithCurvature({ pos, x1, y1, x2, y2, c }) {\n switch (pos) {\n case Position.Left:\n return [x1 - calculateControlOffset(x1 - x2, c), y1];\n case Position.Right:\n return [x1 + calculateControlOffset(x2 - x1, c), y1];\n case Position.Top:\n return [x1, y1 - calculateControlOffset(y1 - y2, c)];\n case Position.Bottom:\n return [x1, y1 + calculateControlOffset(y2 - y1, c)];\n }\n}\nfunction getBezierPath({ sourceX, sourceY, sourcePosition = Position.Bottom, targetX, targetY, targetPosition = Position.Top, curvature = 0.25, }) {\n const [sourceControlX, sourceControlY] = getControlWithCurvature({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY,\n c: curvature,\n });\n const [targetControlX, targetControlY] = getControlWithCurvature({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY,\n c: curvature,\n });\n const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY,\n });\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n labelX,\n labelY,\n offsetX,\n offsetY,\n ];\n}\nconst BezierEdge = memo(({ sourceX, sourceY, targetX, targetY, sourcePosition = Position.Bottom, targetPosition = Position.Top, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, pathOptions, interactionWidth, }) => {\n const [path, labelX, labelY] = getBezierPath({\n sourceX,\n sourceY,\n sourcePosition,\n targetX,\n targetY,\n targetPosition,\n curvature: pathOptions?.curvature,\n });\n return (React.createElement(BaseEdge, { path: path, labelX: labelX, labelY: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius, style: style, markerEnd: markerEnd, markerStart: markerStart, interactionWidth: interactionWidth }));\n});\nBezierEdge.displayName = 'BezierEdge';\n\nconst NodeIdContext = createContext(null);\nconst Provider = NodeIdContext.Provider;\nNodeIdContext.Consumer;\nconst useNodeId = () => {\n const nodeId = useContext(NodeIdContext);\n return nodeId;\n};\n\nconst isEdge = (element) => 'id' in element && 'source' in element && 'target' in element;\nconst isNode = (element) => 'id' in element && !('source' in element) && !('target' in element);\nconst getOutgoers = (node, nodes, edges) => {\n if (!isNode(node)) {\n return [];\n }\n const outgoerIds = edges.filter((e) => e.source === node.id).map((e) => e.target);\n return nodes.filter((n) => outgoerIds.includes(n.id));\n};\nconst getIncomers = (node, nodes, edges) => {\n if (!isNode(node)) {\n return [];\n }\n const incomersIds = edges.filter((e) => e.target === node.id).map((e) => e.source);\n return nodes.filter((n) => incomersIds.includes(n.id));\n};\nconst getEdgeId = ({ source, sourceHandle, target, targetHandle }) => `reactflow__edge-${source}${sourceHandle || ''}-${target}${targetHandle || ''}`;\nconst getMarkerId = (marker, rfId) => {\n if (typeof marker === 'undefined') {\n return '';\n }\n if (typeof marker === 'string') {\n return marker;\n }\n const idPrefix = rfId ? `${rfId}__` : '';\n return `${idPrefix}${Object.keys(marker)\n .sort()\n .map((key) => `${key}=${marker[key]}`)\n .join('&')}`;\n};\nconst connectionExists = (edge, edges) => {\n return edges.some((el) => el.source === edge.source &&\n el.target === edge.target &&\n (el.sourceHandle === edge.sourceHandle || (!el.sourceHandle && !edge.sourceHandle)) &&\n (el.targetHandle === edge.targetHandle || (!el.targetHandle && !edge.targetHandle)));\n};\nconst addEdge = (edgeParams, edges) => {\n if (!edgeParams.source || !edgeParams.target) {\n devWarn('006', errorMessages['error006']());\n return edges;\n }\n let edge;\n if (isEdge(edgeParams)) {\n edge = { ...edgeParams };\n }\n else {\n edge = {\n ...edgeParams,\n id: getEdgeId(edgeParams),\n };\n }\n if (connectionExists(edge, edges)) {\n return edges;\n }\n return edges.concat(edge);\n};\nconst reconnectEdge = (oldEdge, newConnection, edges, options = { shouldReplaceId: true }) => {\n const { id: oldEdgeId, ...rest } = oldEdge;\n if (!newConnection.source || !newConnection.target) {\n devWarn('006', errorMessages['error006']());\n return edges;\n }\n const foundEdge = edges.find((e) => e.id === oldEdgeId);\n if (!foundEdge) {\n devWarn('007', errorMessages['error007'](oldEdgeId));\n return edges;\n }\n // Remove old edge and create the new edge with parameters of old edge.\n const edge = {\n ...rest,\n id: options.shouldReplaceId ? getEdgeId(newConnection) : oldEdgeId,\n source: newConnection.source,\n target: newConnection.target,\n sourceHandle: newConnection.sourceHandle,\n targetHandle: newConnection.targetHandle,\n };\n return edges.filter((e) => e.id !== oldEdgeId).concat(edge);\n};\n/**\n *\n * @deprecated Use `reconnectEdge` instead.\n */\nconst updateEdge = (oldEdge, newConnection, edges, options = { shouldReplaceId: true }) => {\n console.warn('[DEPRECATED] `updateEdge` is deprecated. Instead use `reconnectEdge` https://reactflow.dev/api-reference/utils/reconnect-edge');\n return reconnectEdge(oldEdge, newConnection, edges, options);\n};\nconst pointToRendererPoint = ({ x, y }, [tx, ty, tScale], snapToGrid, [snapX, snapY]) => {\n const position = {\n x: (x - tx) / tScale,\n y: (y - ty) / tScale,\n };\n if (snapToGrid) {\n return {\n x: snapX * Math.round(position.x / snapX),\n y: snapY * Math.round(position.y / snapY),\n };\n }\n return position;\n};\nconst rendererPointToPoint = ({ x, y }, [tx, ty, tScale]) => {\n return {\n x: x * tScale + tx,\n y: y * tScale + ty,\n };\n};\nconst getNodePositionWithOrigin = (node, nodeOrigin = [0, 0]) => {\n if (!node) {\n return {\n x: 0,\n y: 0,\n positionAbsolute: {\n x: 0,\n y: 0,\n },\n };\n }\n const offsetX = (node.width ?? 0) * nodeOrigin[0];\n const offsetY = (node.height ?? 0) * nodeOrigin[1];\n const position = {\n x: node.position.x - offsetX,\n y: node.position.y - offsetY,\n };\n return {\n ...position,\n positionAbsolute: node.positionAbsolute\n ? {\n x: node.positionAbsolute.x - offsetX,\n y: node.positionAbsolute.y - offsetY,\n }\n : position,\n };\n};\nconst getNodesBounds = (nodes, nodeOrigin = [0, 0]) => {\n if (nodes.length === 0) {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n const box = nodes.reduce((currBox, node) => {\n const { x, y } = getNodePositionWithOrigin(node, nodeOrigin).positionAbsolute;\n return getBoundsOfBoxes(currBox, rectToBox({\n x,\n y,\n width: node.width || 0,\n height: node.height || 0,\n }));\n }, { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity });\n return boxToRect(box);\n};\n// @deprecated Use `getNodesBounds`.\nconst getRectOfNodes = (nodes, nodeOrigin = [0, 0]) => {\n console.warn('[DEPRECATED] `getRectOfNodes` is deprecated. Instead use `getNodesBounds` https://reactflow.dev/api-reference/utils/get-nodes-bounds.');\n return getNodesBounds(nodes, nodeOrigin);\n};\nconst getNodesInside = (nodeInternals, rect, [tx, ty, tScale] = [0, 0, 1], partially = false, \n// set excludeNonSelectableNodes if you want to pay attention to the nodes \"selectable\" attribute\nexcludeNonSelectableNodes = false, nodeOrigin = [0, 0]) => {\n const paneRect = {\n x: (rect.x - tx) / tScale,\n y: (rect.y - ty) / tScale,\n width: rect.width / tScale,\n height: rect.height / tScale,\n };\n const visibleNodes = [];\n nodeInternals.forEach((node) => {\n const { width, height, selectable = true, hidden = false } = node;\n if ((excludeNonSelectableNodes && !selectable) || hidden) {\n return false;\n }\n const { positionAbsolute } = getNodePositionWithOrigin(node, nodeOrigin);\n const nodeRect = {\n x: positionAbsolute.x,\n y: positionAbsolute.y,\n width: width || 0,\n height: height || 0,\n };\n const overlappingArea = getOverlappingArea(paneRect, nodeRect);\n const notInitialized = typeof width === 'undefined' || typeof height === 'undefined' || width === null || height === null;\n const partiallyVisible = partially && overlappingArea > 0;\n const area = (width || 0) * (height || 0);\n const isVisible = notInitialized || partiallyVisible || overlappingArea >= area;\n if (isVisible || node.dragging) {\n visibleNodes.push(node);\n }\n });\n return visibleNodes;\n};\nconst getConnectedEdges = (nodes, edges) => {\n const nodeIds = nodes.map((node) => node.id);\n return edges.filter((edge) => nodeIds.includes(edge.source) || nodeIds.includes(edge.target));\n};\n// @deprecated Use `getViewportForBounds`.\nconst getTransformForBounds = (bounds, width, height, minZoom, maxZoom, padding = 0.1) => {\n const { x, y, zoom } = getViewportForBounds(bounds, width, height, minZoom, maxZoom, padding);\n console.warn('[DEPRECATED] `getTransformForBounds` is deprecated. Instead use `getViewportForBounds`. Beware that the return value is type Viewport (`{ x: number, y: number, zoom: number }`) instead of Transform (`[number, number, number]`). https://reactflow.dev/api-reference/utils/get-viewport-for-bounds');\n return [x, y, zoom];\n};\nconst getViewportForBounds = (bounds, width, height, minZoom, maxZoom, padding = 0.1) => {\n const xZoom = width / (bounds.width * (1 + padding));\n const yZoom = height / (bounds.height * (1 + padding));\n const zoom = Math.min(xZoom, yZoom);\n const clampedZoom = clamp(zoom, minZoom, maxZoom);\n const boundsCenterX = bounds.x + bounds.width / 2;\n const boundsCenterY = bounds.y + bounds.height / 2;\n const x = width / 2 - boundsCenterX * clampedZoom;\n const y = height / 2 - boundsCenterY * clampedZoom;\n return { x, y, zoom: clampedZoom };\n};\nconst getD3Transition = (selection, duration = 0) => {\n return selection.transition().duration(duration);\n};\n\n// this functions collects all handles and adds an absolute position\n// so that we can later find the closest handle to the mouse position\nfunction getHandles(node, handleBounds, type, currentHandle) {\n return (handleBounds[type] || []).reduce((res, h) => {\n if (`${node.id}-${h.id}-${type}` !== currentHandle) {\n res.push({\n id: h.id || null,\n type,\n nodeId: node.id,\n x: (node.positionAbsolute?.x ?? 0) + h.x + h.width / 2,\n y: (node.positionAbsolute?.y ?? 0) + h.y + h.height / 2,\n });\n }\n return res;\n }, []);\n}\nfunction getClosestHandle(event, doc, pos, connectionRadius, handles, validator) {\n // we always want to prioritize the handle below the mouse cursor over the closest distance handle,\n // because it could be that the center of another handle is closer to the mouse pointer than the handle below the cursor\n const { x, y } = getEventPosition(event);\n const domNodes = doc.elementsFromPoint(x, y);\n const handleBelow = domNodes.find((el) => el.classList.contains('react-flow__handle'));\n if (handleBelow) {\n const handleNodeId = handleBelow.getAttribute('data-nodeid');\n if (handleNodeId) {\n const handleType = getHandleType(undefined, handleBelow);\n const handleId = handleBelow.getAttribute('data-handleid');\n const validHandleResult = validator({ nodeId: handleNodeId, id: handleId, type: handleType });\n if (validHandleResult) {\n const handle = handles.find((h) => h.nodeId === handleNodeId && h.type === handleType && h.id === handleId);\n return {\n handle: {\n id: handleId,\n type: handleType,\n nodeId: handleNodeId,\n x: handle?.x || pos.x,\n y: handle?.y || pos.y,\n },\n validHandleResult,\n };\n }\n }\n }\n // if we couldn't find a handle below the mouse cursor we look for the closest distance based on the connectionRadius\n let closestHandles = [];\n let minDistance = Infinity;\n handles.forEach((handle) => {\n const distance = Math.sqrt((handle.x - pos.x) ** 2 + (handle.y - pos.y) ** 2);\n if (distance <= connectionRadius) {\n const validHandleResult = validator(handle);\n if (distance <= minDistance) {\n if (distance < minDistance) {\n closestHandles = [{ handle, validHandleResult }];\n }\n else if (distance === minDistance) {\n // when multiple handles are on the same distance we collect all of them\n closestHandles.push({\n handle,\n validHandleResult,\n });\n }\n minDistance = distance;\n }\n }\n });\n if (!closestHandles.length) {\n return { handle: null, validHandleResult: defaultResult() };\n }\n if (closestHandles.length === 1) {\n return closestHandles[0];\n }\n const hasValidHandle = closestHandles.some(({ validHandleResult }) => validHandleResult.isValid);\n const hasTargetHandle = closestHandles.some(({ handle }) => handle.type === 'target');\n // if multiple handles are layouted on top of each other we prefer the one with type = target and the one that is valid\n return (closestHandles.find(({ handle, validHandleResult }) => hasTargetHandle ? handle.type === 'target' : (hasValidHandle ? validHandleResult.isValid : true)) || closestHandles[0]);\n}\nconst nullConnection = { source: null, target: null, sourceHandle: null, targetHandle: null };\nconst defaultResult = () => ({\n handleDomNode: null,\n isValid: false,\n connection: nullConnection,\n endHandle: null,\n});\n// checks if and returns connection in fom of an object { source: 123, target: 312 }\nfunction isValidHandle(handle, connectionMode, fromNodeId, fromHandleId, fromType, isValidConnection, doc) {\n const isTarget = fromType === 'target';\n const handleToCheck = doc.querySelector(`.react-flow__handle[data-id=\"${handle?.nodeId}-${handle?.id}-${handle?.type}\"]`);\n const result = {\n ...defaultResult(),\n handleDomNode: handleToCheck,\n };\n if (handleToCheck) {\n const handleType = getHandleType(undefined, handleToCheck);\n const handleNodeId = handleToCheck.getAttribute('data-nodeid');\n const handleId = handleToCheck.getAttribute('data-handleid');\n const connectable = handleToCheck.classList.contains('connectable');\n const connectableEnd = handleToCheck.classList.contains('connectableend');\n const connection = {\n source: isTarget ? handleNodeId : fromNodeId,\n sourceHandle: isTarget ? handleId : fromHandleId,\n target: isTarget ? fromNodeId : handleNodeId,\n targetHandle: isTarget ? fromHandleId : handleId,\n };\n result.connection = connection;\n const isConnectable = connectable && connectableEnd;\n // in strict mode we don't allow target to target or source to source connections\n const isValid = isConnectable &&\n (connectionMode === ConnectionMode.Strict\n ? (isTarget && handleType === 'source') || (!isTarget && handleType === 'target')\n : handleNodeId !== fromNodeId || handleId !== fromHandleId);\n if (isValid) {\n result.endHandle = {\n nodeId: handleNodeId,\n handleId,\n type: handleType,\n };\n result.isValid = isValidConnection(connection);\n }\n }\n return result;\n}\nfunction getHandleLookup({ nodes, nodeId, handleId, handleType }) {\n return nodes.reduce((res, node) => {\n if (node[internalsSymbol]) {\n const { handleBounds } = node[internalsSymbol];\n let sourceHandles = [];\n let targetHandles = [];\n if (handleBounds) {\n sourceHandles = getHandles(node, handleBounds, 'source', `${nodeId}-${handleId}-${handleType}`);\n targetHandles = getHandles(node, handleBounds, 'target', `${nodeId}-${handleId}-${handleType}`);\n }\n res.push(...sourceHandles, ...targetHandles);\n }\n return res;\n }, []);\n}\nfunction getHandleType(edgeUpdaterType, handleDomNode) {\n if (edgeUpdaterType) {\n return edgeUpdaterType;\n }\n else if (handleDomNode?.classList.contains('target')) {\n return 'target';\n }\n else if (handleDomNode?.classList.contains('source')) {\n return 'source';\n }\n return null;\n}\nfunction resetRecentHandle(handleDomNode) {\n handleDomNode?.classList.remove('valid', 'connecting', 'react-flow__handle-valid', 'react-flow__handle-connecting');\n}\nfunction getConnectionStatus(isInsideConnectionRadius, isHandleValid) {\n let connectionStatus = null;\n if (isHandleValid) {\n connectionStatus = 'valid';\n }\n else if (isInsideConnectionRadius && !isHandleValid) {\n connectionStatus = 'invalid';\n }\n return connectionStatus;\n}\n\nfunction handlePointerDown({ event, handleId, nodeId, onConnect, isTarget, getState, setState, isValidConnection, edgeUpdaterType, onReconnectEnd, }) {\n // when react-flow is used inside a shadow root we can't use document\n const doc = getHostForElement(event.target);\n const { connectionMode, domNode, autoPanOnConnect, connectionRadius, onConnectStart, panBy, getNodes, cancelConnection, } = getState();\n let autoPanId = 0;\n let closestHandle;\n const { x, y } = getEventPosition(event);\n const clickedHandle = doc?.elementFromPoint(x, y);\n const handleType = getHandleType(edgeUpdaterType, clickedHandle);\n const containerBounds = domNode?.getBoundingClientRect();\n if (!containerBounds || !handleType) {\n return;\n }\n let prevActiveHandle;\n let connectionPosition = getEventPosition(event, containerBounds);\n let autoPanStarted = false;\n let connection = null;\n let isValid = false;\n let handleDomNode = null;\n const handleLookup = getHandleLookup({\n nodes: getNodes(),\n nodeId,\n handleId,\n handleType,\n });\n // when the user is moving the mouse close to the edge of the canvas while connecting we move the canvas\n const autoPan = () => {\n if (!autoPanOnConnect) {\n return;\n }\n const [xMovement, yMovement] = calcAutoPan(connectionPosition, containerBounds);\n panBy({ x: xMovement, y: yMovement });\n autoPanId = requestAnimationFrame(autoPan);\n };\n setState({\n connectionPosition,\n connectionStatus: null,\n // connectionNodeId etc will be removed in the next major in favor of connectionStartHandle\n connectionNodeId: nodeId,\n connectionHandleId: handleId,\n connectionHandleType: handleType,\n connectionStartHandle: {\n nodeId,\n handleId,\n type: handleType,\n },\n connectionEndHandle: null,\n });\n onConnectStart?.(event, { nodeId, handleId, handleType });\n function onPointerMove(event) {\n const { transform } = getState();\n connectionPosition = getEventPosition(event, containerBounds);\n const { handle, validHandleResult } = getClosestHandle(event, doc, pointToRendererPoint(connectionPosition, transform, false, [1, 1]), connectionRadius, handleLookup, (handle) => isValidHandle(handle, connectionMode, nodeId, handleId, isTarget ? 'target' : 'source', isValidConnection, doc));\n closestHandle = handle;\n if (!autoPanStarted) {\n autoPan();\n autoPanStarted = true;\n }\n handleDomNode = validHandleResult.handleDomNode;\n connection = validHandleResult.connection;\n isValid = validHandleResult.isValid;\n setState({\n connectionPosition: closestHandle && isValid\n ? rendererPointToPoint({\n x: closestHandle.x,\n y: closestHandle.y,\n }, transform)\n : connectionPosition,\n connectionStatus: getConnectionStatus(!!closestHandle, isValid),\n connectionEndHandle: validHandleResult.endHandle,\n });\n if (!closestHandle && !isValid && !handleDomNode) {\n return resetRecentHandle(prevActiveHandle);\n }\n if (connection.source !== connection.target && handleDomNode) {\n resetRecentHandle(prevActiveHandle);\n prevActiveHandle = handleDomNode;\n // @todo: remove the old class names \"react-flow__handle-\" in the next major version\n handleDomNode.classList.add('connecting', 'react-flow__handle-connecting');\n handleDomNode.classList.toggle('valid', isValid);\n handleDomNode.classList.toggle('react-flow__handle-valid', isValid);\n }\n }\n function onPointerUp(event) {\n if ((closestHandle || handleDomNode) && connection && isValid) {\n onConnect?.(connection);\n }\n // it's important to get a fresh reference from the store here\n // in order to get the latest state of onConnectEnd\n getState().onConnectEnd?.(event);\n if (edgeUpdaterType) {\n onReconnectEnd?.(event);\n }\n resetRecentHandle(prevActiveHandle);\n cancelConnection();\n cancelAnimationFrame(autoPanId);\n autoPanStarted = false;\n isValid = false;\n connection = null;\n handleDomNode = null;\n doc.removeEventListener('mousemove', onPointerMove);\n doc.removeEventListener('mouseup', onPointerUp);\n doc.removeEventListener('touchmove', onPointerMove);\n doc.removeEventListener('touchend', onPointerUp);\n }\n doc.addEventListener('mousemove', onPointerMove);\n doc.addEventListener('mouseup', onPointerUp);\n doc.addEventListener('touchmove', onPointerMove);\n doc.addEventListener('touchend', onPointerUp);\n}\n\nconst alwaysValid = () => true;\nconst selector$f = (s) => ({\n connectionStartHandle: s.connectionStartHandle,\n connectOnClick: s.connectOnClick,\n noPanClassName: s.noPanClassName,\n});\nconst connectingSelector = (nodeId, handleId, type) => (state) => {\n const { connectionStartHandle: startHandle, connectionEndHandle: endHandle, connectionClickStartHandle: clickHandle, } = state;\n return {\n connecting: (startHandle?.nodeId === nodeId && startHandle?.handleId === handleId && startHandle?.type === type) ||\n (endHandle?.nodeId === nodeId && endHandle?.handleId === handleId && endHandle?.type === type),\n clickConnecting: clickHandle?.nodeId === nodeId && clickHandle?.handleId === handleId && clickHandle?.type === type,\n };\n};\nconst Handle = forwardRef(({ type = 'source', position = Position.Top, isValidConnection, isConnectable = true, isConnectableStart = true, isConnectableEnd = true, id, onConnect, children, className, onMouseDown, onTouchStart, ...rest }, ref) => {\n const handleId = id || null;\n const isTarget = type === 'target';\n const store = useStoreApi();\n const nodeId = useNodeId();\n const { connectOnClick, noPanClassName } = useStore(selector$f, shallow);\n const { connecting, clickConnecting } = useStore(connectingSelector(nodeId, handleId, type), shallow);\n if (!nodeId) {\n store.getState().onError?.('010', errorMessages['error010']());\n }\n const onConnectExtended = (params) => {\n const { defaultEdgeOptions, onConnect: onConnectAction, hasDefaultEdges } = store.getState();\n const edgeParams = {\n ...defaultEdgeOptions,\n ...params,\n };\n if (hasDefaultEdges) {\n const { edges, setEdges } = store.getState();\n setEdges(addEdge(edgeParams, edges));\n }\n onConnectAction?.(edgeParams);\n onConnect?.(edgeParams);\n };\n const onPointerDown = (event) => {\n if (!nodeId) {\n return;\n }\n const isMouseTriggered = isMouseEvent(event);\n if (isConnectableStart && ((isMouseTriggered && event.button === 0) || !isMouseTriggered)) {\n handlePointerDown({\n event,\n handleId,\n nodeId,\n onConnect: onConnectExtended,\n isTarget,\n getState: store.getState,\n setState: store.setState,\n isValidConnection: isValidConnection || store.getState().isValidConnection || alwaysValid,\n });\n }\n if (isMouseTriggered) {\n onMouseDown?.(event);\n }\n else {\n onTouchStart?.(event);\n }\n };\n const onClick = (event) => {\n const { onClickConnectStart, onClickConnectEnd, connectionClickStartHandle, connectionMode, isValidConnection: isValidConnectionStore, } = store.getState();\n if (!nodeId || (!connectionClickStartHandle && !isConnectableStart)) {\n return;\n }\n if (!connectionClickStartHandle) {\n onClickConnectStart?.(event, { nodeId, handleId, handleType: type });\n store.setState({ connectionClickStartHandle: { nodeId, type, handleId } });\n return;\n }\n const doc = getHostForElement(event.target);\n const isValidConnectionHandler = isValidConnection || isValidConnectionStore || alwaysValid;\n const { connection, isValid } = isValidHandle({\n nodeId,\n id: handleId,\n type,\n }, connectionMode, connectionClickStartHandle.nodeId, connectionClickStartHandle.handleId || null, connectionClickStartHandle.type, isValidConnectionHandler, doc);\n if (isValid) {\n onConnectExtended(connection);\n }\n onClickConnectEnd?.(event);\n store.setState({ connectionClickStartHandle: null });\n };\n return (React.createElement(\"div\", { \"data-handleid\": handleId, \"data-nodeid\": nodeId, \"data-handlepos\": position, \"data-id\": `${nodeId}-${handleId}-${type}`, className: cc([\n 'react-flow__handle',\n `react-flow__handle-${position}`,\n 'nodrag',\n noPanClassName,\n className,\n {\n source: !isTarget,\n target: isTarget,\n connectable: isConnectable,\n connectablestart: isConnectableStart,\n connectableend: isConnectableEnd,\n connecting: clickConnecting,\n // this class is used to style the handle when the user is connecting\n connectionindicator: isConnectable && ((isConnectableStart && !connecting) || (isConnectableEnd && connecting)),\n },\n ]), onMouseDown: onPointerDown, onTouchStart: onPointerDown, onClick: connectOnClick ? onClick : undefined, ref: ref, ...rest }, children));\n});\nHandle.displayName = 'Handle';\nvar Handle$1 = memo(Handle);\n\nconst DefaultNode = ({ data, isConnectable, targetPosition = Position.Top, sourcePosition = Position.Bottom, }) => {\n return (React.createElement(React.Fragment, null,\n React.createElement(Handle$1, { type: \"target\", position: targetPosition, isConnectable: isConnectable }),\n data?.label,\n React.createElement(Handle$1, { type: \"source\", position: sourcePosition, isConnectable: isConnectable })));\n};\nDefaultNode.displayName = 'DefaultNode';\nvar DefaultNode$1 = memo(DefaultNode);\n\nconst InputNode = ({ data, isConnectable, sourcePosition = Position.Bottom }) => (React.createElement(React.Fragment, null,\n data?.label,\n React.createElement(Handle$1, { type: \"source\", position: sourcePosition, isConnectable: isConnectable })));\nInputNode.displayName = 'InputNode';\nvar InputNode$1 = memo(InputNode);\n\nconst OutputNode = ({ data, isConnectable, targetPosition = Position.Top }) => (React.createElement(React.Fragment, null,\n React.createElement(Handle$1, { type: \"target\", position: targetPosition, isConnectable: isConnectable }),\n data?.label));\nOutputNode.displayName = 'OutputNode';\nvar OutputNode$1 = memo(OutputNode);\n\nconst GroupNode = () => null;\nGroupNode.displayName = 'GroupNode';\n\nconst selector$e = (s) => ({\n selectedNodes: s.getNodes().filter((n) => n.selected),\n selectedEdges: s.edges.filter((e) => e.selected).map((e) => ({ ...e })),\n});\nconst selectId = (obj) => obj.id;\nfunction areEqual(a, b) {\n return (shallow(a.selectedNodes.map(selectId), b.selectedNodes.map(selectId)) &&\n shallow(a.selectedEdges.map(selectId), b.selectedEdges.map(selectId)));\n}\n// This is just a helper component for calling the onSelectionChange listener.\n// @TODO: Now that we have the onNodesChange and on EdgesChange listeners, do we still need this component?\nconst SelectionListener = memo(({ onSelectionChange }) => {\n const store = useStoreApi();\n const { selectedNodes, selectedEdges } = useStore(selector$e, areEqual);\n useEffect(() => {\n const params = { nodes: selectedNodes, edges: selectedEdges };\n onSelectionChange?.(params);\n store.getState().onSelectionChange.forEach((fn) => fn(params));\n }, [selectedNodes, selectedEdges, onSelectionChange]);\n return null;\n});\nSelectionListener.displayName = 'SelectionListener';\nconst changeSelector = (s) => !!s.onSelectionChange;\nfunction Wrapper$1({ onSelectionChange }) {\n const storeHasSelectionChange = useStore(changeSelector);\n if (onSelectionChange || storeHasSelectionChange) {\n return React.createElement(SelectionListener, { onSelectionChange: onSelectionChange });\n }\n return null;\n}\n\nconst selector$d = (s) => ({\n setNodes: s.setNodes,\n setEdges: s.setEdges,\n setDefaultNodesAndEdges: s.setDefaultNodesAndEdges,\n setMinZoom: s.setMinZoom,\n setMaxZoom: s.setMaxZoom,\n setTranslateExtent: s.setTranslateExtent,\n setNodeExtent: s.setNodeExtent,\n reset: s.reset,\n});\nfunction useStoreUpdater(value, setStoreState) {\n useEffect(() => {\n if (typeof value !== 'undefined') {\n setStoreState(value);\n }\n }, [value]);\n}\n// updates with values in store that don't have a dedicated setter function\nfunction useDirectStoreUpdater(key, value, setState) {\n useEffect(() => {\n if (typeof value !== 'undefined') {\n setState({ [key]: value });\n }\n }, [value]);\n}\nconst StoreUpdater = ({ nodes, edges, defaultNodes, defaultEdges, onConnect, onConnectStart, onConnectEnd, onClickConnectStart, onClickConnectEnd, nodesDraggable, nodesConnectable, nodesFocusable, edgesFocusable, edgesUpdatable, elevateNodesOnSelect, minZoom, maxZoom, nodeExtent, onNodesChange, onEdgesChange, elementsSelectable, connectionMode, snapGrid, snapToGrid, translateExtent, connectOnClick, defaultEdgeOptions, fitView, fitViewOptions, onNodesDelete, onEdgesDelete, onNodeDrag, onNodeDragStart, onNodeDragStop, onSelectionDrag, onSelectionDragStart, onSelectionDragStop, noPanClassName, nodeOrigin, rfId, autoPanOnConnect, autoPanOnNodeDrag, onError, connectionRadius, isValidConnection, nodeDragThreshold, }) => {\n const { setNodes, setEdges, setDefaultNodesAndEdges, setMinZoom, setMaxZoom, setTranslateExtent, setNodeExtent, reset, } = useStore(selector$d, shallow);\n const store = useStoreApi();\n useEffect(() => {\n const edgesWithDefaults = defaultEdges?.map((e) => ({ ...e, ...defaultEdgeOptions }));\n setDefaultNodesAndEdges(defaultNodes, edgesWithDefaults);\n return () => {\n reset();\n };\n }, []);\n useDirectStoreUpdater('defaultEdgeOptions', defaultEdgeOptions, store.setState);\n useDirectStoreUpdater('connectionMode', connectionMode, store.setState);\n useDirectStoreUpdater('onConnect', onConnect, store.setState);\n useDirectStoreUpdater('onConnectStart', onConnectStart, store.setState);\n useDirectStoreUpdater('onConnectEnd', onConnectEnd, store.setState);\n useDirectStoreUpdater('onClickConnectStart', onClickConnectStart, store.setState);\n useDirectStoreUpdater('onClickConnectEnd', onClickConnectEnd, store.setState);\n useDirectStoreUpdater('nodesDraggable', nodesDraggable, store.setState);\n useDirectStoreUpdater('nodesConnectable', nodesConnectable, store.setState);\n useDirectStoreUpdater('nodesFocusable', nodesFocusable, store.setState);\n useDirectStoreUpdater('edgesFocusable', edgesFocusable, store.setState);\n useDirectStoreUpdater('edgesUpdatable', edgesUpdatable, store.setState);\n useDirectStoreUpdater('elementsSelectable', elementsSelectable, store.setState);\n useDirectStoreUpdater('elevateNodesOnSelect', elevateNodesOnSelect, store.setState);\n useDirectStoreUpdater('snapToGrid', snapToGrid, store.setState);\n useDirectStoreUpdater('snapGrid', snapGrid, store.setState);\n useDirectStoreUpdater('onNodesChange', onNodesChange, store.setState);\n useDirectStoreUpdater('onEdgesChange', onEdgesChange, store.setState);\n useDirectStoreUpdater('connectOnClick', connectOnClick, store.setState);\n useDirectStoreUpdater('fitViewOnInit', fitView, store.setState);\n useDirectStoreUpdater('fitViewOnInitOptions', fitViewOptions, store.setState);\n useDirectStoreUpdater('onNodesDelete', onNodesDelete, store.setState);\n useDirectStoreUpdater('onEdgesDelete', onEdgesDelete, store.setState);\n useDirectStoreUpdater('onNodeDrag', onNodeDrag, store.setState);\n useDirectStoreUpdater('onNodeDragStart', onNodeDragStart, store.setState);\n useDirectStoreUpdater('onNodeDragStop', onNodeDragStop, store.setState);\n useDirectStoreUpdater('onSelectionDrag', onSelectionDrag, store.setState);\n useDirectStoreUpdater('onSelectionDragStart', onSelectionDragStart, store.setState);\n useDirectStoreUpdater('onSelectionDragStop', onSelectionDragStop, store.setState);\n useDirectStoreUpdater('noPanClassName', noPanClassName, store.setState);\n useDirectStoreUpdater('nodeOrigin', nodeOrigin, store.setState);\n useDirectStoreUpdater('rfId', rfId, store.setState);\n useDirectStoreUpdater('autoPanOnConnect', autoPanOnConnect, store.setState);\n useDirectStoreUpdater('autoPanOnNodeDrag', autoPanOnNodeDrag, store.setState);\n useDirectStoreUpdater('onError', onError, store.setState);\n useDirectStoreUpdater('connectionRadius', connectionRadius, store.setState);\n useDirectStoreUpdater('isValidConnection', isValidConnection, store.setState);\n useDirectStoreUpdater('nodeDragThreshold', nodeDragThreshold, store.setState);\n useStoreUpdater(nodes, setNodes);\n useStoreUpdater(edges, setEdges);\n useStoreUpdater(minZoom, setMinZoom);\n useStoreUpdater(maxZoom, setMaxZoom);\n useStoreUpdater(translateExtent, setTranslateExtent);\n useStoreUpdater(nodeExtent, setNodeExtent);\n return null;\n};\n\nconst style = { display: 'none' };\nconst ariaLiveStyle = {\n position: 'absolute',\n width: 1,\n height: 1,\n margin: -1,\n border: 0,\n padding: 0,\n overflow: 'hidden',\n clip: 'rect(0px, 0px, 0px, 0px)',\n clipPath: 'inset(100%)',\n};\nconst ARIA_NODE_DESC_KEY = 'react-flow__node-desc';\nconst ARIA_EDGE_DESC_KEY = 'react-flow__edge-desc';\nconst ARIA_LIVE_MESSAGE = 'react-flow__aria-live';\nconst selector$c = (s) => s.ariaLiveMessage;\nfunction AriaLiveMessage({ rfId }) {\n const ariaLiveMessage = useStore(selector$c);\n return (React.createElement(\"div\", { id: `${ARIA_LIVE_MESSAGE}-${rfId}`, \"aria-live\": \"assertive\", \"aria-atomic\": \"true\", style: ariaLiveStyle }, ariaLiveMessage));\n}\nfunction A11yDescriptions({ rfId, disableKeyboardA11y }) {\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { id: `${ARIA_NODE_DESC_KEY}-${rfId}`, style: style },\n \"Press enter or space to select a node.\",\n !disableKeyboardA11y && 'You can then use the arrow keys to move the node around.',\n \" Press delete to remove it and escape to cancel.\",\n ' '),\n React.createElement(\"div\", { id: `${ARIA_EDGE_DESC_KEY}-${rfId}`, style: style }, \"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.\"),\n !disableKeyboardA11y && React.createElement(AriaLiveMessage, { rfId: rfId })));\n}\n\n// the keycode can be a string 'a' or an array of strings ['a', 'a+d']\n// a string means a single key 'a' or a combination when '+' is used 'a+d'\n// an array means different possibilities. Explainer: ['a', 'd+s'] here the\n// user can use the single key 'a' or the combination 'd' + 's'\nvar useKeyPress = (keyCode = null, options = { actInsideInputWithModifier: true }) => {\n const [keyPressed, setKeyPressed] = useState(false);\n // we need to remember if a modifier key is pressed in order to track it\n const modifierPressed = useRef(false);\n // we need to remember the pressed keys in order to support combinations\n const pressedKeys = useRef(new Set([]));\n // keyCodes = array with single keys [['a']] or key combinations [['a', 's']]\n // keysToWatch = array with all keys flattened ['a', 'd', 'ShiftLeft']\n // used to check if we store event.code or event.key. When the code is in the list of keysToWatch\n // we use the code otherwise the key. Explainer: When you press the left \"command\" key, the code is \"MetaLeft\"\n // and the key is \"Meta\". We want users to be able to pass keys and codes so we assume that the key is meant when\n // we can't find it in the list of keysToWatch.\n const [keyCodes, keysToWatch] = useMemo(() => {\n if (keyCode !== null) {\n const keyCodeArr = Array.isArray(keyCode) ? keyCode : [keyCode];\n const keys = keyCodeArr.filter((kc) => typeof kc === 'string').map((kc) => kc.split('+'));\n const keysFlat = keys.reduce((res, item) => res.concat(...item), []);\n return [keys, keysFlat];\n }\n return [[], []];\n }, [keyCode]);\n useEffect(() => {\n const doc = typeof document !== 'undefined' ? document : null;\n const target = options?.target || doc;\n if (keyCode !== null) {\n const downHandler = (event) => {\n modifierPressed.current = event.ctrlKey || event.metaKey || event.shiftKey;\n const preventAction = (!modifierPressed.current || (modifierPressed.current && !options.actInsideInputWithModifier)) &&\n isInputDOMNode(event);\n if (preventAction) {\n return false;\n }\n const keyOrCode = useKeyOrCode(event.code, keysToWatch);\n pressedKeys.current.add(event[keyOrCode]);\n if (isMatchingKey(keyCodes, pressedKeys.current, false)) {\n event.preventDefault();\n setKeyPressed(true);\n }\n };\n const upHandler = (event) => {\n const preventAction = (!modifierPressed.current || (modifierPressed.current && !options.actInsideInputWithModifier)) &&\n isInputDOMNode(event);\n if (preventAction) {\n return false;\n }\n const keyOrCode = useKeyOrCode(event.code, keysToWatch);\n if (isMatchingKey(keyCodes, pressedKeys.current, true)) {\n setKeyPressed(false);\n pressedKeys.current.clear();\n }\n else {\n pressedKeys.current.delete(event[keyOrCode]);\n }\n // fix for Mac: when cmd key is pressed, keyup is not triggered for any other key, see: https://stackoverflow.com/questions/27380018/when-cmd-key-is-kept-pressed-keyup-is-not-triggered-for-any-other-key\n if (event.key === 'Meta') {\n pressedKeys.current.clear();\n }\n modifierPressed.current = false;\n };\n const resetHandler = () => {\n pressedKeys.current.clear();\n setKeyPressed(false);\n };\n target?.addEventListener('keydown', downHandler);\n target?.addEventListener('keyup', upHandler);\n window.addEventListener('blur', resetHandler);\n return () => {\n target?.removeEventListener('keydown', downHandler);\n target?.removeEventListener('keyup', upHandler);\n window.removeEventListener('blur', resetHandler);\n };\n }\n }, [keyCode, setKeyPressed]);\n return keyPressed;\n};\n// utils\nfunction isMatchingKey(keyCodes, pressedKeys, isUp) {\n return (keyCodes\n // we only want to compare same sizes of keyCode definitions\n // and pressed keys. When the user specified 'Meta' as a key somewhere\n // this would also be truthy without this filter when user presses 'Meta' + 'r'\n .filter((keys) => isUp || keys.length === pressedKeys.size)\n // since we want to support multiple possibilities only one of the\n // combinations need to be part of the pressed keys\n .some((keys) => keys.every((k) => pressedKeys.has(k))));\n}\nfunction useKeyOrCode(eventCode, keysToWatch) {\n return keysToWatch.includes(eventCode) ? 'code' : 'key';\n}\n\nfunction calculateXYZPosition(node, nodeInternals, result, nodeOrigin) {\n const parentId = node.parentNode || node.parentId;\n if (!parentId) {\n return result;\n }\n const parentNode = nodeInternals.get(parentId);\n const parentNodePosition = getNodePositionWithOrigin(parentNode, nodeOrigin);\n return calculateXYZPosition(parentNode, nodeInternals, {\n x: (result.x ?? 0) + parentNodePosition.x,\n y: (result.y ?? 0) + parentNodePosition.y,\n z: (parentNode[internalsSymbol]?.z ?? 0) > (result.z ?? 0) ? parentNode[internalsSymbol]?.z ?? 0 : result.z ?? 0,\n }, nodeOrigin);\n}\nfunction updateAbsoluteNodePositions(nodeInternals, nodeOrigin, parentNodes) {\n nodeInternals.forEach((node) => {\n const parentId = node.parentNode || node.parentId;\n if (parentId && !nodeInternals.has(parentId)) {\n throw new Error(`Parent node ${parentId} not found`);\n }\n if (parentId || parentNodes?.[node.id]) {\n const { x, y, z } = calculateXYZPosition(node, nodeInternals, {\n ...node.position,\n z: node[internalsSymbol]?.z ?? 0,\n }, nodeOrigin);\n node.positionAbsolute = {\n x,\n y,\n };\n node[internalsSymbol].z = z;\n if (parentNodes?.[node.id]) {\n node[internalsSymbol].isParent = true;\n }\n }\n });\n}\nfunction createNodeInternals(nodes, nodeInternals, nodeOrigin, elevateNodesOnSelect) {\n const nextNodeInternals = new Map();\n const parentNodes = {};\n const selectedNodeZ = elevateNodesOnSelect ? 1000 : 0;\n nodes.forEach((node) => {\n const z = (isNumeric(node.zIndex) ? node.zIndex : 0) + (node.selected ? selectedNodeZ : 0);\n const currInternals = nodeInternals.get(node.id);\n const internals = {\n ...node,\n positionAbsolute: {\n x: node.position.x,\n y: node.position.y,\n },\n };\n const parentId = node.parentNode || node.parentId;\n if (parentId) {\n parentNodes[parentId] = true;\n }\n const resetHandleBounds = currInternals?.type && currInternals?.type !== node.type;\n Object.defineProperty(internals, internalsSymbol, {\n enumerable: false,\n value: {\n handleBounds: resetHandleBounds ? undefined : currInternals?.[internalsSymbol]?.handleBounds,\n z,\n },\n });\n nextNodeInternals.set(node.id, internals);\n });\n updateAbsoluteNodePositions(nextNodeInternals, nodeOrigin, parentNodes);\n return nextNodeInternals;\n}\nfunction fitView(get, options = {}) {\n const { getNodes, width, height, minZoom, maxZoom, d3Zoom, d3Selection, fitViewOnInitDone, fitViewOnInit, nodeOrigin, } = get();\n const isInitialFitView = options.initial && !fitViewOnInitDone && fitViewOnInit;\n const d3initialized = d3Zoom && d3Selection;\n if (d3initialized && (isInitialFitView || !options.initial)) {\n const nodes = getNodes().filter((n) => {\n const isVisible = options.includeHiddenNodes ? n.width && n.height : !n.hidden;\n if (options.nodes?.length) {\n return isVisible && options.nodes.some((optionNode) => optionNode.id === n.id);\n }\n return isVisible;\n });\n const nodesInitialized = nodes.every((n) => n.width && n.height);\n if (nodes.length > 0 && nodesInitialized) {\n const bounds = getNodesBounds(nodes, nodeOrigin);\n const { x, y, zoom } = getViewportForBounds(bounds, width, height, options.minZoom ?? minZoom, options.maxZoom ?? maxZoom, options.padding ?? 0.1);\n const nextTransform = zoomIdentity.translate(x, y).scale(zoom);\n if (typeof options.duration === 'number' && options.duration > 0) {\n d3Zoom.transform(getD3Transition(d3Selection, options.duration), nextTransform);\n }\n else {\n d3Zoom.transform(d3Selection, nextTransform);\n }\n return true;\n }\n }\n return false;\n}\nfunction handleControlledNodeSelectionChange(nodeChanges, nodeInternals) {\n nodeChanges.forEach((change) => {\n const node = nodeInternals.get(change.id);\n if (node) {\n nodeInternals.set(node.id, {\n ...node,\n [internalsSymbol]: node[internalsSymbol],\n selected: change.selected,\n });\n }\n });\n return new Map(nodeInternals);\n}\nfunction handleControlledEdgeSelectionChange(edgeChanges, edges) {\n return edges.map((e) => {\n const change = edgeChanges.find((change) => change.id === e.id);\n if (change) {\n e.selected = change.selected;\n }\n return e;\n });\n}\nfunction updateNodesAndEdgesSelections({ changedNodes, changedEdges, get, set }) {\n const { nodeInternals, edges, onNodesChange, onEdgesChange, hasDefaultNodes, hasDefaultEdges } = get();\n if (changedNodes?.length) {\n if (hasDefaultNodes) {\n set({ nodeInternals: handleControlledNodeSelectionChange(changedNodes, nodeInternals) });\n }\n onNodesChange?.(changedNodes);\n }\n if (changedEdges?.length) {\n if (hasDefaultEdges) {\n set({ edges: handleControlledEdgeSelectionChange(changedEdges, edges) });\n }\n onEdgesChange?.(changedEdges);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => { };\nconst initialViewportHelper = {\n zoomIn: noop,\n zoomOut: noop,\n zoomTo: noop,\n getZoom: () => 1,\n setViewport: noop,\n getViewport: () => ({ x: 0, y: 0, zoom: 1 }),\n fitView: () => false,\n setCenter: noop,\n fitBounds: noop,\n project: (position) => position,\n screenToFlowPosition: (position) => position,\n flowToScreenPosition: (position) => position,\n viewportInitialized: false,\n};\nconst selector$b = (s) => ({\n d3Zoom: s.d3Zoom,\n d3Selection: s.d3Selection,\n});\nconst useViewportHelper = () => {\n const store = useStoreApi();\n const { d3Zoom, d3Selection } = useStore(selector$b, shallow);\n const viewportHelperFunctions = useMemo(() => {\n if (d3Selection && d3Zoom) {\n return {\n zoomIn: (options) => d3Zoom.scaleBy(getD3Transition(d3Selection, options?.duration), 1.2),\n zoomOut: (options) => d3Zoom.scaleBy(getD3Transition(d3Selection, options?.duration), 1 / 1.2),\n zoomTo: (zoomLevel, options) => d3Zoom.scaleTo(getD3Transition(d3Selection, options?.duration), zoomLevel),\n getZoom: () => store.getState().transform[2],\n setViewport: (transform, options) => {\n const [x, y, zoom] = store.getState().transform;\n const nextTransform = zoomIdentity\n .translate(transform.x ?? x, transform.y ?? y)\n .scale(transform.zoom ?? zoom);\n d3Zoom.transform(getD3Transition(d3Selection, options?.duration), nextTransform);\n },\n getViewport: () => {\n const [x, y, zoom] = store.getState().transform;\n return { x, y, zoom };\n },\n fitView: (options) => fitView(store.getState, options),\n setCenter: (x, y, options) => {\n const { width, height, maxZoom } = store.getState();\n const nextZoom = typeof options?.zoom !== 'undefined' ? options.zoom : maxZoom;\n const centerX = width / 2 - x * nextZoom;\n const centerY = height / 2 - y * nextZoom;\n const transform = zoomIdentity.translate(centerX, centerY).scale(nextZoom);\n d3Zoom.transform(getD3Transition(d3Selection, options?.duration), transform);\n },\n fitBounds: (bounds, options) => {\n const { width, height, minZoom, maxZoom } = store.getState();\n const { x, y, zoom } = getViewportForBounds(bounds, width, height, minZoom, maxZoom, options?.padding ?? 0.1);\n const transform = zoomIdentity.translate(x, y).scale(zoom);\n d3Zoom.transform(getD3Transition(d3Selection, options?.duration), transform);\n },\n // @deprecated Use `screenToFlowPosition`.\n project: (position) => {\n const { transform, snapToGrid, snapGrid } = store.getState();\n console.warn('[DEPRECATED] `project` is deprecated. Instead use `screenToFlowPosition`. There is no need to subtract the react flow bounds anymore! https://reactflow.dev/api-reference/types/react-flow-instance#screen-to-flow-position');\n return pointToRendererPoint(position, transform, snapToGrid, snapGrid);\n },\n screenToFlowPosition: (position) => {\n const { transform, snapToGrid, snapGrid, domNode } = store.getState();\n if (!domNode) {\n return position;\n }\n const { x: domX, y: domY } = domNode.getBoundingClientRect();\n const relativePosition = {\n x: position.x - domX,\n y: position.y - domY,\n };\n return pointToRendererPoint(relativePosition, transform, snapToGrid, snapGrid);\n },\n flowToScreenPosition: (position) => {\n const { transform, domNode } = store.getState();\n if (!domNode) {\n return position;\n }\n const { x: domX, y: domY } = domNode.getBoundingClientRect();\n const rendererPosition = rendererPointToPoint(position, transform);\n return {\n x: rendererPosition.x + domX,\n y: rendererPosition.y + domY,\n };\n },\n viewportInitialized: true,\n };\n }\n return initialViewportHelper;\n }, [d3Zoom, d3Selection]);\n return viewportHelperFunctions;\n};\n\n/* eslint-disable-next-line @typescript-eslint/no-explicit-any */\nfunction useReactFlow() {\n const viewportHelper = useViewportHelper();\n const store = useStoreApi();\n const getNodes = useCallback(() => {\n return store\n .getState()\n .getNodes()\n .map((n) => ({ ...n }));\n }, []);\n const getNode = useCallback((id) => {\n return store.getState().nodeInternals.get(id);\n }, []);\n const getEdges = useCallback(() => {\n const { edges = [] } = store.getState();\n return edges.map((e) => ({ ...e }));\n }, []);\n const getEdge = useCallback((id) => {\n const { edges = [] } = store.getState();\n return edges.find((e) => e.id === id);\n }, []);\n const setNodes = useCallback((payload) => {\n const { getNodes, setNodes, hasDefaultNodes, onNodesChange } = store.getState();\n const nodes = getNodes();\n const nextNodes = typeof payload === 'function' ? payload(nodes) : payload;\n if (hasDefaultNodes) {\n setNodes(nextNodes);\n }\n else if (onNodesChange) {\n const changes = nextNodes.length === 0\n ? nodes.map((node) => ({ type: 'remove', id: node.id }))\n : nextNodes.map((node) => ({ item: node, type: 'reset' }));\n onNodesChange(changes);\n }\n }, []);\n const setEdges = useCallback((payload) => {\n const { edges = [], setEdges, hasDefaultEdges, onEdgesChange } = store.getState();\n const nextEdges = typeof payload === 'function' ? payload(edges) : payload;\n if (hasDefaultEdges) {\n setEdges(nextEdges);\n }\n else if (onEdgesChange) {\n const changes = nextEdges.length === 0\n ? edges.map((edge) => ({ type: 'remove', id: edge.id }))\n : nextEdges.map((edge) => ({ item: edge, type: 'reset' }));\n onEdgesChange(changes);\n }\n }, []);\n const addNodes = useCallback((payload) => {\n const nodes = Array.isArray(payload) ? payload : [payload];\n const { getNodes, setNodes, hasDefaultNodes, onNodesChange } = store.getState();\n if (hasDefaultNodes) {\n const currentNodes = getNodes();\n const nextNodes = [...currentNodes, ...nodes];\n setNodes(nextNodes);\n }\n else if (onNodesChange) {\n const changes = nodes.map((node) => ({ item: node, type: 'add' }));\n onNodesChange(changes);\n }\n }, []);\n const addEdges = useCallback((payload) => {\n const nextEdges = Array.isArray(payload) ? payload : [payload];\n const { edges = [], setEdges, hasDefaultEdges, onEdgesChange } = store.getState();\n if (hasDefaultEdges) {\n setEdges([...edges, ...nextEdges]);\n }\n else if (onEdgesChange) {\n const changes = nextEdges.map((edge) => ({ item: edge, type: 'add' }));\n onEdgesChange(changes);\n }\n }, []);\n const toObject = useCallback(() => {\n const { getNodes, edges = [], transform } = store.getState();\n const [x, y, zoom] = transform;\n return {\n nodes: getNodes().map((n) => ({ ...n })),\n edges: edges.map((e) => ({ ...e })),\n viewport: {\n x,\n y,\n zoom,\n },\n };\n }, []);\n const deleteElements = useCallback(({ nodes: nodesDeleted, edges: edgesDeleted }) => {\n const { nodeInternals, getNodes, edges, hasDefaultNodes, hasDefaultEdges, onNodesDelete, onEdgesDelete, onNodesChange, onEdgesChange, } = store.getState();\n const nodeIds = (nodesDeleted || []).map((node) => node.id);\n const edgeIds = (edgesDeleted || []).map((edge) => edge.id);\n const nodesToRemove = getNodes().reduce((res, node) => {\n const parentId = node.parentNode || node.parentId;\n const parentHit = !nodeIds.includes(node.id) && parentId && res.find((n) => n.id === parentId);\n const deletable = typeof node.deletable === 'boolean' ? node.deletable : true;\n if (deletable && (nodeIds.includes(node.id) || parentHit)) {\n res.push(node);\n }\n return res;\n }, []);\n const deletableEdges = edges.filter((e) => (typeof e.deletable === 'boolean' ? e.deletable : true));\n const initialHitEdges = deletableEdges.filter((e) => edgeIds.includes(e.id));\n if (nodesToRemove || initialHitEdges) {\n const connectedEdges = getConnectedEdges(nodesToRemove, deletableEdges);\n const edgesToRemove = [...initialHitEdges, ...connectedEdges];\n const edgeIdsToRemove = edgesToRemove.reduce((res, edge) => {\n if (!res.includes(edge.id)) {\n res.push(edge.id);\n }\n return res;\n }, []);\n if (hasDefaultEdges || hasDefaultNodes) {\n if (hasDefaultEdges) {\n store.setState({\n edges: edges.filter((e) => !edgeIdsToRemove.includes(e.id)),\n });\n }\n if (hasDefaultNodes) {\n nodesToRemove.forEach((node) => {\n nodeInternals.delete(node.id);\n });\n store.setState({\n nodeInternals: new Map(nodeInternals),\n });\n }\n }\n if (edgeIdsToRemove.length > 0) {\n onEdgesDelete?.(edgesToRemove);\n if (onEdgesChange) {\n onEdgesChange(edgeIdsToRemove.map((id) => ({\n id,\n type: 'remove',\n })));\n }\n }\n if (nodesToRemove.length > 0) {\n onNodesDelete?.(nodesToRemove);\n if (onNodesChange) {\n const nodeChanges = nodesToRemove.map((n) => ({ id: n.id, type: 'remove' }));\n onNodesChange(nodeChanges);\n }\n }\n }\n }, []);\n const getNodeRect = useCallback((nodeOrRect) => {\n const isRect = isRectObject(nodeOrRect);\n const node = isRect ? null : store.getState().nodeInternals.get(nodeOrRect.id);\n if (!isRect && !node) {\n return [null, null, isRect];\n }\n const nodeRect = isRect ? nodeOrRect : nodeToRect(node);\n return [nodeRect, node, isRect];\n }, []);\n const getIntersectingNodes = useCallback((nodeOrRect, partially = true, nodes) => {\n const [nodeRect, node, isRect] = getNodeRect(nodeOrRect);\n if (!nodeRect) {\n return [];\n }\n return (nodes || store.getState().getNodes()).filter((n) => {\n if (!isRect && (n.id === node.id || !n.positionAbsolute)) {\n return false;\n }\n const currNodeRect = nodeToRect(n);\n const overlappingArea = getOverlappingArea(currNodeRect, nodeRect);\n const partiallyVisible = partially && overlappingArea > 0;\n return partiallyVisible || overlappingArea >= nodeRect.width * nodeRect.height;\n });\n }, []);\n const isNodeIntersecting = useCallback((nodeOrRect, area, partially = true) => {\n const [nodeRect] = getNodeRect(nodeOrRect);\n if (!nodeRect) {\n return false;\n }\n const overlappingArea = getOverlappingArea(nodeRect, area);\n const partiallyVisible = partially && overlappingArea > 0;\n return partiallyVisible || overlappingArea >= nodeRect.width * nodeRect.height;\n }, []);\n return useMemo(() => {\n return {\n ...viewportHelper,\n getNodes,\n getNode,\n getEdges,\n getEdge,\n setNodes,\n setEdges,\n addNodes,\n addEdges,\n toObject,\n deleteElements,\n getIntersectingNodes,\n isNodeIntersecting,\n };\n }, [\n viewportHelper,\n getNodes,\n getNode,\n getEdges,\n getEdge,\n setNodes,\n setEdges,\n addNodes,\n addEdges,\n toObject,\n deleteElements,\n getIntersectingNodes,\n isNodeIntersecting,\n ]);\n}\n\nconst deleteKeyOptions = { actInsideInputWithModifier: false };\nvar useGlobalKeyHandler = ({ deleteKeyCode, multiSelectionKeyCode }) => {\n const store = useStoreApi();\n const { deleteElements } = useReactFlow();\n const deleteKeyPressed = useKeyPress(deleteKeyCode, deleteKeyOptions);\n const multiSelectionKeyPressed = useKeyPress(multiSelectionKeyCode);\n useEffect(() => {\n if (deleteKeyPressed) {\n const { edges, getNodes } = store.getState();\n const selectedNodes = getNodes().filter((node) => node.selected);\n const selectedEdges = edges.filter((edge) => edge.selected);\n deleteElements({ nodes: selectedNodes, edges: selectedEdges });\n store.setState({ nodesSelectionActive: false });\n }\n }, [deleteKeyPressed]);\n useEffect(() => {\n store.setState({ multiSelectionActive: multiSelectionKeyPressed });\n }, [multiSelectionKeyPressed]);\n};\n\nfunction useResizeHandler(rendererNode) {\n const store = useStoreApi();\n useEffect(() => {\n let resizeObserver;\n const updateDimensions = () => {\n if (!rendererNode.current) {\n return;\n }\n const size = getDimensions(rendererNode.current);\n if (size.height === 0 || size.width === 0) {\n store.getState().onError?.('004', errorMessages['error004']());\n }\n store.setState({ width: size.width || 500, height: size.height || 500 });\n };\n updateDimensions();\n window.addEventListener('resize', updateDimensions);\n if (rendererNode.current) {\n resizeObserver = new ResizeObserver(() => updateDimensions());\n resizeObserver.observe(rendererNode.current);\n }\n return () => {\n window.removeEventListener('resize', updateDimensions);\n if (resizeObserver && rendererNode.current) {\n resizeObserver.unobserve(rendererNode.current);\n }\n };\n }, []);\n}\n\nconst containerStyle = {\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n};\n\n/* eslint-disable @typescript-eslint/ban-ts-comment */\nconst viewChanged = (prevViewport, eventTransform) => prevViewport.x !== eventTransform.x || prevViewport.y !== eventTransform.y || prevViewport.zoom !== eventTransform.k;\nconst eventToFlowTransform = (eventTransform) => ({\n x: eventTransform.x,\n y: eventTransform.y,\n zoom: eventTransform.k,\n});\nconst isWrappedWithClass = (event, className) => event.target.closest(`.${className}`);\nconst isRightClickPan = (panOnDrag, usedButton) => usedButton === 2 && Array.isArray(panOnDrag) && panOnDrag.includes(2);\nconst wheelDelta = (event) => {\n const factor = event.ctrlKey && isMacOs() ? 10 : 1;\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * factor;\n};\nconst selector$a = (s) => ({\n d3Zoom: s.d3Zoom,\n d3Selection: s.d3Selection,\n d3ZoomHandler: s.d3ZoomHandler,\n userSelectionActive: s.userSelectionActive,\n});\nconst ZoomPane = ({ onMove, onMoveStart, onMoveEnd, onPaneContextMenu, zoomOnScroll = true, zoomOnPinch = true, panOnScroll = false, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = true, elementsSelectable, panOnDrag = true, defaultViewport, translateExtent, minZoom, maxZoom, zoomActivationKeyCode, preventScrolling = true, children, noWheelClassName, noPanClassName, }) => {\n const timerId = useRef();\n const store = useStoreApi();\n const isZoomingOrPanning = useRef(false);\n const zoomedWithRightMouseButton = useRef(false);\n const zoomPane = useRef(null);\n const prevTransform = useRef({ x: 0, y: 0, zoom: 0 });\n const { d3Zoom, d3Selection, d3ZoomHandler, userSelectionActive } = useStore(selector$a, shallow);\n const zoomActivationKeyPressed = useKeyPress(zoomActivationKeyCode);\n const mouseButton = useRef(0);\n const isPanScrolling = useRef(false);\n const panScrollTimeout = useRef();\n useResizeHandler(zoomPane);\n useEffect(() => {\n if (zoomPane.current) {\n const bbox = zoomPane.current.getBoundingClientRect();\n const d3ZoomInstance = zoom().scaleExtent([minZoom, maxZoom]).translateExtent(translateExtent);\n const selection = select(zoomPane.current).call(d3ZoomInstance);\n const updatedTransform = zoomIdentity\n .translate(defaultViewport.x, defaultViewport.y)\n .scale(clamp(defaultViewport.zoom, minZoom, maxZoom));\n const extent = [\n [0, 0],\n [bbox.width, bbox.height],\n ];\n const constrainedTransform = d3ZoomInstance.constrain()(updatedTransform, extent, translateExtent);\n d3ZoomInstance.transform(selection, constrainedTransform);\n d3ZoomInstance.wheelDelta(wheelDelta);\n store.setState({\n d3Zoom: d3ZoomInstance,\n d3Selection: selection,\n d3ZoomHandler: selection.on('wheel.zoom'),\n // we need to pass transform because zoom handler is not registered when we set the initial transform\n transform: [constrainedTransform.x, constrainedTransform.y, constrainedTransform.k],\n domNode: zoomPane.current.closest('.react-flow'),\n });\n }\n }, []);\n useEffect(() => {\n if (d3Selection && d3Zoom) {\n if (panOnScroll && !zoomActivationKeyPressed && !userSelectionActive) {\n d3Selection.on('wheel.zoom', (event) => {\n if (isWrappedWithClass(event, noWheelClassName)) {\n return false;\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n const currentZoom = d3Selection.property('__zoom').k || 1;\n // macos and win set ctrlKey=true for pinch gesture on a trackpad\n if (event.ctrlKey && zoomOnPinch) {\n const point = pointer(event);\n const pinchDelta = wheelDelta(event);\n const zoom = currentZoom * Math.pow(2, pinchDelta);\n // @ts-ignore\n d3Zoom.scaleTo(d3Selection, zoom, point, event);\n return;\n }\n // increase scroll speed in firefox\n // firefox: deltaMode === 1; chrome: deltaMode === 0\n const deltaNormalize = event.deltaMode === 1 ? 20 : 1;\n let deltaX = panOnScrollMode === PanOnScrollMode.Vertical ? 0 : event.deltaX * deltaNormalize;\n let deltaY = panOnScrollMode === PanOnScrollMode.Horizontal ? 0 : event.deltaY * deltaNormalize;\n // this enables vertical scrolling with shift + scroll on windows\n if (!isMacOs() && event.shiftKey && panOnScrollMode !== PanOnScrollMode.Vertical) {\n deltaX = event.deltaY * deltaNormalize;\n deltaY = 0;\n }\n d3Zoom.translateBy(d3Selection, -(deltaX / currentZoom) * panOnScrollSpeed, -(deltaY / currentZoom) * panOnScrollSpeed, \n // @ts-ignore\n { internal: true });\n const nextViewport = eventToFlowTransform(d3Selection.property('__zoom'));\n const { onViewportChangeStart, onViewportChange, onViewportChangeEnd } = store.getState();\n clearTimeout(panScrollTimeout.current);\n // for pan on scroll we need to handle the event calls on our own\n // we can't use the start, zoom and end events from d3-zoom\n // because start and move gets called on every scroll event and not once at the beginning\n if (!isPanScrolling.current) {\n isPanScrolling.current = true;\n onMoveStart?.(event, nextViewport);\n onViewportChangeStart?.(nextViewport);\n }\n if (isPanScrolling.current) {\n onMove?.(event, nextViewport);\n onViewportChange?.(nextViewport);\n panScrollTimeout.current = setTimeout(() => {\n onMoveEnd?.(event, nextViewport);\n onViewportChangeEnd?.(nextViewport);\n isPanScrolling.current = false;\n }, 150);\n }\n }, { passive: false });\n }\n else if (typeof d3ZoomHandler !== 'undefined') {\n d3Selection.on('wheel.zoom', function (event, d) {\n // we still want to enable pinch zooming even if preventScrolling is set to false\n const invalidEvent = !preventScrolling && event.type === 'wheel' && !event.ctrlKey;\n if (invalidEvent || isWrappedWithClass(event, noWheelClassName)) {\n return null;\n }\n event.preventDefault();\n d3ZoomHandler.call(this, event, d);\n }, { passive: false });\n }\n }\n }, [\n userSelectionActive,\n panOnScroll,\n panOnScrollMode,\n d3Selection,\n d3Zoom,\n d3ZoomHandler,\n zoomActivationKeyPressed,\n zoomOnPinch,\n preventScrolling,\n noWheelClassName,\n onMoveStart,\n onMove,\n onMoveEnd,\n ]);\n useEffect(() => {\n if (d3Zoom) {\n d3Zoom.on('start', (event) => {\n if (!event.sourceEvent || event.sourceEvent.internal) {\n return null;\n }\n // we need to remember it here, because it's always 0 in the \"zoom\" event\n mouseButton.current = event.sourceEvent?.button;\n const { onViewportChangeStart } = store.getState();\n const flowTransform = eventToFlowTransform(event.transform);\n isZoomingOrPanning.current = true;\n prevTransform.current = flowTransform;\n if (event.sourceEvent?.type === 'mousedown') {\n store.setState({ paneDragging: true });\n }\n onViewportChangeStart?.(flowTransform);\n onMoveStart?.(event.sourceEvent, flowTransform);\n });\n }\n }, [d3Zoom, onMoveStart]);\n useEffect(() => {\n if (d3Zoom) {\n if (userSelectionActive && !isZoomingOrPanning.current) {\n d3Zoom.on('zoom', null);\n }\n else if (!userSelectionActive) {\n d3Zoom.on('zoom', (event) => {\n const { onViewportChange } = store.getState();\n store.setState({ transform: [event.transform.x, event.transform.y, event.transform.k] });\n zoomedWithRightMouseButton.current = !!(onPaneContextMenu && isRightClickPan(panOnDrag, mouseButton.current ?? 0));\n if ((onMove || onViewportChange) && !event.sourceEvent?.internal) {\n const flowTransform = eventToFlowTransform(event.transform);\n onViewportChange?.(flowTransform);\n onMove?.(event.sourceEvent, flowTransform);\n }\n });\n }\n }\n }, [userSelectionActive, d3Zoom, onMove, panOnDrag, onPaneContextMenu]);\n useEffect(() => {\n if (d3Zoom) {\n d3Zoom.on('end', (event) => {\n if (!event.sourceEvent || event.sourceEvent.internal) {\n return null;\n }\n const { onViewportChangeEnd } = store.getState();\n isZoomingOrPanning.current = false;\n store.setState({ paneDragging: false });\n if (onPaneContextMenu &&\n isRightClickPan(panOnDrag, mouseButton.current ?? 0) &&\n !zoomedWithRightMouseButton.current) {\n onPaneContextMenu(event.sourceEvent);\n }\n zoomedWithRightMouseButton.current = false;\n if ((onMoveEnd || onViewportChangeEnd) && viewChanged(prevTransform.current, event.transform)) {\n const flowTransform = eventToFlowTransform(event.transform);\n prevTransform.current = flowTransform;\n clearTimeout(timerId.current);\n timerId.current = setTimeout(() => {\n onViewportChangeEnd?.(flowTransform);\n onMoveEnd?.(event.sourceEvent, flowTransform);\n }, panOnScroll ? 150 : 0);\n }\n });\n }\n }, [d3Zoom, panOnScroll, panOnDrag, onMoveEnd, onPaneContextMenu]);\n useEffect(() => {\n if (d3Zoom) {\n d3Zoom.filter((event) => {\n const zoomScroll = zoomActivationKeyPressed || zoomOnScroll;\n const pinchZoom = zoomOnPinch && event.ctrlKey;\n if ((panOnDrag === true || (Array.isArray(panOnDrag) && panOnDrag.includes(1))) &&\n event.button === 1 &&\n event.type === 'mousedown' &&\n (isWrappedWithClass(event, 'react-flow__node') || isWrappedWithClass(event, 'react-flow__edge'))) {\n return true;\n }\n // if all interactions are disabled, we prevent all zoom events\n if (!panOnDrag && !zoomScroll && !panOnScroll && !zoomOnDoubleClick && !zoomOnPinch) {\n return false;\n }\n // during a selection we prevent all other interactions\n if (userSelectionActive) {\n return false;\n }\n // if zoom on double click is disabled, we prevent the double click event\n if (!zoomOnDoubleClick && event.type === 'dblclick') {\n return false;\n }\n // if the target element is inside an element with the nowheel class, we prevent zooming\n if (isWrappedWithClass(event, noWheelClassName) && event.type === 'wheel') {\n return false;\n }\n // if the target element is inside an element with the nopan class, we prevent panning\n if (isWrappedWithClass(event, noPanClassName) &&\n (event.type !== 'wheel' || (panOnScroll && event.type === 'wheel' && !zoomActivationKeyPressed))) {\n return false;\n }\n if (!zoomOnPinch && event.ctrlKey && event.type === 'wheel') {\n return false;\n }\n // when there is no scroll handling enabled, we prevent all wheel events\n if (!zoomScroll && !panOnScroll && !pinchZoom && event.type === 'wheel') {\n return false;\n }\n // if the pane is not movable, we prevent dragging it with mousestart or touchstart\n if (!panOnDrag && (event.type === 'mousedown' || event.type === 'touchstart')) {\n return false;\n }\n // if the pane is only movable using allowed clicks\n if (Array.isArray(panOnDrag) && !panOnDrag.includes(event.button) && event.type === 'mousedown') {\n return false;\n }\n // We only allow right clicks if pan on drag is set to right click\n const buttonAllowed = (Array.isArray(panOnDrag) && panOnDrag.includes(event.button)) || !event.button || event.button <= 1;\n // default filter for d3-zoom\n return (!event.ctrlKey || event.type === 'wheel') && buttonAllowed;\n });\n }\n }, [\n userSelectionActive,\n d3Zoom,\n zoomOnScroll,\n zoomOnPinch,\n panOnScroll,\n zoomOnDoubleClick,\n panOnDrag,\n elementsSelectable,\n zoomActivationKeyPressed,\n ]);\n return (React.createElement(\"div\", { className: \"react-flow__renderer\", ref: zoomPane, style: containerStyle }, children));\n};\n\nconst selector$9 = (s) => ({\n userSelectionActive: s.userSelectionActive,\n userSelectionRect: s.userSelectionRect,\n});\nfunction UserSelection() {\n const { userSelectionActive, userSelectionRect } = useStore(selector$9, shallow);\n const isActive = userSelectionActive && userSelectionRect;\n if (!isActive) {\n return null;\n }\n return (React.createElement(\"div\", { className: \"react-flow__selection react-flow__container\", style: {\n width: userSelectionRect.width,\n height: userSelectionRect.height,\n transform: `translate(${userSelectionRect.x}px, ${userSelectionRect.y}px)`,\n } }));\n}\n\nfunction handleParentExpand(res, updateItem) {\n const parentId = updateItem.parentNode || updateItem.parentId;\n const parent = res.find((e) => e.id === parentId);\n if (parent) {\n const extendWidth = updateItem.position.x + updateItem.width - parent.width;\n const extendHeight = updateItem.position.y + updateItem.height - parent.height;\n if (extendWidth > 0 || extendHeight > 0 || updateItem.position.x < 0 || updateItem.position.y < 0) {\n parent.style = { ...parent.style } || {};\n parent.style.width = parent.style.width ?? parent.width;\n parent.style.height = parent.style.height ?? parent.height;\n if (extendWidth > 0) {\n parent.style.width += extendWidth;\n }\n if (extendHeight > 0) {\n parent.style.height += extendHeight;\n }\n if (updateItem.position.x < 0) {\n const xDiff = Math.abs(updateItem.position.x);\n parent.position.x = parent.position.x - xDiff;\n parent.style.width += xDiff;\n updateItem.position.x = 0;\n }\n if (updateItem.position.y < 0) {\n const yDiff = Math.abs(updateItem.position.y);\n parent.position.y = parent.position.y - yDiff;\n parent.style.height += yDiff;\n updateItem.position.y = 0;\n }\n parent.width = parent.style.width;\n parent.height = parent.style.height;\n }\n }\n}\nfunction applyChanges(changes, elements) {\n // we need this hack to handle the setNodes and setEdges function of the useReactFlow hook for controlled flows\n if (changes.some((c) => c.type === 'reset')) {\n return changes.filter((c) => c.type === 'reset').map((c) => c.item);\n }\n const initElements = changes.filter((c) => c.type === 'add').map((c) => c.item);\n return elements.reduce((res, item) => {\n const currentChanges = changes.filter((c) => c.id === item.id);\n if (currentChanges.length === 0) {\n res.push(item);\n return res;\n }\n const updateItem = { ...item };\n for (const currentChange of currentChanges) {\n if (currentChange) {\n switch (currentChange.type) {\n case 'select': {\n updateItem.selected = currentChange.selected;\n break;\n }\n case 'position': {\n if (typeof currentChange.position !== 'undefined') {\n updateItem.position = currentChange.position;\n }\n if (typeof currentChange.positionAbsolute !== 'undefined') {\n updateItem.positionAbsolute = currentChange.positionAbsolute;\n }\n if (typeof currentChange.dragging !== 'undefined') {\n updateItem.dragging = currentChange.dragging;\n }\n if (updateItem.expandParent) {\n handleParentExpand(res, updateItem);\n }\n break;\n }\n case 'dimensions': {\n if (typeof currentChange.dimensions !== 'undefined') {\n updateItem.width = currentChange.dimensions.width;\n updateItem.height = currentChange.dimensions.height;\n }\n if (typeof currentChange.updateStyle !== 'undefined') {\n updateItem.style = { ...(updateItem.style || {}), ...currentChange.dimensions };\n }\n if (typeof currentChange.resizing === 'boolean') {\n updateItem.resizing = currentChange.resizing;\n }\n if (updateItem.expandParent) {\n handleParentExpand(res, updateItem);\n }\n break;\n }\n case 'remove': {\n return res;\n }\n }\n }\n }\n res.push(updateItem);\n return res;\n }, initElements);\n}\nfunction applyNodeChanges(changes, nodes) {\n return applyChanges(changes, nodes);\n}\nfunction applyEdgeChanges(changes, edges) {\n return applyChanges(changes, edges);\n}\nconst createSelectionChange = (id, selected) => ({\n id,\n type: 'select',\n selected,\n});\nfunction getSelectionChanges(items, selectedIds) {\n return items.reduce((res, item) => {\n const willBeSelected = selectedIds.includes(item.id);\n if (!item.selected && willBeSelected) {\n item.selected = true;\n res.push(createSelectionChange(item.id, true));\n }\n else if (item.selected && !willBeSelected) {\n item.selected = false;\n res.push(createSelectionChange(item.id, false));\n }\n return res;\n }, []);\n}\n\n/**\n * The user selection rectangle gets displayed when a user drags the mouse while pressing shift\n */\nconst wrapHandler = (handler, containerRef) => {\n return (event) => {\n if (event.target !== containerRef.current) {\n return;\n }\n handler?.(event);\n };\n};\nconst selector$8 = (s) => ({\n userSelectionActive: s.userSelectionActive,\n elementsSelectable: s.elementsSelectable,\n dragging: s.paneDragging,\n});\nconst Pane = memo(({ isSelecting, selectionMode = SelectionMode.Full, panOnDrag, onSelectionStart, onSelectionEnd, onPaneClick, onPaneContextMenu, onPaneScroll, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, children, }) => {\n const container = useRef(null);\n const store = useStoreApi();\n const prevSelectedNodesCount = useRef(0);\n const prevSelectedEdgesCount = useRef(0);\n const containerBounds = useRef();\n const { userSelectionActive, elementsSelectable, dragging } = useStore(selector$8, shallow);\n const resetUserSelection = () => {\n store.setState({ userSelectionActive: false, userSelectionRect: null });\n prevSelectedNodesCount.current = 0;\n prevSelectedEdgesCount.current = 0;\n };\n const onClick = (event) => {\n onPaneClick?.(event);\n store.getState().resetSelectedElements();\n store.setState({ nodesSelectionActive: false });\n };\n const onContextMenu = (event) => {\n if (Array.isArray(panOnDrag) && panOnDrag?.includes(2)) {\n event.preventDefault();\n return;\n }\n onPaneContextMenu?.(event);\n };\n const onWheel = onPaneScroll ? (event) => onPaneScroll(event) : undefined;\n const onMouseDown = (event) => {\n const { resetSelectedElements, domNode } = store.getState();\n containerBounds.current = domNode?.getBoundingClientRect();\n if (!elementsSelectable ||\n !isSelecting ||\n event.button !== 0 ||\n event.target !== container.current ||\n !containerBounds.current) {\n return;\n }\n const { x, y } = getEventPosition(event, containerBounds.current);\n resetSelectedElements();\n store.setState({\n userSelectionRect: {\n width: 0,\n height: 0,\n startX: x,\n startY: y,\n x,\n y,\n },\n });\n onSelectionStart?.(event);\n };\n const onMouseMove = (event) => {\n const { userSelectionRect, nodeInternals, edges, transform, onNodesChange, onEdgesChange, nodeOrigin, getNodes } = store.getState();\n if (!isSelecting || !containerBounds.current || !userSelectionRect) {\n return;\n }\n store.setState({ userSelectionActive: true, nodesSelectionActive: false });\n const mousePos = getEventPosition(event, containerBounds.current);\n const startX = userSelectionRect.startX ?? 0;\n const startY = userSelectionRect.startY ?? 0;\n const nextUserSelectRect = {\n ...userSelectionRect,\n x: mousePos.x < startX ? mousePos.x : startX,\n y: mousePos.y < startY ? mousePos.y : startY,\n width: Math.abs(mousePos.x - startX),\n height: Math.abs(mousePos.y - startY),\n };\n const nodes = getNodes();\n const selectedNodes = getNodesInside(nodeInternals, nextUserSelectRect, transform, selectionMode === SelectionMode.Partial, true, nodeOrigin);\n const selectedEdgeIds = getConnectedEdges(selectedNodes, edges).map((e) => e.id);\n const selectedNodeIds = selectedNodes.map((n) => n.id);\n if (prevSelectedNodesCount.current !== selectedNodeIds.length) {\n prevSelectedNodesCount.current = selectedNodeIds.length;\n const changes = getSelectionChanges(nodes, selectedNodeIds);\n if (changes.length) {\n onNodesChange?.(changes);\n }\n }\n if (prevSelectedEdgesCount.current !== selectedEdgeIds.length) {\n prevSelectedEdgesCount.current = selectedEdgeIds.length;\n const changes = getSelectionChanges(edges, selectedEdgeIds);\n if (changes.length) {\n onEdgesChange?.(changes);\n }\n }\n store.setState({\n userSelectionRect: nextUserSelectRect,\n });\n };\n const onMouseUp = (event) => {\n if (event.button !== 0) {\n return;\n }\n const { userSelectionRect } = store.getState();\n // We only want to trigger click functions when in selection mode if\n // the user did not move the mouse.\n if (!userSelectionActive && userSelectionRect && event.target === container.current) {\n onClick?.(event);\n }\n store.setState({ nodesSelectionActive: prevSelectedNodesCount.current > 0 });\n resetUserSelection();\n onSelectionEnd?.(event);\n };\n const onMouseLeave = (event) => {\n if (userSelectionActive) {\n store.setState({ nodesSelectionActive: prevSelectedNodesCount.current > 0 });\n onSelectionEnd?.(event);\n }\n resetUserSelection();\n };\n const hasActiveSelection = elementsSelectable && (isSelecting || userSelectionActive);\n return (React.createElement(\"div\", { className: cc(['react-flow__pane', { dragging, selection: isSelecting }]), onClick: hasActiveSelection ? undefined : wrapHandler(onClick, container), onContextMenu: wrapHandler(onContextMenu, container), onWheel: wrapHandler(onWheel, container), onMouseEnter: hasActiveSelection ? undefined : onPaneMouseEnter, onMouseDown: hasActiveSelection ? onMouseDown : undefined, onMouseMove: hasActiveSelection ? onMouseMove : onPaneMouseMove, onMouseUp: hasActiveSelection ? onMouseUp : undefined, onMouseLeave: hasActiveSelection ? onMouseLeave : onPaneMouseLeave, ref: container, style: containerStyle },\n children,\n React.createElement(UserSelection, null)));\n});\nPane.displayName = 'Pane';\n\nfunction isParentSelected(node, nodeInternals) {\n const parentId = node.parentNode || node.parentId;\n if (!parentId) {\n return false;\n }\n const parentNode = nodeInternals.get(parentId);\n if (!parentNode) {\n return false;\n }\n if (parentNode.selected) {\n return true;\n }\n return isParentSelected(parentNode, nodeInternals);\n}\nfunction hasSelector(target, selector, nodeRef) {\n let current = target;\n do {\n if (current?.matches(selector))\n return true;\n if (current === nodeRef.current)\n return false;\n current = current.parentElement;\n } while (current);\n return false;\n}\n// looks for all selected nodes and created a NodeDragItem for each of them\nfunction getDragItems(nodeInternals, nodesDraggable, mousePos, nodeId) {\n return Array.from(nodeInternals.values())\n .filter((n) => (n.selected || n.id === nodeId) &&\n (!n.parentNode || n.parentId || !isParentSelected(n, nodeInternals)) &&\n (n.draggable || (nodesDraggable && typeof n.draggable === 'undefined')))\n .map((n) => ({\n id: n.id,\n position: n.position || { x: 0, y: 0 },\n positionAbsolute: n.positionAbsolute || { x: 0, y: 0 },\n distance: {\n x: mousePos.x - (n.positionAbsolute?.x ?? 0),\n y: mousePos.y - (n.positionAbsolute?.y ?? 0),\n },\n delta: {\n x: 0,\n y: 0,\n },\n extent: n.extent,\n parentNode: n.parentNode || n.parentId,\n parentId: n.parentNode || n.parentId,\n width: n.width,\n height: n.height,\n expandParent: n.expandParent,\n }));\n}\nfunction clampNodeExtent(node, extent) {\n if (!extent || extent === 'parent') {\n return extent;\n }\n return [extent[0], [extent[1][0] - (node.width || 0), extent[1][1] - (node.height || 0)]];\n}\nfunction calcNextPosition(node, nextPosition, nodeInternals, nodeExtent, nodeOrigin = [0, 0], onError) {\n const clampedNodeExtent = clampNodeExtent(node, node.extent || nodeExtent);\n let currentExtent = clampedNodeExtent;\n const parentId = node.parentNode || node.parentId;\n if (node.extent === 'parent' && !node.expandParent) {\n if (parentId && node.width && node.height) {\n const parent = nodeInternals.get(parentId);\n const { x: parentX, y: parentY } = getNodePositionWithOrigin(parent, nodeOrigin).positionAbsolute;\n currentExtent =\n parent && isNumeric(parentX) && isNumeric(parentY) && isNumeric(parent.width) && isNumeric(parent.height)\n ? [\n [parentX + node.width * nodeOrigin[0], parentY + node.height * nodeOrigin[1]],\n [\n parentX + parent.width - node.width + node.width * nodeOrigin[0],\n parentY + parent.height - node.height + node.height * nodeOrigin[1],\n ],\n ]\n : currentExtent;\n }\n else {\n onError?.('005', errorMessages['error005']());\n currentExtent = clampedNodeExtent;\n }\n }\n else if (node.extent && parentId && node.extent !== 'parent') {\n const parent = nodeInternals.get(parentId);\n const { x: parentX, y: parentY } = getNodePositionWithOrigin(parent, nodeOrigin).positionAbsolute;\n currentExtent = [\n [node.extent[0][0] + parentX, node.extent[0][1] + parentY],\n [node.extent[1][0] + parentX, node.extent[1][1] + parentY],\n ];\n }\n let parentPosition = { x: 0, y: 0 };\n if (parentId) {\n const parentNode = nodeInternals.get(parentId);\n parentPosition = getNodePositionWithOrigin(parentNode, nodeOrigin).positionAbsolute;\n }\n const positionAbsolute = currentExtent && currentExtent !== 'parent'\n ? clampPosition(nextPosition, currentExtent)\n : nextPosition;\n return {\n position: {\n x: positionAbsolute.x - parentPosition.x,\n y: positionAbsolute.y - parentPosition.y,\n },\n positionAbsolute,\n };\n}\n// returns two params:\n// 1. the dragged node (or the first of the list, if we are dragging a node selection)\n// 2. array of selected nodes (for multi selections)\nfunction getEventHandlerParams({ nodeId, dragItems, nodeInternals, }) {\n const extentedDragItems = dragItems.map((n) => {\n const node = nodeInternals.get(n.id);\n return {\n ...node,\n position: n.position,\n positionAbsolute: n.positionAbsolute,\n };\n });\n return [nodeId ? extentedDragItems.find((n) => n.id === nodeId) : extentedDragItems[0], extentedDragItems];\n}\n\nconst getHandleBounds = (selector, nodeElement, zoom, nodeOrigin) => {\n const handles = nodeElement.querySelectorAll(selector);\n if (!handles || !handles.length) {\n return null;\n }\n const handlesArray = Array.from(handles);\n const nodeBounds = nodeElement.getBoundingClientRect();\n const nodeOffset = {\n x: nodeBounds.width * nodeOrigin[0],\n y: nodeBounds.height * nodeOrigin[1],\n };\n return handlesArray.map((handle) => {\n const handleBounds = handle.getBoundingClientRect();\n return {\n id: handle.getAttribute('data-handleid'),\n position: handle.getAttribute('data-handlepos'),\n x: (handleBounds.left - nodeBounds.left - nodeOffset.x) / zoom,\n y: (handleBounds.top - nodeBounds.top - nodeOffset.y) / zoom,\n ...getDimensions(handle),\n };\n });\n};\nfunction getMouseHandler(id, getState, handler) {\n return handler === undefined\n ? handler\n : (event) => {\n const node = getState().nodeInternals.get(id);\n if (node) {\n handler(event, { ...node });\n }\n };\n}\n// this handler is called by\n// 1. the click handler when node is not draggable or selectNodesOnDrag = false\n// or\n// 2. the on drag start handler when node is draggable and selectNodesOnDrag = true\nfunction handleNodeClick({ id, store, unselect = false, nodeRef, }) {\n const { addSelectedNodes, unselectNodesAndEdges, multiSelectionActive, nodeInternals, onError } = store.getState();\n const node = nodeInternals.get(id);\n if (!node) {\n onError?.('012', errorMessages['error012'](id));\n return;\n }\n store.setState({ nodesSelectionActive: false });\n if (!node.selected) {\n addSelectedNodes([id]);\n }\n else if (unselect || (node.selected && multiSelectionActive)) {\n unselectNodesAndEdges({ nodes: [node], edges: [] });\n requestAnimationFrame(() => nodeRef?.current?.blur());\n }\n}\n\nfunction useGetPointerPosition() {\n const store = useStoreApi();\n // returns the pointer position projected to the RF coordinate system\n const getPointerPosition = useCallback(({ sourceEvent }) => {\n const { transform, snapGrid, snapToGrid } = store.getState();\n const x = sourceEvent.touches ? sourceEvent.touches[0].clientX : sourceEvent.clientX;\n const y = sourceEvent.touches ? sourceEvent.touches[0].clientY : sourceEvent.clientY;\n const pointerPos = {\n x: (x - transform[0]) / transform[2],\n y: (y - transform[1]) / transform[2],\n };\n // we need the snapped position in order to be able to skip unnecessary drag events\n return {\n xSnapped: snapToGrid ? snapGrid[0] * Math.round(pointerPos.x / snapGrid[0]) : pointerPos.x,\n ySnapped: snapToGrid ? snapGrid[1] * Math.round(pointerPos.y / snapGrid[1]) : pointerPos.y,\n ...pointerPos,\n };\n }, []);\n return getPointerPosition;\n}\n\nfunction wrapSelectionDragFunc(selectionFunc) {\n return (event, _, nodes) => selectionFunc?.(event, nodes);\n}\nfunction useDrag({ nodeRef, disabled = false, noDragClassName, handleSelector, nodeId, isSelectable, selectNodesOnDrag, }) {\n const store = useStoreApi();\n const [dragging, setDragging] = useState(false);\n const dragItems = useRef([]);\n const lastPos = useRef({ x: null, y: null });\n const autoPanId = useRef(0);\n const containerBounds = useRef(null);\n const mousePosition = useRef({ x: 0, y: 0 });\n const dragEvent = useRef(null);\n const autoPanStarted = useRef(false);\n const dragStarted = useRef(false);\n const abortDrag = useRef(false);\n const getPointerPosition = useGetPointerPosition();\n useEffect(() => {\n if (nodeRef?.current) {\n const selection = select(nodeRef.current);\n const updateNodes = ({ x, y }) => {\n const { nodeInternals, onNodeDrag, onSelectionDrag, updateNodePositions, nodeExtent, snapGrid, snapToGrid, nodeOrigin, onError, } = store.getState();\n lastPos.current = { x, y };\n let hasChange = false;\n let nodesBox = { x: 0, y: 0, x2: 0, y2: 0 };\n if (dragItems.current.length > 1 && nodeExtent) {\n const rect = getNodesBounds(dragItems.current, nodeOrigin);\n nodesBox = rectToBox(rect);\n }\n dragItems.current = dragItems.current.map((n) => {\n const nextPosition = { x: x - n.distance.x, y: y - n.distance.y };\n if (snapToGrid) {\n nextPosition.x = snapGrid[0] * Math.round(nextPosition.x / snapGrid[0]);\n nextPosition.y = snapGrid[1] * Math.round(nextPosition.y / snapGrid[1]);\n }\n // if there is selection with multiple nodes and a node extent is set, we need to adjust the node extent for each node\n // based on its position so that the node stays at it's position relative to the selection.\n const adjustedNodeExtent = [\n [nodeExtent[0][0], nodeExtent[0][1]],\n [nodeExtent[1][0], nodeExtent[1][1]],\n ];\n if (dragItems.current.length > 1 && nodeExtent && !n.extent) {\n adjustedNodeExtent[0][0] = n.positionAbsolute.x - nodesBox.x + nodeExtent[0][0];\n adjustedNodeExtent[1][0] = n.positionAbsolute.x + (n.width ?? 0) - nodesBox.x2 + nodeExtent[1][0];\n adjustedNodeExtent[0][1] = n.positionAbsolute.y - nodesBox.y + nodeExtent[0][1];\n adjustedNodeExtent[1][1] = n.positionAbsolute.y + (n.height ?? 0) - nodesBox.y2 + nodeExtent[1][1];\n }\n const updatedPos = calcNextPosition(n, nextPosition, nodeInternals, adjustedNodeExtent, nodeOrigin, onError);\n // we want to make sure that we only fire a change event when there is a change\n hasChange = hasChange || n.position.x !== updatedPos.position.x || n.position.y !== updatedPos.position.y;\n n.position = updatedPos.position;\n n.positionAbsolute = updatedPos.positionAbsolute;\n return n;\n });\n if (!hasChange) {\n return;\n }\n updateNodePositions(dragItems.current, true, true);\n setDragging(true);\n const onDrag = nodeId ? onNodeDrag : wrapSelectionDragFunc(onSelectionDrag);\n if (onDrag && dragEvent.current) {\n const [currentNode, nodes] = getEventHandlerParams({\n nodeId,\n dragItems: dragItems.current,\n nodeInternals,\n });\n onDrag(dragEvent.current, currentNode, nodes);\n }\n };\n const autoPan = () => {\n if (!containerBounds.current) {\n return;\n }\n const [xMovement, yMovement] = calcAutoPan(mousePosition.current, containerBounds.current);\n if (xMovement !== 0 || yMovement !== 0) {\n const { transform, panBy } = store.getState();\n lastPos.current.x = (lastPos.current.x ?? 0) - xMovement / transform[2];\n lastPos.current.y = (lastPos.current.y ?? 0) - yMovement / transform[2];\n if (panBy({ x: xMovement, y: yMovement })) {\n updateNodes(lastPos.current);\n }\n }\n autoPanId.current = requestAnimationFrame(autoPan);\n };\n const startDrag = (event) => {\n const { nodeInternals, multiSelectionActive, nodesDraggable, unselectNodesAndEdges, onNodeDragStart, onSelectionDragStart, } = store.getState();\n dragStarted.current = true;\n const onStart = nodeId ? onNodeDragStart : wrapSelectionDragFunc(onSelectionDragStart);\n if ((!selectNodesOnDrag || !isSelectable) && !multiSelectionActive && nodeId) {\n if (!nodeInternals.get(nodeId)?.selected) {\n // we need to reset selected nodes when selectNodesOnDrag=false\n unselectNodesAndEdges();\n }\n }\n if (nodeId && isSelectable && selectNodesOnDrag) {\n handleNodeClick({\n id: nodeId,\n store,\n nodeRef: nodeRef,\n });\n }\n const pointerPos = getPointerPosition(event);\n lastPos.current = pointerPos;\n dragItems.current = getDragItems(nodeInternals, nodesDraggable, pointerPos, nodeId);\n if (onStart && dragItems.current) {\n const [currentNode, nodes] = getEventHandlerParams({\n nodeId,\n dragItems: dragItems.current,\n nodeInternals,\n });\n onStart(event.sourceEvent, currentNode, nodes);\n }\n };\n if (disabled) {\n selection.on('.drag', null);\n }\n else {\n const dragHandler = drag()\n .on('start', (event) => {\n const { domNode, nodeDragThreshold } = store.getState();\n if (nodeDragThreshold === 0) {\n startDrag(event);\n }\n abortDrag.current = false;\n const pointerPos = getPointerPosition(event);\n lastPos.current = pointerPos;\n containerBounds.current = domNode?.getBoundingClientRect() || null;\n mousePosition.current = getEventPosition(event.sourceEvent, containerBounds.current);\n })\n .on('drag', (event) => {\n const pointerPos = getPointerPosition(event);\n const { autoPanOnNodeDrag, nodeDragThreshold } = store.getState();\n if (event.sourceEvent.type === 'touchmove' && event.sourceEvent.touches.length > 1) {\n abortDrag.current = true;\n }\n if (abortDrag.current) {\n return;\n }\n if (!autoPanStarted.current && dragStarted.current && autoPanOnNodeDrag) {\n autoPanStarted.current = true;\n autoPan();\n }\n if (!dragStarted.current) {\n const x = pointerPos.xSnapped - (lastPos?.current?.x ?? 0);\n const y = pointerPos.ySnapped - (lastPos?.current?.y ?? 0);\n const distance = Math.sqrt(x * x + y * y);\n if (distance > nodeDragThreshold) {\n startDrag(event);\n }\n }\n // skip events without movement\n if ((lastPos.current.x !== pointerPos.xSnapped || lastPos.current.y !== pointerPos.ySnapped) &&\n dragItems.current &&\n dragStarted.current) {\n dragEvent.current = event.sourceEvent;\n mousePosition.current = getEventPosition(event.sourceEvent, containerBounds.current);\n updateNodes(pointerPos);\n }\n })\n .on('end', (event) => {\n if (!dragStarted.current || abortDrag.current) {\n return;\n }\n setDragging(false);\n autoPanStarted.current = false;\n dragStarted.current = false;\n cancelAnimationFrame(autoPanId.current);\n if (dragItems.current) {\n const { updateNodePositions, nodeInternals, onNodeDragStop, onSelectionDragStop } = store.getState();\n const onStop = nodeId ? onNodeDragStop : wrapSelectionDragFunc(onSelectionDragStop);\n updateNodePositions(dragItems.current, false, false);\n if (onStop) {\n const [currentNode, nodes] = getEventHandlerParams({\n nodeId,\n dragItems: dragItems.current,\n nodeInternals,\n });\n onStop(event.sourceEvent, currentNode, nodes);\n }\n }\n })\n .filter((event) => {\n const target = event.target;\n const isDraggable = !event.button &&\n (!noDragClassName || !hasSelector(target, `.${noDragClassName}`, nodeRef)) &&\n (!handleSelector || hasSelector(target, handleSelector, nodeRef));\n return isDraggable;\n });\n selection.call(dragHandler);\n return () => {\n selection.on('.drag', null);\n };\n }\n }\n }, [\n nodeRef,\n disabled,\n noDragClassName,\n handleSelector,\n isSelectable,\n store,\n nodeId,\n selectNodesOnDrag,\n getPointerPosition,\n ]);\n return dragging;\n}\n\nfunction useUpdateNodePositions() {\n const store = useStoreApi();\n const updatePositions = useCallback((params) => {\n const { nodeInternals, nodeExtent, updateNodePositions, getNodes, snapToGrid, snapGrid, onError, nodesDraggable } = store.getState();\n const selectedNodes = getNodes().filter((n) => n.selected && (n.draggable || (nodesDraggable && typeof n.draggable === 'undefined')));\n // by default a node moves 5px on each key press, or 20px if shift is pressed\n // if snap grid is enabled, we use that for the velocity.\n const xVelo = snapToGrid ? snapGrid[0] : 5;\n const yVelo = snapToGrid ? snapGrid[1] : 5;\n const factor = params.isShiftPressed ? 4 : 1;\n const positionDiffX = params.x * xVelo * factor;\n const positionDiffY = params.y * yVelo * factor;\n const nodeUpdates = selectedNodes.map((n) => {\n if (n.positionAbsolute) {\n const nextPosition = { x: n.positionAbsolute.x + positionDiffX, y: n.positionAbsolute.y + positionDiffY };\n if (snapToGrid) {\n nextPosition.x = snapGrid[0] * Math.round(nextPosition.x / snapGrid[0]);\n nextPosition.y = snapGrid[1] * Math.round(nextPosition.y / snapGrid[1]);\n }\n const { positionAbsolute, position } = calcNextPosition(n, nextPosition, nodeInternals, nodeExtent, undefined, onError);\n n.position = position;\n n.positionAbsolute = positionAbsolute;\n }\n return n;\n });\n updateNodePositions(nodeUpdates, true, false);\n }, []);\n return updatePositions;\n}\n\nconst arrowKeyDiffs = {\n ArrowUp: { x: 0, y: -1 },\n ArrowDown: { x: 0, y: 1 },\n ArrowLeft: { x: -1, y: 0 },\n ArrowRight: { x: 1, y: 0 },\n};\nvar wrapNode = (NodeComponent) => {\n const NodeWrapper = ({ id, type, data, xPos, yPos, xPosOrigin, yPosOrigin, selected, onClick, onMouseEnter, onMouseMove, onMouseLeave, onContextMenu, onDoubleClick, style, className, isDraggable, isSelectable, isConnectable, isFocusable, selectNodesOnDrag, sourcePosition, targetPosition, hidden, resizeObserver, dragHandle, zIndex, isParent, noDragClassName, noPanClassName, initialized, disableKeyboardA11y, ariaLabel, rfId, hasHandleBounds, }) => {\n const store = useStoreApi();\n const nodeRef = useRef(null);\n const prevNodeRef = useRef(null);\n const prevSourcePosition = useRef(sourcePosition);\n const prevTargetPosition = useRef(targetPosition);\n const prevType = useRef(type);\n const hasPointerEvents = isSelectable || isDraggable || onClick || onMouseEnter || onMouseMove || onMouseLeave;\n const updatePositions = useUpdateNodePositions();\n const onMouseEnterHandler = getMouseHandler(id, store.getState, onMouseEnter);\n const onMouseMoveHandler = getMouseHandler(id, store.getState, onMouseMove);\n const onMouseLeaveHandler = getMouseHandler(id, store.getState, onMouseLeave);\n const onContextMenuHandler = getMouseHandler(id, store.getState, onContextMenu);\n const onDoubleClickHandler = getMouseHandler(id, store.getState, onDoubleClick);\n const onSelectNodeHandler = (event) => {\n const { nodeDragThreshold } = store.getState();\n if (isSelectable && (!selectNodesOnDrag || !isDraggable || nodeDragThreshold > 0)) {\n // this handler gets called within the drag start event when selectNodesOnDrag=true\n handleNodeClick({\n id,\n store,\n nodeRef,\n });\n }\n if (onClick) {\n const node = store.getState().nodeInternals.get(id);\n if (node) {\n onClick(event, { ...node });\n }\n }\n };\n const onKeyDown = (event) => {\n if (isInputDOMNode(event)) {\n return;\n }\n if (disableKeyboardA11y) {\n return;\n }\n if (elementSelectionKeys.includes(event.key) && isSelectable) {\n const unselect = event.key === 'Escape';\n handleNodeClick({\n id,\n store,\n unselect,\n nodeRef,\n });\n }\n else if (isDraggable && selected && Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key)) {\n store.setState({\n ariaLiveMessage: `Moved selected node ${event.key\n .replace('Arrow', '')\n .toLowerCase()}. New position, x: ${~~xPos}, y: ${~~yPos}`,\n });\n updatePositions({\n x: arrowKeyDiffs[event.key].x,\n y: arrowKeyDiffs[event.key].y,\n isShiftPressed: event.shiftKey,\n });\n }\n };\n useEffect(() => {\n return () => {\n if (prevNodeRef.current) {\n resizeObserver?.unobserve(prevNodeRef.current);\n prevNodeRef.current = null;\n }\n };\n }, []);\n useEffect(() => {\n if (nodeRef.current && !hidden) {\n const currNode = nodeRef.current;\n if (!initialized || !hasHandleBounds || prevNodeRef.current !== currNode) {\n // At this point we always want to make sure that the node gets re-measured / re-initialized.\n // We need to unobserve it first in case it is still observed\n if (prevNodeRef.current) {\n resizeObserver?.unobserve(prevNodeRef.current);\n }\n resizeObserver?.observe(currNode);\n prevNodeRef.current = currNode;\n }\n }\n }, [hidden, initialized, hasHandleBounds]);\n useEffect(() => {\n // when the user programmatically changes the source or handle position, we re-initialize the node\n const typeChanged = prevType.current !== type;\n const sourcePosChanged = prevSourcePosition.current !== sourcePosition;\n const targetPosChanged = prevTargetPosition.current !== targetPosition;\n if (nodeRef.current && (typeChanged || sourcePosChanged || targetPosChanged)) {\n if (typeChanged) {\n prevType.current = type;\n }\n if (sourcePosChanged) {\n prevSourcePosition.current = sourcePosition;\n }\n if (targetPosChanged) {\n prevTargetPosition.current = targetPosition;\n }\n store.getState().updateNodeDimensions([{ id, nodeElement: nodeRef.current, forceUpdate: true }]);\n }\n }, [id, type, sourcePosition, targetPosition]);\n const dragging = useDrag({\n nodeRef,\n disabled: hidden || !isDraggable,\n noDragClassName,\n handleSelector: dragHandle,\n nodeId: id,\n isSelectable,\n selectNodesOnDrag,\n });\n if (hidden) {\n return null;\n }\n return (React.createElement(\"div\", { className: cc([\n 'react-flow__node',\n `react-flow__node-${type}`,\n {\n // this is overwritable by passing `nopan` as a class name\n [noPanClassName]: isDraggable,\n },\n className,\n {\n selected,\n selectable: isSelectable,\n parent: isParent,\n dragging,\n },\n ]), ref: nodeRef, style: {\n zIndex,\n transform: `translate(${xPosOrigin}px,${yPosOrigin}px)`,\n pointerEvents: hasPointerEvents ? 'all' : 'none',\n visibility: initialized ? 'visible' : 'hidden',\n ...style,\n }, \"data-id\": id, \"data-testid\": `rf__node-${id}`, onMouseEnter: onMouseEnterHandler, onMouseMove: onMouseMoveHandler, onMouseLeave: onMouseLeaveHandler, onContextMenu: onContextMenuHandler, onClick: onSelectNodeHandler, onDoubleClick: onDoubleClickHandler, onKeyDown: isFocusable ? onKeyDown : undefined, tabIndex: isFocusable ? 0 : undefined, role: isFocusable ? 'button' : undefined, \"aria-describedby\": disableKeyboardA11y ? undefined : `${ARIA_NODE_DESC_KEY}-${rfId}`, \"aria-label\": ariaLabel },\n React.createElement(Provider, { value: id },\n React.createElement(NodeComponent, { id: id, data: data, type: type, xPos: xPos, yPos: yPos, selected: selected, isConnectable: isConnectable, sourcePosition: sourcePosition, targetPosition: targetPosition, dragging: dragging, dragHandle: dragHandle, zIndex: zIndex }))));\n };\n NodeWrapper.displayName = 'NodeWrapper';\n return memo(NodeWrapper);\n};\n\n/**\n * The nodes selection rectangle gets displayed when a user\n * made a selection with on or several nodes\n */\nconst selector$7 = (s) => {\n const selectedNodes = s.getNodes().filter((n) => n.selected);\n return {\n ...getNodesBounds(selectedNodes, s.nodeOrigin),\n transformString: `translate(${s.transform[0]}px,${s.transform[1]}px) scale(${s.transform[2]})`,\n userSelectionActive: s.userSelectionActive,\n };\n};\nfunction NodesSelection({ onSelectionContextMenu, noPanClassName, disableKeyboardA11y }) {\n const store = useStoreApi();\n const { width, height, x: left, y: top, transformString, userSelectionActive } = useStore(selector$7, shallow);\n const updatePositions = useUpdateNodePositions();\n const nodeRef = useRef(null);\n useEffect(() => {\n if (!disableKeyboardA11y) {\n nodeRef.current?.focus({\n preventScroll: true,\n });\n }\n }, [disableKeyboardA11y]);\n useDrag({\n nodeRef,\n });\n if (userSelectionActive || !width || !height) {\n return null;\n }\n const onContextMenu = onSelectionContextMenu\n ? (event) => {\n const selectedNodes = store\n .getState()\n .getNodes()\n .filter((n) => n.selected);\n onSelectionContextMenu(event, selectedNodes);\n }\n : undefined;\n const onKeyDown = (event) => {\n if (Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key)) {\n updatePositions({\n x: arrowKeyDiffs[event.key].x,\n y: arrowKeyDiffs[event.key].y,\n isShiftPressed: event.shiftKey,\n });\n }\n };\n return (React.createElement(\"div\", { className: cc(['react-flow__nodesselection', 'react-flow__container', noPanClassName]), style: {\n transform: transformString,\n } },\n React.createElement(\"div\", { ref: nodeRef, className: \"react-flow__nodesselection-rect\", onContextMenu: onContextMenu, tabIndex: disableKeyboardA11y ? undefined : -1, onKeyDown: disableKeyboardA11y ? undefined : onKeyDown, style: {\n width,\n height,\n top,\n left,\n } })));\n}\nvar NodesSelection$1 = memo(NodesSelection);\n\nconst selector$6 = (s) => s.nodesSelectionActive;\nconst FlowRenderer = ({ children, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, deleteKeyCode, onMove, onMoveStart, onMoveEnd, selectionKeyCode, selectionOnDrag, selectionMode, onSelectionStart, onSelectionEnd, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, elementsSelectable, zoomOnScroll, zoomOnPinch, panOnScroll: _panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag: _panOnDrag, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, onSelectionContextMenu, noWheelClassName, noPanClassName, disableKeyboardA11y, }) => {\n const nodesSelectionActive = useStore(selector$6);\n const selectionKeyPressed = useKeyPress(selectionKeyCode);\n const panActivationKeyPressed = useKeyPress(panActivationKeyCode);\n const panOnDrag = panActivationKeyPressed || _panOnDrag;\n const panOnScroll = panActivationKeyPressed || _panOnScroll;\n const isSelecting = selectionKeyPressed || (selectionOnDrag && panOnDrag !== true);\n useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode });\n return (React.createElement(ZoomPane, { onMove: onMove, onMoveStart: onMoveStart, onMoveEnd: onMoveEnd, onPaneContextMenu: onPaneContextMenu, elementsSelectable: elementsSelectable, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, zoomOnDoubleClick: zoomOnDoubleClick, panOnDrag: !selectionKeyPressed && panOnDrag, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, zoomActivationKeyCode: zoomActivationKeyCode, preventScrolling: preventScrolling, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName },\n React.createElement(Pane, { onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneContextMenu: onPaneContextMenu, onPaneScroll: onPaneScroll, panOnDrag: panOnDrag, isSelecting: !!isSelecting, selectionMode: selectionMode },\n children,\n nodesSelectionActive && (React.createElement(NodesSelection$1, { onSelectionContextMenu: onSelectionContextMenu, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y })))));\n};\nFlowRenderer.displayName = 'FlowRenderer';\nvar FlowRenderer$1 = memo(FlowRenderer);\n\nfunction useVisibleNodes(onlyRenderVisible) {\n const nodes = useStore(useCallback((s) => onlyRenderVisible\n ? getNodesInside(s.nodeInternals, { x: 0, y: 0, width: s.width, height: s.height }, s.transform, true)\n : s.getNodes(), [onlyRenderVisible]));\n return nodes;\n}\n\nfunction createNodeTypes(nodeTypes) {\n const standardTypes = {\n input: wrapNode((nodeTypes.input || InputNode$1)),\n default: wrapNode((nodeTypes.default || DefaultNode$1)),\n output: wrapNode((nodeTypes.output || OutputNode$1)),\n group: wrapNode((nodeTypes.group || GroupNode)),\n };\n const wrappedTypes = {};\n const specialTypes = Object.keys(nodeTypes)\n .filter((k) => !['input', 'default', 'output', 'group'].includes(k))\n .reduce((res, key) => {\n res[key] = wrapNode((nodeTypes[key] || DefaultNode$1));\n return res;\n }, wrappedTypes);\n return {\n ...standardTypes,\n ...specialTypes,\n };\n}\nconst getPositionWithOrigin = ({ x, y, width, height, origin, }) => {\n if (!width || !height) {\n return { x, y };\n }\n if (origin[0] < 0 || origin[1] < 0 || origin[0] > 1 || origin[1] > 1) {\n return { x, y };\n }\n return {\n x: x - width * origin[0],\n y: y - height * origin[1],\n };\n};\n\nconst selector$5 = (s) => ({\n nodesDraggable: s.nodesDraggable,\n nodesConnectable: s.nodesConnectable,\n nodesFocusable: s.nodesFocusable,\n elementsSelectable: s.elementsSelectable,\n updateNodeDimensions: s.updateNodeDimensions,\n onError: s.onError,\n});\nconst NodeRenderer = (props) => {\n const { nodesDraggable, nodesConnectable, nodesFocusable, elementsSelectable, updateNodeDimensions, onError } = useStore(selector$5, shallow);\n const nodes = useVisibleNodes(props.onlyRenderVisibleElements);\n const resizeObserverRef = useRef();\n const resizeObserver = useMemo(() => {\n if (typeof ResizeObserver === 'undefined') {\n return null;\n }\n const observer = new ResizeObserver((entries) => {\n const updates = entries.map((entry) => ({\n id: entry.target.getAttribute('data-id'),\n nodeElement: entry.target,\n forceUpdate: true,\n }));\n updateNodeDimensions(updates);\n });\n resizeObserverRef.current = observer;\n return observer;\n }, []);\n useEffect(() => {\n return () => {\n resizeObserverRef?.current?.disconnect();\n };\n }, []);\n return (React.createElement(\"div\", { className: \"react-flow__nodes\", style: containerStyle }, nodes.map((node) => {\n let nodeType = node.type || 'default';\n if (!props.nodeTypes[nodeType]) {\n onError?.('003', errorMessages['error003'](nodeType));\n nodeType = 'default';\n }\n const NodeComponent = (props.nodeTypes[nodeType] || props.nodeTypes.default);\n const isDraggable = !!(node.draggable || (nodesDraggable && typeof node.draggable === 'undefined'));\n const isSelectable = !!(node.selectable || (elementsSelectable && typeof node.selectable === 'undefined'));\n const isConnectable = !!(node.connectable || (nodesConnectable && typeof node.connectable === 'undefined'));\n const isFocusable = !!(node.focusable || (nodesFocusable && typeof node.focusable === 'undefined'));\n const clampedPosition = props.nodeExtent\n ? clampPosition(node.positionAbsolute, props.nodeExtent)\n : node.positionAbsolute;\n const posX = clampedPosition?.x ?? 0;\n const posY = clampedPosition?.y ?? 0;\n const posOrigin = getPositionWithOrigin({\n x: posX,\n y: posY,\n width: node.width ?? 0,\n height: node.height ?? 0,\n origin: props.nodeOrigin,\n });\n return (React.createElement(NodeComponent, { key: node.id, id: node.id, className: node.className, style: node.style, type: nodeType, data: node.data, sourcePosition: node.sourcePosition || Position.Bottom, targetPosition: node.targetPosition || Position.Top, hidden: node.hidden, xPos: posX, yPos: posY, xPosOrigin: posOrigin.x, yPosOrigin: posOrigin.y, selectNodesOnDrag: props.selectNodesOnDrag, onClick: props.onNodeClick, onMouseEnter: props.onNodeMouseEnter, onMouseMove: props.onNodeMouseMove, onMouseLeave: props.onNodeMouseLeave, onContextMenu: props.onNodeContextMenu, onDoubleClick: props.onNodeDoubleClick, selected: !!node.selected, isDraggable: isDraggable, isSelectable: isSelectable, isConnectable: isConnectable, isFocusable: isFocusable, resizeObserver: resizeObserver, dragHandle: node.dragHandle, zIndex: node[internalsSymbol]?.z ?? 0, isParent: !!node[internalsSymbol]?.isParent, noDragClassName: props.noDragClassName, noPanClassName: props.noPanClassName, initialized: !!node.width && !!node.height, rfId: props.rfId, disableKeyboardA11y: props.disableKeyboardA11y, ariaLabel: node.ariaLabel, hasHandleBounds: !!node[internalsSymbol]?.handleBounds }));\n })));\n};\nNodeRenderer.displayName = 'NodeRenderer';\nvar NodeRenderer$1 = memo(NodeRenderer);\n\nconst shiftX = (x, shift, position) => {\n if (position === Position.Left)\n return x - shift;\n if (position === Position.Right)\n return x + shift;\n return x;\n};\nconst shiftY = (y, shift, position) => {\n if (position === Position.Top)\n return y - shift;\n if (position === Position.Bottom)\n return y + shift;\n return y;\n};\nconst EdgeUpdaterClassName = 'react-flow__edgeupdater';\nconst EdgeAnchor = ({ position, centerX, centerY, radius = 10, onMouseDown, onMouseEnter, onMouseOut, type, }) => (React.createElement(\"circle\", { onMouseDown: onMouseDown, onMouseEnter: onMouseEnter, onMouseOut: onMouseOut, className: cc([EdgeUpdaterClassName, `${EdgeUpdaterClassName}-${type}`]), cx: shiftX(centerX, radius, position), cy: shiftY(centerY, radius, position), r: radius, stroke: \"transparent\", fill: \"transparent\" }));\n\nconst alwaysValidConnection = () => true;\nvar wrapEdge = (EdgeComponent) => {\n const EdgeWrapper = ({ id, className, type, data, onClick, onEdgeDoubleClick, selected, animated, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, source, target, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, elementsSelectable, hidden, sourceHandleId, targetHandleId, onContextMenu, onMouseEnter, onMouseMove, onMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, markerEnd, markerStart, rfId, ariaLabel, isFocusable, isReconnectable, pathOptions, interactionWidth, disableKeyboardA11y, }) => {\n const edgeRef = useRef(null);\n const [updateHover, setUpdateHover] = useState(false);\n const [updating, setUpdating] = useState(false);\n const store = useStoreApi();\n const markerStartUrl = useMemo(() => `url('#${getMarkerId(markerStart, rfId)}')`, [markerStart, rfId]);\n const markerEndUrl = useMemo(() => `url('#${getMarkerId(markerEnd, rfId)}')`, [markerEnd, rfId]);\n if (hidden) {\n return null;\n }\n const onEdgeClick = (event) => {\n const { edges, addSelectedEdges, unselectNodesAndEdges, multiSelectionActive } = store.getState();\n const edge = edges.find((e) => e.id === id);\n if (!edge) {\n return;\n }\n if (elementsSelectable) {\n store.setState({ nodesSelectionActive: false });\n if (edge.selected && multiSelectionActive) {\n unselectNodesAndEdges({ nodes: [], edges: [edge] });\n edgeRef.current?.blur();\n }\n else {\n addSelectedEdges([id]);\n }\n }\n if (onClick) {\n onClick(event, edge);\n }\n };\n const onEdgeDoubleClickHandler = getMouseHandler$1(id, store.getState, onEdgeDoubleClick);\n const onEdgeContextMenu = getMouseHandler$1(id, store.getState, onContextMenu);\n const onEdgeMouseEnter = getMouseHandler$1(id, store.getState, onMouseEnter);\n const onEdgeMouseMove = getMouseHandler$1(id, store.getState, onMouseMove);\n const onEdgeMouseLeave = getMouseHandler$1(id, store.getState, onMouseLeave);\n const handleEdgeUpdater = (event, isSourceHandle) => {\n // avoid triggering edge updater if mouse btn is not left\n if (event.button !== 0) {\n return;\n }\n const { edges, isValidConnection: isValidConnectionStore } = store.getState();\n const nodeId = isSourceHandle ? target : source;\n const handleId = (isSourceHandle ? targetHandleId : sourceHandleId) || null;\n const handleType = isSourceHandle ? 'target' : 'source';\n const isValidConnection = isValidConnectionStore || alwaysValidConnection;\n const isTarget = isSourceHandle;\n const edge = edges.find((e) => e.id === id);\n setUpdating(true);\n onReconnectStart?.(event, edge, handleType);\n const _onReconnectEnd = (evt) => {\n setUpdating(false);\n onReconnectEnd?.(evt, edge, handleType);\n };\n const onConnectEdge = (connection) => onReconnect?.(edge, connection);\n handlePointerDown({\n event,\n handleId,\n nodeId,\n onConnect: onConnectEdge,\n isTarget,\n getState: store.getState,\n setState: store.setState,\n isValidConnection,\n edgeUpdaterType: handleType,\n onReconnectEnd: _onReconnectEnd,\n });\n };\n const onEdgeUpdaterSourceMouseDown = (event) => handleEdgeUpdater(event, true);\n const onEdgeUpdaterTargetMouseDown = (event) => handleEdgeUpdater(event, false);\n const onEdgeUpdaterMouseEnter = () => setUpdateHover(true);\n const onEdgeUpdaterMouseOut = () => setUpdateHover(false);\n const inactive = !elementsSelectable && !onClick;\n const onKeyDown = (event) => {\n if (!disableKeyboardA11y && elementSelectionKeys.includes(event.key) && elementsSelectable) {\n const { unselectNodesAndEdges, addSelectedEdges, edges } = store.getState();\n const unselect = event.key === 'Escape';\n if (unselect) {\n edgeRef.current?.blur();\n unselectNodesAndEdges({ edges: [edges.find((e) => e.id === id)] });\n }\n else {\n addSelectedEdges([id]);\n }\n }\n };\n return (React.createElement(\"g\", { className: cc([\n 'react-flow__edge',\n `react-flow__edge-${type}`,\n className,\n { selected, animated, inactive, updating: updateHover },\n ]), onClick: onEdgeClick, onDoubleClick: onEdgeDoubleClickHandler, onContextMenu: onEdgeContextMenu, onMouseEnter: onEdgeMouseEnter, onMouseMove: onEdgeMouseMove, onMouseLeave: onEdgeMouseLeave, onKeyDown: isFocusable ? onKeyDown : undefined, tabIndex: isFocusable ? 0 : undefined, role: isFocusable ? 'button' : 'img', \"data-testid\": `rf__edge-${id}`, \"aria-label\": ariaLabel === null ? undefined : ariaLabel ? ariaLabel : `Edge from ${source} to ${target}`, \"aria-describedby\": isFocusable ? `${ARIA_EDGE_DESC_KEY}-${rfId}` : undefined, ref: edgeRef },\n !updating && (React.createElement(EdgeComponent, { id: id, source: source, target: target, selected: selected, animated: animated, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius, data: data, style: style, sourceX: sourceX, sourceY: sourceY, targetX: targetX, targetY: targetY, sourcePosition: sourcePosition, targetPosition: targetPosition, sourceHandleId: sourceHandleId, targetHandleId: targetHandleId, markerStart: markerStartUrl, markerEnd: markerEndUrl, pathOptions: pathOptions, interactionWidth: interactionWidth })),\n isReconnectable && (React.createElement(React.Fragment, null,\n (isReconnectable === 'source' || isReconnectable === true) && (React.createElement(EdgeAnchor, { position: sourcePosition, centerX: sourceX, centerY: sourceY, radius: reconnectRadius, onMouseDown: onEdgeUpdaterSourceMouseDown, onMouseEnter: onEdgeUpdaterMouseEnter, onMouseOut: onEdgeUpdaterMouseOut, type: \"source\" })),\n (isReconnectable === 'target' || isReconnectable === true) && (React.createElement(EdgeAnchor, { position: targetPosition, centerX: targetX, centerY: targetY, radius: reconnectRadius, onMouseDown: onEdgeUpdaterTargetMouseDown, onMouseEnter: onEdgeUpdaterMouseEnter, onMouseOut: onEdgeUpdaterMouseOut, type: \"target\" }))))));\n };\n EdgeWrapper.displayName = 'EdgeWrapper';\n return memo(EdgeWrapper);\n};\n\nfunction createEdgeTypes(edgeTypes) {\n const standardTypes = {\n default: wrapEdge((edgeTypes.default || BezierEdge)),\n straight: wrapEdge((edgeTypes.bezier || StraightEdge)),\n step: wrapEdge((edgeTypes.step || StepEdge)),\n smoothstep: wrapEdge((edgeTypes.step || SmoothStepEdge)),\n simplebezier: wrapEdge((edgeTypes.simplebezier || SimpleBezierEdge)),\n };\n const wrappedTypes = {};\n const specialTypes = Object.keys(edgeTypes)\n .filter((k) => !['default', 'bezier'].includes(k))\n .reduce((res, key) => {\n res[key] = wrapEdge((edgeTypes[key] || BezierEdge));\n return res;\n }, wrappedTypes);\n return {\n ...standardTypes,\n ...specialTypes,\n };\n}\nfunction getHandlePosition(position, nodeRect, handle = null) {\n const x = (handle?.x || 0) + nodeRect.x;\n const y = (handle?.y || 0) + nodeRect.y;\n const width = handle?.width || nodeRect.width;\n const height = handle?.height || nodeRect.height;\n switch (position) {\n case Position.Top:\n return {\n x: x + width / 2,\n y,\n };\n case Position.Right:\n return {\n x: x + width,\n y: y + height / 2,\n };\n case Position.Bottom:\n return {\n x: x + width / 2,\n y: y + height,\n };\n case Position.Left:\n return {\n x,\n y: y + height / 2,\n };\n }\n}\nfunction getHandle(bounds, handleId) {\n if (!bounds) {\n return null;\n }\n if (bounds.length === 1 || !handleId) {\n return bounds[0];\n }\n else if (handleId) {\n return bounds.find((d) => d.id === handleId) || null;\n }\n return null;\n}\nconst getEdgePositions = (sourceNodeRect, sourceHandle, sourcePosition, targetNodeRect, targetHandle, targetPosition) => {\n const sourceHandlePos = getHandlePosition(sourcePosition, sourceNodeRect, sourceHandle);\n const targetHandlePos = getHandlePosition(targetPosition, targetNodeRect, targetHandle);\n return {\n sourceX: sourceHandlePos.x,\n sourceY: sourceHandlePos.y,\n targetX: targetHandlePos.x,\n targetY: targetHandlePos.y,\n };\n};\nfunction isEdgeVisible({ sourcePos, targetPos, sourceWidth, sourceHeight, targetWidth, targetHeight, width, height, transform, }) {\n const edgeBox = {\n x: Math.min(sourcePos.x, targetPos.x),\n y: Math.min(sourcePos.y, targetPos.y),\n x2: Math.max(sourcePos.x + sourceWidth, targetPos.x + targetWidth),\n y2: Math.max(sourcePos.y + sourceHeight, targetPos.y + targetHeight),\n };\n if (edgeBox.x === edgeBox.x2) {\n edgeBox.x2 += 1;\n }\n if (edgeBox.y === edgeBox.y2) {\n edgeBox.y2 += 1;\n }\n const viewBox = rectToBox({\n x: (0 - transform[0]) / transform[2],\n y: (0 - transform[1]) / transform[2],\n width: width / transform[2],\n height: height / transform[2],\n });\n const xOverlap = Math.max(0, Math.min(viewBox.x2, edgeBox.x2) - Math.max(viewBox.x, edgeBox.x));\n const yOverlap = Math.max(0, Math.min(viewBox.y2, edgeBox.y2) - Math.max(viewBox.y, edgeBox.y));\n const overlappingArea = Math.ceil(xOverlap * yOverlap);\n return overlappingArea > 0;\n}\nfunction getNodeData(node) {\n const handleBounds = node?.[internalsSymbol]?.handleBounds || null;\n const isValid = handleBounds &&\n node?.width &&\n node?.height &&\n typeof node?.positionAbsolute?.x !== 'undefined' &&\n typeof node?.positionAbsolute?.y !== 'undefined';\n return [\n {\n x: node?.positionAbsolute?.x || 0,\n y: node?.positionAbsolute?.y || 0,\n width: node?.width || 0,\n height: node?.height || 0,\n },\n handleBounds,\n !!isValid,\n ];\n}\n\nconst defaultEdgeTree = [{ level: 0, isMaxLevel: true, edges: [] }];\nfunction groupEdgesByZLevel(edges, nodeInternals, elevateEdgesOnSelect = false) {\n let maxLevel = -1;\n const levelLookup = edges.reduce((tree, edge) => {\n const hasZIndex = isNumeric(edge.zIndex);\n let z = hasZIndex ? edge.zIndex : 0;\n if (elevateEdgesOnSelect) {\n const targetNode = nodeInternals.get(edge.target);\n const sourceNode = nodeInternals.get(edge.source);\n const edgeOrConnectedNodeSelected = edge.selected || targetNode?.selected || sourceNode?.selected;\n const selectedZIndex = Math.max(sourceNode?.[internalsSymbol]?.z || 0, targetNode?.[internalsSymbol]?.z || 0, 1000);\n z = (hasZIndex ? edge.zIndex : 0) + (edgeOrConnectedNodeSelected ? selectedZIndex : 0);\n }\n if (tree[z]) {\n tree[z].push(edge);\n }\n else {\n tree[z] = [edge];\n }\n maxLevel = z > maxLevel ? z : maxLevel;\n return tree;\n }, {});\n const edgeTree = Object.entries(levelLookup).map(([key, edges]) => {\n const level = +key;\n return {\n edges,\n level,\n isMaxLevel: level === maxLevel,\n };\n });\n if (edgeTree.length === 0) {\n return defaultEdgeTree;\n }\n return edgeTree;\n}\nfunction useVisibleEdges(onlyRenderVisible, nodeInternals, elevateEdgesOnSelect) {\n const edges = useStore(useCallback((s) => {\n if (!onlyRenderVisible) {\n return s.edges;\n }\n return s.edges.filter((e) => {\n const sourceNode = nodeInternals.get(e.source);\n const targetNode = nodeInternals.get(e.target);\n return (sourceNode?.width &&\n sourceNode?.height &&\n targetNode?.width &&\n targetNode?.height &&\n isEdgeVisible({\n sourcePos: sourceNode.positionAbsolute || { x: 0, y: 0 },\n targetPos: targetNode.positionAbsolute || { x: 0, y: 0 },\n sourceWidth: sourceNode.width,\n sourceHeight: sourceNode.height,\n targetWidth: targetNode.width,\n targetHeight: targetNode.height,\n width: s.width,\n height: s.height,\n transform: s.transform,\n }));\n });\n }, [onlyRenderVisible, nodeInternals]));\n return groupEdgesByZLevel(edges, nodeInternals, elevateEdgesOnSelect);\n}\n\nconst ArrowSymbol = ({ color = 'none', strokeWidth = 1 }) => {\n return (React.createElement(\"polyline\", { style: {\n stroke: color,\n strokeWidth,\n }, strokeLinecap: \"round\", strokeLinejoin: \"round\", fill: \"none\", points: \"-5,-4 0,0 -5,4\" }));\n};\nconst ArrowClosedSymbol = ({ color = 'none', strokeWidth = 1 }) => {\n return (React.createElement(\"polyline\", { style: {\n stroke: color,\n fill: color,\n strokeWidth,\n }, strokeLinecap: \"round\", strokeLinejoin: \"round\", points: \"-5,-4 0,0 -5,4 -5,-4\" }));\n};\nconst MarkerSymbols = {\n [MarkerType.Arrow]: ArrowSymbol,\n [MarkerType.ArrowClosed]: ArrowClosedSymbol,\n};\nfunction useMarkerSymbol(type) {\n const store = useStoreApi();\n const symbol = useMemo(() => {\n const symbolExists = Object.prototype.hasOwnProperty.call(MarkerSymbols, type);\n if (!symbolExists) {\n store.getState().onError?.('009', errorMessages['error009'](type));\n return null;\n }\n return MarkerSymbols[type];\n }, [type]);\n return symbol;\n}\n\nconst Marker = ({ id, type, color, width = 12.5, height = 12.5, markerUnits = 'strokeWidth', strokeWidth, orient = 'auto-start-reverse', }) => {\n const Symbol = useMarkerSymbol(type);\n if (!Symbol) {\n return null;\n }\n return (React.createElement(\"marker\", { className: \"react-flow__arrowhead\", id: id, markerWidth: `${width}`, markerHeight: `${height}`, viewBox: \"-10 -10 20 20\", markerUnits: markerUnits, orient: orient, refX: \"0\", refY: \"0\" },\n React.createElement(Symbol, { color: color, strokeWidth: strokeWidth })));\n};\nconst markerSelector = ({ defaultColor, rfId }) => (s) => {\n const ids = [];\n return s.edges\n .reduce((markers, edge) => {\n [edge.markerStart, edge.markerEnd].forEach((marker) => {\n if (marker && typeof marker === 'object') {\n const markerId = getMarkerId(marker, rfId);\n if (!ids.includes(markerId)) {\n markers.push({ id: markerId, color: marker.color || defaultColor, ...marker });\n ids.push(markerId);\n }\n }\n });\n return markers;\n }, [])\n .sort((a, b) => a.id.localeCompare(b.id));\n};\n// when you have multiple flows on a page and you hide the first one, the other ones have no markers anymore\n// when they do have markers with the same ids. To prevent this the user can pass a unique id to the react flow wrapper\n// that we can then use for creating our unique marker ids\nconst MarkerDefinitions = ({ defaultColor, rfId }) => {\n const markers = useStore(useCallback(markerSelector({ defaultColor, rfId }), [defaultColor, rfId]), \n // the id includes all marker options, so we just need to look at that part of the marker\n (a, b) => !(a.length !== b.length || a.some((m, i) => m.id !== b[i].id)));\n return (React.createElement(\"defs\", null, markers.map((marker) => (React.createElement(Marker, { id: marker.id, key: marker.id, type: marker.type, color: marker.color, width: marker.width, height: marker.height, markerUnits: marker.markerUnits, strokeWidth: marker.strokeWidth, orient: marker.orient })))));\n};\nMarkerDefinitions.displayName = 'MarkerDefinitions';\nvar MarkerDefinitions$1 = memo(MarkerDefinitions);\n\nconst selector$4 = (s) => ({\n nodesConnectable: s.nodesConnectable,\n edgesFocusable: s.edgesFocusable,\n edgesUpdatable: s.edgesUpdatable,\n elementsSelectable: s.elementsSelectable,\n width: s.width,\n height: s.height,\n connectionMode: s.connectionMode,\n nodeInternals: s.nodeInternals,\n onError: s.onError,\n});\nconst EdgeRenderer = ({ defaultMarkerColor, onlyRenderVisibleElements, elevateEdgesOnSelect, rfId, edgeTypes, noPanClassName, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, onEdgeClick, onEdgeDoubleClick, onReconnect, onReconnectStart, onReconnectEnd, reconnectRadius, children, disableKeyboardA11y, }) => {\n const { edgesFocusable, edgesUpdatable, elementsSelectable, width, height, connectionMode, nodeInternals, onError } = useStore(selector$4, shallow);\n const edgeTree = useVisibleEdges(onlyRenderVisibleElements, nodeInternals, elevateEdgesOnSelect);\n if (!width) {\n return null;\n }\n return (React.createElement(React.Fragment, null,\n edgeTree.map(({ level, edges, isMaxLevel }) => (React.createElement(\"svg\", { key: level, style: { zIndex: level }, width: width, height: height, className: \"react-flow__edges react-flow__container\" },\n isMaxLevel && React.createElement(MarkerDefinitions$1, { defaultColor: defaultMarkerColor, rfId: rfId }),\n React.createElement(\"g\", null, edges.map((edge) => {\n const [sourceNodeRect, sourceHandleBounds, sourceIsValid] = getNodeData(nodeInternals.get(edge.source));\n const [targetNodeRect, targetHandleBounds, targetIsValid] = getNodeData(nodeInternals.get(edge.target));\n if (!sourceIsValid || !targetIsValid) {\n return null;\n }\n let edgeType = edge.type || 'default';\n if (!edgeTypes[edgeType]) {\n onError?.('011', errorMessages['error011'](edgeType));\n edgeType = 'default';\n }\n const EdgeComponent = edgeTypes[edgeType] || edgeTypes.default;\n // when connection type is loose we can define all handles as sources and connect source -> source\n const targetNodeHandles = connectionMode === ConnectionMode.Strict\n ? targetHandleBounds.target\n : (targetHandleBounds.target ?? []).concat(targetHandleBounds.source ?? []);\n const sourceHandle = getHandle(sourceHandleBounds.source, edge.sourceHandle);\n const targetHandle = getHandle(targetNodeHandles, edge.targetHandle);\n const sourcePosition = sourceHandle?.position || Position.Bottom;\n const targetPosition = targetHandle?.position || Position.Top;\n const isFocusable = !!(edge.focusable || (edgesFocusable && typeof edge.focusable === 'undefined'));\n const edgeReconnectable = edge.reconnectable || edge.updatable;\n const isReconnectable = typeof onReconnect !== 'undefined' &&\n (edgeReconnectable || (edgesUpdatable && typeof edgeReconnectable === 'undefined'));\n if (!sourceHandle || !targetHandle) {\n onError?.('008', errorMessages['error008'](sourceHandle, edge));\n return null;\n }\n const { sourceX, sourceY, targetX, targetY } = getEdgePositions(sourceNodeRect, sourceHandle, sourcePosition, targetNodeRect, targetHandle, targetPosition);\n return (React.createElement(EdgeComponent, { key: edge.id, id: edge.id, className: cc([edge.className, noPanClassName]), type: edgeType, data: edge.data, selected: !!edge.selected, animated: !!edge.animated, hidden: !!edge.hidden, label: edge.label, labelStyle: edge.labelStyle, labelShowBg: edge.labelShowBg, labelBgStyle: edge.labelBgStyle, labelBgPadding: edge.labelBgPadding, labelBgBorderRadius: edge.labelBgBorderRadius, style: edge.style, source: edge.source, target: edge.target, sourceHandleId: edge.sourceHandle, targetHandleId: edge.targetHandle, markerEnd: edge.markerEnd, markerStart: edge.markerStart, sourceX: sourceX, sourceY: sourceY, targetX: targetX, targetY: targetY, sourcePosition: sourcePosition, targetPosition: targetPosition, elementsSelectable: elementsSelectable, onContextMenu: onEdgeContextMenu, onMouseEnter: onEdgeMouseEnter, onMouseMove: onEdgeMouseMove, onMouseLeave: onEdgeMouseLeave, onClick: onEdgeClick, onEdgeDoubleClick: onEdgeDoubleClick, onReconnect: onReconnect, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, reconnectRadius: reconnectRadius, rfId: rfId, ariaLabel: edge.ariaLabel, isFocusable: isFocusable, isReconnectable: isReconnectable, pathOptions: 'pathOptions' in edge ? edge.pathOptions : undefined, interactionWidth: edge.interactionWidth, disableKeyboardA11y: disableKeyboardA11y }));\n }))))),\n children));\n};\nEdgeRenderer.displayName = 'EdgeRenderer';\nvar EdgeRenderer$1 = memo(EdgeRenderer);\n\nconst selector$3 = (s) => `translate(${s.transform[0]}px,${s.transform[1]}px) scale(${s.transform[2]})`;\nfunction Viewport({ children }) {\n const transform = useStore(selector$3);\n return (React.createElement(\"div\", { className: \"react-flow__viewport react-flow__container\", style: { transform } }, children));\n}\n\nfunction useOnInitHandler(onInit) {\n const rfInstance = useReactFlow();\n const isInitialized = useRef(false);\n useEffect(() => {\n if (!isInitialized.current && rfInstance.viewportInitialized && onInit) {\n setTimeout(() => onInit(rfInstance), 1);\n isInitialized.current = true;\n }\n }, [onInit, rfInstance.viewportInitialized]);\n}\n\nconst oppositePosition = {\n [Position.Left]: Position.Right,\n [Position.Right]: Position.Left,\n [Position.Top]: Position.Bottom,\n [Position.Bottom]: Position.Top,\n};\nconst ConnectionLine = ({ nodeId, handleType, style, type = ConnectionLineType.Bezier, CustomComponent, connectionStatus, }) => {\n const { fromNode, handleId, toX, toY, connectionMode } = useStore(useCallback((s) => ({\n fromNode: s.nodeInternals.get(nodeId),\n handleId: s.connectionHandleId,\n toX: (s.connectionPosition.x - s.transform[0]) / s.transform[2],\n toY: (s.connectionPosition.y - s.transform[1]) / s.transform[2],\n connectionMode: s.connectionMode,\n }), [nodeId]), shallow);\n const fromHandleBounds = fromNode?.[internalsSymbol]?.handleBounds;\n let handleBounds = fromHandleBounds?.[handleType];\n if (connectionMode === ConnectionMode.Loose) {\n handleBounds = handleBounds ? handleBounds : fromHandleBounds?.[handleType === 'source' ? 'target' : 'source'];\n }\n if (!fromNode || !handleBounds) {\n return null;\n }\n const fromHandle = handleId ? handleBounds.find((d) => d.id === handleId) : handleBounds[0];\n const fromHandleX = fromHandle ? fromHandle.x + fromHandle.width / 2 : (fromNode.width ?? 0) / 2;\n const fromHandleY = fromHandle ? fromHandle.y + fromHandle.height / 2 : fromNode.height ?? 0;\n const fromX = (fromNode.positionAbsolute?.x ?? 0) + fromHandleX;\n const fromY = (fromNode.positionAbsolute?.y ?? 0) + fromHandleY;\n const fromPosition = fromHandle?.position;\n const toPosition = fromPosition ? oppositePosition[fromPosition] : null;\n if (!fromPosition || !toPosition) {\n return null;\n }\n if (CustomComponent) {\n return (React.createElement(CustomComponent, { connectionLineType: type, connectionLineStyle: style, fromNode: fromNode, fromHandle: fromHandle, fromX: fromX, fromY: fromY, toX: toX, toY: toY, fromPosition: fromPosition, toPosition: toPosition, connectionStatus: connectionStatus }));\n }\n let dAttr = '';\n const pathParams = {\n sourceX: fromX,\n sourceY: fromY,\n sourcePosition: fromPosition,\n targetX: toX,\n targetY: toY,\n targetPosition: toPosition,\n };\n if (type === ConnectionLineType.Bezier) {\n // we assume the destination position is opposite to the source position\n [dAttr] = getBezierPath(pathParams);\n }\n else if (type === ConnectionLineType.Step) {\n [dAttr] = getSmoothStepPath({\n ...pathParams,\n borderRadius: 0,\n });\n }\n else if (type === ConnectionLineType.SmoothStep) {\n [dAttr] = getSmoothStepPath(pathParams);\n }\n else if (type === ConnectionLineType.SimpleBezier) {\n [dAttr] = getSimpleBezierPath(pathParams);\n }\n else {\n dAttr = `M${fromX},${fromY} ${toX},${toY}`;\n }\n return React.createElement(\"path\", { d: dAttr, fill: \"none\", className: \"react-flow__connection-path\", style: style });\n};\nConnectionLine.displayName = 'ConnectionLine';\nconst selector$2 = (s) => ({\n nodeId: s.connectionNodeId,\n handleType: s.connectionHandleType,\n nodesConnectable: s.nodesConnectable,\n connectionStatus: s.connectionStatus,\n width: s.width,\n height: s.height,\n});\nfunction ConnectionLineWrapper({ containerStyle, style, type, component }) {\n const { nodeId, handleType, nodesConnectable, width, height, connectionStatus } = useStore(selector$2, shallow);\n const isValid = !!(nodeId && handleType && width && nodesConnectable);\n if (!isValid) {\n return null;\n }\n return (React.createElement(\"svg\", { style: containerStyle, width: width, height: height, className: \"react-flow__edges react-flow__connectionline react-flow__container\" },\n React.createElement(\"g\", { className: cc(['react-flow__connection', connectionStatus]) },\n React.createElement(ConnectionLine, { nodeId: nodeId, handleType: handleType, style: style, type: type, CustomComponent: component, connectionStatus: connectionStatus }))));\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction useNodeOrEdgeTypes(nodeOrEdgeTypes, createTypes) {\n const typesKeysRef = useRef(null);\n const store = useStoreApi();\n const typesParsed = useMemo(() => {\n if (process.env.NODE_ENV === 'development') {\n const typeKeys = Object.keys(nodeOrEdgeTypes);\n if (shallow(typesKeysRef.current, typeKeys)) {\n store.getState().onError?.('002', errorMessages['error002']());\n }\n typesKeysRef.current = typeKeys;\n }\n return createTypes(nodeOrEdgeTypes);\n }, [nodeOrEdgeTypes]);\n return typesParsed;\n}\n\nconst GraphView = ({ nodeTypes, edgeTypes, onMove, onMoveStart, onMoveEnd, 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, selectNodesOnDrag, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, defaultMarkerColor, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, onReconnect, onReconnectStart, onReconnectEnd, reconnectRadius, noDragClassName, noWheelClassName, noPanClassName, elevateEdgesOnSelect, disableKeyboardA11y, nodeOrigin, nodeExtent, rfId, }) => {\n const nodeTypesWrapped = useNodeOrEdgeTypes(nodeTypes, createNodeTypes);\n const edgeTypesWrapped = useNodeOrEdgeTypes(edgeTypes, createEdgeTypes);\n useOnInitHandler(onInit);\n return (React.createElement(FlowRenderer$1, { onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneContextMenu: onPaneContextMenu, onPaneScroll: onPaneScroll, deleteKeyCode: deleteKeyCode, selectionKeyCode: selectionKeyCode, selectionOnDrag: selectionOnDrag, selectionMode: selectionMode, onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, multiSelectionKeyCode: multiSelectionKeyCode, panActivationKeyCode: panActivationKeyCode, zoomActivationKeyCode: zoomActivationKeyCode, elementsSelectable: elementsSelectable, onMove: onMove, onMoveStart: onMoveStart, onMoveEnd: onMoveEnd, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, zoomOnDoubleClick: zoomOnDoubleClick, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, panOnDrag: panOnDrag, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, onSelectionContextMenu: onSelectionContextMenu, preventScrolling: preventScrolling, noDragClassName: noDragClassName, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y },\n React.createElement(Viewport, null,\n React.createElement(EdgeRenderer$1, { edgeTypes: edgeTypesWrapped, onEdgeClick: onEdgeClick, onEdgeDoubleClick: onEdgeDoubleClick, onlyRenderVisibleElements: onlyRenderVisibleElements, onEdgeContextMenu: onEdgeContextMenu, onEdgeMouseEnter: onEdgeMouseEnter, onEdgeMouseMove: onEdgeMouseMove, onEdgeMouseLeave: onEdgeMouseLeave, onReconnect: onReconnect, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, reconnectRadius: reconnectRadius, defaultMarkerColor: defaultMarkerColor, noPanClassName: noPanClassName, elevateEdgesOnSelect: !!elevateEdgesOnSelect, disableKeyboardA11y: disableKeyboardA11y, rfId: rfId },\n React.createElement(ConnectionLineWrapper, { style: connectionLineStyle, type: connectionLineType, component: connectionLineComponent, containerStyle: connectionLineContainerStyle })),\n React.createElement(\"div\", { className: \"react-flow__edgelabel-renderer\" }),\n React.createElement(NodeRenderer$1, { nodeTypes: nodeTypesWrapped, onNodeClick: onNodeClick, onNodeDoubleClick: onNodeDoubleClick, onNodeMouseEnter: onNodeMouseEnter, onNodeMouseMove: onNodeMouseMove, onNodeMouseLeave: onNodeMouseLeave, onNodeContextMenu: onNodeContextMenu, selectNodesOnDrag: selectNodesOnDrag, onlyRenderVisibleElements: onlyRenderVisibleElements, noPanClassName: noPanClassName, noDragClassName: noDragClassName, disableKeyboardA11y: disableKeyboardA11y, nodeOrigin: nodeOrigin, nodeExtent: nodeExtent, rfId: rfId }))));\n};\nGraphView.displayName = 'GraphView';\nvar GraphView$1 = memo(GraphView);\n\nconst infiniteExtent = [\n [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY],\n];\nconst initialState = {\n rfId: '1',\n width: 0,\n height: 0,\n transform: [0, 0, 1],\n nodeInternals: new Map(),\n edges: [],\n onNodesChange: null,\n onEdgesChange: null,\n hasDefaultNodes: false,\n hasDefaultEdges: false,\n d3Zoom: null,\n d3Selection: null,\n d3ZoomHandler: undefined,\n minZoom: 0.5,\n maxZoom: 2,\n translateExtent: infiniteExtent,\n nodeExtent: infiniteExtent,\n nodesSelectionActive: false,\n userSelectionActive: false,\n userSelectionRect: null,\n connectionNodeId: null,\n connectionHandleId: null,\n connectionHandleType: 'source',\n connectionPosition: { x: 0, y: 0 },\n connectionStatus: null,\n connectionMode: ConnectionMode.Strict,\n domNode: null,\n paneDragging: false,\n noPanClassName: 'nopan',\n nodeOrigin: [0, 0],\n nodeDragThreshold: 0,\n snapGrid: [15, 15],\n snapToGrid: false,\n nodesDraggable: true,\n nodesConnectable: true,\n nodesFocusable: true,\n edgesFocusable: true,\n edgesUpdatable: true,\n elementsSelectable: true,\n elevateNodesOnSelect: true,\n fitViewOnInit: false,\n fitViewOnInitDone: false,\n fitViewOnInitOptions: undefined,\n onSelectionChange: [],\n multiSelectionActive: false,\n connectionStartHandle: null,\n connectionEndHandle: null,\n connectionClickStartHandle: null,\n connectOnClick: true,\n ariaLiveMessage: '',\n autoPanOnConnect: true,\n autoPanOnNodeDrag: true,\n connectionRadius: 20,\n onError: devWarn,\n isValidConnection: undefined,\n};\n\nconst createRFStore = () => createWithEqualityFn((set, get) => ({\n ...initialState,\n setNodes: (nodes) => {\n const { nodeInternals, nodeOrigin, elevateNodesOnSelect } = get();\n set({ nodeInternals: createNodeInternals(nodes, nodeInternals, nodeOrigin, elevateNodesOnSelect) });\n },\n getNodes: () => {\n return Array.from(get().nodeInternals.values());\n },\n setEdges: (edges) => {\n const { defaultEdgeOptions = {} } = get();\n set({ edges: edges.map((e) => ({ ...defaultEdgeOptions, ...e })) });\n },\n setDefaultNodesAndEdges: (nodes, edges) => {\n const hasDefaultNodes = typeof nodes !== 'undefined';\n const hasDefaultEdges = typeof edges !== 'undefined';\n const nodeInternals = hasDefaultNodes\n ? createNodeInternals(nodes, new Map(), get().nodeOrigin, get().elevateNodesOnSelect)\n : new Map();\n const nextEdges = hasDefaultEdges ? edges : [];\n set({ nodeInternals, edges: nextEdges, hasDefaultNodes, hasDefaultEdges });\n },\n updateNodeDimensions: (updates) => {\n const { onNodesChange, nodeInternals, fitViewOnInit, fitViewOnInitDone, fitViewOnInitOptions, domNode, nodeOrigin, } = get();\n const viewportNode = domNode?.querySelector('.react-flow__viewport');\n if (!viewportNode) {\n return;\n }\n const style = window.getComputedStyle(viewportNode);\n const { m22: zoom } = new window.DOMMatrixReadOnly(style.transform);\n const changes = updates.reduce((res, update) => {\n const node = nodeInternals.get(update.id);\n if (node?.hidden) {\n nodeInternals.set(node.id, {\n ...node,\n [internalsSymbol]: {\n ...node[internalsSymbol],\n // we need to reset the handle bounds when the node is hidden\n // in order to force a new observation when the node is shown again\n handleBounds: undefined,\n },\n });\n }\n else if (node) {\n const dimensions = getDimensions(update.nodeElement);\n const doUpdate = !!(dimensions.width &&\n dimensions.height &&\n (node.width !== dimensions.width || node.height !== dimensions.height || update.forceUpdate));\n if (doUpdate) {\n nodeInternals.set(node.id, {\n ...node,\n [internalsSymbol]: {\n ...node[internalsSymbol],\n handleBounds: {\n source: getHandleBounds('.source', update.nodeElement, zoom, nodeOrigin),\n target: getHandleBounds('.target', update.nodeElement, zoom, nodeOrigin),\n },\n },\n ...dimensions,\n });\n res.push({\n id: node.id,\n type: 'dimensions',\n dimensions,\n });\n }\n }\n return res;\n }, []);\n updateAbsoluteNodePositions(nodeInternals, nodeOrigin);\n const nextFitViewOnInitDone = fitViewOnInitDone ||\n (fitViewOnInit && !fitViewOnInitDone && fitView(get, { initial: true, ...fitViewOnInitOptions }));\n set({ nodeInternals: new Map(nodeInternals), fitViewOnInitDone: nextFitViewOnInitDone });\n if (changes?.length > 0) {\n onNodesChange?.(changes);\n }\n },\n updateNodePositions: (nodeDragItems, positionChanged = true, dragging = false) => {\n const { triggerNodeChanges } = get();\n const changes = nodeDragItems.map((node) => {\n const change = {\n id: node.id,\n type: 'position',\n dragging,\n };\n if (positionChanged) {\n change.positionAbsolute = node.positionAbsolute;\n change.position = node.position;\n }\n return change;\n });\n triggerNodeChanges(changes);\n },\n triggerNodeChanges: (changes) => {\n const { onNodesChange, nodeInternals, hasDefaultNodes, nodeOrigin, getNodes, elevateNodesOnSelect } = get();\n if (changes?.length) {\n if (hasDefaultNodes) {\n const nodes = applyNodeChanges(changes, getNodes());\n const nextNodeInternals = createNodeInternals(nodes, nodeInternals, nodeOrigin, elevateNodesOnSelect);\n set({ nodeInternals: nextNodeInternals });\n }\n onNodesChange?.(changes);\n }\n },\n addSelectedNodes: (selectedNodeIds) => {\n const { multiSelectionActive, edges, getNodes } = get();\n let changedNodes;\n let changedEdges = null;\n if (multiSelectionActive) {\n changedNodes = selectedNodeIds.map((nodeId) => createSelectionChange(nodeId, true));\n }\n else {\n changedNodes = getSelectionChanges(getNodes(), selectedNodeIds);\n changedEdges = getSelectionChanges(edges, []);\n }\n updateNodesAndEdgesSelections({\n changedNodes,\n changedEdges,\n get,\n set,\n });\n },\n addSelectedEdges: (selectedEdgeIds) => {\n const { multiSelectionActive, edges, getNodes } = get();\n let changedEdges;\n let changedNodes = null;\n if (multiSelectionActive) {\n changedEdges = selectedEdgeIds.map((edgeId) => createSelectionChange(edgeId, true));\n }\n else {\n changedEdges = getSelectionChanges(edges, selectedEdgeIds);\n changedNodes = getSelectionChanges(getNodes(), []);\n }\n updateNodesAndEdgesSelections({\n changedNodes,\n changedEdges,\n get,\n set,\n });\n },\n unselectNodesAndEdges: ({ nodes, edges } = {}) => {\n const { edges: storeEdges, getNodes } = get();\n const nodesToUnselect = nodes ? nodes : getNodes();\n const edgesToUnselect = edges ? edges : storeEdges;\n const changedNodes = nodesToUnselect.map((n) => {\n n.selected = false;\n return createSelectionChange(n.id, false);\n });\n const changedEdges = edgesToUnselect.map((edge) => createSelectionChange(edge.id, false));\n updateNodesAndEdgesSelections({\n changedNodes,\n changedEdges,\n get,\n set,\n });\n },\n setMinZoom: (minZoom) => {\n const { d3Zoom, maxZoom } = get();\n d3Zoom?.scaleExtent([minZoom, maxZoom]);\n set({ minZoom });\n },\n setMaxZoom: (maxZoom) => {\n const { d3Zoom, minZoom } = get();\n d3Zoom?.scaleExtent([minZoom, maxZoom]);\n set({ maxZoom });\n },\n setTranslateExtent: (translateExtent) => {\n get().d3Zoom?.translateExtent(translateExtent);\n set({ translateExtent });\n },\n resetSelectedElements: () => {\n const { edges, getNodes } = get();\n const nodes = getNodes();\n const nodesToUnselect = nodes\n .filter((e) => e.selected)\n .map((n) => createSelectionChange(n.id, false));\n const edgesToUnselect = edges\n .filter((e) => e.selected)\n .map((e) => createSelectionChange(e.id, false));\n updateNodesAndEdgesSelections({\n changedNodes: nodesToUnselect,\n changedEdges: edgesToUnselect,\n get,\n set,\n });\n },\n setNodeExtent: (nodeExtent) => {\n const { nodeInternals } = get();\n nodeInternals.forEach((node) => {\n node.positionAbsolute = clampPosition(node.position, nodeExtent);\n });\n set({\n nodeExtent,\n nodeInternals: new Map(nodeInternals),\n });\n },\n panBy: (delta) => {\n const { transform, width, height, d3Zoom, d3Selection, translateExtent } = get();\n if (!d3Zoom || !d3Selection || (!delta.x && !delta.y)) {\n return false;\n }\n const nextTransform = zoomIdentity\n .translate(transform[0] + delta.x, transform[1] + delta.y)\n .scale(transform[2]);\n const extent = [\n [0, 0],\n [width, height],\n ];\n const constrainedTransform = d3Zoom?.constrain()(nextTransform, extent, translateExtent);\n d3Zoom.transform(d3Selection, constrainedTransform);\n const transformChanged = transform[0] !== constrainedTransform.x ||\n transform[1] !== constrainedTransform.y ||\n transform[2] !== constrainedTransform.k;\n return transformChanged;\n },\n cancelConnection: () => set({\n connectionNodeId: initialState.connectionNodeId,\n connectionHandleId: initialState.connectionHandleId,\n connectionHandleType: initialState.connectionHandleType,\n connectionStatus: initialState.connectionStatus,\n connectionStartHandle: initialState.connectionStartHandle,\n connectionEndHandle: initialState.connectionEndHandle,\n }),\n reset: () => set({ ...initialState }),\n}), Object.is);\n\nconst ReactFlowProvider = ({ children }) => {\n const storeRef = useRef(null);\n if (!storeRef.current) {\n storeRef.current = createRFStore();\n }\n return React.createElement(Provider$1, { value: storeRef.current }, children);\n};\nReactFlowProvider.displayName = 'ReactFlowProvider';\n\nconst Wrapper = ({ children }) => {\n const isWrapped = useContext(StoreContext);\n if (isWrapped) {\n // we need to wrap it with a fragment because it's not allowed for children to be a ReactNode\n // https://github.com/DefinitelyTyped/DefinitelyTyped/issues/18051\n return React.createElement(React.Fragment, null, children);\n }\n return React.createElement(ReactFlowProvider, null, children);\n};\nWrapper.displayName = 'ReactFlowWrapper';\n\nconst defaultNodeTypes = {\n input: InputNode$1,\n default: DefaultNode$1,\n output: OutputNode$1,\n group: GroupNode,\n};\nconst defaultEdgeTypes = {\n default: BezierEdge,\n straight: StraightEdge,\n step: StepEdge,\n smoothstep: SmoothStepEdge,\n simplebezier: SimpleBezierEdge,\n};\nconst initNodeOrigin = [0, 0];\nconst initSnapGrid = [15, 15];\nconst initDefaultViewport = { x: 0, y: 0, zoom: 1 };\nconst wrapperStyle = {\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n position: 'relative',\n zIndex: 0,\n};\nconst ReactFlow = forwardRef(({ nodes, edges, defaultNodes, defaultEdges, className, nodeTypes = defaultNodeTypes, edgeTypes = defaultEdgeTypes, onNodeClick, onEdgeClick, onInit, onMove, onMoveStart, onMoveEnd, onConnect, onConnectStart, onConnectEnd, onClickConnectStart, onClickConnectEnd, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onNodeDoubleClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onNodesDelete, onEdgesDelete, onSelectionChange, onSelectionDragStart, onSelectionDrag, onSelectionDragStop, onSelectionContextMenu, onSelectionStart, onSelectionEnd, connectionMode = ConnectionMode.Strict, 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 = false, snapGrid = initSnapGrid, onlyRenderVisibleElements = false, selectNodesOnDrag = true, nodesDraggable, nodesConnectable, nodesFocusable, nodeOrigin = initNodeOrigin, edgesFocusable, edgesUpdatable, elementsSelectable, defaultViewport = initDefaultViewport, 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, children, onEdgeContextMenu, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, onEdgeUpdate, onEdgeUpdateStart, onEdgeUpdateEnd, onReconnect, onReconnectStart, onReconnectEnd, reconnectRadius = 10, edgeUpdaterRadius = 10, onNodesChange, onEdgesChange, noDragClassName = 'nodrag', noWheelClassName = 'nowheel', noPanClassName = 'nopan', fitView = false, fitViewOptions, connectOnClick = true, attributionPosition, proOptions, defaultEdgeOptions, elevateNodesOnSelect = true, elevateEdgesOnSelect = false, disableKeyboardA11y = false, autoPanOnConnect = true, autoPanOnNodeDrag = true, connectionRadius = 20, isValidConnection, onError, style, id, nodeDragThreshold, ...rest }, ref) => {\n const rfId = id || '1';\n return (React.createElement(\"div\", { ...rest, style: { ...style, ...wrapperStyle }, ref: ref, className: cc(['react-flow', className]), \"data-testid\": \"rf__wrapper\", id: id },\n React.createElement(Wrapper, null,\n React.createElement(GraphView$1, { onInit: onInit, onMove: onMove, onMoveStart: onMoveStart, onMoveEnd: onMoveEnd, onNodeClick: onNodeClick, onEdgeClick: onEdgeClick, onNodeMouseEnter: onNodeMouseEnter, onNodeMouseMove: onNodeMouseMove, onNodeMouseLeave: onNodeMouseLeave, onNodeContextMenu: onNodeContextMenu, onNodeDoubleClick: onNodeDoubleClick, nodeTypes: nodeTypes, edgeTypes: edgeTypes, connectionLineType: connectionLineType, connectionLineStyle: connectionLineStyle, connectionLineComponent: connectionLineComponent, connectionLineContainerStyle: connectionLineContainerStyle, selectionKeyCode: selectionKeyCode, selectionOnDrag: selectionOnDrag, selectionMode: selectionMode, deleteKeyCode: deleteKeyCode, multiSelectionKeyCode: multiSelectionKeyCode, panActivationKeyCode: panActivationKeyCode, zoomActivationKeyCode: zoomActivationKeyCode, onlyRenderVisibleElements: onlyRenderVisibleElements, selectNodesOnDrag: selectNodesOnDrag, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, preventScrolling: preventScrolling, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, zoomOnDoubleClick: zoomOnDoubleClick, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, panOnDrag: panOnDrag, onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneScroll: onPaneScroll, onPaneContextMenu: onPaneContextMenu, onSelectionContextMenu: onSelectionContextMenu, onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, onEdgeContextMenu: onEdgeContextMenu, onEdgeDoubleClick: onEdgeDoubleClick, onEdgeMouseEnter: onEdgeMouseEnter, onEdgeMouseMove: onEdgeMouseMove, onEdgeMouseLeave: onEdgeMouseLeave, onReconnect: onReconnect ?? onEdgeUpdate, onReconnectStart: onReconnectStart ?? onEdgeUpdateStart, onReconnectEnd: onReconnectEnd ?? onEdgeUpdateEnd, reconnectRadius: reconnectRadius ?? edgeUpdaterRadius, defaultMarkerColor: defaultMarkerColor, noDragClassName: noDragClassName, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, elevateEdgesOnSelect: elevateEdgesOnSelect, rfId: rfId, disableKeyboardA11y: disableKeyboardA11y, nodeOrigin: nodeOrigin, nodeExtent: nodeExtent }),\n React.createElement(StoreUpdater, { nodes: nodes, edges: edges, defaultNodes: defaultNodes, defaultEdges: defaultEdges, onConnect: onConnect, onConnectStart: onConnectStart, onConnectEnd: onConnectEnd, onClickConnectStart: onClickConnectStart, onClickConnectEnd: onClickConnectEnd, nodesDraggable: nodesDraggable, nodesConnectable: nodesConnectable, nodesFocusable: nodesFocusable, edgesFocusable: edgesFocusable, edgesUpdatable: edgesUpdatable, elementsSelectable: elementsSelectable, elevateNodesOnSelect: elevateNodesOnSelect, minZoom: minZoom, maxZoom: maxZoom, nodeExtent: nodeExtent, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange, snapToGrid: snapToGrid, snapGrid: snapGrid, connectionMode: connectionMode, translateExtent: translateExtent, connectOnClick: connectOnClick, defaultEdgeOptions: defaultEdgeOptions, fitView: fitView, fitViewOptions: fitViewOptions, onNodesDelete: onNodesDelete, onEdgesDelete: onEdgesDelete, onNodeDragStart: onNodeDragStart, onNodeDrag: onNodeDrag, onNodeDragStop: onNodeDragStop, onSelectionDrag: onSelectionDrag, onSelectionDragStart: onSelectionDragStart, onSelectionDragStop: onSelectionDragStop, noPanClassName: noPanClassName, nodeOrigin: nodeOrigin, rfId: rfId, autoPanOnConnect: autoPanOnConnect, autoPanOnNodeDrag: autoPanOnNodeDrag, onError: onError, connectionRadius: connectionRadius, isValidConnection: isValidConnection, nodeDragThreshold: nodeDragThreshold }),\n React.createElement(Wrapper$1, { onSelectionChange: onSelectionChange }),\n children,\n React.createElement(Attribution, { proOptions: proOptions, position: attributionPosition }),\n React.createElement(A11yDescriptions, { rfId: rfId, disableKeyboardA11y: disableKeyboardA11y }))));\n});\nReactFlow.displayName = 'ReactFlow';\n\nconst selector$1 = (s) => s.domNode?.querySelector('.react-flow__edgelabel-renderer');\nfunction EdgeLabelRenderer({ children }) {\n const edgeLabelRenderer = useStore(selector$1);\n if (!edgeLabelRenderer) {\n return null;\n }\n return createPortal(children, edgeLabelRenderer);\n}\n\nfunction useUpdateNodeInternals() {\n const store = useStoreApi();\n return useCallback((id) => {\n const { domNode, updateNodeDimensions } = store.getState();\n const updateIds = Array.isArray(id) ? id : [id];\n const updates = updateIds.reduce((res, updateId) => {\n const nodeElement = domNode?.querySelector(`.react-flow__node[data-id=\"${updateId}\"]`);\n if (nodeElement) {\n res.push({ id: updateId, nodeElement, forceUpdate: true });\n }\n return res;\n }, []);\n requestAnimationFrame(() => updateNodeDimensions(updates));\n }, []);\n}\n\nconst nodesSelector = (state) => state.getNodes();\nfunction useNodes() {\n const nodes = useStore(nodesSelector, shallow);\n return nodes;\n}\n\nconst edgesSelector = (state) => state.edges;\nfunction useEdges() {\n const edges = useStore(edgesSelector, shallow);\n return edges;\n}\n\nconst viewportSelector = (state) => ({\n x: state.transform[0],\n y: state.transform[1],\n zoom: state.transform[2],\n});\nfunction useViewport() {\n const viewport = useStore(viewportSelector, shallow);\n return viewport;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nfunction createUseItemsState(applyChanges) {\n return (initialItems) => {\n const [items, setItems] = useState(initialItems);\n const onItemsChange = useCallback((changes) => setItems((items) => applyChanges(changes, items)), []);\n return [items, setItems, onItemsChange];\n };\n}\nconst useNodesState = createUseItemsState(applyNodeChanges);\nconst useEdgesState = createUseItemsState(applyEdgeChanges);\n\nfunction useOnViewportChange({ onStart, onChange, onEnd }) {\n const store = useStoreApi();\n useEffect(() => {\n store.setState({ onViewportChangeStart: onStart });\n }, [onStart]);\n useEffect(() => {\n store.setState({ onViewportChange: onChange });\n }, [onChange]);\n useEffect(() => {\n store.setState({ onViewportChangeEnd: onEnd });\n }, [onEnd]);\n}\n\nfunction useOnSelectionChange({ onChange }) {\n const store = useStoreApi();\n useEffect(() => {\n const nextSelectionChangeHandlers = [...store.getState().onSelectionChange, onChange];\n store.setState({ onSelectionChange: nextSelectionChangeHandlers });\n return () => {\n const nextHandlers = store.getState().onSelectionChange.filter((fn) => fn !== onChange);\n store.setState({ onSelectionChange: nextHandlers });\n };\n }, [onChange]);\n}\n\nconst selector = (options) => (s) => {\n if (s.nodeInternals.size === 0) {\n return false;\n }\n return s\n .getNodes()\n .filter((n) => (options.includeHiddenNodes ? true : !n.hidden))\n .every((n) => n[internalsSymbol]?.handleBounds !== undefined);\n};\nconst defaultOptions = {\n includeHiddenNodes: false,\n};\nfunction useNodesInitialized(options = defaultOptions) {\n const initialized = useStore(selector(options));\n return initialized;\n}\n\nexport { BaseEdge, BezierEdge, ConnectionLineType, ConnectionMode, EdgeLabelRenderer, EdgeText$1 as EdgeText, Handle$1 as Handle, MarkerType, PanOnScrollMode, Panel, Position, ReactFlow, ReactFlowProvider, SelectionMode, SimpleBezierEdge, SmoothStepEdge, StepEdge, StraightEdge, addEdge, applyEdgeChanges, applyNodeChanges, boxToRect, clamp, getBezierPath, getBoundsOfRects, getConnectedEdges, getIncomers, getMarkerEnd, getNodePositionWithOrigin, getNodesBounds, getOutgoers, getRectOfNodes, getSimpleBezierPath, getSmoothStepPath, getStraightPath, getTransformForBounds, getViewportForBounds, handleParentExpand, internalsSymbol, isEdge, isNode, reconnectEdge, rectToBox, updateEdge, useEdges, useEdgesState, useGetPointerPosition, useKeyPress, useNodeId, useNodes, useNodesInitialized, useNodesState, useOnSelectionChange, useOnViewportChange, useReactFlow, useStore, useStoreApi, useUpdateNodeInternals, useViewport };\n"],"names":["ConnectionMode","PanOnScrollMode","SelectionMode","ConnectionLineType","MarkerType","Position","StoreContext","react__WEBPACK_IMPORTED_MODULE_0__","createContext","Provider$1","Provider","errorMessages","error001","error003","nodeType","error004","error005","error006","error009","type","error008","sourceHandle","edge","targetHandle","id","error010","error011","edgeType","error012","zustandErrorMessage","useStore","selector","equalityFn","store","useContext","zustand_traditional__WEBPACK_IMPORTED_MODULE_3__","s","useStoreApi","useMemo","getState","setState","subscribe","destroy","selector$g","userSelectionActive","Panel","position","children","className","style","rest","pointerEvents","positionClasses","split","createElement","classcat__WEBPACK_IMPORTED_MODULE_4__","Z","Attribution","proOptions","hideAttribution","href","target","rel","EdgeText$1","memo","x","y","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","edgeRef","useRef","edgeTextBbox","setEdgeTextBbox","useState","width","height","edgeTextClasses","useEffect","current","textBbox","getBBox","transform","visibility","rx","ry","dy","ref","getDimensions","node","offsetWidth","offsetHeight","clamp","val","min","max","Math","clampPosition","extent","calcAutoPanVelocity","value","abs","calcAutoPan","pos","bounds","getHostForElement","element","getRootNode","window","document","getBoundsOfBoxes","box1","box2","x2","y2","rectToBox","boxToRect","nodeToRect","positionAbsolute","getBoundsOfRects","rect1","rect2","getOverlappingArea","rectA","rectB","ceil","xOverlap","isRectObject","isNumeric","obj","isNaN","n","isFinite","internalsSymbol","Symbol","for","elementSelectionKeys","devWarn","message","isReactKeyboardEvent","event","isInputDOMNode","kbEvent","nativeEvent","composedPath","isInput","includes","nodeName","hasAttribute","closest","isMouseEvent","getEventPosition","isMouseTriggered","evtX","clientX","touches","evtY","clientY","left","top","isMacOs","navigator","userAgent","indexOf","BaseEdge","path","labelX","labelY","markerEnd","markerStart","interactionWidth","Fragment","d","fill","strokeOpacity","strokeWidth","getMouseHandler$1","handler","undefined","edges","find","e","getEdgeCenter","sourceX","sourceY","targetX","targetY","xOffset","yOffset","getBezierEdgeCenter","sourceControlX","sourceControlY","targetControlX","targetControlY","centerX","centerY","getControl","x1","y1","Left","Right","getSimpleBezierPath","sourcePosition","Bottom","targetPosition","Top","offsetX","offsetY","displayName","SimpleBezierEdge","handleDirections","getDirection","source","distance","a","b","sqrt","pow","getSmoothStepPath","borderRadius","offset","points","getPoints","center","sourceDir","targetDir","sourceGapped","targetGapped","dir","dirAccessor","currDir","sourceGapOffset","targetGapOffset","defaultCenterX","defaultCenterY","defaultOffsetX","defaultOffsetY","verticalSplit","horizontalSplit","sourceTarget","targetSource","diff","gapOffset","dirAccessorOpposite","isSameDir","sourceGtTargetOppo","sourceLtTargetOppo","sourceGapPoint","targetGapPoint","maxXDistance","reduce","res","p","i","length","getBend","c","size","bendSize","xDir","yDir","SmoothStepEdge","pathOptions","StepEdge","props","StraightEdge","getStraightPath","calculateControlOffset","curvature","getControlWithCurvature","getBezierPath","BezierEdge","NodeIdContext","Consumer","useNodeId","isEdge","getEdgeId","getMarkerId","marker","rfId","idPrefix","Object","keys","sort","map","key","join","connectionExists","some","el","addEdge","edgeParams","concat","pointToRendererPoint","tx","ty","tScale","snapToGrid","snapX","snapY","round","rendererPointToPoint","getNodePositionWithOrigin","nodeOrigin","getNodesBounds","nodes","currBox","Infinity","getNodesInside","nodeInternals","rect","partially","excludeNonSelectableNodes","paneRect","visibleNodes","forEach","selectable","hidden","overlappingArea","notInitialized","area","isVisible","dragging","push","getConnectedEdges","nodeIds","filter","getViewportForBounds","minZoom","maxZoom","padding","clampedZoom","boundsCenterX","boundsCenterY","zoom","getD3Transition","selection","duration","transition","getHandles","handleBounds","currentHandle","h","nodeId","nullConnection","defaultResult","handleDomNode","isValid","connection","endHandle","isValidHandle","handle","connectionMode","fromNodeId","fromHandleId","fromType","isValidConnection","doc","isTarget","handleToCheck","querySelector","result","handleType","getHandleType","handleNodeId","getAttribute","handleId","connectable","classList","contains","connectableEnd","Strict","edgeUpdaterType","resetRecentHandle","remove","handlePointerDown","onConnect","onReconnectEnd","closestHandle","prevActiveHandle","domNode","autoPanOnConnect","connectionRadius","onConnectStart","panBy","getNodes","cancelConnection","autoPanId","elementFromPoint","containerBounds","getBoundingClientRect","connectionPosition","autoPanStarted","handleLookup","getHandleLookup","sourceHandles","targetHandles","autoPan","xMovement","yMovement","requestAnimationFrame","onPointerMove","isInsideConnectionRadius","isHandleValid","connectionStatus","validHandleResult","getClosestHandle","handles","validator","handleBelow","domNodes","elementsFromPoint","closestHandles","minDistance","hasValidHandle","hasTargetHandle","connectionEndHandle","add","toggle","onPointerUp","onConnectEnd","cancelAnimationFrame","removeEventListener","connectionNodeId","connectionHandleId","connectionHandleType","connectionStartHandle","addEventListener","alwaysValid","selector$f","connectOnClick","noPanClassName","connectingSelector","startHandle","connectionClickStartHandle","clickHandle","state","connecting","clickConnecting","Handle","forwardRef","isConnectable","isConnectableStart","isConnectableEnd","onMouseDown","onTouchStart","zustand_shallow__WEBPACK_IMPORTED_MODULE_5__","X","onError","onConnectExtended","defaultEdgeOptions","onConnectAction","hasDefaultEdges","params","setEdges","onPointerDown","button","connectablestart","connectableend","connectionindicator","onClick","onClickConnectStart","onClickConnectEnd","isValidConnectionStore","isValidConnectionHandler","Handle$1","DefaultNode","data","DefaultNode$1","InputNode","InputNode$1","OutputNode","OutputNode$1","GroupNode","selector$e","selectedNodes","selected","selectedEdges","selectId","areEqual","SelectionListener","onSelectionChange","fn","changeSelector","Wrapper$1","storeHasSelectionChange","selector$d","setNodes","setDefaultNodesAndEdges","setMinZoom","setMaxZoom","setTranslateExtent","setNodeExtent","reset","useStoreUpdater","setStoreState","useDirectStoreUpdater","StoreUpdater","defaultNodes","defaultEdges","nodesDraggable","nodesConnectable","nodesFocusable","edgesFocusable","edgesUpdatable","elevateNodesOnSelect","nodeExtent","onNodesChange","onEdgesChange","elementsSelectable","snapGrid","translateExtent","fitView","fitViewOptions","onNodesDelete","onEdgesDelete","onNodeDrag","onNodeDragStart","onNodeDragStop","onSelectionDrag","onSelectionDragStart","onSelectionDragStop","autoPanOnNodeDrag","nodeDragThreshold","display","ariaLiveStyle","margin","border","overflow","clip","clipPath","ARIA_NODE_DESC_KEY","ARIA_EDGE_DESC_KEY","selector$c","ariaLiveMessage","AriaLiveMessage","A11yDescriptions","disableKeyboardA11y","useKeyPress","keyCode","options","actInsideInputWithModifier","keyPressed","setKeyPressed","modifierPressed","pressedKeys","Set","keyCodes","keysToWatch","keyCodeArr","Array","isArray","kc","keysFlat","item","downHandler","ctrlKey","metaKey","shiftKey","keyOrCode","useKeyOrCode","code","isMatchingKey","preventDefault","upHandler","clear","delete","resetHandler","isUp","every","has","k","eventCode","updateAbsoluteNodePositions","parentNodes","parentId","parentNode","z","calculateXYZPosition","get","parentNodePosition","isParent","createNodeInternals","nextNodeInternals","Map","selectedNodeZ","zIndex","currInternals","internals","defineProperty","enumerable","resetHandleBounds","set","d3Zoom","d3Selection","fitViewOnInitDone","fitViewOnInit","isInitialFitView","initial","d3initialized","includeHiddenNodes","optionNode","nodesInitialized","nextTransform","d3_zoom__WEBPACK_IMPORTED_MODULE_1__","CR","translate","scale","updateNodesAndEdgesSelections","changedNodes","changedEdges","hasDefaultNodes","nodeChanges","change","edgeChanges","noop","initialViewportHelper","zoomIn","zoomOut","zoomTo","getZoom","setViewport","getViewport","setCenter","fitBounds","project","screenToFlowPosition","flowToScreenPosition","viewportInitialized","selector$b","useViewportHelper","scaleBy","zoomLevel","scaleTo","nextZoom","console","warn","domX","domY","rendererPosition","useReactFlow","viewportHelper","useCallback","getNode","getEdges","getEdge","nextNodes","payload","nextEdges","addNodes","addEdges","toObject","viewport","deleteElements","nodesDeleted","edgesDeleted","edgeIds","nodesToRemove","parentHit","deletable","deletableEdges","initialHitEdges","edgesToRemove","edgeIdsToRemove","getNodeRect","isRect","nodeOrRect","getIntersectingNodes","nodeRect","partiallyVisible","isNodeIntersecting","deleteKeyOptions","useGlobalKeyHandler","deleteKeyCode","multiSelectionKeyCode","deleteKeyPressed","multiSelectionKeyPressed","nodesSelectionActive","multiSelectionActive","containerStyle","viewChanged","prevViewport","eventTransform","eventToFlowTransform","isWrappedWithClass","isRightClickPan","panOnDrag","usedButton","wheelDelta","factor","deltaY","deltaMode","selector$a","d3ZoomHandler","ZoomPane","onMove","onMoveStart","onMoveEnd","onPaneContextMenu","zoomOnScroll","zoomOnPinch","panOnScroll","panOnScrollSpeed","panOnScrollMode","Free","zoomOnDoubleClick","defaultViewport","zoomActivationKeyCode","preventScrolling","noWheelClassName","timerId","isZoomingOrPanning","zoomedWithRightMouseButton","zoomPane","prevTransform","zoomActivationKeyPressed","mouseButton","isPanScrolling","panScrollTimeout","useResizeHandler","rendererNode","resizeObserver","updateDimensions","ResizeObserver","observe","unobserve","bbox","d3ZoomInstance","sP","scaleExtent","d3_selection__WEBPACK_IMPORTED_MODULE_6__","call","updatedTransform","constrainedTransform","constrain","on","invalidEvent","passive","stopImmediatePropagation","currentZoom","property","point","d3_selection__WEBPACK_IMPORTED_MODULE_7__","pinchDelta","deltaNormalize","deltaX","Vertical","Horizontal","translateBy","internal","nextViewport","onViewportChangeStart","onViewportChange","onViewportChangeEnd","clearTimeout","setTimeout","sourceEvent","flowTransform","paneDragging","zoomScroll","pinchZoom","buttonAllowed","selector$9","userSelectionRect","UserSelection","handleParentExpand","updateItem","parent","extendWidth","extendHeight","xDiff","yDiff","applyChanges","changes","elements","initElements","currentChanges","currentChange","expandParent","dimensions","updateStyle","resizing","applyNodeChanges","createSelectionChange","getSelectionChanges","items","selectedIds","willBeSelected","wrapHandler","containerRef","selector$8","Pane","isSelecting","selectionMode","Full","onSelectionStart","onSelectionEnd","onPaneClick","onPaneScroll","onPaneMouseEnter","onPaneMouseMove","onPaneMouseLeave","container","prevSelectedNodesCount","prevSelectedEdgesCount","resetUserSelection","resetSelectedElements","hasActiveSelection","onContextMenu","onWheel","onMouseEnter","startX","startY","onMouseMove","mousePos","nextUserSelectRect","Partial","selectedEdgeIds","selectedNodeIds","onMouseUp","onMouseLeave","hasSelector","nodeRef","matches","parentElement","calcNextPosition","nextPosition","clampedNodeExtent","currentExtent","parentX","parentY","parentPosition","getEventHandlerParams","dragItems","extentedDragItems","getHandleBounds","nodeElement","querySelectorAll","handlesArray","from","nodeBounds","nodeOffset","getMouseHandler","handleNodeClick","unselect","addSelectedNodes","unselectNodesAndEdges","blur","wrapSelectionDragFunc","selectionFunc","_","useDrag","disabled","noDragClassName","handleSelector","isSelectable","selectNodesOnDrag","setDragging","lastPos","mousePosition","dragEvent","dragStarted","abortDrag","getPointerPosition","useGetPointerPosition","pointerPos","xSnapped","ySnapped","updateNodes","updateNodePositions","hasChange","nodesBox","adjustedNodeExtent","updatedPos","onDrag","currentNode","startDrag","onStart","values","isParentSelected","draggable","delta","dragHandler","d3_drag__WEBPACK_IMPORTED_MODULE_8__","onStop","useUpdateNodePositions","xVelo","yVelo","isShiftPressed","positionDiffX","positionDiffY","arrowKeyDiffs","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","wrapNode","NodeWrapper","xPos","yPos","xPosOrigin","yPosOrigin","onDoubleClick","isDraggable","isFocusable","dragHandle","initialized","ariaLabel","hasHandleBounds","prevNodeRef","prevSourcePosition","prevTargetPosition","prevType","hasPointerEvents","updatePositions","onMouseEnterHandler","onMouseMoveHandler","onMouseLeaveHandler","onContextMenuHandler","onDoubleClickHandler","currNode","typeChanged","sourcePosChanged","targetPosChanged","updateNodeDimensions","forceUpdate","onKeyDown","prototype","hasOwnProperty","replace","toLowerCase","tabIndex","role","NodeComponent","selector$7","transformString","NodesSelection$1","onSelectionContextMenu","focus","preventScroll","selector$6","FlowRenderer","selectionKeyCode","selectionOnDrag","panActivationKeyCode","_panOnScroll","_panOnDrag","selectionKeyPressed","panActivationKeyPressed","FlowRenderer$1","createNodeTypes","nodeTypes","standardTypes","input","default","output","group","specialTypes","getPositionWithOrigin","origin","selector$5","NodeRenderer","onlyRenderVisible","onlyRenderVisibleElements","resizeObserverRef","observer","entries","entry","disconnect","focusable","clampedPosition","posX","posY","posOrigin","onNodeClick","onNodeMouseEnter","onNodeMouseMove","onNodeMouseLeave","onNodeContextMenu","onNodeDoubleClick","NodeRenderer$1","shiftX","shift","shiftY","EdgeUpdaterClassName","EdgeAnchor","radius","onMouseOut","cx","cy","r","stroke","alwaysValidConnection","wrapEdge","EdgeWrapper","onEdgeDoubleClick","animated","sourceHandleId","targetHandleId","reconnectRadius","onReconnect","onReconnectStart","isReconnectable","updateHover","setUpdateHover","updating","setUpdating","markerStartUrl","markerEndUrl","onEdgeDoubleClickHandler","onEdgeContextMenu","onEdgeMouseEnter","onEdgeMouseMove","onEdgeMouseLeave","handleEdgeUpdater","isSourceHandle","evt","onEdgeUpdaterMouseEnter","onEdgeUpdaterMouseOut","inactive","addSelectedEdges","EdgeComponent","createEdgeTypes","edgeTypes","straight","bezier","step","smoothstep","simplebezier","getHandlePosition","getHandle","getEdgePositions","sourceNodeRect","targetNodeRect","sourceHandlePos","targetHandlePos","getNodeData","defaultEdgeTree","level","isMaxLevel","MarkerSymbols","Arrow","color","strokeLinecap","strokeLinejoin","ArrowClosed","Marker","markerUnits","orient","useMarkerSymbol","markerWidth","markerHeight","viewBox","refX","refY","markerSelector","defaultColor","ids","markers","markerId","localeCompare","MarkerDefinitions","m","MarkerDefinitions$1","selector$4","EdgeRenderer","defaultMarkerColor","elevateEdgesOnSelect","onEdgeClick","edgeTree","groupEdgesByZLevel","maxLevel","tree","hasZIndex","targetNode","sourceNode","edgeOrConnectedNodeSelected","selectedZIndex","isEdgeVisible","sourcePos","targetPos","sourceWidth","sourceHeight","targetWidth","targetHeight","edgeBox","sourceHandleBounds","sourceIsValid","targetHandleBounds","targetIsValid","targetNodeHandles","edgeReconnectable","reconnectable","updatable","EdgeRenderer$1","selector$3","Viewport","oppositePosition","ConnectionLine","Bezier","CustomComponent","fromNode","toX","toY","fromHandleBounds","Loose","fromHandle","fromHandleX","fromHandleY","fromX","fromY","fromPosition","toPosition","connectionLineType","connectionLineStyle","dAttr","pathParams","Step","SmoothStep","SimpleBezier","selector$2","ConnectionLineWrapper","component","useNodeOrEdgeTypes","nodeOrEdgeTypes","createTypes","GraphView","onInit","connectionLineComponent","connectionLineContainerStyle","nodeTypesWrapped","edgeTypesWrapped","useOnInitHandler","rfInstance","isInitialized","GraphView$1","infiniteExtent","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","initialState","fitViewOnInitOptions","createRFStore","F","viewportNode","getComputedStyle","m22","DOMMatrixReadOnly","updates","update","nextFitViewOnInitDone","nodeDragItems","positionChanged","triggerNodeChanges","edgeId","storeEdges","nodesToUnselect","edgesToUnselect","is","ReactFlowProvider","storeRef","Wrapper","defaultNodeTypes","defaultEdgeTypes","initNodeOrigin","initSnapGrid","initDefaultViewport","wrapperStyle","ReactFlow","onEdgeUpdate","onEdgeUpdateStart","onEdgeUpdateEnd","edgeUpdaterRadius","attributionPosition","createUseItemsState","setItems","initialItems","onItemsChange","useNodesState","useEdgesState"],"sourceRoot":""}