{"version":3,"file":"static/js/vendors-4f4b572b.86368bc9.js","mappings":"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","sources":["../node_modules/@reactflow/core/node_modules/zustand/esm/vanilla.mjs","../node_modules/@reactflow/core/node_modules/zustand/esm/traditional.mjs","../node_modules/@reactflow/core/node_modules/zustand/esm/shallow.mjs","../node_modules/@reactflow/core/dist/esm/index.mjs"],"sourcesContent":["const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, getInitialState, subscribe, destroy };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","import ReactExports from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\nimport { createStore } from 'zustand/vanilla';\n\nconst { useDebugValue } = ReactExports;\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nconst identity = (arg) => arg;\nfunction useStoreWithEqualityFn(api, selector = identity, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getInitialState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createWithEqualityFnImpl = (createState, defaultEqualityFn) => {\n const api = createStore(createState);\n const useBoundStoreWithEqualityFn = (selector, equalityFn = defaultEqualityFn) => useStoreWithEqualityFn(api, selector, equalityFn);\n Object.assign(useBoundStoreWithEqualityFn, api);\n return useBoundStoreWithEqualityFn;\n};\nconst createWithEqualityFn = (createState, defaultEqualityFn) => createState ? createWithEqualityFnImpl(createState, defaultEqualityFn) : createWithEqualityFnImpl;\n\nexport { createWithEqualityFn, useStoreWithEqualityFn };\n","function shallow$1(objA, objB) {\n if (Object.is(objA, objB)) {\n return true;\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n if (objA instanceof Map && objB instanceof Map) {\n if (objA.size !== objB.size) return false;\n for (const [key, value] of objA) {\n if (!Object.is(value, objB.get(key))) {\n return false;\n }\n }\n return true;\n }\n if (objA instanceof Set && objB instanceof Set) {\n if (objA.size !== objB.size) return false;\n for (const value of objA) {\n if (!objB.has(value)) {\n return false;\n }\n }\n return true;\n }\n const keysA = Object.keys(objA);\n if (keysA.length !== Object.keys(objB).length) {\n return false;\n }\n for (const keyA of keysA) {\n if (!Object.prototype.hasOwnProperty.call(objB, keyA) || !Object.is(objA[keyA], objB[keyA])) {\n return false;\n }\n }\n return true;\n}\n\nvar shallow = (objA, objB) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { shallow } from 'zustand/shallow'`.\"\n );\n }\n return shallow$1(objA, objB);\n};\n\nexport { shallow as default, shallow$1 as shallow };\n","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":["createStoreImpl","createState","state","listeners","Set","setState","partial","replace","nextState","Object","is","previousState","assign","forEach","listener","getState","api","getInitialState","initialState","subscribe","add","delete","destroy","clear","createStore","useDebugValue","ReactExports","useSyncExternalStoreWithSelector","useSyncExternalStoreExports","identity","arg","useStoreWithEqualityFn","selector","arguments","length","undefined","equalityFn","slice","getServerState","createWithEqualityFnImpl","defaultEqualityFn","useBoundStoreWithEqualityFn","shallow$1","objA","objB","Map","size","key","value","get","has","keysA","keys","keyA","prototype","hasOwnProperty","call","StoreContext","createContext","Provider$1","Provider","errorMessages","nodeType","concat","error004","error005","error006","type","error008","sourceHandle","edge","targetHandle","id","error010","edgeType","zustandErrorMessage","error001","useStore","store","useContext","Error","useStoreApi","useMemo","selector$g","s","userSelectionActive","Panel","_ref","position","children","className","style","rest","_objectWithoutProperties","_excluded","pointerEvents","positionClasses","split","React","_objectSpread","cc","Attribution","_ref2","proOptions","hideAttribution","href","target","rel","EdgeText$1","memo","_ref3","x","y","label","labelStyle","labelShowBg","labelBgStyle","labelBgPadding","labelBgBorderRadius","_excluded2","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","abs","calcAutoPan","pos","bounds","getHostForElement","element","_element$getRootNode","_window","getRootNode","window","document","getBoundsOfBoxes","box1","box2","x2","y2","rectToBox","_ref4","boxToRect","_ref5","nodeToRect","positionAbsolute","getBoundsOfRects","rect1","rect2","getOverlappingArea","rectA","rectB","xOverlap","yOverlap","ceil","isRectObject","obj","isNumeric","n","isNaN","isFinite","internalsSymbol","Symbol","for","elementSelectionKeys","devWarn","message","process","isInputDOMNode","event","_kbEvent$composedPath","kbEvent","isReactKeyboardEvent","nativeEvent","composedPath","includes","nodeName","hasAttribute","closest","isMouseEvent","getEventPosition","_event$touches","_event$touches2","_bounds$left","_bounds$top","isMouseTriggered","evtX","clientX","touches","evtY","clientY","left","top","isMacOs","_navigator","navigator","userAgent","indexOf","BaseEdge","_ref6","path","labelX","labelY","markerEnd","markerStart","interactionWidth","d","fill","strokeOpacity","strokeWidth","displayName","getMouseHandler$1","handler","edges","find","e","getEdgeCenter","_ref7","sourceX","sourceY","targetX","targetY","xOffset","centerX","yOffset","getBezierEdgeCenter","_ref8","sourceControlX","sourceControlY","targetControlX","targetControlY","centerY","ConnectionMode","PanOnScrollMode","SelectionMode","ConnectionLineType","MarkerType","Position","getControl","_ref9","x1","y1","Left","Right","getSimpleBezierPath","_ref10","sourcePosition","Bottom","targetPosition","Top","offsetX","offsetY","SimpleBezierEdge","_ref11","handleDirections","getDirection","_ref12","source","distance","a","b","sqrt","pow","getSmoothStepPath","_ref14","borderRadius","offset","points","_ref13","center","sourceDir","targetDir","sourceGapped","targetGapped","dir","dirAccessor","currDir","sourceGapOffset","targetGapOffset","defaultCenterX","defaultCenterY","defaultOffsetX","defaultOffsetY","_center$x","_center$y","verticalSplit","horizontalSplit","sourceTarget","targetSource","diff","gapOffset","dirAccessorOpposite","isSameDir","sourceGtTargetOppo","sourceLtTargetOppo","sourceGapPoint","targetGapPoint","getPoints","reduce","res","p","i","segment","c","bendSize","xDir","yDir","getBend","SmoothStepEdge","_ref15","pathOptions","StepEdge","props","_props$pathOptions2","_props$pathOptions","getStraightPath","_ref16","StraightEdge","_ref17","calculateControlOffset","curvature","getControlWithCurvature","_ref18","getBezierPath","_ref19","BezierEdge","_ref20","NodeIdContext","Consumer","useNodeId","getEdgeId","_ref21","getMarkerId","marker","rfId","idPrefix","sort","map","join","addEdge","edgeParams","connectionExists","some","el","pointToRendererPoint","_ref22","_ref23","snapToGrid","_ref24","tx","ty","tScale","snapX","snapY","round","rendererPointToPoint","_ref25","_ref26","getNodePositionWithOrigin","_node$width","_node$height","nodeOrigin","getNodesBounds","nodes","box","currBox","Infinity","getNodesInside","nodeInternals","rect","partially","excludeNonSelectableNodes","paneRect","visibleNodes","selectable","hidden","nodeRect","overlappingArea","dragging","push","getConnectedEdges","nodeIds","filter","getViewportForBounds","minZoom","maxZoom","padding","xZoom","yZoom","zoom","clampedZoom","getD3Transition","selection","duration","transition","getHandles","handleBounds","currentHandle","h","_node$positionAbsolut","_node$positionAbsolut2","_node$positionAbsolut3","_node$positionAbsolut4","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","getConnectionStatus","isInsideConnectionRadius","isHandleValid","connectionStatus","handlePointerDown","_ref31","onConnect","onReconnectEnd","domNode","autoPanOnConnect","connectionRadius","onConnectStart","panBy","getNodes","cancelConnection","closestHandle","autoPanId","clickedHandle","elementFromPoint","containerBounds","getBoundingClientRect","prevActiveHandle","connectionPosition","autoPanStarted","handleLookup","_ref30","sourceHandles","targetHandles","getHandleLookup","autoPan","xMovement","yMovement","requestAnimationFrame","onPointerMove","validHandleResult","handles","validator","handleBelow","elementsFromPoint","closestHandles","minDistance","hasValidHandle","_ref27","hasTargetHandle","_ref28","_ref29","getClosestHandle","connectionEndHandle","toggle","onPointerUp","_getState$onConnectEn","_getState","onConnectEnd","cancelAnimationFrame","removeEventListener","connectionNodeId","connectionHandleId","connectionHandleType","connectionStartHandle","addEventListener","alwaysValid","selector$f","connectOnClick","noPanClassName","Handle","forwardRef","_ref32","isConnectable","isConnectableStart","isConnectableEnd","onMouseDown","onTouchStart","_excluded4","shallow","connecting","clickConnecting","connectingSelector","startHandle","connectionClickStartHandle","clickHandle","_store$getState$onErr","_store$getState","onError","onConnectExtended","params","defaultEdgeOptions","onConnectAction","hasDefaultEdges","setEdges","onPointerDown","button","connectablestart","connectableend","connectionindicator","onClick","onClickConnectStart","onClickConnectEnd","isValidConnectionStore","isValidConnectionHandler","Handle$1","DefaultNode","_ref33","data","DefaultNode$1","InputNode","_ref34","InputNode$1","OutputNode","_ref35","OutputNode$1","GroupNode","selector$e","selectedNodes","selected","selectedEdges","selectId","areEqual","SelectionListener","_ref36","onSelectionChange","fn","changeSelector","Wrapper$1","_ref37","storeHasSelectionChange","selector$d","setNodes","setDefaultNodesAndEdges","setMinZoom","setMaxZoom","setTranslateExtent","setNodeExtent","reset","useStoreUpdater","setStoreState","useDirectStoreUpdater","StoreUpdater","_ref38","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","edgesWithDefaults","display","ariaLiveStyle","margin","border","overflow","clip","clipPath","ARIA_NODE_DESC_KEY","ARIA_EDGE_DESC_KEY","selector$c","ariaLiveMessage","AriaLiveMessage","_ref39","A11yDescriptions","_ref40","disableKeyboardA11y","useKeyPress","keyCode","options","actInsideInputWithModifier","keyPressed","setKeyPressed","modifierPressed","pressedKeys","keyCodes","keysToWatch","Array","isArray","kc","keysFlat","item","downHandler","ctrlKey","metaKey","shiftKey","keyOrCode","useKeyOrCode","code","isMatchingKey","preventDefault","upHandler","resetHandler","isUp","every","k","eventCode","calculateXYZPosition","_result$x","_result$y","_parentNode$internals","_parentNode$internals2","_result$z","_parentNode$internals3","_parentNode$internals4","_result$z2","parentId","parentNode","parentNodePosition","z","updateAbsoluteNodePositions","parentNodes","_node$internalsSymbol","_node$internalsSymbol2","isParent","createNodeInternals","nextNodeInternals","selectedNodeZ","_currInternals$intern","zIndex","currInternals","internals","resetHandleBounds","defineProperty","enumerable","set","d3Zoom","d3Selection","fitViewOnInitDone","fitViewOnInit","isInitialFitView","initial","_options$nodes","isVisible","includeHiddenNodes","optionNode","nodesInitialized","_options$minZoom","_options$maxZoom","_options$padding","nextTransform","zoomIdentity","translate","scale","handleControlledNodeSelectionChange","nodeChanges","change","handleControlledEdgeSelectionChange","edgeChanges","updateNodesAndEdgesSelections","_ref41","changedNodes","changedEdges","hasDefaultNodes","noop","initialViewportHelper","zoomIn","zoomOut","zoomTo","getZoom","setViewport","getViewport","setCenter","fitBounds","project","screenToFlowPosition","flowToScreenPosition","viewportInitialized","selector$b","useViewportHelper","scaleBy","zoomLevel","scaleTo","_transform$x","_transform$y","_transform$zoom","nextZoom","_options$padding2","domX","domY","relativePosition","rendererPosition","useReactFlow","viewportHelper","useCallback","getNode","getEdges","getEdge","payload","nextNodes","nextEdges","addNodes","addEdges","toObject","viewport","deleteElements","_ref42","nodesDeleted","edgesDeleted","edgeIds","nodesToRemove","parentHit","deletable","deletableEdges","initialHitEdges","connectedEdges","edgesToRemove","edgeIdsToRemove","getNodeRect","nodeOrRect","isRect","getIntersectingNodes","currNodeRect","isNodeIntersecting","area","deleteKeyOptions","containerStyle","eventToFlowTransform","eventTransform","isWrappedWithClass","isRightClickPan","panOnDrag","usedButton","wheelDelta","factor","deltaY","deltaMode","selector$a","d3ZoomHandler","ZoomPane","_ref44","onMove","onMoveStart","onMoveEnd","onPaneContextMenu","zoomOnScroll","zoomOnPinch","panOnScroll","panOnScrollSpeed","panOnScrollMode","Free","zoomOnDoubleClick","defaultViewport","zoomActivationKeyCode","preventScrolling","noWheelClassName","timerId","isZoomingOrPanning","zoomedWithRightMouseButton","zoomPane","prevTransform","zoomActivationKeyPressed","mouseButton","isPanScrolling","panScrollTimeout","rendererNode","resizeObserver","updateDimensions","_store$getState$onErr2","_store$getState2","ResizeObserver","observe","unobserve","useResizeHandler","bbox","d3ZoomInstance","scaleExtent","select","updatedTransform","constrainedTransform","constrain","on","this","passive","stopImmediatePropagation","currentZoom","property","point","pointer","pinchDelta","deltaNormalize","deltaX","Vertical","Horizontal","translateBy","internal","nextViewport","onViewportChangeStart","onViewportChange","onViewportChangeEnd","clearTimeout","setTimeout","_event$sourceEvent","_event$sourceEvent2","sourceEvent","flowTransform","paneDragging","_mouseButton$current","_event$sourceEvent3","_mouseButton$current2","prevViewport","viewChanged","zoomScroll","pinchZoom","buttonAllowed","selector$9","userSelectionRect","UserSelection","handleParentExpand","updateItem","parent","extendWidth","extendHeight","_parent$style$width","_parent$style$height","xDiff","yDiff","applyChanges","changes","elements","initElements","currentChanges","currentChange","expandParent","dimensions","updateStyle","resizing","applyNodeChanges","createSelectionChange","getSelectionChanges","items","selectedIds","willBeSelected","wrapHandler","containerRef","selector$8","Pane","_ref45","isSelecting","selectionMode","Full","onSelectionStart","onSelectionEnd","onPaneClick","onPaneScroll","onPaneMouseEnter","onPaneMouseMove","onPaneMouseLeave","container","prevSelectedNodesCount","prevSelectedEdgesCount","resetUserSelection","resetSelectedElements","nodesSelectionActive","onWheel","hasActiveSelection","onContextMenu","onMouseEnter","startX","startY","onMouseMove","_userSelectionRect$st","_userSelectionRect$st2","mousePos","nextUserSelectRect","Partial","selectedEdgeIds","selectedNodeIds","onMouseUp","onMouseLeave","isParentSelected","hasSelector","nodeRef","_current","matches","parentElement","getDragItems","from","values","draggable","_n$positionAbsolute$x","_n$positionAbsolute","_n$positionAbsolute$y","_n$positionAbsolute2","delta","calcNextPosition","nextPosition","clampedNodeExtent","clampNodeExtent","currentExtent","parentX","parentY","parentPosition","getEventHandlerParams","_ref46","dragItems","extentedDragItems","getHandleBounds","nodeElement","querySelectorAll","handlesArray","nodeBounds","nodeOffset","getMouseHandler","handleNodeClick","_ref47","unselect","addSelectedNodes","unselectNodesAndEdges","multiSelectionActive","_nodeRef$current","blur","useGetPointerPosition","_ref48","pointerPos","xSnapped","ySnapped","wrapSelectionDragFunc","selectionFunc","_","useDrag","_ref49","disabled","noDragClassName","handleSelector","isSelectable","selectNodesOnDrag","setDragging","lastPos","mousePosition","dragEvent","dragStarted","abortDrag","getPointerPosition","updateNodes","_ref50","updateNodePositions","hasChange","nodesBox","adjustedNodeExtent","_n$width","_n$height","updatedPos","onDrag","currentNode","_lastPos$current$x","_lastPos$current$y","startDrag","onStart","_nodeInternals$get","dragHandler","drag","_lastPos$current$x2","_lastPos$current","_lastPos$current$y2","_lastPos$current2","onStop","useUpdateNodePositions","xVelo","yVelo","isShiftPressed","positionDiffX","positionDiffY","arrowKeyDiffs","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","wrapNode","NodeComponent","NodeWrapper","_ref51","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","toLowerCase","tabIndex","role","selector$7","transformString","NodesSelection$1","_ref52","onSelectionContextMenu","_nodeRef$current2","focus","preventScroll","selector$6","FlowRenderer","_ref53","deleteKeyCode","selectionKeyCode","selectionOnDrag","multiSelectionKeyCode","panActivationKeyCode","_panOnScroll","_panOnDrag","selectionKeyPressed","panActivationKeyPressed","_ref43","deleteKeyPressed","multiSelectionKeyPressed","useGlobalKeyHandler","FlowRenderer$1","createNodeTypes","nodeTypes","standardTypes","input","default","output","group","specialTypes","selector$5","NodeRenderer","onlyRenderVisible","onlyRenderVisibleElements","resizeObserverRef","observer","entries","updates","entry","_resizeObserverRef$cu","disconnect","_clampedPosition$x","_clampedPosition$y","_node$width2","_node$height2","_node$internalsSymbol3","_node$internalsSymbol4","_node$internalsSymbol5","_node$internalsSymbol6","focusable","clampedPosition","posX","posY","posOrigin","_ref54","origin","getPositionWithOrigin","onNodeClick","onNodeMouseEnter","onNodeMouseMove","onNodeMouseLeave","onNodeContextMenu","onNodeDoubleClick","NodeRenderer$1","shiftX","shift","shiftY","EdgeUpdaterClassName","EdgeAnchor","_ref55","radius","onMouseOut","cx","cy","r","stroke","alwaysValidConnection","wrapEdge","EdgeComponent","EdgeWrapper","_ref56","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","_edgeRef$current","_edgeRef$current2","createEdgeTypes","edgeTypes","straight","bezier","step","smoothstep","simplebezier","getHandlePosition","getHandle","getNodeData","_node$internalsSymbol7","_node$positionAbsolut5","_node$positionAbsolut6","_node$positionAbsolut7","_node$positionAbsolut8","defaultEdgeTree","level","isMaxLevel","useVisibleEdges","elevateEdgesOnSelect","maxLevel","levelLookup","tree","hasZIndex","_sourceNode$internals","_targetNode$internals","targetNode","sourceNode","edgeOrConnectedNodeSelected","selectedZIndex","edgeTree","_ref58","groupEdgesByZLevel","_ref57","sourcePos","targetPos","sourceWidth","sourceHeight","targetWidth","targetHeight","edgeBox","viewBox","isEdgeVisible","MarkerSymbols","Arrow","_ref59","color","strokeLinecap","strokeLinejoin","ArrowClosed","_ref60","Marker","_ref61","markerUnits","orient","_store$getState$onErr3","_store$getState3","useMarkerSymbol","markerWidth","markerHeight","refX","refY","MarkerDefinitions","_ref63","defaultColor","markers","_ref62","ids","markerId","localeCompare","markerSelector","m","MarkerDefinitions$1","selector$4","EdgeRenderer","_ref64","defaultMarkerColor","onEdgeClick","_ref65","_targetHandleBounds$t","_targetHandleBounds$s","sourceNodeRect","sourceHandleBounds","sourceIsValid","targetNodeRect","targetHandleBounds","targetIsValid","targetNodeHandles","edgeReconnectable","reconnectable","updatable","getEdgePositions","sourceHandlePos","targetHandlePos","EdgeRenderer$1","selector$3","Viewport","_ref66","oppositePosition","ConnectionLine","_ref67","_fromNode$internalsSy","_fromNode$width","_fromNode$height","_fromNode$positionAbs","_fromNode$positionAbs2","_fromNode$positionAbs3","_fromNode$positionAbs4","Bezier","CustomComponent","fromNode","toX","toY","fromHandleBounds","Loose","fromHandle","fromHandleX","fromHandleY","fromX","fromY","fromPosition","toPosition","connectionLineType","connectionLineStyle","dAttr","pathParams","Step","SmoothStep","SimpleBezier","selector$2","ConnectionLineWrapper","_ref68","component","useNodeOrEdgeTypes","nodeOrEdgeTypes","createTypes","GraphView","_ref69","onInit","connectionLineComponent","connectionLineContainerStyle","nodeTypesWrapped","edgeTypesWrapped","rfInstance","isInitialized","useOnInitHandler","GraphView$1","infiniteExtent","Number","NEGATIVE_INFINITY","POSITIVE_INFINITY","fitViewOnInitOptions","createRFStore","createWithEqualityFn","viewportNode","getComputedStyle","m22","DOMMatrixReadOnly","update","nextFitViewOnInitDone","nodeDragItems","positionChanged","triggerNodeChanges","edgeId","storeEdges","edgesToUnselect","_get$d3Zoom","ReactFlowProvider","_ref70","storeRef","Wrapper","_ref71","defaultNodeTypes","defaultEdgeTypes","initNodeOrigin","initSnapGrid","initDefaultViewport","wrapperStyle","ReactFlow","_ref72","onEdgeUpdate","onEdgeUpdateStart","onEdgeUpdateEnd","edgeUpdaterRadius","attributionPosition","_excluded5","selector$1","_s$domNode","EdgeLabelRenderer","_ref73","edgeLabelRenderer","createPortal","useUpdateNodeInternals","updateId","viewportSelector","useViewport","createUseItemsState","initialItems","setItems","onItemsChange","useNodesState","useEdgesState"],"sourceRoot":""}