diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/NodeResizeControl.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/NodeResizeControl.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2c9a83b911a15f1eaded904aa47328c70a769405 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/NodeResizeControl.d.ts @@ -0,0 +1,11 @@ +import type { ResizeControlProps, ResizeControlLineProps } from './types'; +declare function ResizeControl({ nodeId, position, variant, className, style, children, color, minWidth, minHeight, maxWidth, maxHeight, keepAspectRatio, resizeDirection, autoScale, shouldResize, onResizeStart, onResize, onResizeEnd, }: ResizeControlProps): import("react/jsx-runtime").JSX.Element; +export declare function ResizeControlLine(props: ResizeControlLineProps): import("react/jsx-runtime").JSX.Element; +/** + * To create your own resizing UI, you can use the `NodeResizeControl` component where you can pass children (such as icons). + * @public + * + */ +export declare const NodeResizeControl: import("react").MemoExoticComponent; +export {}; +//# sourceMappingURL=NodeResizeControl.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/NodeResizeControl.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/NodeResizeControl.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..75fd3a255aae2312822b2fdd337f97b8b0021f24 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/NodeResizeControl.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NodeResizeControl.d.ts","sourceRoot":"","sources":["../../../src/additional-components/NodeResizer/NodeResizeControl.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAW1E,iBAAS,aAAa,CAAC,EACrB,MAAM,EACN,QAAQ,EACR,OAAqC,EACrC,SAAS,EACT,KAAiB,EACjB,QAAQ,EACR,KAAK,EACL,QAAa,EACb,SAAc,EACd,QAA2B,EAC3B,SAA4B,EAC5B,eAAuB,EACvB,eAAe,EACf,SAAgB,EAChB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,WAAW,GACZ,EAAE,kBAAkB,2CA4KpB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,2CAE9D;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,2DAAsB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/NodeResizer.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/NodeResizer.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..bb00652076993af6983bdf36d2f2d8ba5990e7c2 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/NodeResizer.d.ts @@ -0,0 +1,27 @@ +import type { NodeResizerProps } from './types'; +/** + * The `` component can be used to add a resize functionality to your + * nodes. It renders draggable controls around the node to resize in all directions. + * @public + * + * @example + *```jsx + *import { memo } from 'react'; + *import { Handle, Position, NodeResizer } from '@xyflow/react'; + * + *function ResizableNode({ data }) { + * return ( + * <> + * + * + *
{data.label}
+ * + * + * ); + *}; + * + *export default memo(ResizableNode); + *``` + */ +export declare function NodeResizer({ nodeId, isVisible, handleClassName, handleStyle, lineClassName, lineStyle, color, minWidth, minHeight, maxWidth, maxHeight, keepAspectRatio, autoScale, shouldResize, onResizeStart, onResize, onResizeEnd, }: NodeResizerProps): import("react/jsx-runtime").JSX.Element | null; +//# sourceMappingURL=NodeResizer.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/NodeResizer.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/NodeResizer.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..22ce64e60832bc3f91cb2eb8505bd31e37c1b9b3 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/NodeResizer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NodeResizer.d.ts","sourceRoot":"","sources":["../../../src/additional-components/NodeResizer/NodeResizer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,SAAgB,EAChB,eAAe,EACf,WAAW,EACX,aAAa,EACb,SAAS,EACT,KAAK,EACL,QAAa,EACb,SAAc,EACd,QAA2B,EAC3B,SAA4B,EAC5B,eAAuB,EACvB,SAAgB,EAChB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,WAAW,GACZ,EAAE,gBAAgB,kDAkDlB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..58c7e6a9e3c47ce7ef7f974f7ce378c21b93bbb1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/index.d.ts @@ -0,0 +1,4 @@ +export { NodeResizer } from './NodeResizer'; +export { NodeResizeControl } from './NodeResizeControl'; +export * from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..8187fea953251969d748bcaa3e9f2cace5c3c3d3 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/additional-components/NodeResizer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,cAAc,SAAS,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/types.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/types.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2e5d891f3d3c4f79827472d379f7c5b3b8616235 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/types.d.ts @@ -0,0 +1,97 @@ +import type { CSSProperties, ReactNode } from 'react'; +import type { ControlPosition, ControlLinePosition, ResizeControlVariant, ResizeControlDirection, ShouldResize, OnResizeStart, OnResize, OnResizeEnd } from '@xyflow/system'; +/** + * @expand + */ +export type NodeResizerProps = { + /** + * Id of the node it is resizing. + * @remarks optional if used inside custom node + */ + nodeId?: string; + /** Color of the resize handle. */ + color?: string; + /** Class name applied to handle. */ + handleClassName?: string; + /** Style applied to handle. */ + handleStyle?: CSSProperties; + /** Class name applied to line. */ + lineClassName?: string; + /** Style applied to line. */ + lineStyle?: CSSProperties; + /** + * Are the controls visible. + * @default true + */ + isVisible?: boolean; + /** + * Minimum width of node. + * @default 10 + */ + minWidth?: number; + /** + * Minimum height of node. + * @default 10 + */ + minHeight?: number; + /** + * Maximum width of node. + * @default Number.MAX_VALUE + */ + maxWidth?: number; + /** + * Maximum height of node. + * @default Number.MAX_VALUE + */ + maxHeight?: number; + /** + * Keep aspect ratio when resizing. + * @default false + */ + keepAspectRatio?: boolean; + /** + * Scale the controls with the zoom level. + * @default true + */ + autoScale?: boolean; + /** Callback to determine if node should resize. */ + shouldResize?: ShouldResize; + /** Callback called when resizing starts. */ + onResizeStart?: OnResizeStart; + /** Callback called when resizing. */ + onResize?: OnResize; + /** Callback called when resizing ends. */ + onResizeEnd?: OnResizeEnd; +}; +/** + * @expand + */ +export type ResizeControlProps = Pick & { + /** + * Position of the control. + * @example ControlPosition.TopLeft, ControlPosition.TopRight, + * ControlPosition.BottomLeft, ControlPosition.BottomRight + */ + position?: ControlPosition; + /** + * Variant of the control. + * @default "handle" + * @example ResizeControlVariant.Handle, ResizeControlVariant.Line + */ + variant?: ResizeControlVariant; + /** + * The direction the user can resize the node. + * If not provided, the user can resize in any direction. + */ + resizeDirection?: ResizeControlDirection; + className?: string; + style?: CSSProperties; + children?: ReactNode; +}; +/** + * @expand + */ +export type ResizeControlLineProps = Omit & { + position?: ControlLinePosition; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/types.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/types.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..4fbe2cc57bd0e827b34d8d59960ef9182159f905 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeResizer/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/additional-components/NodeResizer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,gBAAgB,EACd,QAAQ,GACR,OAAO,GACP,UAAU,GACV,WAAW,GACX,UAAU,GACV,WAAW,GACX,iBAAiB,GACjB,cAAc,GACd,WAAW,GACX,eAAe,GACf,UAAU,GACV,aAAa,CAChB,GAAG;IACF;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B;;;OAGG;IACH,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,GAAG;IACjF,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/NodeToolbar.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/NodeToolbar.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..571b5360a2659e0174d529187843eaf0ae88e24b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/NodeToolbar.d.ts @@ -0,0 +1,38 @@ +import type { NodeToolbarProps } from './types'; +/** + * This component can render a toolbar or tooltip to one side of a custom node. This + * toolbar doesn't scale with the viewport so that the content is always visible. + * + * @public + * @example + * ```jsx + *import { memo } from 'react'; + *import { Handle, Position, NodeToolbar } from '@xyflow/react'; + * + *function CustomNode({ data }) { + * return ( + * <> + * + * + * + * + * + * + *
+ * {data.label} + *
+ * + * + * + * + * ); + *}; + * + *export default memo(CustomNode); + *``` + * @remarks By default, the toolbar is only visible when a node is selected. If multiple + * nodes are selected it will not be visible to prevent overlapping toolbars or + * clutter. You can override this behavior by setting the `isVisible` prop to `true`. + */ +export declare function NodeToolbar({ nodeId, children, className, style, isVisible, position, offset, align, ...rest }: NodeToolbarProps): import("react/jsx-runtime").JSX.Element | null; +//# sourceMappingURL=NodeToolbar.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/NodeToolbar.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/NodeToolbar.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..960b0db9354c69a9b3fba9142b9d63c7e33dc85d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/NodeToolbar.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NodeToolbar.d.ts","sourceRoot":"","sources":["../../../src/additional-components/NodeToolbar/NodeToolbar.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA+BhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,EACL,SAAS,EACT,QAAuB,EACvB,MAAW,EACX,KAAgB,EAChB,GAAG,IAAI,EACR,EAAE,gBAAgB,kDAwDlB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/NodeToolbarPortal.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/NodeToolbarPortal.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..1036d76d2e3a108b836d03e3acc2b94e5c9fc9d7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/NodeToolbarPortal.d.ts @@ -0,0 +1,5 @@ +import { ReactNode } from 'react'; +export declare function NodeToolbarPortal({ children }: { + children: ReactNode; +}): import("react").ReactPortal | null; +//# sourceMappingURL=NodeToolbarPortal.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/NodeToolbarPortal.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/NodeToolbarPortal.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..ff908ea68eac0bc3c0c98a36f62744e5171cb0b4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/NodeToolbarPortal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NodeToolbarPortal.d.ts","sourceRoot":"","sources":["../../../src/additional-components/NodeToolbar/NodeToolbarPortal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQlC,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,sCAQtE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..ae78d041ecc79c61ed99fa676ffad883a3bfefbd --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/index.d.ts @@ -0,0 +1,3 @@ +export { NodeToolbar } from './NodeToolbar'; +export type { NodeToolbarProps } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..300eba1eb0e6609c14434c4df89b771d7b59101b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/additional-components/NodeToolbar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/types.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/types.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..0eedc0257bb205f10416187fb1e6027b68061a69 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/types.d.ts @@ -0,0 +1,32 @@ +import type { HTMLAttributes } from 'react'; +import type { Position, Align } from '@xyflow/system'; +/** + * @expand + */ +export type NodeToolbarProps = HTMLAttributes & { + /** + * By passing in an array of node id's you can render a single tooltip for a group or collection + * of nodes. + */ + nodeId?: string | string[]; + /** If `true`, node toolbar is visible even if node is not selected. */ + isVisible?: boolean; + /** + * Position of the toolbar relative to the node. + * @default Position.Top + * @example Position.TopLeft, Position.TopRight, Position.BottomLeft, Position.BottomRight + */ + position?: Position; + /** + * The space between the node and the toolbar, measured in pixels. + * @default 10 + */ + offset?: number; + /** + * Align the toolbar relative to the node. + * @default "center" + * @example Align.Start, Align.Center, Align.End + */ + align?: Align; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/types.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/types.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..6e8199fc923165dfda02f32856f85e7e6e5554e7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/NodeToolbar/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/additional-components/NodeToolbar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IAC9D;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f1217d0d1aeb0d5c4ee46691bb17b728dcf538c0 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/index.d.ts @@ -0,0 +1,7 @@ +export * from './Background'; +export * from './Controls'; +export * from './MiniMap'; +export * from './NodeResizer'; +export * from './NodeToolbar'; +export * from './EdgeToolbar'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..2d46a446d82536a3d4fc7183d0a1fd6edfd503f6 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/additional-components/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/additional-components/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/A11yDescriptions/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/A11yDescriptions/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..a8afaa3f26ba814fc5ccb82fa0cc805c3135ce82 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/A11yDescriptions/index.d.ts @@ -0,0 +1,8 @@ +export declare const ARIA_NODE_DESC_KEY = "react-flow__node-desc"; +export declare const ARIA_EDGE_DESC_KEY = "react-flow__edge-desc"; +export declare const ARIA_LIVE_MESSAGE = "react-flow__aria-live"; +export declare function A11yDescriptions({ rfId, disableKeyboardA11y }: { + rfId: string; + disableKeyboardA11y: boolean; +}): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/A11yDescriptions/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/A11yDescriptions/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..02a814cb7b270c647e8599084bd416c4a1b7e387 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/A11yDescriptions/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/A11yDescriptions/index.tsx"],"names":[],"mappings":"AAkBA,eAAO,MAAM,kBAAkB,0BAA0B,CAAC;AAC1D,eAAO,MAAM,kBAAkB,0BAA0B,CAAC;AAC1D,eAAO,MAAM,iBAAiB,0BAA0B,CAAC;AAezD,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,OAAO,CAAA;CAAE,2CAgB7G"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Attribution/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Attribution/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..bf992f92e2be54ec21cd9630cbc04555a91ef5e1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Attribution/index.d.ts @@ -0,0 +1,8 @@ +import type { PanelPosition, ProOptions } from '@xyflow/system'; +type AttributionProps = { + proOptions?: ProOptions; + position?: PanelPosition; +}; +export declare function Attribution({ proOptions, position }: AttributionProps): import("react/jsx-runtime").JSX.Element | null; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Attribution/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Attribution/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..fac86f385819e7d1126261925a99d9a3d4b1a226 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Attribution/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Attribution/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIhE,KAAK,gBAAgB,GAAG;IACtB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,CAAC;AAMF,wBAAgB,WAAW,CAAC,EAAE,UAAU,EAAE,QAAyB,EAAE,EAAE,gBAAgB,kDAgBtF"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..42650c68d2d5136e37e2441a7ee044def8a732d7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/index.d.ts @@ -0,0 +1,17 @@ +import { ReactNode } from 'react'; +import { Queue } from './types'; +import type { Edge, Node } from '../../types'; +/** + * This is a context provider that holds and processes the node and edge update queues + * that are needed to handle setNodes, addNodes, setEdges and addEdges. + * + * @internal + */ +export declare function BatchProvider({ children, }: { + children: ReactNode; +}): import("react/jsx-runtime").JSX.Element; +export declare function useBatchContext(): { + nodeQueue: Queue; + edgeQueue: Queue; +}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..bce78ac3a4acd7507be90229bcf797640b99c7f7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/BatchProvider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAoC,MAAM,OAAO,CAAC;AAKnF,OAAO,EAAE,KAAK,EAAa,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAU9C;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EACxF,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;CACrB,2CA8EA;AAED,wBAAgB,eAAe;eA/FlB,KAAK,CAAC,GAAG,CAAC;eAEV,KAAK,CAAC,GAAG,CAAC;EAqGtB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/types.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/types.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b96a61eb9f3f417e28cb1d1ad178e675357ef560 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/types.d.ts @@ -0,0 +1,7 @@ +export type QueueItem = T[] | ((items: T[]) => T[]); +export type Queue = { + get: () => QueueItem[]; + reset: () => void; + push: (item: QueueItem) => void; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/types.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/types.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..a5cb6b8fd90fb875224cc26d5a9053793b35027c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/BatchProvider/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;AAEvD,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IACrB,GAAG,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CACpC,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/useQueue.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/useQueue.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f4842ba87193c437dc18779800b6bd791c4942e0 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/useQueue.d.ts @@ -0,0 +1,11 @@ +import { Queue, QueueItem } from './types'; +/** + * This hook returns a queue that can be used to batch updates. + * + * @param runQueue - a function that gets called when the queue is flushed + * @internal + * + * @returns a Queue object + */ +export declare function useQueue(runQueue: (items: QueueItem[]) => void): Queue; +//# sourceMappingURL=useQueue.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/useQueue.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/useQueue.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..e1957931e6d29239d011d88a9c867217f97b9773 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/BatchProvider/useQueue.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useQueue.d.ts","sourceRoot":"","sources":["../../../src/components/BatchProvider/useQueue.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,YAiCpE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ConnectionLine/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ConnectionLine/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..8aff7b0c1f9b789346129c9eabfbbcd7763102b3 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ConnectionLine/index.d.ts @@ -0,0 +1,12 @@ +import { CSSProperties } from 'react'; +import { ConnectionLineType } from '@xyflow/system'; +import type { ConnectionLineComponent, Node } from '../../types'; +type ConnectionLineWrapperProps = { + type: ConnectionLineType; + component?: ConnectionLineComponent; + containerStyle?: CSSProperties; + style?: CSSProperties; +}; +export declare function ConnectionLineWrapper({ containerStyle, style, type, component, }: ConnectionLineWrapperProps): import("react/jsx-runtime").JSX.Element | null; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ConnectionLine/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ConnectionLine/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..90edd83b0ce2867591ccc997cf2035d4ff176723 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ConnectionLine/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ConnectionLine/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EACL,kBAAkB,EAKnB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAkB,MAAM,aAAa,CAAC;AAGjF,KAAK,0BAA0B,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI;IAC9D,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,CAAC,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC9C,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAUF,wBAAgB,qBAAqB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EAClE,cAAc,EACd,KAAK,EACL,IAAI,EACJ,SAAS,GACV,EAAE,0BAA0B,CAAC,QAAQ,CAAC,kDAoBtC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeLabelRenderer/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeLabelRenderer/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..558f6edd77096c89a706ea815e8a954123d10181 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeLabelRenderer/index.d.ts @@ -0,0 +1,47 @@ +import type { ReactNode } from 'react'; +export type EdgeLabelRendererProps = { + children: ReactNode; +}; +/** + * Edges are SVG-based. If you want to render more complex labels you can use the + * `` component to access a div based renderer. This component + * is a portal that renders the label in a `
` that is positioned on top of + * the edges. You can see an example usage of the component in the + * [edge label renderer example](/examples/edges/edge-label-renderer). + * @public + * + * @example + * ```jsx + * import React from 'react'; + * import { getBezierPath, EdgeLabelRenderer, BaseEdge } from '@xyflow/react'; + * + * export function CustomEdge({ id, data, ...props }) { + * const [edgePath, labelX, labelY] = getBezierPath(props); + * + * return ( + * <> + * + * + *
+ * {data.label} + *
+ *
+ * + * ); + * }; + * ``` + * + * @remarks The `` has no pointer events by default. If you want to + * add mouse interactions you need to set the style `pointerEvents: all` and add + * the `nopan` class on the label or the element you want to interact with. + */ +export declare function EdgeLabelRenderer({ children }: EdgeLabelRendererProps): import("react").ReactPortal | null; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeLabelRenderer/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeLabelRenderer/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..836e3b8f578ed3c5b48195b8e168bb6fc51132c1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeLabelRenderer/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/EdgeLabelRenderer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQvC,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,SAAS,CAAA;CACpB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,sBAAsB,sCAQrE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/EdgeUpdateAnchors.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/EdgeUpdateAnchors.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..3c399f9d4cc5d55669609cca2ab2825bd22c7b9b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/EdgeUpdateAnchors.d.ts @@ -0,0 +1,15 @@ +import { type EdgePosition } from '@xyflow/system'; +import type { EdgeWrapperProps, Edge } from '../../types/edges'; +type EdgeUpdateAnchorsProps = { + edge: EdgeType; + isReconnectable: boolean | 'source' | 'target'; + reconnectRadius: EdgeWrapperProps['reconnectRadius']; + onReconnect: EdgeWrapperProps['onReconnect']; + onReconnectStart: EdgeWrapperProps['onReconnectStart']; + onReconnectEnd: EdgeWrapperProps['onReconnectEnd']; + setUpdateHover: (hover: boolean) => void; + setReconnecting: (updating: boolean) => void; +} & EdgePosition; +export declare function EdgeUpdateAnchors({ isReconnectable, reconnectRadius, edge, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, onReconnect, onReconnectStart, onReconnectEnd, setReconnecting, setUpdateHover, }: EdgeUpdateAnchorsProps): import("react/jsx-runtime").JSX.Element; +export {}; +//# sourceMappingURL=EdgeUpdateAnchors.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/EdgeUpdateAnchors.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/EdgeUpdateAnchors.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..49ed8e3ce0ce60e6fa0f894f1f791251e34cd6f6 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/EdgeUpdateAnchors.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EdgeUpdateAnchors.d.ts","sourceRoot":"","sources":["../../../src/components/EdgeWrapper/EdgeUpdateAnchors.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,YAAY,EAKlB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGhE,KAAK,sBAAsB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI;IAC1D,IAAI,EAAE,QAAQ,CAAC;IACf,eAAe,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC/C,eAAe,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACrD,WAAW,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC;IACvD,gBAAgB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACjE,cAAc,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC7D,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,eAAe,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9C,GAAG,YAAY,CAAC;AAEjB,wBAAgB,iBAAiB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EAC9D,eAAe,EACf,eAAe,EACf,IAAI,EACJ,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,cAAc,GACf,EAAE,sBAAsB,CAAC,QAAQ,CAAC,2CAqGlC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..09061cb23a0a6b4d94d6fa27848205e797d4cf0b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/index.d.ts @@ -0,0 +1,6 @@ +import { JSX } from 'react'; +import type { Edge, EdgeWrapperProps } from '../../types'; +declare function EdgeWrapper({ id, edgesFocusable, edgesReconnectable, elementsSelectable, onClick, onDoubleClick, onContextMenu, onMouseEnter, onMouseMove, onMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, rfId, edgeTypes, noPanClassName, onError, disableKeyboardA11y, }: EdgeWrapperProps): JSX.Element | null; +declare const _default: typeof EdgeWrapper; +export default _default; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..5f5d65f7d8395535cb616134425390a630ba657d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/EdgeWrapper/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA8D,GAAG,EAAQ,MAAM,OAAO,CAAC;AAe9F,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE1D,iBAAS,WAAW,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EACjD,EAAE,EACF,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,IAAI,EACJ,SAAS,EACT,cAAc,EACd,OAAO,EACP,mBAAmB,GACpB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAyOjD;wBAEmC,OAAO,WAAW;AAAtD,wBAAuD"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/utils.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4ec01214231af3f178c2dd93de8a86fca741b8ff --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/utils.d.ts @@ -0,0 +1,12 @@ +import type { EdgeTypes } from '../../types'; +export declare const builtinEdgeTypes: EdgeTypes; +export declare const nullPosition: { + sourceX: null; + sourceY: null; + targetX: null; + targetY: null; + sourcePosition: null; + targetPosition: null; + zIndex: undefined; +}; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/utils.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/utils.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..a24bb50fcdc21923486d7f2ad5021ec6285944c3 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/EdgeWrapper/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/EdgeWrapper/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAS7C,eAAO,MAAM,gBAAgB,EAAE,SAM9B,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;CAQxB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/BaseEdge.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/BaseEdge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..328af2fa0741eec473aa3e6482ba8228ba8c1b3a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/BaseEdge.d.ts @@ -0,0 +1,30 @@ +import type { BaseEdgeProps } from '../../types'; +/** + * The `` component gets used internally for all the edges. It can be + * used inside a custom edge and handles the invisible helper edge and the edge label + * for you. + * + * @public + * @example + * ```jsx + *import { BaseEdge } from '@xyflow/react'; + * + *export function CustomEdge({ sourceX, sourceY, targetX, targetY, ...props }) { + * const [edgePath] = getStraightPath({ + * sourceX, + * sourceY, + * targetX, + * targetY, + * }); + * + * return ; + *} + *``` + * + * @remarks If you want to use an edge marker with the [``](/api-reference/components/base-edge) component, + * you can pass the `markerStart` or `markerEnd` props passed to your custom edge + * through to the [``](/api-reference/components/base-edge) component. + * You can see all the props passed to a custom edge by looking at the [`EdgeProps`](/api-reference/types/edge-props) type. + */ +export declare function BaseEdge({ path, labelX, labelY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, interactionWidth, ...props }: BaseEdgeProps): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=BaseEdge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/BaseEdge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/BaseEdge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..7e03035aaf6130c96a44744c9b3d87d010dfd847 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/BaseEdge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BaseEdge.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/BaseEdge.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,MAAM,EACN,MAAM,EACN,KAAK,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,gBAAqB,EACrB,GAAG,KAAK,EACT,EAAE,aAAa,2CA2Bf"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/BezierEdge.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/BezierEdge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d0570d5a5320ea9f4d795579aac6678efb672a4a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/BezierEdge.d.ts @@ -0,0 +1,31 @@ +import type { BezierEdgeProps } from '../../types'; +/** + * Component that can be used inside a custom edge to render a bezier curve. + * + * @public + * @example + * + * ```tsx + * import { BezierEdge } from '@xyflow/react'; + * + * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) { + * return ( + * + * ); + * } + * ``` + */ +declare const BezierEdge: import("react").MemoExoticComponent<({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, pathOptions, interactionWidth, }: BezierEdgeProps) => import("react/jsx-runtime").JSX.Element>; +/** + * @internal + */ +declare const BezierEdgeInternal: import("react").MemoExoticComponent<({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, pathOptions, interactionWidth, }: BezierEdgeProps) => import("react/jsx-runtime").JSX.Element>; +export { BezierEdge, BezierEdgeInternal }; +//# sourceMappingURL=BezierEdge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/BezierEdge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/BezierEdge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..60b5ae3a56cdaab1bdb84c7de35b82986df8667b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/BezierEdge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BezierEdge.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/BezierEdge.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA2DnD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,QAAA,MAAM,UAAU,qQA1DT,eAAe,6CA0DoC,CAAC;AAE3D;;GAEG;AACH,QAAA,MAAM,kBAAkB,qQA/DjB,eAAe,6CA+D2C,CAAC;AAKlE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/EdgeAnchor.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/EdgeAnchor.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..a3465d44ae729f2868fb965b1f751abca769ed2b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/EdgeAnchor.d.ts @@ -0,0 +1,17 @@ +import type { MouseEvent as ReactMouseEvent, SVGAttributes } from 'react'; +import { Position } from '@xyflow/system'; +export interface EdgeAnchorProps extends SVGAttributes { + position: Position; + centerX: number; + centerY: number; + radius?: number; + onMouseDown: (event: ReactMouseEvent) => void; + onMouseEnter: (event: ReactMouseEvent) => void; + onMouseOut: (event: ReactMouseEvent) => void; + type: string; +} +/** + * @internal + */ +export declare function EdgeAnchor({ position, centerX, centerY, radius, onMouseDown, onMouseEnter, onMouseOut, type, }: EdgeAnchorProps): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=EdgeAnchor.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/EdgeAnchor.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/EdgeAnchor.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..69cfdfe3903ce5a3e5ed445b0d8d1b420ba53507 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/EdgeAnchor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EdgeAnchor.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/EdgeAnchor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,eAAe,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAc1C,MAAM,WAAW,eAAgB,SAAQ,aAAa,CAAC,WAAW,CAAC;IACjE,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IACvE,YAAY,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IACxE,UAAU,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IACtE,IAAI,EAAE,MAAM,CAAC;CACd;AAID;;GAEG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,OAAO,EACP,OAAO,EACP,MAAW,EACX,WAAW,EACX,YAAY,EACZ,UAAU,EACV,IAAI,GACL,EAAE,eAAe,2CAcjB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/EdgeText.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/EdgeText.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..cab46cfc2a07e3025277d2b84e13ffdb183997a4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/EdgeText.d.ts @@ -0,0 +1,34 @@ +import type { EdgeTextProps } from '../../types'; +declare function EdgeTextComponent({ x, y, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, children, className, ...rest }: EdgeTextProps): import("react/jsx-runtime").JSX.Element | null; +declare namespace EdgeTextComponent { + var displayName: string; +} +/** + * You can use the `` component as a helper component to display text + * within your custom edges. + * + * @public + * + * @example + * ```jsx + * import { EdgeText } from '@xyflow/react'; + * + * export function CustomEdgeLabel({ label }) { + * return ( + * + * ); + * } + *``` + */ +export declare const EdgeText: import("react").MemoExoticComponent; +export {}; +//# sourceMappingURL=EdgeText.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/EdgeText.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/EdgeText.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..b151af5980f5730047903cf7b2a18c07a9cb050b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/EdgeText.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EdgeText.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/EdgeText.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,iBAAS,iBAAiB,CAAC,EACzB,CAAC,EACD,CAAC,EACD,KAAK,EACL,UAAU,EACV,WAAkB,EAClB,YAAY,EACZ,cAAuB,EACvB,mBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,aAAa,kDAqDf;kBAjEQ,iBAAiB;;;AAqE1B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,QAAQ,+DAA0B,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/SimpleBezierEdge.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/SimpleBezierEdge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..7d39b014c18ba136cdb36da5cb94a3125a6387e5 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/SimpleBezierEdge.d.ts @@ -0,0 +1,30 @@ +import { Position } from '@xyflow/system'; +import type { SimpleBezierEdgeProps } from '../../types'; +export interface GetSimpleBezierPathParams { + sourceX: number; + sourceY: number; + /** @default Position.Bottom */ + sourcePosition?: Position; + targetX: number; + targetY: number; + /** @default Position.Top */ + targetPosition?: Position; +} +/** + * The `getSimpleBezierPath` util returns everything you need to render a simple + * bezier edge between two nodes. + * @public + * @returns + * - `path`: the path to use in an SVG `` element. + * - `labelX`: the `x` position you can use to render a label for this edge. + * - `labelY`: the `y` position you can use to render a label for this edge. + * - `offsetX`: the absolute difference between the source `x` position and the `x` position of the + * middle of this path. + * - `offsetY`: the absolute difference between the source `y` position and the `y` position of the + * middle of this path. + */ +export declare function getSimpleBezierPath({ sourceX, sourceY, sourcePosition, targetX, targetY, targetPosition, }: GetSimpleBezierPathParams): [path: string, labelX: number, labelY: number, offsetX: number, offsetY: number]; +declare const SimpleBezierEdge: import("react").MemoExoticComponent<({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }: SimpleBezierEdgeProps) => import("react/jsx-runtime").JSX.Element>; +declare const SimpleBezierEdgeInternal: import("react").MemoExoticComponent<({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }: SimpleBezierEdgeProps) => import("react/jsx-runtime").JSX.Element>; +export { SimpleBezierEdge, SimpleBezierEdgeInternal }; +//# sourceMappingURL=SimpleBezierEdge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/SimpleBezierEdge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/SimpleBezierEdge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..43ba79b907b5a24f527ee57cfbf551cd267e7dd8 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/SimpleBezierEdge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SimpleBezierEdge.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/SimpleBezierEdge.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAuB,MAAM,gBAAgB,CAAC;AAG/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,cAAc,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAkBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,OAAO,EACP,cAAgC,EAChC,OAAO,EACP,OAAO,EACP,cAA6B,GAC9B,EAAE,yBAAyB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAiC9G;AAyDD,QAAA,MAAM,gBAAgB,wPAlCf,qBAAqB,6CAkC0C,CAAC;AACvE,QAAA,MAAM,wBAAwB,wPAnCvB,qBAAqB,6CAmCiD,CAAC;AAK9E,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/SmoothStepEdge.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/SmoothStepEdge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..e6ac0cb7ec686eeaccee7ca987807d4f41eced6c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/SmoothStepEdge.d.ts @@ -0,0 +1,31 @@ +import type { SmoothStepEdgeProps } from '../../types'; +/** + * Component that can be used inside a custom edge to render a smooth step edge. + * + * @public + * @example + * + * ```tsx + * import { SmoothStepEdge } from '@xyflow/react'; + * + * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) { + * return ( + * + * ); + * } + * ``` + */ +declare const SmoothStepEdge: import("react").MemoExoticComponent<({ id, sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, sourcePosition, targetPosition, markerEnd, markerStart, pathOptions, interactionWidth, }: SmoothStepEdgeProps) => import("react/jsx-runtime").JSX.Element>; +/** + * @internal + */ +declare const SmoothStepEdgeInternal: import("react").MemoExoticComponent<({ id, sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, sourcePosition, targetPosition, markerEnd, markerStart, pathOptions, interactionWidth, }: SmoothStepEdgeProps) => import("react/jsx-runtime").JSX.Element>; +export { SmoothStepEdge, SmoothStepEdgeInternal }; +//# sourceMappingURL=SmoothStepEdge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/SmoothStepEdge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/SmoothStepEdge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..abb01cdf33180887c54b940d4155709c21b2ea5b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/SmoothStepEdge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SmoothStepEdge.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/SmoothStepEdge.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AA6DvD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,QAAA,MAAM,cAAc,qQA5Db,mBAAmB,6CA4DwC,CAAC;AAEnE;;GAEG;AACH,QAAA,MAAM,sBAAsB,qQAjErB,mBAAmB,6CAiE+C,CAAC;AAK1E,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/StepEdge.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/StepEdge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b335551653ca76d385d28538572b03209a63265b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/StepEdge.d.ts @@ -0,0 +1,31 @@ +import type { StepEdgeProps } from '../../types'; +/** + * Component that can be used inside a custom edge to render a step edge. + * + * @public + * @example + * + * ```tsx + * import { StepEdge } from '@xyflow/react'; + * + * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) { + * return ( + * + * ); + * } + * ``` + */ +declare const StepEdge: import("react").MemoExoticComponent<({ id, ...props }: StepEdgeProps) => import("react/jsx-runtime").JSX.Element>; +/** + * @internal + */ +declare const StepEdgeInternal: import("react").MemoExoticComponent<({ id, ...props }: StepEdgeProps) => import("react/jsx-runtime").JSX.Element>; +export { StepEdge, StepEdgeInternal }; +//# sourceMappingURL=StepEdge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/StepEdge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/StepEdge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..9fd57f9b5e95792de4982a4c5810f8ac226688a8 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/StepEdge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"StepEdge.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/StepEdge.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAoBjD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,QAAA,MAAM,QAAQ,yDAvCmB,aAAa,6CAuCQ,CAAC;AAEvD;;GAEG;AACH,QAAA,MAAM,gBAAgB,yDA5CW,aAAa,6CA4Ce,CAAC;AAK9D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/StraightEdge.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/StraightEdge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..0af4c2808d86510b9aff68ba704066e6570b280a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/StraightEdge.d.ts @@ -0,0 +1,29 @@ +import type { StraightEdgeProps } from '../../types'; +/** + * Component that can be used inside a custom edge to render a straight line. + * + * @public + * @example + * + * ```tsx + * import { StraightEdge } from '@xyflow/react'; + * + * function CustomEdge({ sourceX, sourceY, targetX, targetY }) { + * return ( + * + * ); + * } + * ``` + */ +declare const StraightEdge: import("react").MemoExoticComponent<({ id, sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }: StraightEdgeProps) => import("react/jsx-runtime").JSX.Element>; +/** + * @internal + */ +declare const StraightEdgeInternal: import("react").MemoExoticComponent<({ id, sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }: StraightEdgeProps) => import("react/jsx-runtime").JSX.Element>; +export { StraightEdge, StraightEdgeInternal }; +//# sourceMappingURL=StraightEdge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/StraightEdge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/StraightEdge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..4037d3861f63beeb67c0efb73faee39b09f78039 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/StraightEdge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"StraightEdge.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/StraightEdge.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAgDrD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,QAAA,MAAM,YAAY,wNAhDX,iBAAiB,6CAgDsC,CAAC;AAE/D;;GAEG;AACH,QAAA,MAAM,oBAAoB,wNArDnB,iBAAiB,6CAqD6C,CAAC;AAKtE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d90e7ba2baae05dc68e147be8bae849717031c35 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/index.d.ts @@ -0,0 +1,6 @@ +export { SimpleBezierEdge, SimpleBezierEdgeInternal } from './SimpleBezierEdge'; +export { SmoothStepEdge, SmoothStepEdgeInternal } from './SmoothStepEdge'; +export { StepEdge, StepEdgeInternal } from './StepEdge'; +export { StraightEdge, StraightEdgeInternal } from './StraightEdge'; +export { BezierEdge, BezierEdgeInternal } from './BezierEdge'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..b8fbaa23a883db21d2ae0a28c41aa7aa3fee739c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Edges/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Handle/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Handle/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..40659a6e204486449435e12074799da8eb5a6a15 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Handle/index.d.ts @@ -0,0 +1,39 @@ +import { type HTMLAttributes } from 'react'; +import { type HandleProps as HandlePropsSystem, OnConnect } from '@xyflow/system'; +/** + * @expand + */ +export type HandleProps = HandlePropsSystem & Omit, 'id'> & { + /** Callback called when connection is made */ + onConnect?: OnConnect; +}; +/** + * The `` component is used in your [custom nodes](/learn/customization/custom-nodes) + * to define connection points. + * + *@public + * + *@example + * + *```jsx + *import { Handle, Position } from '@xyflow/react'; + * + *export function CustomNode({ data }) { + * return ( + * <> + *
+ * {data.label} + *
+ * + * + * + * + * ); + *}; + *``` + */ +export declare const Handle: import("react").MemoExoticComponent<(props: HandlePropsSystem & Omit, "id"> & { + /** Callback called when connection is made */ + onConnect?: OnConnect; +} & import("react").RefAttributes) => import("react").JSX.Element>; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Handle/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Handle/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..61f16b6f8dd8650e3984f5ba0bce89f7580287fc --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Handle/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Handle/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAKpB,MAAM,OAAO,CAAC;AAGf,OAAO,EAML,KAAK,WAAW,IAAI,iBAAiB,EAIrC,SAAS,EAIV,MAAM,gBAAgB,CAAC;AASxB;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,iBAAiB,GACzC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,GAAG;IAC3C,8CAA8C;IAC9C,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAkPJ;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,MAAM;IA7Qf,8CAA8C;gBAClC,SAAS;kFA4QmC,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..0c52805415515a7d584f43cdc32b458b3135aff9 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/index.d.ts @@ -0,0 +1,5 @@ +import type { Node, NodeWrapperProps } from '../../types'; +declare function NodeWrapper({ id, onClick, onMouseEnter, onMouseMove, onMouseLeave, onContextMenu, onDoubleClick, nodesDraggable, elementsSelectable, nodesConnectable, nodesFocusable, resizeObserver, noDragClassName, noPanClassName, disableKeyboardA11y, rfId, nodeTypes, nodeClickDistance, onError, }: NodeWrapperProps): import("react/jsx-runtime").JSX.Element | null; +declare const _default: typeof NodeWrapper; +export default _default; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..098ea003a3ebfa4f2336568d5ecfd5ae9848c439 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/NodeWrapper/index.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAgB,IAAI,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAExE,iBAAS,WAAW,CAAC,QAAQ,SAAS,IAAI,EAAE,EAC1C,EAAE,EACF,OAAO,EACP,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,IAAI,EACJ,SAAS,EACT,iBAAiB,EACjB,OAAO,GACR,EAAE,gBAAgB,CAAC,QAAQ,CAAC,kDAgN5B;wBAEmC,OAAO,WAAW;AAAtD,wBAAuD"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/useNodeObserver.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/useNodeObserver.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..457539f50ac4053cb0359f81681215bd343bda67 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/useNodeObserver.d.ts @@ -0,0 +1,14 @@ +import type { InternalNode } from '../../types'; +/** + * Hook to handle the resize observation + internal updates for the passed node. + * + * @internal + * @returns nodeRef - reference to the node element + */ +export declare function useNodeObserver({ node, nodeType, hasDimensions, resizeObserver, }: { + node: InternalNode; + nodeType: string; + hasDimensions: boolean; + resizeObserver: ResizeObserver | null; +}): import("react").MutableRefObject; +//# sourceMappingURL=useNodeObserver.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/useNodeObserver.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/useNodeObserver.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..34342f7aaf4d64a3f42462ddea39626a5821f494 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/useNodeObserver.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useNodeObserver.d.ts","sourceRoot":"","sources":["../../../src/components/NodeWrapper/useNodeObserver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,cAAc,GACf,EAAE;IACD,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC,2DAmDA"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/utils.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..ec4720eead9b0601de9e8cd31c25e0e95f6b8db6 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/utils.d.ts @@ -0,0 +1,9 @@ +import type { XYPosition } from '@xyflow/system'; +import type { InternalNode, Node, NodeTypes } from '../../types'; +export declare const arrowKeyDiffs: Record; +export declare const builtinNodeTypes: NodeTypes; +export declare function getNodeInlineStyleDimensions(node: InternalNode): { + width: number | string | undefined; + height: number | string | undefined; +}; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/utils.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/utils.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..9450c4ef0fbfee8323a6151b1e4f4208bc9765ac --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodeWrapper/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/NodeWrapper/utils.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAMjD,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEjE,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAKpD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,SAK9B,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EACvE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,GAC3B;IACD,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACrC,CAYA"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/DefaultNode.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/DefaultNode.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..c97468eb10630410a5306410fe55436c2ed0c2fb --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/DefaultNode.d.ts @@ -0,0 +1,3 @@ +import type { BuiltInNode, NodeProps } from '../../types/nodes'; +export declare function DefaultNode({ data, isConnectable, targetPosition, sourcePosition, }: NodeProps): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=DefaultNode.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/DefaultNode.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/DefaultNode.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..39117d0fac33dd471a3e4ef03d935002c4aee092 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/DefaultNode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DefaultNode.d.ts","sourceRoot":"","sources":["../../../src/components/Nodes/DefaultNode.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEhE,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,aAAa,EACb,cAA6B,EAC7B,cAAgC,GACjC,EAAE,SAAS,CAAC,WAAW,CAAC,2CAQxB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/GroupNode.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/GroupNode.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..901decc06ec479b48a2f97694b44e3a031425735 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/GroupNode.d.ts @@ -0,0 +1,2 @@ +export declare function GroupNode(): null; +//# sourceMappingURL=GroupNode.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/GroupNode.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/GroupNode.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..842751685d03ceec42329ff30228644aca5612cd --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/GroupNode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GroupNode.d.ts","sourceRoot":"","sources":["../../../src/components/Nodes/GroupNode.tsx"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,SAExB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/InputNode.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/InputNode.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..5f5476081a669f50a548d656fcf0d821c41346a0 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/InputNode.d.ts @@ -0,0 +1,3 @@ +import type { BuiltInNode, NodeProps } from '../../types/nodes'; +export declare function InputNode({ data, isConnectable, sourcePosition }: NodeProps): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=InputNode.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/InputNode.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/InputNode.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..1b43a1cb5e75bacd4376abf984b3548bab0660e3 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/InputNode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"InputNode.d.ts","sourceRoot":"","sources":["../../../src/components/Nodes/InputNode.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEhE,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,cAAgC,EAAE,EAAE,SAAS,CAAC,WAAW,CAAC,2CAO1G"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/OutputNode.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/OutputNode.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d66c1fb30fdc207fc72699b6ddb04bbc14546dd1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/OutputNode.d.ts @@ -0,0 +1,3 @@ +import type { BuiltInNode, NodeProps } from '../../types/nodes'; +export declare function OutputNode({ data, isConnectable, targetPosition }: NodeProps): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=OutputNode.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/OutputNode.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/OutputNode.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..f53ab007a600485bf3297942bee9c19613ec6972 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/OutputNode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"OutputNode.d.ts","sourceRoot":"","sources":["../../../src/components/Nodes/OutputNode.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEhE,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,cAA6B,EAAE,EAAE,SAAS,CAAC,WAAW,CAAC,2CAOxG"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/utils.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..25d4ff1bfba38c8c8a7783380e01f3d2f55242bf --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/utils.d.ts @@ -0,0 +1,13 @@ +import type { RefObject } from 'react'; +import type { StoreApi } from 'zustand'; +import type { ReactFlowState } from '../../types'; +export declare function handleNodeClick({ id, store, unselect, nodeRef, }: { + id: string; + store: { + getState: StoreApi['getState']; + setState: StoreApi['setState']; + }; + unselect?: boolean; + nodeRef?: RefObject; +}): void; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/utils.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/utils.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..84a7a1c4d04344063bc76b2f6315cb29f07a7c4f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Nodes/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/Nodes/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQlD,wBAAgB,eAAe,CAAC,EAC9B,EAAE,EACF,KAAK,EACL,QAAgB,EAChB,OAAO,GACR,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE;QACL,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,CAAC;QAC/C,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,CAAC;KAChD,CAAC;IACF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;CACrC,QAkBA"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodesSelection/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodesSelection/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..0c096139ff00f69c0df36c0d08222b59d3eb2bb9 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodesSelection/index.d.ts @@ -0,0 +1,13 @@ +/** + * The nodes selection rectangle gets displayed when a user + * made a selection with on or several nodes + */ +import { type MouseEvent } from 'react'; +import type { Node } from '../../types'; +export type NodesSelectionProps = { + onSelectionContextMenu?: (event: MouseEvent, nodes: NodeType[]) => void; + noPanClassName?: string; + disableKeyboardA11y: boolean; +}; +export declare function NodesSelection({ onSelectionContextMenu, noPanClassName, disableKeyboardA11y, }: NodesSelectionProps): import("react/jsx-runtime").JSX.Element | null; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodesSelection/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodesSelection/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..4bf2616f5e157a5f7a3bfb41a2ba26770328ddf4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/NodesSelection/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/NodesSelection/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAqB,KAAK,UAAU,EAAsB,MAAM,OAAO,CAAC;AAS/E,OAAO,KAAK,EAAE,IAAI,EAAkB,MAAM,aAAa,CAAC;AAExD,MAAM,MAAM,mBAAmB,CAAC,QAAQ,IAAI;IAC1C,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAeF,wBAAgB,cAAc,CAAC,QAAQ,SAAS,IAAI,EAAE,EACpD,sBAAsB,EACtB,cAAc,EACd,mBAAmB,GACpB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,kDAgE/B"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Panel/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Panel/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f9a8b24cbe1a606a230ff335281f642b3c0dd596 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Panel/index.d.ts @@ -0,0 +1,45 @@ +import { HTMLAttributes } from 'react'; +import type { PanelPosition } from '@xyflow/system'; +/** + * @expand + */ +export type PanelProps = HTMLAttributes & { + /** + * The position of the panel. + * @default "top-left" + */ + position?: PanelPosition; +}; +/** + * The `` component helps you position content above the viewport. + * It is used internally by the [``](/api-reference/components/minimap) + * and [``](/api-reference/components/controls) components. + * + * @public + * + * @example + * ```jsx + *import { ReactFlow, Background, Panel } from '@xyflow/react'; + * + *export default function Flow() { + * return ( + * + * top-left + * top-center + * top-right + * bottom-left + * bottom-center + * bottom-right + * + * ); + *} + *``` + */ +export declare const Panel: import("react").ForwardRefExoticComponent & { + /** + * The position of the panel. + * @default "top-left" + */ + position?: PanelPosition; +} & import("react").RefAttributes>; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Panel/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Panel/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..0306ce2a740550baea34bf4b7b0fa38803867c0c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/Panel/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Panel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAc,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IACxD;;;OAGG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,KAAK;IAhChB;;;OAGG;eACQ,aAAa;kDAsCzB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ReactFlowProvider/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ReactFlowProvider/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..3cdf44ced3d9869e5fbbc291535ac1bc546d3389 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ReactFlowProvider/index.d.ts @@ -0,0 +1,83 @@ +import { type ReactNode } from 'react'; +import type { Node, Edge, FitViewOptions } from '../../types'; +import { CoordinateExtent, NodeOrigin, ZIndexMode } from '@xyflow/system'; +export type ReactFlowProviderProps = { + /** These nodes are used to initialize the flow. They are not dynamic. */ + initialNodes?: Node[]; + /** These edges are used to initialize the flow. They are not dynamic. */ + initialEdges?: Edge[]; + /** These nodes are used to initialize the flow. They are not dynamic. */ + defaultNodes?: Node[]; + /** These edges are used to initialize the flow. They are not dynamic. */ + defaultEdges?: Edge[]; + /** The initial width is necessary to be able to use fitView on the server */ + initialWidth?: number; + /** The initial height is necessary to be able to use fitView on the server */ + initialHeight?: number; + /** When `true`, the flow will be zoomed and panned to fit all the nodes initially provided. */ + fitView?: boolean; + /** + * You can provide an object of options to customize the initial fitView behavior. + */ + initialFitViewOptions?: FitViewOptions; + /** Initial minimum zoom level */ + initialMinZoom?: number; + /** Initial maximum zoom level */ + initialMaxZoom?: number; + /** + * The origin of the node to use when placing it in the flow or looking up its `x` and `y` + * position. An origin of `[0, 0]` means that a node's top left corner will be placed at the `x` + * and `y` position. + * @default [0, 0] + * @example + * [0, 0] // default, top left + * [0.5, 0.5] // center + * [1, 1] // bottom right + */ + nodeOrigin?: NodeOrigin; + /** + * By default, nodes can be placed on an infinite flow. You can use this prop to set a boundary. + * + * The first pair of coordinates is the top left boundary and the second pair is the bottom right. + * @example [[-1000, -10000], [1000, 1000]] + */ + nodeExtent?: CoordinateExtent; + children: ReactNode; + zIndexMode?: ZIndexMode; +}; +/** + * The `` component is a [context provider](https://react.dev/learn/passing-data-deeply-with-context#) + * that makes it possible to access a flow's internal state outside of the + * [``](/api-reference/react-flow) component. Many of the hooks we + * provide rely on this component to work. + * @public + * + * @example + * ```tsx + *import { ReactFlow, ReactFlowProvider, useNodes } from '@xyflow/react' + * + *export default function Flow() { + * return ( + * + * + * + * + * ); + *} + * + *function Sidebar() { + * // This hook will only work if the component it's used in is a child of a + * // . + * const nodes = useNodes() + * + * return ; + *} + *``` + * + * @remarks If you're using a router and want your flow's state to persist across routes, + * it's vital that you place the `` component _outside_ of + * your router. If you have multiple flows on the same page you will need to use a separate + * `` for each flow. + */ +export declare function ReactFlowProvider({ initialNodes: nodes, initialEdges: edges, defaultNodes, defaultEdges, initialWidth: width, initialHeight: height, initialMinZoom: minZoom, initialMaxZoom: maxZoom, initialFitViewOptions: fitViewOptions, fitView, nodeOrigin, nodeExtent, zIndexMode, children, }: ReactFlowProviderProps): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ReactFlowProvider/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ReactFlowProvider/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..444cacd8fcaaa7dba8c8205e07ff5b1b57dede70 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ReactFlowProvider/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ReactFlowProvider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMjD,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE1E,MAAM,MAAM,sBAAsB,GAAG;IACnC,yEAAyE;IACzE,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,yEAAyE;IACzE,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,yEAAyE;IACzE,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,yEAAyE;IACzE,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,qBAAqB,CAAC,EAAE,cAAc,CAAC;IACvC,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,YAAY,EAAE,KAAK,EACnB,YAAY,EAAE,KAAK,EACnB,YAAY,EACZ,YAAY,EACZ,YAAY,EAAE,KAAK,EACnB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,OAAO,EACvB,cAAc,EAAE,OAAO,EACvB,qBAAqB,EAAE,cAAc,EACrC,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAQ,GACT,EAAE,sBAAsB,2CA0BxB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/SelectionListener/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/SelectionListener/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2eb1cb399ffea8acb6b9dae123d17596bb561db3 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/SelectionListener/index.d.ts @@ -0,0 +1,7 @@ +import type { OnSelectionChangeFunc, Node, Edge } from '../../types'; +type SelectionListenerProps = { + onSelectionChange?: OnSelectionChangeFunc; +}; +export declare function SelectionListener({ onSelectionChange, }: SelectionListenerProps): import("react/jsx-runtime").JSX.Element | null; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/SelectionListener/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/SelectionListener/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..ff248c337e3f6229b886b7426c85221bcc6a160f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/SelectionListener/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SelectionListener/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAkB,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAErF,KAAK,sBAAsB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI;IACxF,iBAAiB,CAAC,EAAE,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CAC/D,CAAC;AAkDF,wBAAgB,iBAAiB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EAC5F,iBAAiB,GAClB,EAAE,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,kDAQ5C"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/StoreUpdater/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/StoreUpdater/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..65282a728bc7aac67a1ec9482f2a27a01d50314a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/StoreUpdater/index.d.ts @@ -0,0 +1,9 @@ +import type { Node, Edge, ReactFlowProps } from '../../types'; +declare const reactFlowFieldsToTrack: readonly ["nodes", "edges", "defaultNodes", "defaultEdges", "onConnect", "onConnectStart", "onConnectEnd", "onClickConnectStart", "onClickConnectEnd", "nodesDraggable", "autoPanOnNodeFocus", "nodesConnectable", "nodesFocusable", "edgesFocusable", "edgesReconnectable", "elevateNodesOnSelect", "elevateEdgesOnSelect", "minZoom", "maxZoom", "nodeExtent", "onNodesChange", "onEdgesChange", "elementsSelectable", "connectionMode", "snapGrid", "snapToGrid", "translateExtent", "connectOnClick", "defaultEdgeOptions", "fitView", "fitViewOptions", "onNodesDelete", "onEdgesDelete", "onDelete", "onNodeDrag", "onNodeDragStart", "onNodeDragStop", "onSelectionDrag", "onSelectionDragStart", "onSelectionDragStop", "onMoveStart", "onMove", "onMoveEnd", "noPanClassName", "nodeOrigin", "autoPanOnConnect", "autoPanOnNodeDrag", "onError", "connectionRadius", "isValidConnection", "selectNodesOnDrag", "nodeDragThreshold", "connectionDragThreshold", "onBeforeDelete", "debug", "autoPanSpeed", "ariaLabelConfig", "zIndexMode"]; +type ReactFlowFieldsToTrack = (typeof reactFlowFieldsToTrack)[number]; +type StoreUpdaterProps = Pick, ReactFlowFieldsToTrack> & { + rfId: string; +}; +export declare function StoreUpdater(props: StoreUpdaterProps): null; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/StoreUpdater/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/StoreUpdater/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..65fa384d6568f96f145ca6a730352804f97edfa0 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/StoreUpdater/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/StoreUpdater/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAkB,cAAc,EAAkB,MAAM,aAAa,CAAC;AAI9F,QAAA,MAAM,sBAAsB,q/BA2DlB,CAAC;AAEX,KAAK,sBAAsB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AACtE,KAAK,iBAAiB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,IAAI,CACvF,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAClC,sBAAsB,CACvB,GAAG;IACF,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AA+BF,wBAAgB,YAAY,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,EACrF,KAAK,EAAE,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAyD7C"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/UserSelection/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/UserSelection/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..51a455d3f81553204d1c0ab29ca5ab77d223fe26 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/UserSelection/index.d.ts @@ -0,0 +1,2 @@ +export declare function UserSelection(): import("react/jsx-runtime").JSX.Element | null; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/UserSelection/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/UserSelection/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..ee199d0021d5fbf2ab80a205f281b34b50a2b690 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/UserSelection/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/UserSelection/index.tsx"],"names":[],"mappings":"AAUA,wBAAgB,aAAa,mDAkB5B"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ViewportPortal/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ViewportPortal/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..27023553a8cc4644c7b4221fbbcb190a3e4ce93d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ViewportPortal/index.d.ts @@ -0,0 +1,30 @@ +import type { ReactNode } from 'react'; +/** + * The `` component can be used to add components to the same viewport + * of the flow where nodes and edges are rendered. This is useful when you want to render + * your own components that are adhere to the same coordinate system as the nodes & edges + * and are also affected by zooming and panning + * @public + * @example + * + * ```jsx + *import React from 'react'; + *import { ViewportPortal } from '@xyflow/react'; + * + *export default function () { + * return ( + * + *
+ * This div is positioned at [100, 100] on the flow. + *
+ *
+ * ); + *} + *``` + */ +export declare function ViewportPortal({ children }: { + children: ReactNode; +}): import("react").ReactPortal | null; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ViewportPortal/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ViewportPortal/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..439da41301e061a4d80bed06d7721b79ab70eb6d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/components/ViewportPortal/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ViewportPortal/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQvC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,sCAQnE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/MarkerDefinitions.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/MarkerDefinitions.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..7448a03cc16d18a167edef7d5a85615a961524e5 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/MarkerDefinitions.d.ts @@ -0,0 +1,10 @@ +type MarkerDefinitionsProps = { + defaultColor: string | null; + rfId?: string; +}; +declare const _default: import("react").MemoExoticComponent<{ + ({ defaultColor, rfId }: MarkerDefinitionsProps): import("react/jsx-runtime").JSX.Element | null; + displayName: string; +}>; +export default _default; +//# sourceMappingURL=MarkerDefinitions.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/MarkerDefinitions.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/MarkerDefinitions.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..38767015a151300af8399ec42535fc2cd11a1984 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/MarkerDefinitions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MarkerDefinitions.d.ts","sourceRoot":"","sources":["../../../src/container/EdgeRenderer/MarkerDefinitions.tsx"],"names":[],"mappings":"AAMA,KAAK,sBAAsB,GAAG;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;;6BAwCiD,sBAAsB;;;AA0CzE,wBAAuC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/MarkerSymbols.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/MarkerSymbols.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..05dd34ebbd61ee31c147edfd22f00d5c22f34cd1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/MarkerSymbols.d.ts @@ -0,0 +1,9 @@ +import { MarkerType, type EdgeMarker } from '@xyflow/system'; +type SymbolProps = Omit; +export declare const MarkerSymbols: { + arrow: ({ color, strokeWidth }: SymbolProps) => import("react/jsx-runtime").JSX.Element; + arrowclosed: ({ color, strokeWidth }: SymbolProps) => import("react/jsx-runtime").JSX.Element; +}; +export declare function useMarkerSymbol(type: MarkerType | `${MarkerType}`): (({ color, strokeWidth }: SymbolProps) => import("react/jsx-runtime").JSX.Element) | null; +export {}; +//# sourceMappingURL=MarkerSymbols.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/MarkerSymbols.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/MarkerSymbols.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..9b3d243e1dfd668863c2536e20a97427de3137dd --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/MarkerSymbols.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MarkerSymbols.d.ts","sourceRoot":"","sources":["../../../src/container/EdgeRenderer/MarkerSymbols.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiB,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5E,KAAK,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAqC5C,eAAO,MAAM,aAAa;oCAnCgC,WAAW;0CAkBL,WAAW;CAoB1E,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,GAAG,UAAU,EAAE,6BAxCR,WAAW,qDAwDpE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee9186531608d9e45f0a158e5dfd5e3cdc8e448a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/index.d.ts @@ -0,0 +1,13 @@ +import { ReactNode } from 'react'; +import { GraphViewProps } from '../GraphView'; +import type { Edge, Node } from '../../types'; +type EdgeRendererProps = Pick, 'onEdgeClick' | 'onEdgeDoubleClick' | 'defaultMarkerColor' | 'onlyRenderVisibleElements' | 'onReconnect' | 'onEdgeContextMenu' | 'onEdgeMouseEnter' | 'onEdgeMouseMove' | 'onEdgeMouseLeave' | 'onReconnectStart' | 'onReconnectEnd' | 'reconnectRadius' | 'noPanClassName' | 'rfId' | 'disableKeyboardA11y' | 'edgeTypes'> & { + children?: ReactNode; +}; +declare function EdgeRendererComponent({ defaultMarkerColor, onlyRenderVisibleElements, rfId, edgeTypes, noPanClassName, onReconnect, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, onEdgeClick, reconnectRadius, onEdgeDoubleClick, onReconnectStart, onReconnectEnd, disableKeyboardA11y, }: EdgeRendererProps): import("react/jsx-runtime").JSX.Element; +declare namespace EdgeRendererComponent { + var displayName: string; +} +export declare const EdgeRenderer: typeof EdgeRendererComponent; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..d3a1f62aec37bd89db1f99ac7a239ecd36ecbd41 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/EdgeRenderer/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/EdgeRenderer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,SAAS,EAAE,MAAM,OAAO,CAAC;AAMxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,IAAI,EAAkB,IAAI,EAAE,MAAM,aAAa,CAAC;AAE9D,KAAK,iBAAiB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,IAAI,CACzD,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,EAC5B,aAAa,GACb,mBAAmB,GACnB,oBAAoB,GACpB,2BAA2B,GAC3B,aAAa,GACb,mBAAmB,GACnB,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,MAAM,GACN,qBAAqB,GACrB,WAAW,CACd,GAAG;IACF,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAUF,iBAAS,qBAAqB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EAC3D,kBAAkB,EAClB,yBAAyB,EACzB,IAAI,EACJ,SAAS,EACT,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,GACpB,EAAE,iBAAiB,CAAC,QAAQ,CAAC,2CAoC7B;kBArDQ,qBAAqB;;;AAyD9B,eAAO,MAAM,YAAY,EAAkC,OAAO,qBAAqB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/FlowRenderer/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/FlowRenderer/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..0af351e996cb55c43f1555864a5346af2425219e --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/FlowRenderer/index.d.ts @@ -0,0 +1,14 @@ +import { type ReactNode } from 'react'; +import { GraphViewProps } from '../GraphView'; +import type { Node } from '../../types'; +export type FlowRendererProps = Omit, 'snapToGrid' | 'nodeTypes' | 'edgeTypes' | 'snapGrid' | 'connectionLineType' | 'connectionLineContainerStyle' | 'arrowHeadColor' | 'onlyRenderVisibleElements' | 'selectNodesOnDrag' | 'defaultMarkerColor' | 'rfId' | 'nodeClickDistance'> & { + isControlledViewport: boolean; + children: ReactNode; +}; +declare function FlowRendererComponent({ children, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, paneClickDistance, deleteKeyCode, selectionKeyCode, selectionOnDrag, selectionMode, onSelectionStart, onSelectionEnd, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, elementsSelectable, zoomOnScroll, zoomOnPinch, panOnScroll: _panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag: _panOnDrag, autoPanOnSelection, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, onSelectionContextMenu, noWheelClassName, noPanClassName, disableKeyboardA11y, onViewportChange, isControlledViewport, }: FlowRendererProps): import("react/jsx-runtime").JSX.Element; +declare namespace FlowRendererComponent { + var displayName: string; +} +export declare const FlowRenderer: typeof FlowRendererComponent; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/FlowRenderer/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/FlowRenderer/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..fd60cd90c39b691e314f868ce67592a919fe3ca7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/FlowRenderer/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/FlowRenderer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAM7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAI9C,OAAO,KAAK,EAAkB,IAAI,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,MAAM,iBAAiB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,IAAI,CAChE,cAAc,CAAC,QAAQ,CAAC,EACtB,YAAY,GACZ,WAAW,GACX,WAAW,GACX,UAAU,GACV,oBAAoB,GACpB,8BAA8B,GAC9B,gBAAgB,GAChB,2BAA2B,GAC3B,mBAAmB,GACnB,oBAAoB,GACpB,MAAM,GACN,mBAAmB,CACtB,GAAG;IACF,oBAAoB,EAAE,OAAO,CAAC;IAC9B,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAQF,iBAAS,qBAAqB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EAC3D,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,WAAW,EAAE,YAAY,EACzB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,SAAS,EAAE,UAAU,EACrB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,GACrB,EAAE,iBAAiB,CAAC,QAAQ,CAAC,2CAgE7B;kBAtGQ,qBAAqB;;;AA0G9B,eAAO,MAAM,YAAY,EAAkC,OAAO,qBAAqB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..e393a5c9efd3a3e0ad3c0429f91a6f65a5edd193 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/index.d.ts @@ -0,0 +1,11 @@ +import type { Edge, Node, ReactFlowProps } from '../../types'; +export type GraphViewProps = Omit, 'onSelectionChange' | 'nodes' | 'edges' | 'onMove' | 'onMoveStart' | 'onMoveEnd' | 'elevateEdgesOnSelect'> & Required, 'selectionKeyCode' | 'deleteKeyCode' | 'multiSelectionKeyCode' | 'connectionLineType' | 'onlyRenderVisibleElements' | 'translateExtent' | 'minZoom' | 'maxZoom' | 'defaultMarkerColor' | 'noDragClassName' | 'noWheelClassName' | 'noPanClassName' | 'defaultViewport' | 'disableKeyboardA11y' | 'paneClickDistance' | 'nodeClickDistance'>> & { + rfId: string; +}; +declare function GraphViewComponent({ nodeTypes, edgeTypes, onInit, onNodeClick, onEdgeClick, onNodeDoubleClick, onEdgeDoubleClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onSelectionContextMenu, onSelectionStart, onSelectionEnd, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, deleteKeyCode, onlyRenderVisibleElements, elementsSelectable, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, defaultMarkerColor, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag, autoPanOnSelection, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance, nodeClickDistance, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, noDragClassName, noWheelClassName, noPanClassName, disableKeyboardA11y, nodeExtent, rfId, viewport, onViewportChange, nodesDraggable, }: GraphViewProps): import("react/jsx-runtime").JSX.Element; +declare namespace GraphViewComponent { + var displayName: string; +} +export declare const GraphView: typeof GraphViewComponent; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..140c37665db6ccc82db0b8d3eab22124ec67acbe --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/GraphView/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG9D,MAAM,MAAM,cAAc,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,IAAI,CAC3F,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAClC,mBAAmB,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,GAAG,sBAAsB,CAC1G,GACC,QAAQ,CACN,IAAI,CACF,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAChC,kBAAkB,GAClB,eAAe,GACf,uBAAuB,GACvB,oBAAoB,GACpB,2BAA2B,GAC3B,iBAAiB,GACjB,SAAS,GACT,SAAS,GACT,oBAAoB,GACpB,iBAAiB,GACjB,kBAAkB,GAClB,gBAAgB,GAChB,iBAAiB,GACjB,qBAAqB,GACrB,mBAAmB,GACnB,mBAAmB,CACtB,CACF,GAAG;IACF,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEJ,iBAAS,kBAAkB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EACtF,SAAS,EACT,SAAS,EACT,MAAM,EACN,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,4BAA4B,EAC5B,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,gBAAgB,EAChB,cAAc,GACf,EAAE,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,2CA+FpC;kBAlKQ,kBAAkB;;;AAsK3B,eAAO,MAAM,SAAS,EAA+B,OAAO,kBAAkB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/useNodeOrEdgeTypesWarning.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/useNodeOrEdgeTypesWarning.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..601d17067179aad205b6af9ba324412aed16afd9 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/useNodeOrEdgeTypesWarning.d.ts @@ -0,0 +1,10 @@ +import type { EdgeTypes, NodeTypes } from '../../types'; +/** + * This hook warns the user if nodeTypes or edgeTypes changed. + * It is only used in development mode. + * + * @internal + */ +export declare function useNodeOrEdgeTypesWarning(nodeOrEdgeTypes?: NodeTypes): void; +export declare function useNodeOrEdgeTypesWarning(nodeOrEdgeTypes?: EdgeTypes): void; +//# sourceMappingURL=useNodeOrEdgeTypesWarning.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/useNodeOrEdgeTypesWarning.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/useNodeOrEdgeTypesWarning.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..52c632039124568ab4c7342b153b922d8e53fdaa --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/useNodeOrEdgeTypesWarning.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useNodeOrEdgeTypesWarning.d.ts","sourceRoot":"","sources":["../../../src/container/GraphView/useNodeOrEdgeTypesWarning.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIxD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;AAC7E,wBAAgB,yBAAyB,CAAC,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/useStylesLoadedWarning.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/useStylesLoadedWarning.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..736e3be5d8e35aec5569211c517e849ad35ba549 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/useStylesLoadedWarning.d.ts @@ -0,0 +1,2 @@ +export declare function useStylesLoadedWarning(): void; +//# sourceMappingURL=useStylesLoadedWarning.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/useStylesLoadedWarning.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/useStylesLoadedWarning.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..f7c8afb1e265a61e8f46e30af901e3442b60f9c6 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/GraphView/useStylesLoadedWarning.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useStylesLoadedWarning.d.ts","sourceRoot":"","sources":["../../../src/container/GraphView/useStylesLoadedWarning.ts"],"names":[],"mappings":"AAKA,wBAAgB,sBAAsB,SAiBrC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/NodeRenderer/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/NodeRenderer/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d533d7ac625c5c30d9b79aa2f2ff050a65c8e6a4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/NodeRenderer/index.d.ts @@ -0,0 +1,10 @@ +import { GraphViewProps } from '../GraphView'; +import type { Node } from '../../types'; +export type NodeRendererProps = Pick, 'onNodeClick' | 'onNodeDoubleClick' | 'onNodeMouseEnter' | 'onNodeMouseMove' | 'onNodeMouseLeave' | 'onNodeContextMenu' | 'onlyRenderVisibleElements' | 'noPanClassName' | 'noDragClassName' | 'rfId' | 'disableKeyboardA11y' | 'nodeExtent' | 'nodeTypes' | 'nodeClickDistance' | 'nodesDraggable'>; +declare function NodeRendererComponent(props: NodeRendererProps): import("react/jsx-runtime").JSX.Element; +declare namespace NodeRendererComponent { + var displayName: string; +} +export declare const NodeRenderer: typeof NodeRendererComponent; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/NodeRenderer/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/NodeRenderer/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..dfcf8217a2e622b717b75c1414464a91ddf2ce16 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/NodeRenderer/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/NodeRenderer/index.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,KAAK,EAAE,IAAI,EAAkB,MAAM,aAAa,CAAC;AAExD,MAAM,MAAM,iBAAiB,CAAC,QAAQ,SAAS,IAAI,IAAI,IAAI,CACzD,cAAc,CAAC,QAAQ,CAAC,EACtB,aAAa,GACb,mBAAmB,GACnB,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,mBAAmB,GACnB,2BAA2B,GAC3B,gBAAgB,GAChB,iBAAiB,GACjB,MAAM,GACN,qBAAqB,GACrB,YAAY,GACZ,WAAW,GACX,mBAAmB,GACnB,gBAAgB,CACnB,CAAC;AASF,iBAAS,qBAAqB,CAAC,QAAQ,SAAS,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,2CA6DvF;kBA7DQ,qBAAqB;;;AAiE9B,eAAO,MAAM,YAAY,EAAkC,OAAO,qBAAqB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/NodeRenderer/useResizeObserver.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/NodeRenderer/useResizeObserver.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..cfb3b546f87b4bbc878bb4f5ae11f63260d092aa --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/NodeRenderer/useResizeObserver.d.ts @@ -0,0 +1,2 @@ +export declare function useResizeObserver(): ResizeObserver | null; +//# sourceMappingURL=useResizeObserver.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/NodeRenderer/useResizeObserver.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/NodeRenderer/useResizeObserver.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..7fbcf4e962cc764cde8bae868e0036459e60d06f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/NodeRenderer/useResizeObserver.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useResizeObserver.d.ts","sourceRoot":"","sources":["../../../src/container/NodeRenderer/useResizeObserver.ts"],"names":[],"mappings":"AAQA,wBAAgB,iBAAiB,0BA6BhC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/Pane/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/Pane/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..ff84f0328eeb21c2d1cdf664e1392f6710305238 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/Pane/index.d.ts @@ -0,0 +1,11 @@ +import { type ReactNode } from 'react'; +import type { ReactFlowProps } from '../../types'; +type PaneProps = { + isSelecting: boolean; + selectionKeyPressed: boolean; + children: ReactNode; + paneClickDistance: number; +} & Partial>; +export declare function Pane({ isSelecting, selectionKeyPressed, selectionMode, panOnDrag, autoPanOnSelection, paneClickDistance, selectionOnDrag, onSelectionStart, onSelectionEnd, onPaneClick, onPaneContextMenu, onPaneScroll, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, children, }: PaneProps): import("react/jsx-runtime").JSX.Element; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/Pane/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/Pane/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..1bc504155f73fe881bc910ee5bd571d03139040d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/Pane/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/Pane/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAkBf,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,aAAa,CAAC;AAElE,KAAK,SAAS,GAAG;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,GAAG,OAAO,CACT,IAAI,CACF,cAAc,EACZ,eAAe,GACf,WAAW,GACX,oBAAoB,GACpB,kBAAkB,GAClB,gBAAgB,GAChB,aAAa,GACb,mBAAmB,GACnB,cAAc,GACd,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,CACpB,CACF,CAAC;AAsBF,wBAAgB,IAAI,CAAC,EACnB,WAAW,EACX,mBAAmB,EACnB,aAAkC,EAClC,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,QAAQ,GACT,EAAE,SAAS,2CA+RX"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/Wrapper.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/Wrapper.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..dbe9067819da7946d97e5c21240f8a5dfbd0326c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/Wrapper.d.ts @@ -0,0 +1,20 @@ +import { type ReactNode } from 'react'; +import type { Node, Edge, FitViewOptions } from '../../types'; +import { CoordinateExtent, NodeOrigin, ZIndexMode } from '@xyflow/system'; +export declare function Wrapper({ children, nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom, maxZoom, nodeOrigin, nodeExtent, zIndexMode, }: { + children: ReactNode; + nodes?: Node[]; + edges?: Edge[]; + defaultNodes?: Node[]; + defaultEdges?: Edge[]; + width?: number; + height?: number; + fitView?: boolean; + fitViewOptions?: FitViewOptions; + minZoom?: number; + maxZoom?: number; + nodeOrigin?: NodeOrigin; + nodeExtent?: CoordinateExtent; + zIndexMode?: ZIndexMode; +}): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=Wrapper.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/Wrapper.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/Wrapper.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..e64758e0ded0e8fb53643b8abd3c58d608ed68a7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/Wrapper.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../../src/container/ReactFlow/Wrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAInD,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE1E,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,KAAK,EACL,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,MAAM,EACN,OAAO,EACP,cAAc,EACd,OAAO,EACP,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,GACX,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,2CA8BA"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..3c796a9ebf30c12f59e512e03329dbc0a3acb48d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/index.d.ts @@ -0,0 +1,24 @@ +import type { Edge, Node, ReactFlowProps } from '../../types'; +/** + * The `` component is the heart of your React Flow application. + * It renders your nodes and edges and handles user interaction + * + * @public + * + * @example + * ```tsx + *import { ReactFlow } from '@xyflow/react' + * + *export default function Flow() { + * return (); + *} + *``` + */ +declare const _default: (props: ReactFlowProps & import("react").RefAttributes) => import("react").JSX.Element; +export default _default; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..480ebfb7cc26a312fa81a5c6a4f2320f56fb2080 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/ReactFlow/index.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA8T9D;;;;;;;;;;;;;;;;;;;GAmBG;yBArUgB,QAAQ,SAAS,IAAI,SAAS,QAAQ,SAAS,IAAI;AAsUtE,wBAA0C"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/init-values.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/init-values.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..683999ad368432a9064aa6346115950984b35337 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/init-values.d.ts @@ -0,0 +1,4 @@ +import { type NodeOrigin, Viewport } from '@xyflow/system'; +export declare const defaultNodeOrigin: NodeOrigin; +export declare const defaultViewport: Viewport; +//# sourceMappingURL=init-values.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/init-values.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/init-values.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..4f68c0a267df3b24a9fa96af7a85d76215a8de64 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ReactFlow/init-values.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"init-values.d.ts","sourceRoot":"","sources":["../../../src/container/ReactFlow/init-values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE3D,eAAO,MAAM,iBAAiB,EAAE,UAAmB,CAAC;AACpD,eAAO,MAAM,eAAe,EAAE,QAAkC,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/Viewport/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/Viewport/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..a792737fcdcdab71aa001c1e0cc8510de062db58 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/Viewport/index.d.ts @@ -0,0 +1,7 @@ +import { type ReactNode } from 'react'; +type ViewportProps = { + children: ReactNode; +}; +export declare function Viewport({ children }: ViewportProps): import("react/jsx-runtime").JSX.Element; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/Viewport/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/Viewport/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..bacebb3ac553f02c83af0782bdc01776d9206c62 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/Viewport/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/Viewport/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AASzD,KAAK,aAAa,GAAG;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,2CA4CnD"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ZoomPane/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ZoomPane/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..36c7a42182474fce350af570795a1d9bcad4468e --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ZoomPane/index.d.ts @@ -0,0 +1,7 @@ +import type { FlowRendererProps } from '../FlowRenderer'; +type ZoomPaneProps = Omit & { + isControlledViewport: boolean; +}; +export declare function ZoomPane({ onPaneContextMenu, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag, defaultViewport, translateExtent, minZoom, maxZoom, zoomActivationKeyCode, preventScrolling, children, noWheelClassName, noPanClassName, onViewportChange, isControlledViewport, paneClickDistance, selectionOnDrag, }: ZoomPaneProps): import("react/jsx-runtime").JSX.Element; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ZoomPane/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ZoomPane/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..f4c882a0e9575f247bd885848d6153416cea599c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/container/ZoomPane/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/ZoomPane/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGzD,KAAK,aAAa,GAAG,IAAI,CACvB,iBAAiB,EACjB,eAAe,GAAG,kBAAkB,GAAG,uBAAuB,GAAG,iBAAiB,GAAG,qBAAqB,CAC3G,GAAG;IACF,oBAAoB,EAAE,OAAO,CAAC;CAC/B,CAAC;AAQF,wBAAgB,QAAQ,CAAC,EACvB,iBAAiB,EACjB,YAAmB,EACnB,WAAkB,EAClB,WAAmB,EACnB,gBAAsB,EACtB,eAAsC,EACtC,iBAAwB,EACxB,SAAgB,EAChB,eAAe,EACf,eAAe,EACf,OAAO,EACP,OAAO,EACP,qBAAqB,EACrB,gBAAuB,EACvB,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,GAChB,EAAE,aAAa,2CA4Gf"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/HandleConfigContext.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/HandleConfigContext.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d4b6dd8dd7d12a42f80e0c9c181b3a3eeac56709 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/HandleConfigContext.d.ts @@ -0,0 +1,12 @@ +import { type ReactNode } from 'react'; +type HandleConfig = { + connectOnClick: boolean; + noPanClassName: string; + rfId: string; +}; +export declare function HandleConfigProvider({ children }: { + children: ReactNode; +}): import("react/jsx-runtime").JSX.Element; +export declare function useHandleConfig(): HandleConfig; +export {}; +//# sourceMappingURL=HandleConfigContext.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/HandleConfigContext.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/HandleConfigContext.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..039002cca819e74bcfd18ebf89ee1143c209540a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/HandleConfigContext.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HandleConfigContext.d.ts","sourceRoot":"","sources":["../../src/contexts/HandleConfigContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMlE,KAAK,YAAY,GAAG;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAcF,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAGzE;AAED,wBAAgB,eAAe,iBAQ9B"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/NodeIdContext.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/NodeIdContext.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..516f33af65c609ffbb12960296efd4fe4924a93a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/NodeIdContext.d.ts @@ -0,0 +1,34 @@ +export declare const NodeIdContext: import("react").Context; +export declare const Provider: import("react").Provider; +export declare const Consumer: import("react").Consumer; +/** + * You can use this hook to get the id of the node it is used inside. It is useful + * if you need the node's id deeper in the render tree but don't want to manually + * drill down the id as a prop. + * + * @public + * @returns The id for a node in the flow. + * + * @example + *```jsx + *import { useNodeId } from '@xyflow/react'; + * + *export default function CustomNode() { + * return ( + *
+ * This node has an id of + * + *
+ * ); + *} + * + *function NodeIdDisplay() { + * const nodeId = useNodeId(); + * + * return {nodeId}; + *} + *``` + */ +export declare const useNodeId: () => string | null; +export default NodeIdContext; +//# sourceMappingURL=NodeIdContext.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/NodeIdContext.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/NodeIdContext.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..5118ac80a25f6ce8a43179a821a535713fc97491 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/NodeIdContext.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NodeIdContext.d.ts","sourceRoot":"","sources":["../../src/contexts/NodeIdContext.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,wCAAqC,CAAC;AAChE,eAAO,MAAM,QAAQ,yCAAyB,CAAC;AAC/C,eAAO,MAAM,QAAQ,yCAAyB,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,SAAS,QAAO,MAAM,GAAG,IAGrC,CAAC;AAEF,eAAe,aAAa,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/StoreContext.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/StoreContext.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f83f50307096bab1986fb96182b77679d129d870 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/StoreContext.d.ts @@ -0,0 +1,4 @@ +declare const StoreContext: import("react").Context> | null>; +export declare const Provider: import("react").Provider> | null>; +export default StoreContext; +//# sourceMappingURL=StoreContext.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/StoreContext.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/StoreContext.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..8ad90d4ab70db8cbc7ccfb4a979b7a0e5f5b06ef --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/contexts/StoreContext.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"StoreContext.d.ts","sourceRoot":"","sources":["../../src/contexts/StoreContext.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,YAAY,oJAA6D,CAAC;AAEhF,eAAO,MAAM,QAAQ,qJAAwB,CAAC;AAC9C,eAAe,YAAY,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useColorModeClass.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useColorModeClass.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..7053d2c369948d2d445ed80b9602e5ec2003300f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useColorModeClass.d.ts @@ -0,0 +1,9 @@ +import type { ColorMode, ColorModeClass } from '@xyflow/system'; +/** + * Hook for receiving the current color mode class 'dark' or 'light'. + * + * @internal + * @param colorMode - The color mode to use ('dark', 'light' or 'system') + */ +export declare function useColorModeClass(colorMode: ColorMode): ColorModeClass; +//# sourceMappingURL=useColorModeClass.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useColorModeClass.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useColorModeClass.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..630898fb80b4bc9a9c751deb530ca874160abaef --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useColorModeClass.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useColorModeClass.d.ts","sourceRoot":"","sources":["../../src/hooks/useColorModeClass.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAUhE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,cAAc,CAuBtE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useConnection.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useConnection.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..13d3f7c71c55811d71fb9b40c0c67c4e2ec3f917 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useConnection.d.ts @@ -0,0 +1,33 @@ +import { ConnectionState } from '@xyflow/system'; +import type { InternalNode, Node } from '../types'; +/** + * The `useConnection` hook returns the current connection when there is an active + * connection interaction. If no connection interaction is active, it returns null + * for every property. A typical use case for this hook is to colorize handles + * based on a certain condition (e.g. if the connection is valid or not). + * + * @public + * @param connectionSelector - An optional selector function used to extract a slice of the + * `ConnectionState` data. Using a selector can prevent component re-renders where data you don't + * otherwise care about might change. If a selector is not provided, the entire `ConnectionState` + * object is returned unchanged. + * @example + * + * ```tsx + *import { useConnection } from '@xyflow/react'; + * + *function App() { + * const connection = useConnection(); + * + * return ( + *
{connection ? `Someone is trying to make a connection from ${connection.fromNode} to this one.` : 'There are currently no incoming connections!'} + * + *
+ * ); + * } + * ``` + * + * @returns ConnectionState + */ +export declare function useConnection>>(connectionSelector?: (connection: ConnectionState>) => SelectorReturn): SelectorReturn; +//# sourceMappingURL=useConnection.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useConnection.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useConnection.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..4e00752120e7a5fc670e0d4e8d26c3a7df449a1f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useConnection.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useConnection.d.ts","sourceRoot":"","sources":["../../src/hooks/useConnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAwB,MAAM,gBAAgB,CAAC;AAGvE,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAkB,MAAM,UAAU,CAAC;AAqBnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,aAAa,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,cAAc,GAAG,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAClH,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,cAAc,GAC3F,cAAc,CAGhB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useDrag.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useDrag.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..dc85f00c944862e9ff323788cdb22134c28879c4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useDrag.d.ts @@ -0,0 +1,18 @@ +import { type RefObject } from 'react'; +type UseDragParams = { + nodeRef: RefObject; + disabled?: boolean; + noDragClassName?: string; + handleSelector?: string; + nodeId?: string; + isSelectable?: boolean; + nodeClickDistance?: number; +}; +/** + * Hook for calling XYDrag helper from @xyflow/system. + * + * @internal + */ +export declare function useDrag({ nodeRef, disabled, noDragClassName, handleSelector, nodeId, isSelectable, nodeClickDistance, }: UseDragParams): boolean; +export {}; +//# sourceMappingURL=useDrag.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useDrag.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useDrag.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..a1b151e857a7b2f3f3cc565a62cf6f9cc61350b9 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useDrag.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useDrag.d.ts","sourceRoot":"","sources":["../../src/hooks/useDrag.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMpE,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,EACtB,OAAO,EACP,QAAgB,EAChB,eAAe,EACf,cAAc,EACd,MAAM,EACN,YAAY,EACZ,iBAAiB,GAClB,EAAE,aAAa,WAiDf"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useEdges.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useEdges.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..dd8579f9f4ff49bcdfcfad2827442ff0df4b588d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useEdges.d.ts @@ -0,0 +1,21 @@ +import type { Edge } from '../types'; +/** + * This hook returns an array of the current edges. Components that use this hook + * will re-render **whenever any edge changes**. + * + * @public + * @returns An array of all edges currently in the flow. + * + * @example + * ```tsx + *import { useEdges } from '@xyflow/react'; + * + *export default function () { + * const edges = useEdges(); + * + * return
There are currently {edges.length} edges!
; + *} + *``` + */ +export declare function useEdges(): EdgeType[]; +//# sourceMappingURL=useEdges.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useEdges.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useEdges.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..914f004394a6a1467bb0ef079a889d2fe9786b12 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useEdges.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useEdges.d.ts","sourceRoot":"","sources":["../../src/hooks/useEdges.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAkB,MAAM,UAAU,CAAC;AAIrD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,CAInE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useGlobalKeyHandler.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useGlobalKeyHandler.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..619d3e39b001c37a0e07bd90ac22386252c4c648 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useGlobalKeyHandler.d.ts @@ -0,0 +1,11 @@ +import type { KeyCode } from '@xyflow/system'; +/** + * Hook for handling global key events. + * + * @internal + */ +export declare function useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode, }: { + deleteKeyCode: KeyCode | null; + multiSelectionKeyCode: KeyCode | null; +}): void; +//# sourceMappingURL=useGlobalKeyHandler.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useGlobalKeyHandler.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useGlobalKeyHandler.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..573f15bb9324c6516842ece3a4bd183575a7b7a2 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useGlobalKeyHandler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useGlobalKeyHandler.d.ts","sourceRoot":"","sources":["../../src/hooks/useGlobalKeyHandler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAW9C;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,aAAa,EACb,qBAAqB,GACtB,EAAE;IACD,aAAa,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,qBAAqB,EAAE,OAAO,GAAG,IAAI,CAAC;CACvC,GAAG,IAAI,CAkBP"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useHandleConnections.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useHandleConnections.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..33231ca53ef86e174ee56674afbaab6861d3327e --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useHandleConnections.d.ts @@ -0,0 +1,23 @@ +import { Connection, HandleConnection, HandleType } from '@xyflow/system'; +type UseHandleConnectionsParams = { + /** What type of handle connections do you want to observe? */ + type: HandleType; + /** The handle id (this is only needed if the node has multiple handles of the same type). */ + id?: string | null; + /** If node id is not provided, the node id from the `NodeIdContext` is used. */ + nodeId?: string; + /** Gets called when a connection is established. */ + onConnect?: (connections: Connection[]) => void; + /** Gets called when a connection is removed. */ + onDisconnect?: (connections: Connection[]) => void; +}; +/** + * Hook to check if a is connected to another and get the connections. + * + * @public + * @deprecated Use `useNodeConnections` instead. + * @returns An array with handle connections. + */ +export declare function useHandleConnections({ type, id, nodeId, onConnect, onDisconnect, }: UseHandleConnectionsParams): HandleConnection[]; +export {}; +//# sourceMappingURL=useHandleConnections.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useHandleConnections.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useHandleConnections.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..43d849a4f76a9fc9e2262d62e109b8eb925d763a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useHandleConnections.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useHandleConnections.d.ts","sourceRoot":"","sources":["../../src/hooks/useHandleConnections.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,UAAU,EAGX,MAAM,gBAAgB,CAAC;AAKxB,KAAK,0BAA0B,GAAG;IAChC,8DAA8D;IAC9D,IAAI,EAAE,UAAU,CAAC;IACjB,6FAA6F;IAC7F,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAChD,gDAAgD;IAChD,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;CACpD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,EAAE,EACF,MAAM,EACN,SAAS,EACT,YAAY,GACb,EAAE,0BAA0B,GAAG,gBAAgB,EAAE,CA2BjD"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useInternalNode.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useInternalNode.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f661522fa65e6ce39d62137d15e810ea1043631f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useInternalNode.d.ts @@ -0,0 +1,30 @@ +import type { InternalNode, Node } from '../types'; +/** + * This hook returns the internal representation of a specific node. + * Components that use this hook will re-render **whenever the node changes**, + * including when a node is selected or moved. + * + * @public + * @param id - The ID of a node you want to observe. + * @returns The `InternalNode` object for the node with the given ID. + * + * @example + * ```tsx + *import { useInternalNode } from '@xyflow/react'; + * + *export default function () { + * const internalNode = useInternalNode('node-1'); + * const absolutePosition = internalNode.internals.positionAbsolute; + * + * return ( + *
+ * The absolute position of the node is at: + *

x: {absolutePosition.x}

+ *

y: {absolutePosition.y}

+ *
+ * ); + *} + *``` + */ +export declare function useInternalNode(id: string): InternalNode | undefined; +//# sourceMappingURL=useInternalNode.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useInternalNode.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useInternalNode.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..4688719c3f20d9b6255a59c2783fd0d1a68126aa --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useInternalNode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useInternalNode.d.ts","sourceRoot":"","sources":["../../src/hooks/useInternalNode.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,eAAe,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,SAAS,CAO5G"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useIsomorphicLayoutEffect.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useIsomorphicLayoutEffect.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..5c1131bbc26c3a8b36c28031b9001b83bd370927 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useIsomorphicLayoutEffect.d.ts @@ -0,0 +1,3 @@ +import { useEffect } from 'react'; +export declare const useIsomorphicLayoutEffect: typeof useEffect; +//# sourceMappingURL=useIsomorphicLayoutEffect.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useIsomorphicLayoutEffect.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useIsomorphicLayoutEffect.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..073e9973f0916b251721d8d9332fd47c86ddef4b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useIsomorphicLayoutEffect.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useIsomorphicLayoutEffect.d.ts","sourceRoot":"","sources":["../../src/hooks/useIsomorphicLayoutEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,OAAO,CAAC;AAGnD,eAAO,MAAM,yBAAyB,kBAA8D,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useKeyPress.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useKeyPress.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..63cd82522cd6637518bebb35ecd12a8dc737236d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useKeyPress.d.ts @@ -0,0 +1,53 @@ +import { type KeyCode } from '@xyflow/system'; +export type UseKeyPressOptions = { + /** + * Listen to key presses on a specific element. + * @default document + */ + target?: Window | Document | HTMLElement | ShadowRoot | null; + /** + * You can use this flag to prevent triggering the key press hook when an input field is focused. + * @default true + */ + actInsideInputWithModifier?: boolean; + preventDefault?: boolean; +}; +/** + * This hook lets you listen for specific key codes and tells you whether they are + * currently pressed or not. + * + * @public + * @param options - Options + * + * @example + * ```tsx + *import { useKeyPress } from '@xyflow/react'; + * + *export default function () { + * const spacePressed = useKeyPress('Space'); + * const cmdAndSPressed = useKeyPress(['Meta+s', 'Strg+s']); + * + * return ( + *
+ * {spacePressed &&

Space pressed!

} + * {cmdAndSPressed &&

Cmd + S pressed!

} + *
+ * ); + *} + *``` + */ +export declare function useKeyPress( +/** + * The key code (string or array of strings) specifies which key(s) should trigger + * an action. + * + * A **string** can represent: + * - A **single key**, e.g. `'a'` + * - A **key combination**, using `'+'` to separate keys, e.g. `'a+d'` + * + * An **array of strings** represents **multiple possible key inputs**. For example, `['a', 'd+s']` + * means the user can press either the single key `'a'` or the combination of `'d'` and `'s'`. + * @default null + */ +keyCode?: KeyCode | null, options?: UseKeyPressOptions): boolean; +//# sourceMappingURL=useKeyPress.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useKeyPress.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useKeyPress.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..347fb0f89a862b75eb9c43577f03fbe0ec283a5e --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useKeyPress.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useKeyPress.d.ts","sourceRoot":"","sources":["../../src/hooks/useKeyPress.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAM9D,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC;IAC7D;;;OAGG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW;AACzB;;;;;;;;;;;GAWG;AACH,OAAO,GAAE,OAAO,GAAG,IAAW,EAC9B,OAAO,GAAE,kBAA6E,GACrF,OAAO,CAuGT"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useMoveSelectedNodes.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useMoveSelectedNodes.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..24389ec68c372b172b7a63ad78d587d5f7adb18f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useMoveSelectedNodes.d.ts @@ -0,0 +1,12 @@ +import { type XYPosition } from '@xyflow/system'; +/** + * Hook for updating node positions by passing a direction and factor + * + * @internal + * @returns function for updating node positions + */ +export declare function useMoveSelectedNodes(): (params: { + direction: XYPosition; + factor: number; +}) => void; +//# sourceMappingURL=useMoveSelectedNodes.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useMoveSelectedNodes.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useMoveSelectedNodes.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..34c5829a939fa5b915145782a2c32271e87c0455 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useMoveSelectedNodes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useMoveSelectedNodes.d.ts","sourceRoot":"","sources":["../../src/hooks/useMoveSelectedNodes.ts"],"names":[],"mappings":"AACA,OAAO,EAAuC,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAQtF;;;;;GAKG;AACH,wBAAgB,oBAAoB,aAGa;IAAE,SAAS,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,UAiDzF"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodeConnections.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodeConnections.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..0f6c6a17b2ede9d358b052fcfcfa570ed42ca7f9 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodeConnections.d.ts @@ -0,0 +1,25 @@ +import { type NodeConnection, type UseNodeConnectionsParams } from '@xyflow/system'; +/** + * This hook returns an array of connections on a specific node, handle type ('source', 'target') or handle ID. + * + * @public + * @returns An array with connections. + * + * @example + * ```jsx + *import { useNodeConnections } from '@xyflow/react'; + * + *export default function () { + * const connections = useNodeConnections({ + * handleType: 'target', + * handleId: 'my-handle', + * }); + * + * return ( + *
There are currently {connections.length} incoming connections!
+ * ); + *} + *``` + */ +export declare function useNodeConnections({ id, handleType, handleId, onConnect, onDisconnect, }?: UseNodeConnectionsParams): NodeConnection[]; +//# sourceMappingURL=useNodeConnections.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodeConnections.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodeConnections.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..a1dcf2fc8514908e3e5139cce4eda650a830aa7c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodeConnections.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useNodeConnections.d.ts","sourceRoot":"","sources":["../../src/hooks/useNodeConnections.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC9B,MAAM,gBAAgB,CAAC;AAOxB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,EAAE,EACF,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,GACb,GAAE,wBAA6B,GAAG,cAAc,EAAE,CA8BlD"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodes.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodes.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..e3fc0d9b4aad30f917c782611650d15d04b3c307 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodes.d.ts @@ -0,0 +1,22 @@ +import type { Node } from '../types'; +/** + * This hook returns an array of the current nodes. Components that use this hook + * will re-render **whenever any node changes**, including when a node is selected + * or moved. + * + * @public + * @returns An array of all nodes currently in the flow. + * + * @example + * ```jsx + *import { useNodes } from '@xyflow/react'; + * + *export default function() { + * const nodes = useNodes(); + * + * return
There are currently {nodes.length} nodes!
; + *} + *``` + */ +export declare function useNodes(): NodeType[]; +//# sourceMappingURL=useNodes.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodes.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodes.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..c27f37ae1918fcbe4ec89b36f1ef246bf183e0b4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useNodes.d.ts","sourceRoot":"","sources":["../../src/hooks/useNodes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAkB,MAAM,UAAU,CAAC;AAIrD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,CAInE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesData.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesData.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d3358ab9780c06df1afb90e9948ac6a689f2bd30 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesData.d.ts @@ -0,0 +1,27 @@ +import { DistributivePick } from '@xyflow/system'; +import type { Node } from '../types'; +/** + * This hook lets you subscribe to changes of a specific nodes `data` object. + * + * @public + * @returns An object (or array of object) with `id`, `type`, `data` representing each node. + * + * @example + *```jsx + *import { useNodesData } from '@xyflow/react'; + * + *export default function() { + * const nodeData = useNodesData('nodeId-1'); + * const nodesData = useNodesData(['nodeId-1', 'nodeId-2']); + * + * return null; + *} + *``` + */ +export declare function useNodesData( +/** The id of the node to get the data from. */ +nodeId: string): DistributivePick | null; +export declare function useNodesData( +/** The ids of the nodes to get the data from. */ +nodeIds: string[]): DistributivePick[]; +//# sourceMappingURL=useNodesData.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesData.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesData.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..07ef35ccd590250349e5c731c5228556c39e9ac5 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesData.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useNodesData.d.ts","sourceRoot":"","sources":["../../src/hooks/useNodesData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,gBAAgB,CAAC;AAGnE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAErC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI;AACvD,+CAA+C;AAC/C,MAAM,EAAE,MAAM,GACb,gBAAgB,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;AAC7D,wBAAgB,YAAY,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI;AACvD,iDAAiD;AACjD,OAAO,EAAE,MAAM,EAAE,GAChB,gBAAgB,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesEdgesState.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesEdgesState.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..8ae95ad8f316d54b6f931a1e5a3ad45274e3b954 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesEdgesState.d.ts @@ -0,0 +1,105 @@ +import { type Dispatch, type SetStateAction } from 'react'; +import type { Node, Edge, OnNodesChange, OnEdgesChange } from '../types'; +/** + * This hook makes it easy to prototype a controlled flow where you manage the + * state of nodes and edges outside the `ReactFlowInstance`. You can think of it + * like React's `useState` hook with an additional helper callback. + * + * @public + * @returns + * - `nodes`: The current array of nodes. You might pass this directly to the `nodes` prop of your + * `` component, or you may want to manipulate it first to perform some layouting, + * for example. + * - `setNodes`: A function that you can use to update the nodes. You can pass it a new array of + * nodes or a callback that receives the current array of nodes and returns a new array of nodes. + * This is the same as the second element of the tuple returned by React's `useState` hook. + * - `onNodesChange`: A handy callback that can take an array of `NodeChanges` and update the nodes + * state accordingly. You'll typically pass this directly to the `onNodesChange` prop of your + * `` component. + * @example + * + *```tsx + *import { ReactFlow, useNodesState, useEdgesState } from '@xyflow/react'; + * + *const initialNodes = []; + *const initialEdges = []; + * + *export default function () { + * const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes); + * const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges); + * + * return ( + * + * ); + *} + *``` + * + * @remarks This hook was created to make prototyping easier and our documentation + * examples clearer. Although it is OK to use this hook in production, in + * practice you may want to use a more sophisticated state management solution + * like Zustand {@link https://reactflow.dev/docs/guides/state-management/} instead. + * + */ +export declare function useNodesState(initialNodes: NodeType[]): [ + nodes: NodeType[], + setNodes: Dispatch>, + onNodesChange: OnNodesChange +]; +/** + * This hook makes it easy to prototype a controlled flow where you manage the + * state of nodes and edges outside the `ReactFlowInstance`. You can think of it + * like React's `useState` hook with an additional helper callback. + * + * @public + * @returns + * - `edges`: The current array of edges. You might pass this directly to the `edges` prop of your + * `` component, or you may want to manipulate it first to perform some layouting, + * for example. + * + * - `setEdges`: A function that you can use to update the edges. You can pass it a new array of + * edges or a callback that receives the current array of edges and returns a new array of edges. + * This is the same as the second element of the tuple returned by React's `useState` hook. + * + * - `onEdgesChange`: A handy callback that can take an array of `EdgeChanges` and update the edges + * state accordingly. You'll typically pass this directly to the `onEdgesChange` prop of your + * `` component. + * @example + * + *```tsx + *import { ReactFlow, useNodesState, useEdgesState } from '@xyflow/react'; + * + *const initialNodes = []; + *const initialEdges = []; + * + *export default function () { + * const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes); + * const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges); + * + * return ( + * + * ); + *} + *``` + * + * @remarks This hook was created to make prototyping easier and our documentation + * examples clearer. Although it is OK to use this hook in production, in + * practice you may want to use a more sophisticated state management solution + * like Zustand {@link https://reactflow.dev/docs/guides/state-management/} instead. + * + */ +export declare function useEdgesState(initialEdges: EdgeType[]): [ + edges: EdgeType[], + setEdges: Dispatch>, + onEdgesChange: OnEdgesChange +]; +//# sourceMappingURL=useNodesEdgesState.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesEdgesState.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesEdgesState.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..d0d00cee823a02cb0c76dda638231fda8f14e923 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesEdgesState.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useNodesEdgesState.d.ts","sourceRoot":"","sources":["../../src/hooks/useNodesEdgesState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAGlF,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,aAAa,CAAC,QAAQ,SAAS,IAAI,EACjD,YAAY,EAAE,QAAQ,EAAE,GACvB;IAED,KAAK,EAAE,QAAQ,EAAE;IACjB,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9C,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC;CACvC,CAQA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,aAAa,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EACxD,YAAY,EAAE,QAAQ,EAAE,GACvB;IAED,KAAK,EAAE,QAAQ,EAAE;IACjB,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9C,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC;CACvC,CAQA"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesInitialized.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesInitialized.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2cab0f352420de210b6ea0fc54526426cf9e05ee --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesInitialized.d.ts @@ -0,0 +1,39 @@ +export type UseNodesInitializedOptions = { + /** @default false */ + includeHiddenNodes?: boolean; +}; +/** + * This hook tells you whether all the nodes in a flow have been measured and given + *a width and height. When you add a node to the flow, this hook will return + *`false` and then `true` again once the node has been measured. + * + * @public + * @returns Whether or not the nodes have been initialized by the `` component and + * given a width and height. + * + * @example + * ```jsx + *import { useReactFlow, useNodesInitialized } from '@xyflow/react'; + *import { useEffect, useState } from 'react'; + * + *const options = { + * includeHiddenNodes: false, + *}; + * + *export default function useLayout() { + * const { getNodes } = useReactFlow(); + * const nodesInitialized = useNodesInitialized(options); + * const [layoutedNodes, setLayoutedNodes] = useState(getNodes()); + * + * useEffect(() => { + * if (nodesInitialized) { + * setLayoutedNodes(yourLayoutingFunction(getNodes())); + * } + * }, [nodesInitialized]); + * + * return layoutedNodes; + *} + *``` + */ +export declare function useNodesInitialized(options?: UseNodesInitializedOptions): boolean; +//# sourceMappingURL=useNodesInitialized.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesInitialized.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesInitialized.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..4faa85a8791f3178a55c10ff75646666c5cc4bc1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useNodesInitialized.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useNodesInitialized.d.ts","sourceRoot":"","sources":["../../src/hooks/useNodesInitialized.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,0BAA0B,GAAG;IACvC,qBAAqB;IACrB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAoBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,0BAER,GACA,OAAO,CAIT"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnEdgesChangeMiddleware.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnEdgesChangeMiddleware.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..579a0af7fc40d8197a4abb5cc333326ae8dcaf97 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnEdgesChangeMiddleware.d.ts @@ -0,0 +1,10 @@ +import type { EdgeChange } from '@xyflow/system'; +import type { Edge } from '../types'; +/** + * Registers a middleware function to transform edge changes. + * + * @public + * @param fn - Middleware function. Should be memoized with useCallback to avoid re-registration. + */ +export declare function experimental_useOnEdgesChangeMiddleware(fn: (changes: EdgeChange[]) => EdgeChange[]): void; +//# sourceMappingURL=useOnEdgesChangeMiddleware.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnEdgesChangeMiddleware.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnEdgesChangeMiddleware.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..cc0cfb15837d5e09f3c6797b3fe10dfa512f69f4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnEdgesChangeMiddleware.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useOnEdgesChangeMiddleware.d.ts","sourceRoot":"","sources":["../../src/hooks/useOnEdgesChangeMiddleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,KAAK,EAAE,IAAI,EAAQ,MAAM,UAAU,CAAC;AAE3C;;;;;GAKG;AACH,wBAAgB,uCAAuC,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAClF,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,UAAU,CAAC,QAAQ,CAAC,EAAE,QAgBhE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnInitHandler.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnInitHandler.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..95b04fe7e75bb501e2fd2c606c2ef851bf192469 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnInitHandler.d.ts @@ -0,0 +1,8 @@ +import type { OnInit, Node, Edge } from '../types'; +/** + * Hook for calling onInit handler. + * + * @internal + */ +export declare function useOnInitHandler(onInit: OnInit | undefined): void; +//# sourceMappingURL=useOnInitHandler.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnInitHandler.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnInitHandler.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..9fa9e56247956c8e59e185c1b23c85597ebbade3 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnInitHandler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useOnInitHandler.d.ts","sourceRoot":"","sources":["../../src/hooks/useOnInitHandler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,EACzF,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,SAAS,QAW/C"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnNodesChangeMiddleware.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnNodesChangeMiddleware.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..9fca120cb76f4dfedcaf585112b02f230d05b17f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnNodesChangeMiddleware.d.ts @@ -0,0 +1,10 @@ +import type { NodeChange } from '@xyflow/system'; +import type { Node } from '../types'; +/** + * Registers a middleware function to transform node changes. + * + * @public + * @param fn - Middleware function. Should be memoized with useCallback to avoid re-registration. + */ +export declare function experimental_useOnNodesChangeMiddleware(fn: (changes: NodeChange[]) => NodeChange[]): void; +//# sourceMappingURL=useOnNodesChangeMiddleware.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnNodesChangeMiddleware.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnNodesChangeMiddleware.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..52a574bdc57143c3c780f66ceafff228a1373fa1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnNodesChangeMiddleware.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useOnNodesChangeMiddleware.d.ts","sourceRoot":"","sources":["../../src/hooks/useOnNodesChangeMiddleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,KAAK,EAAQ,IAAI,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;GAKG;AACH,wBAAgB,uCAAuC,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAClF,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,UAAU,CAAC,QAAQ,CAAC,EAAE,QAgBhE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnSelectionChange.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnSelectionChange.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d28e6024dbc6e51eaacbe04241d96a6734350d4e --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnSelectionChange.d.ts @@ -0,0 +1,43 @@ +import type { OnSelectionChangeFunc, Node, Edge } from '../types'; +export type UseOnSelectionChangeOptions = { + /** The handler to register. */ + onChange: OnSelectionChangeFunc; +}; +/** + * This hook lets you listen for changes to both node and edge selection. As the + *name implies, the callback you provide will be called whenever the selection of + *_either_ nodes or edges changes. + * + * @public + * @example + * ```jsx + *import { useState } from 'react'; + *import { ReactFlow, useOnSelectionChange } from '@xyflow/react'; + * + *function SelectionDisplay() { + * const [selectedNodes, setSelectedNodes] = useState([]); + * const [selectedEdges, setSelectedEdges] = useState([]); + * + * // the passed handler has to be memoized, otherwise the hook will not work correctly + * const onChange = useCallback(({ nodes, edges }) => { + * setSelectedNodes(nodes.map((node) => node.id)); + * setSelectedEdges(edges.map((edge) => edge.id)); + * }, []); + * + * useOnSelectionChange({ + * onChange, + * }); + * + * return ( + *
+ *

Selected nodes: {selectedNodes.join(', ')}

+ *

Selected edges: {selectedEdges.join(', ')}

+ *
+ * ); + *} + *``` + * + * @remarks You need to memoize the passed `onChange` handler, otherwise the hook will not work correctly. + */ +export declare function useOnSelectionChange({ onChange, }: UseOnSelectionChangeOptions): void; +//# sourceMappingURL=useOnSelectionChange.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnSelectionChange.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnSelectionChange.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..5c7645c98423c7336092bb96857f2024990a18d7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnSelectionChange.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useOnSelectionChange.d.ts","sourceRoot":"","sources":["../../src/hooks/useOnSelectionChange.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAElE,MAAM,MAAM,2BAA2B,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI;IACpG,+BAA+B;IAC/B,QAAQ,EAAE,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CACrD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EAC/F,QAAQ,GACT,EAAE,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAYjD"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnViewportChange.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnViewportChange.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b0843b08038e1047c6cad5b45c507c9c99708733 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnViewportChange.d.ts @@ -0,0 +1,33 @@ +import type { OnViewportChange } from '@xyflow/system'; +export type UseOnViewportChangeOptions = { + /** Gets called when the viewport starts changing. */ + onStart?: OnViewportChange; + /** Gets called when the viewport changes. */ + onChange?: OnViewportChange; + /** Gets called when the viewport stops changing. */ + onEnd?: OnViewportChange; +}; +/** + * The `useOnViewportChange` hook lets you listen for changes to the viewport such + * as panning and zooming. You can provide a callback for each phase of a viewport + * change: `onStart`, `onChange`, and `onEnd`. + * + * @public + * @example + * ```jsx + *import { useCallback } from 'react'; + *import { useOnViewportChange } from '@xyflow/react'; + * + *function ViewportChangeLogger() { + * useOnViewportChange({ + * onStart: (viewport: Viewport) => console.log('start', viewport), + * onChange: (viewport: Viewport) => console.log('change', viewport), + * onEnd: (viewport: Viewport) => console.log('end', viewport), + * }); + * + * return null; + *} + *``` + */ +export declare function useOnViewportChange({ onStart, onChange, onEnd }: UseOnViewportChangeOptions): void; +//# sourceMappingURL=useOnViewportChange.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnViewportChange.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnViewportChange.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..dc42277c7c7e47787eb15cbd212b99959631c139 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useOnViewportChange.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useOnViewportChange.d.ts","sourceRoot":"","sources":["../../src/hooks/useOnViewportChange.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIvD,MAAM,MAAM,0BAA0B,GAAG;IACvC,qDAAqD;IACrD,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,oDAAoD;IACpD,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,0BAA0B,QAc3F"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useReactFlow.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useReactFlow.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..6ed8bc22fb48a3f8eeca2aed99f913b0a15bb336 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useReactFlow.d.ts @@ -0,0 +1,30 @@ +import type { ReactFlowInstance, Node, Edge } from '../types'; +/** + * This hook returns a ReactFlowInstance that can be used to update nodes and edges, manipulate the viewport, or query the current state of the flow. + * + * @public + * @example + * ```jsx + *import { useCallback, useState } from 'react'; + *import { useReactFlow } from '@xyflow/react'; + * + *export function NodeCounter() { + * const reactFlow = useReactFlow(); + * const [count, setCount] = useState(0); + * const countNodes = useCallback(() => { + * setCount(reactFlow.getNodes().length); + * // you need to pass it as a dependency if you are using it with useEffect or useCallback + * // because at the first render, it's not initialized yet and some functions might not work. + * }, [reactFlow]); + * + * return ( + *
+ * + *

There are {count} nodes in the flow.

+ *
+ * ); + *} + *``` + */ +export declare function useReactFlow(): ReactFlowInstance; +//# sourceMappingURL=useReactFlow.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useReactFlow.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useReactFlow.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..8519df99369886f6bc511f47360a671c5d48a61f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useReactFlow.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useReactFlow.d.ts","sourceRoot":"","sources":["../../src/hooks/useReactFlow.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACV,iBAAiB,EACjB,IAAI,EACJ,IAAI,EAKL,MAAM,UAAU,CAAC;AAIlB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,YAAY,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,KAAK,iBAAiB,CAC3G,QAAQ,EACR,QAAQ,CACT,CA8PA"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useResizeHandler.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useResizeHandler.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..23199fc4bbee5cf5c1c58578d4c9975ed93da883 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useResizeHandler.d.ts @@ -0,0 +1,8 @@ +import { type MutableRefObject } from 'react'; +/** + * Hook for handling resize events. + * + * @internal + */ +export declare function useResizeHandler(domNode: MutableRefObject): void; +//# sourceMappingURL=useResizeHandler.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useResizeHandler.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useResizeHandler.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..021d0be7a85fb78337e5b299194e113bbde2d030 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useResizeHandler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useResizeHandler.d.ts","sourceRoot":"","sources":["../../src/hooks/useResizeHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAKzD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,IAAI,CAiCvF"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useStore.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useStore.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..a4ad5c9b07bfec4df4308bb3208bd0b66bccb8c7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useStore.d.ts @@ -0,0 +1,45 @@ +import type { Edge, Node, ReactFlowState } from '../types'; +/** + * This hook can be used to subscribe to internal state changes of the React Flow + * component. The `useStore` hook is re-exported from the [Zustand](https://github.com/pmndrs/zustand) + * state management library, so you should check out their docs for more details. + * + * @public + * @param selector - A selector function that returns a slice of the flow's internal state. + * Extracting or transforming just the state you need is a good practice to avoid unnecessary + * re-renders. + * @param equalityFn - A function to compare the previous and next value. This is incredibly useful + * for preventing unnecessary re-renders. Good sensible defaults are using `Object.is` or importing + * `zustand/shallow`, but you can be as granular as you like. + * @returns The selected state slice. + * + * @example + * ```ts + * const nodes = useStore((state) => state.nodes); + * ``` + * + * @remarks This hook should only be used if there is no other way to access the internal + * state. For many of the common use cases, there are dedicated hooks available + * such as {@link useReactFlow}, {@link useViewport}, etc. + */ +declare function useStore(selector: (state: ReactFlowState) => StateSlice, equalityFn?: (a: StateSlice, b: StateSlice) => boolean): StateSlice; +/** + * In some cases, you might need to access the store directly. This hook returns the store object which can be used on demand to access the state or dispatch actions. + * + * @returns The store object. + * @example + * ```ts + * const store = useStoreApi(); + * ``` + * + * @remarks This hook should only be used if there is no other way to access the internal + * state. For many of the common use cases, there are dedicated hooks available + * such as {@link useReactFlow}, {@link useViewport}, etc. + */ +declare function useStoreApi(): { + getState: () => ReactFlowState; + setState: (partial: ReactFlowState | Partial> | ((state: ReactFlowState) => ReactFlowState | Partial>), replace?: boolean | undefined) => void; + subscribe: (listener: (state: ReactFlowState, prevState: ReactFlowState) => void) => () => void; +}; +export { useStore, useStoreApi }; +//# sourceMappingURL=useStore.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useStore.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useStore.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..d3d1213cae7a3bd946382b6c3da87c15269a9074 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useStore.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useStore.d.ts","sourceRoot":"","sources":["../../src/hooks/useStore.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAI3D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,iBAAS,QAAQ,CAAC,UAAU,GAAG,OAAO,EACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,UAAU,EAC/C,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,KAAK,OAAO,cASvD;AAED;;;;;;;;;;;;GAYG;AACH,iBAAS,WAAW,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI;;;;EAiB9E;AAED,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useUpdateNodeInternals.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useUpdateNodeInternals.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..fb78ea91e7ec42b4a54f72e8f056e8ec62575549 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useUpdateNodeInternals.d.ts @@ -0,0 +1,48 @@ +import type { UpdateNodeInternals } from '@xyflow/system'; +/** + * When you programmatically add or remove handles to a node or update a node's + * handle position, you need to let React Flow know about it using this hook. This + * will update the internal dimensions of the node and properly reposition handles + * on the canvas if necessary. + * + * @public + * @returns Use this function to tell React Flow to update the internal state of one or more nodes + * that you have changed programmatically. + * + * @example + * ```jsx + *import { useCallback, useState } from 'react'; + *import { Handle, useUpdateNodeInternals } from '@xyflow/react'; + * + *export default function RandomHandleNode({ id }) { + * const updateNodeInternals = useUpdateNodeInternals(); + * const [handleCount, setHandleCount] = useState(0); + * const randomizeHandleCount = useCallback(() => { + * setHandleCount(Math.floor(Math.random() * 10)); + * updateNodeInternals(id); + * }, [id, updateNodeInternals]); + * + * return ( + * <> + * {Array.from({ length: handleCount }).map((_, index) => ( + * + * ))} + * + *
+ * + *

There are {handleCount} handles on this node.

+ *
+ * + * ); + *} + *``` + * @remarks This hook can only be used in a component that is a child of a + *{@link ReactFlowProvider} or a {@link ReactFlow} component. + */ +export declare function useUpdateNodeInternals(): UpdateNodeInternals; +//# sourceMappingURL=useUpdateNodeInternals.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useUpdateNodeInternals.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useUpdateNodeInternals.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..4f5a18fe4d7746bf50a82273d2da1a030e347a90 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useUpdateNodeInternals.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useUpdateNodeInternals.d.ts","sourceRoot":"","sources":["../../src/hooks/useUpdateNodeInternals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAsB,MAAM,gBAAgB,CAAC;AAI9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,sBAAsB,IAAI,mBAAmB,CAkB5D"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewport.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewport.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..428255f64101b5a31af1978ad07f643c48975346 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewport.d.ts @@ -0,0 +1,32 @@ +import type { Viewport } from '@xyflow/system'; +/** + * The `useViewport` hook is a convenient way to read the current state of the + * {@link Viewport} in a component. Components that use this hook + * will re-render **whenever the viewport changes**. + * + * @public + * @returns The current viewport. + * + * @example + * + *```jsx + *import { useViewport } from '@xyflow/react'; + * + *export default function ViewportDisplay() { + * const { x, y, zoom } = useViewport(); + * + * return ( + *
+ *

+ * The viewport is currently at ({x}, {y}) and zoomed to {zoom}. + *

+ *
+ * ); + *} + *``` + * + * @remarks This hook can only be used in a component that is a child of a + *{@link ReactFlowProvider} or a {@link ReactFlow} component. + */ +export declare function useViewport(): Viewport; +//# sourceMappingURL=useViewport.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewport.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewport.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..19e207a8ca8a6a45e97f366bd0bb41cedd01fb23 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewport.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useViewport.d.ts","sourceRoot":"","sources":["../../src/hooks/useViewport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAW/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAItC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewportHelper.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewportHelper.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..bab517ad55d58dd0a2399884cec9d97845211959 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewportHelper.d.ts @@ -0,0 +1,10 @@ +import type { ViewportHelperFunctions } from '../types'; +/** + * Hook for getting viewport helper functions. + * + * @internal + * @returns viewport helper functions + */ +declare const useViewportHelper: () => ViewportHelperFunctions; +export default useViewportHelper; +//# sourceMappingURL=useViewportHelper.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewportHelper.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewportHelper.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..7c4a669b9013682eadd16aa2148b971162752601 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewportHelper.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useViewportHelper.d.ts","sourceRoot":"","sources":["../../src/hooks/useViewportHelper.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAExD;;;;;GAKG;AACH,QAAA,MAAM,iBAAiB,QAAO,uBAsG7B,CAAC;AAEF,eAAe,iBAAiB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewportSync.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewportSync.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d8103543f7f8ccd19ee4fb0dfd7f12889d3be978 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewportSync.d.ts @@ -0,0 +1,9 @@ +import type { Viewport } from '@xyflow/system'; +/** + * Hook for syncing the viewport with the panzoom instance. + * + * @internal + * @param viewport + */ +export declare function useViewportSync(viewport?: Viewport): null; +//# sourceMappingURL=useViewportSync.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewportSync.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewportSync.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..d2e3395ddf3e39f4f15cb505b0405c61320056af --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useViewportSync.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useViewportSync.d.ts","sourceRoot":"","sources":["../../src/hooks/useViewportSync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO/C;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,QAAQ,QAYlD"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useVisibleEdgeIds.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useVisibleEdgeIds.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..cab1370312815f4e3acdec883e79b1a5df47b6ab --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useVisibleEdgeIds.d.ts @@ -0,0 +1,9 @@ +/** + * Hook for getting the visible edge ids from the store. + * + * @internal + * @param onlyRenderVisible + * @returns array with visible edge ids + */ +export declare function useVisibleEdgeIds(onlyRenderVisible: boolean): string[]; +//# sourceMappingURL=useVisibleEdgeIds.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useVisibleEdgeIds.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useVisibleEdgeIds.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..fcd115acaf5dd9e55d6cb598d0f5425da629f612 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useVisibleEdgeIds.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useVisibleEdgeIds.d.ts","sourceRoot":"","sources":["../../src/hooks/useVisibleEdgeIds.ts"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,iBAAiB,EAAE,OAAO,GAAG,MAAM,EAAE,CAuCtE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useVisibleNodeIds.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useVisibleNodeIds.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..67bbac1a67de42edd73e53b6b9c97f9d4c6cfa68 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useVisibleNodeIds.d.ts @@ -0,0 +1,9 @@ +/** + * Hook for getting the visible node ids from the store. + * + * @internal + * @param onlyRenderVisible + * @returns array with visible node ids + */ +export declare function useVisibleNodeIds(onlyRenderVisible: boolean): string[]; +//# sourceMappingURL=useVisibleNodeIds.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useVisibleNodeIds.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useVisibleNodeIds.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..5fe24da4743c7f3f1ae023e6d124e3d6c1ba778a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/hooks/useVisibleNodeIds.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useVisibleNodeIds.d.ts","sourceRoot":"","sources":["../../src/hooks/useVisibleNodeIds.ts"],"names":[],"mappings":"AAeA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,iBAAiB,EAAE,OAAO,YAI3D"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..1041d06b4e027f08c57f3d6713e3263dd30f34c4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/index.d.ts @@ -0,0 +1,42 @@ +export { default as ReactFlow } from './container/ReactFlow'; +export { Handle, type HandleProps } from './components/Handle'; +export { EdgeText } from './components/Edges/EdgeText'; +export { StraightEdge } from './components/Edges/StraightEdge'; +export { StepEdge } from './components/Edges/StepEdge'; +export { BezierEdge } from './components/Edges/BezierEdge'; +export { SimpleBezierEdge, getSimpleBezierPath } from './components/Edges/SimpleBezierEdge'; +export { SmoothStepEdge } from './components/Edges/SmoothStepEdge'; +export { BaseEdge } from './components/Edges/BaseEdge'; +export { ReactFlowProvider } from './components/ReactFlowProvider'; +export { Panel, type PanelProps } from './components/Panel'; +export { EdgeLabelRenderer, type EdgeLabelRendererProps } from './components/EdgeLabelRenderer'; +export { ViewportPortal } from './components/ViewportPortal'; +export { useReactFlow } from './hooks/useReactFlow'; +export { useUpdateNodeInternals } from './hooks/useUpdateNodeInternals'; +export { useNodes } from './hooks/useNodes'; +export { useEdges } from './hooks/useEdges'; +export { useViewport } from './hooks/useViewport'; +export { useKeyPress } from './hooks/useKeyPress'; +export { useNodesState, useEdgesState } from './hooks/useNodesEdgesState'; +export { useStore, useStoreApi } from './hooks/useStore'; +export { useOnViewportChange, type UseOnViewportChangeOptions } from './hooks/useOnViewportChange'; +export { useOnSelectionChange, type UseOnSelectionChangeOptions } from './hooks/useOnSelectionChange'; +export { useNodesInitialized, type UseNodesInitializedOptions } from './hooks/useNodesInitialized'; +export { useHandleConnections } from './hooks/useHandleConnections'; +export { useNodeConnections } from './hooks/useNodeConnections'; +export { useNodesData } from './hooks/useNodesData'; +export { useConnection } from './hooks/useConnection'; +export { useInternalNode } from './hooks/useInternalNode'; +export { useNodeId } from './contexts/NodeIdContext'; +export { experimental_useOnNodesChangeMiddleware } from './hooks/useOnNodesChangeMiddleware'; +export { experimental_useOnEdgesChangeMiddleware } from './hooks/useOnEdgesChangeMiddleware'; +export { applyNodeChanges, applyEdgeChanges } from './utils/changes'; +export { isNode, isEdge } from './utils/general'; +export * from './additional-components'; +export * from './types'; +export { type Align, type SmoothStepPathOptions, type BezierPathOptions, ConnectionLineType, type EdgeMarker, type EdgeMarkerType, MarkerType, type OnMove, type OnMoveStart, type OnMoveEnd, type Connection, ConnectionMode, type OnConnectStartParams, type OnConnectStart, type OnConnect, type OnConnectEnd, type Viewport, type SnapGrid, PanOnScrollMode, type ViewportHelperFunctionOptions, type SetCenterOptions, type FitBoundsOptions, type PanelPosition, type ProOptions, SelectionMode, type SelectionRect, type OnError, type NodeOrigin, type OnSelectionDrag, Position, type XYPosition, type XYZPosition, type Dimensions, type Rect, type Box, type Transform, type CoordinateExtent, type ColorMode, type ColorModeClass, type HandleType, type ShouldResize, type OnResizeStart, type OnResize, type OnResizeEnd, type ControlPosition, type ControlLinePosition, ResizeControlVariant, type ResizeParams, type ResizeParamsWithDirection, type ResizeDragEvent, type NodeChange, type NodeDimensionChange, type NodePositionChange, type NodeSelectionChange, type NodeRemoveChange, type NodeAddChange, type NodeReplaceChange, type EdgeChange, type EdgeSelectionChange, type EdgeRemoveChange, type EdgeAddChange, type EdgeReplaceChange, type KeyCode, type ConnectionState, type FinalConnectionState, type ConnectionInProgress, type NoConnection, type NodeConnection, type OnReconnect, type AriaLabelConfig, type SetCenter, type SetViewport, type FitBounds, type HandleConnection, type ZIndexMode, type NodeHandle, type UseNodeConnectionsParams, } from '@xyflow/system'; +import { type Handle as HandleBound } from '@xyflow/system'; +export type Handle = HandleBound; +export { type GetBezierPathParams, getBezierEdgeCenter, getBezierPath, getEdgeCenter, type GetSmoothStepPathParams, getSmoothStepPath, type GetStraightPathParams, getStraightPath, getViewportForBounds, getNodesBounds, getIncomers, getOutgoers, getConnectedEdges, } from '@xyflow/system'; +export { addEdge, reconnectEdge } from './utils/edges'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..ab0c9d62dde7ec3bc2c0a99c124b37879b408960 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,KAAK,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,KAAK,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AACtG,OAAO,EAAE,mBAAmB,EAAE,KAAK,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,uCAAuC,EAAE,MAAM,oCAAoC,CAAC;AAC7F,OAAO,EAAE,uCAAuC,EAAE,MAAM,oCAAoC,CAAC;AAE7F,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEjD,cAAc,yBAAyB,CAAC;AAExC,cAAc,SAAS,CAAC;AAGxB,OAAO,EACL,KAAK,KAAK,EACV,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,kBAAkB,EAClB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,UAAU,EACV,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,eAAe,EACf,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,QAAQ,EACR,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,IAAI,EACT,KAAK,GAAG,EACR,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,wBAAwB,GAC9B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,KAAK,MAAM,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC5D,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC;AAGjC,OAAO,EACL,KAAK,mBAAmB,EACxB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,KAAK,uBAAuB,EAC5B,iBAAiB,EACjB,KAAK,qBAAqB,EAC1B,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,WAAW,EACX,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/index.js b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/index.js new file mode 100644 index 0000000000000000000000000000000000000000..82876075f0ef9df255c92454a668908996b04c14 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/index.js @@ -0,0 +1,5128 @@ +"use client" +import { jsxs, Fragment, jsx } from 'react/jsx-runtime'; +import { createContext, useContext, useMemo, forwardRef, useEffect, useRef, useState, useLayoutEffect, useCallback, memo } from 'react'; +import cc from 'classcat'; +import { errorMessages, infiniteExtent, mergeAriaLabelConfig, isInputDOMNode, rendererPointToPoint, pointToRendererPoint, getViewportForBounds, createDevWarn, addEdge as addEdge$1, reconnectEdge as reconnectEdge$1, isNodeBase, isEdgeBase, withResolvers, getNodesBounds, isRectObject, getOverlappingArea, nodeToRect, getElementsToRemove, evaluateAbsolutePosition, getDimensions, XYPanZoom, PanOnScrollMode, SelectionMode, getEventPosition, calcAutoPan, getNodesInside, areSetsEqual, XYDrag, snapPosition, calculateNodePosition, Position, ConnectionMode, getHostForElement, XYHandle, isMouseEvent, getInternalNodesBounds, isNumeric, nodeHasDimensions, getNodeDimensions, elementSelectionKeys, isEdgeVisible, MarkerType, createMarkerIds, getBezierEdgeCenter, getSmoothStepPath, getStraightPath, getBezierPath, getEdgePosition, getElevatedEdgeZIndex, getMarkerId, getConnectionStatus, ConnectionLineType, updateConnectionLookup, adoptUserNodes, defaultAriaLabelConfig, initialConnection, panBy, getHandlePosition, handleExpandParent, updateNodeInternals, updateAbsolutePositions, fitViewport, isMacOs, areConnectionMapsEqual, handleConnectionChange, shallowNodeData, XYMinimap, getBoundsOfRects, ResizeControlVariant, XYResizer, XY_RESIZER_LINE_POSITIONS, XY_RESIZER_HANDLE_POSITIONS, getNodeToolbarTransform, getEdgeToolbarTransform } from '@xyflow/system'; +export { ConnectionLineType, ConnectionMode, MarkerType, PanOnScrollMode, Position, ResizeControlVariant, SelectionMode, getBezierEdgeCenter, getBezierPath, getConnectedEdges, getEdgeCenter, getIncomers, getNodesBounds, getOutgoers, getSmoothStepPath, getStraightPath, getViewportForBounds } from '@xyflow/system'; +import { useStoreWithEqualityFn, createWithEqualityFn } from 'zustand/traditional'; +import { shallow } from 'zustand/shallow'; +import { createPortal } from 'react-dom'; + +const StoreContext = createContext(null); +const Provider$1 = StoreContext.Provider; + +const zustandErrorMessage = errorMessages['error001']('react'); +/** + * This hook can be used to subscribe to internal state changes of the React Flow + * component. The `useStore` hook is re-exported from the [Zustand](https://github.com/pmndrs/zustand) + * state management library, so you should check out their docs for more details. + * + * @public + * @param selector - A selector function that returns a slice of the flow's internal state. + * Extracting or transforming just the state you need is a good practice to avoid unnecessary + * re-renders. + * @param equalityFn - A function to compare the previous and next value. This is incredibly useful + * for preventing unnecessary re-renders. Good sensible defaults are using `Object.is` or importing + * `zustand/shallow`, but you can be as granular as you like. + * @returns The selected state slice. + * + * @example + * ```ts + * const nodes = useStore((state) => state.nodes); + * ``` + * + * @remarks This hook should only be used if there is no other way to access the internal + * state. For many of the common use cases, there are dedicated hooks available + * such as {@link useReactFlow}, {@link useViewport}, etc. + */ +function useStore(selector, equalityFn) { + const store = useContext(StoreContext); + if (store === null) { + throw new Error(zustandErrorMessage); + } + return useStoreWithEqualityFn(store, selector, equalityFn); +} +/** + * In some cases, you might need to access the store directly. This hook returns the store object which can be used on demand to access the state or dispatch actions. + * + * @returns The store object. + * @example + * ```ts + * const store = useStoreApi(); + * ``` + * + * @remarks This hook should only be used if there is no other way to access the internal + * state. For many of the common use cases, there are dedicated hooks available + * such as {@link useReactFlow}, {@link useViewport}, etc. + */ +function useStoreApi() { + const store = useContext(StoreContext); + if (store === null) { + throw new Error(zustandErrorMessage); + } + return useMemo(() => ({ + getState: store.getState, + setState: store.setState, + subscribe: store.subscribe, + }), [store]); +} + +const style = { display: 'none' }; +const ariaLiveStyle = { + position: 'absolute', + width: 1, + height: 1, + margin: -1, + border: 0, + padding: 0, + overflow: 'hidden', + clip: 'rect(0px, 0px, 0px, 0px)', + clipPath: 'inset(100%)', +}; +const ARIA_NODE_DESC_KEY = 'react-flow__node-desc'; +const ARIA_EDGE_DESC_KEY = 'react-flow__edge-desc'; +const ARIA_LIVE_MESSAGE = 'react-flow__aria-live'; +const ariaLiveSelector = (s) => s.ariaLiveMessage; +const ariaLabelConfigSelector = (s) => s.ariaLabelConfig; +function AriaLiveMessage({ rfId }) { + const ariaLiveMessage = useStore(ariaLiveSelector); + return (jsx("div", { id: `${ARIA_LIVE_MESSAGE}-${rfId}`, "aria-live": "assertive", "aria-atomic": "true", style: ariaLiveStyle, children: ariaLiveMessage })); +} +function A11yDescriptions({ rfId, disableKeyboardA11y }) { + const ariaLabelConfig = useStore(ariaLabelConfigSelector); + return (jsxs(Fragment, { children: [jsx("div", { id: `${ARIA_NODE_DESC_KEY}-${rfId}`, style: style, children: disableKeyboardA11y + ? ariaLabelConfig['node.a11yDescription.default'] + : ariaLabelConfig['node.a11yDescription.keyboardDisabled'] }), jsx("div", { id: `${ARIA_EDGE_DESC_KEY}-${rfId}`, style: style, children: ariaLabelConfig['edge.a11yDescription.default'] }), !disableKeyboardA11y && jsx(AriaLiveMessage, { rfId: rfId })] })); +} + +/** + * The `` component helps you position content above the viewport. + * It is used internally by the [``](/api-reference/components/minimap) + * and [``](/api-reference/components/controls) components. + * + * @public + * + * @example + * ```jsx + *import { ReactFlow, Background, Panel } from '@xyflow/react'; + * + *export default function Flow() { + * return ( + * + * top-left + * top-center + * top-right + * bottom-left + * bottom-center + * bottom-right + * + * ); + *} + *``` + */ +const Panel = forwardRef(({ position = 'top-left', children, className, style, ...rest }, ref) => { + const positionClasses = `${position}`.split('-'); + return (jsx("div", { className: cc(['react-flow__panel', className, ...positionClasses]), style: style, ref: ref, ...rest, children: children })); +}); +Panel.displayName = 'Panel'; + +const link = `https://reactflow.dev${process.env.NODE_ENV === 'production' ? '?utm_source=attribution' : '/attribution'}`; +function Attribution({ proOptions, position = 'bottom-right' }) { + if (proOptions?.hideAttribution) { + return null; + } + return (jsx(Panel, { position: position, className: "react-flow__attribution", "data-message": `Please only hide this attribution when you are subscribed to React Flow Pro: ${link}`, children: jsx("a", { href: link, target: "_blank", rel: "noopener noreferrer", "aria-label": "React Flow attribution", children: "React Flow" }) })); +} + +const selector$l = (s) => { + const selectedNodes = []; + const selectedEdges = []; + for (const [, node] of s.nodeLookup) { + if (node.selected) { + selectedNodes.push(node.internals.userNode); + } + } + for (const [, edge] of s.edgeLookup) { + if (edge.selected) { + selectedEdges.push(edge); + } + } + return { selectedNodes, selectedEdges }; +}; +const selectId = (obj) => obj.id; +function areEqual$1(a, b) { + return (shallow(a.selectedNodes.map(selectId), b.selectedNodes.map(selectId)) && + shallow(a.selectedEdges.map(selectId), b.selectedEdges.map(selectId))); +} +function SelectionListenerInner({ onSelectionChange, }) { + const store = useStoreApi(); + const { selectedNodes, selectedEdges } = useStore(selector$l, areEqual$1); + useEffect(() => { + const params = { nodes: selectedNodes, edges: selectedEdges }; + onSelectionChange?.(params); + store.getState().onSelectionChangeHandlers.forEach((fn) => fn(params)); + }, [selectedNodes, selectedEdges, onSelectionChange]); + return null; +} +const changeSelector = (s) => !!s.onSelectionChangeHandlers; +function SelectionListener({ onSelectionChange, }) { + const storeHasSelectionChangeHandlers = useStore(changeSelector); + if (onSelectionChange || storeHasSelectionChangeHandlers) { + return jsx(SelectionListenerInner, { onSelectionChange: onSelectionChange }); + } + return null; +} + +const defaultNodeOrigin = [0, 0]; +const defaultViewport = { x: 0, y: 0, zoom: 1 }; + +/* + * This component helps us to update the store with the values coming from the user. + * We distinguish between values we can update directly with `useDirectStoreUpdater` (like `snapGrid`) + * and values that have a dedicated setter function in the store (like `setNodes`). + */ +// These fields exist in the global store, and we need to keep them up to date +const reactFlowFieldsToTrack = [ + 'nodes', + 'edges', + 'defaultNodes', + 'defaultEdges', + 'onConnect', + 'onConnectStart', + 'onConnectEnd', + 'onClickConnectStart', + 'onClickConnectEnd', + 'nodesDraggable', + 'autoPanOnNodeFocus', + 'nodesConnectable', + 'nodesFocusable', + 'edgesFocusable', + 'edgesReconnectable', + 'elevateNodesOnSelect', + 'elevateEdgesOnSelect', + 'minZoom', + 'maxZoom', + 'nodeExtent', + 'onNodesChange', + 'onEdgesChange', + 'elementsSelectable', + 'connectionMode', + 'snapGrid', + 'snapToGrid', + 'translateExtent', + 'connectOnClick', + 'defaultEdgeOptions', + 'fitView', + 'fitViewOptions', + 'onNodesDelete', + 'onEdgesDelete', + 'onDelete', + 'onNodeDrag', + 'onNodeDragStart', + 'onNodeDragStop', + 'onSelectionDrag', + 'onSelectionDragStart', + 'onSelectionDragStop', + 'onMoveStart', + 'onMove', + 'onMoveEnd', + 'noPanClassName', + 'nodeOrigin', + 'autoPanOnConnect', + 'autoPanOnNodeDrag', + 'onError', + 'connectionRadius', + 'isValidConnection', + 'selectNodesOnDrag', + 'nodeDragThreshold', + 'connectionDragThreshold', + 'onBeforeDelete', + 'debug', + 'autoPanSpeed', + 'ariaLabelConfig', + 'zIndexMode', +]; +// rfId doesn't exist in ReactFlowProps, but it's one of the fields we want to update +const fieldsToTrack = [...reactFlowFieldsToTrack, 'rfId']; +const selector$k = (s) => ({ + setNodes: s.setNodes, + setEdges: s.setEdges, + setMinZoom: s.setMinZoom, + setMaxZoom: s.setMaxZoom, + setTranslateExtent: s.setTranslateExtent, + setNodeExtent: s.setNodeExtent, + reset: s.reset, + setDefaultNodesAndEdges: s.setDefaultNodesAndEdges, +}); +const initPrevValues = { + /* + * these are values that are also passed directly to other components + * than the StoreUpdater. We can reduce the number of setStore calls + * by setting the same values here as prev fields. + */ + translateExtent: infiniteExtent, + nodeOrigin: defaultNodeOrigin, + minZoom: 0.5, + maxZoom: 2, + elementsSelectable: true, + noPanClassName: 'nopan', + rfId: '1', +}; +function StoreUpdater(props) { + const { setNodes, setEdges, setMinZoom, setMaxZoom, setTranslateExtent, setNodeExtent, reset, setDefaultNodesAndEdges, } = useStore(selector$k, shallow); + const store = useStoreApi(); + useEffect(() => { + setDefaultNodesAndEdges(props.defaultNodes, props.defaultEdges); + return () => { + // when we reset the store we also need to reset the previous fields + previousFields.current = initPrevValues; + reset(); + }; + }, []); + const previousFields = useRef(initPrevValues); + useEffect(() => { + for (const fieldName of fieldsToTrack) { + const fieldValue = props[fieldName]; + const previousFieldValue = previousFields.current[fieldName]; + if (fieldValue === previousFieldValue) + continue; + if (typeof props[fieldName] === 'undefined') + continue; + // Custom handling with dedicated setters for some fields + if (fieldName === 'nodes') + setNodes(fieldValue); + else if (fieldName === 'edges') + setEdges(fieldValue); + else if (fieldName === 'minZoom') + setMinZoom(fieldValue); + else if (fieldName === 'maxZoom') + setMaxZoom(fieldValue); + else if (fieldName === 'translateExtent') + setTranslateExtent(fieldValue); + else if (fieldName === 'nodeExtent') + setNodeExtent(fieldValue); + else if (fieldName === 'ariaLabelConfig') + store.setState({ ariaLabelConfig: mergeAriaLabelConfig(fieldValue) }); + // Renamed fields + else if (fieldName === 'fitView') + store.setState({ fitViewQueued: fieldValue }); + else if (fieldName === 'fitViewOptions') + store.setState({ fitViewOptions: fieldValue }); + // General case + else + store.setState({ [fieldName]: fieldValue }); + } + previousFields.current = props; + }, + // Only re-run the effect if one of the fields we track changes + fieldsToTrack.map((fieldName) => props[fieldName])); + return null; +} + +function getMediaQuery() { + if (typeof window === 'undefined' || !window.matchMedia) { + return null; + } + return window.matchMedia('(prefers-color-scheme: dark)'); +} +/** + * Hook for receiving the current color mode class 'dark' or 'light'. + * + * @internal + * @param colorMode - The color mode to use ('dark', 'light' or 'system') + */ +function useColorModeClass(colorMode) { + const [colorModeClass, setColorModeClass] = useState(colorMode === 'system' ? null : colorMode); + useEffect(() => { + if (colorMode !== 'system') { + setColorModeClass(colorMode); + return; + } + const mediaQuery = getMediaQuery(); + const updateColorModeClass = () => setColorModeClass(mediaQuery?.matches ? 'dark' : 'light'); + updateColorModeClass(); + mediaQuery?.addEventListener('change', updateColorModeClass); + return () => { + mediaQuery?.removeEventListener('change', updateColorModeClass); + }; + }, [colorMode]); + return colorModeClass !== null ? colorModeClass : getMediaQuery()?.matches ? 'dark' : 'light'; +} + +const defaultDoc = typeof document !== 'undefined' ? document : null; +/** + * This hook lets you listen for specific key codes and tells you whether they are + * currently pressed or not. + * + * @public + * @param options - Options + * + * @example + * ```tsx + *import { useKeyPress } from '@xyflow/react'; + * + *export default function () { + * const spacePressed = useKeyPress('Space'); + * const cmdAndSPressed = useKeyPress(['Meta+s', 'Strg+s']); + * + * return ( + *
+ * {spacePressed &&

Space pressed!

} + * {cmdAndSPressed &&

Cmd + S pressed!

} + *
+ * ); + *} + *``` + */ +function useKeyPress( +/** + * The key code (string or array of strings) specifies which key(s) should trigger + * an action. + * + * A **string** can represent: + * - A **single key**, e.g. `'a'` + * - A **key combination**, using `'+'` to separate keys, e.g. `'a+d'` + * + * An **array of strings** represents **multiple possible key inputs**. For example, `['a', 'd+s']` + * means the user can press either the single key `'a'` or the combination of `'d'` and `'s'`. + * @default null + */ +keyCode = null, options = { target: defaultDoc, actInsideInputWithModifier: true }) { + const [keyPressed, setKeyPressed] = useState(false); + // we need to remember if a modifier key is pressed in order to track it + const modifierPressed = useRef(false); + // we need to remember the pressed keys in order to support combinations + const pressedKeys = useRef(new Set([])); + /* + * keyCodes = array with single keys [['a']] or key combinations [['a', 's']] + * keysToWatch = array with all keys flattened ['a', 'd', 'ShiftLeft'] + * used to check if we store event.code or event.key. When the code is in the list of keysToWatch + * we use the code otherwise the key. Explainer: When you press the left "command" key, the code is "MetaLeft" + * 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 + * we can't find it in the list of keysToWatch. + */ + const [keyCodes, keysToWatch] = useMemo(() => { + if (keyCode !== null) { + const keyCodeArr = Array.isArray(keyCode) ? keyCode : [keyCode]; + const keys = keyCodeArr + .filter((kc) => typeof kc === 'string') + /* + * we first replace all '+' with '\n' which we will use to split the keys on + * then we replace '\n\n' with '\n+', this way we can also support the combination 'key++' + * in the end we simply split on '\n' to get the key array + */ + .map((kc) => kc.replace('+', '\n').replace('\n\n', '\n+').split('\n')); + const keysFlat = keys.reduce((res, item) => res.concat(...item), []); + return [keys, keysFlat]; + } + return [[], []]; + }, [keyCode]); + useEffect(() => { + const target = options?.target ?? defaultDoc; + const actInsideInputWithModifier = options?.actInsideInputWithModifier ?? true; + if (keyCode !== null) { + const downHandler = (event) => { + modifierPressed.current = event.ctrlKey || event.metaKey || event.shiftKey || event.altKey; + const preventAction = (!modifierPressed.current || (modifierPressed.current && !actInsideInputWithModifier)) && + isInputDOMNode(event); + if (preventAction) { + return false; + } + const keyOrCode = useKeyOrCode(event.code, keysToWatch); + pressedKeys.current.add(event[keyOrCode]); + if (isMatchingKey(keyCodes, pressedKeys.current, false)) { + const target = (event.composedPath?.()?.[0] || event.target); + const isInteractiveElement = target?.nodeName === 'BUTTON' || target?.nodeName === 'A'; + if (options.preventDefault !== false && (modifierPressed.current || !isInteractiveElement)) { + event.preventDefault(); + } + setKeyPressed(true); + } + }; + const upHandler = (event) => { + const keyOrCode = useKeyOrCode(event.code, keysToWatch); + if (isMatchingKey(keyCodes, pressedKeys.current, true)) { + setKeyPressed(false); + pressedKeys.current.clear(); + } + else { + pressedKeys.current.delete(event[keyOrCode]); + } + // 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 + if (event.key === 'Meta') { + pressedKeys.current.clear(); + } + modifierPressed.current = false; + }; + const resetHandler = () => { + pressedKeys.current.clear(); + setKeyPressed(false); + }; + target?.addEventListener('keydown', downHandler); + target?.addEventListener('keyup', upHandler); + window.addEventListener('blur', resetHandler); + window.addEventListener('contextmenu', resetHandler); + return () => { + target?.removeEventListener('keydown', downHandler); + target?.removeEventListener('keyup', upHandler); + window.removeEventListener('blur', resetHandler); + window.removeEventListener('contextmenu', resetHandler); + }; + } + }, [keyCode, setKeyPressed]); + return keyPressed; +} +// utils +function isMatchingKey(keyCodes, pressedKeys, isUp) { + return (keyCodes + /* + * we only want to compare same sizes of keyCode definitions + * and pressed keys. When the user specified 'Meta' as a key somewhere + * this would also be truthy without this filter when user presses 'Meta' + 'r' + */ + .filter((keys) => isUp || keys.length === pressedKeys.size) + /* + * since we want to support multiple possibilities only one of the + * combinations need to be part of the pressed keys + */ + .some((keys) => keys.every((k) => pressedKeys.has(k)))); +} +function useKeyOrCode(eventCode, keysToWatch) { + return keysToWatch.includes(eventCode) ? 'code' : 'key'; +} + +/** + * Hook for getting viewport helper functions. + * + * @internal + * @returns viewport helper functions + */ +const useViewportHelper = () => { + const store = useStoreApi(); + return useMemo(() => { + return { + zoomIn: async (options) => { + const { panZoom } = store.getState(); + return panZoom ? panZoom.scaleBy(1.2, options) : false; + }, + zoomOut: async (options) => { + const { panZoom } = store.getState(); + return panZoom ? panZoom.scaleBy(1 / 1.2, options) : false; + }, + zoomTo: async (zoomLevel, options) => { + const { panZoom } = store.getState(); + return panZoom ? panZoom.scaleTo(zoomLevel, options) : false; + }, + getZoom: () => store.getState().transform[2], + setViewport: async (viewport, options) => { + const { transform: [tX, tY, tZoom], panZoom, } = store.getState(); + if (!panZoom) { + return false; + } + await panZoom.setViewport({ + x: viewport.x ?? tX, + y: viewport.y ?? tY, + zoom: viewport.zoom ?? tZoom, + }, options); + return true; + }, + getViewport: () => { + const [x, y, zoom] = store.getState().transform; + return { x, y, zoom }; + }, + setCenter: async (x, y, options) => { + return store.getState().setCenter(x, y, options); + }, + fitBounds: async (bounds, options) => { + const { width, height, minZoom, maxZoom, panZoom } = store.getState(); + const viewport = getViewportForBounds(bounds, width, height, minZoom, maxZoom, options?.padding ?? 0.1); + if (!panZoom) { + return false; + } + await panZoom.setViewport(viewport, { + duration: options?.duration, + ease: options?.ease, + interpolate: options?.interpolate, + }); + return true; + }, + screenToFlowPosition: (clientPosition, options = {}) => { + const { transform, snapGrid, snapToGrid, domNode } = store.getState(); + if (!domNode) { + return clientPosition; + } + const { x: domX, y: domY } = domNode.getBoundingClientRect(); + const correctedPosition = { + x: clientPosition.x - domX, + y: clientPosition.y - domY, + }; + const _snapGrid = options.snapGrid ?? snapGrid; + const _snapToGrid = options.snapToGrid ?? snapToGrid; + return pointToRendererPoint(correctedPosition, transform, _snapToGrid, _snapGrid); + }, + flowToScreenPosition: (flowPosition) => { + const { transform, domNode } = store.getState(); + if (!domNode) { + return flowPosition; + } + const { x: domX, y: domY } = domNode.getBoundingClientRect(); + const rendererPosition = rendererPointToPoint(flowPosition, transform); + return { + x: rendererPosition.x + domX, + y: rendererPosition.y + domY, + }; + }, + }; + }, []); +}; + +/* + * This function applies changes to nodes or edges that are triggered by React Flow internally. + * When you drag a node for example, React Flow will send a position change update. + * This function then applies the changes and returns the updated elements. + */ +function applyChanges(changes, elements) { + const updatedElements = []; + /* + * By storing a map of changes for each element, we can a quick lookup as we + * iterate over the elements array! + */ + const changesMap = new Map(); + const addItemChanges = []; + for (const change of changes) { + if (change.type === 'add') { + addItemChanges.push(change); + continue; + } + else if (change.type === 'remove' || change.type === 'replace') { + /* + * For a 'remove' change we can safely ignore any other changes queued for + * the same element, it's going to be removed anyway! + */ + changesMap.set(change.id, [change]); + } + else { + const elementChanges = changesMap.get(change.id); + if (elementChanges) { + /* + * If we have some changes queued already, we can do a mutable update of + * that array and save ourselves some copying. + */ + elementChanges.push(change); + } + else { + changesMap.set(change.id, [change]); + } + } + } + for (const element of elements) { + const changes = changesMap.get(element.id); + /* + * When there are no changes for an element we can just push it unmodified, + * no need to copy it. + */ + if (!changes) { + updatedElements.push(element); + continue; + } + // If we have a 'remove' change queued, it'll be the only change in the array + if (changes[0].type === 'remove') { + continue; + } + if (changes[0].type === 'replace') { + updatedElements.push({ ...changes[0].item }); + continue; + } + /** + * For other types of changes, we want to start with a shallow copy of the + * object so React knows this element has changed. Sequential changes will + * each _mutate_ this object, so there's only ever one copy. + */ + const updatedElement = { ...element }; + for (const change of changes) { + applyChange(change, updatedElement); + } + updatedElements.push(updatedElement); + } + /* + * we need to wait for all changes to be applied before adding new items + * to be able to add them at the correct index + */ + if (addItemChanges.length) { + addItemChanges.forEach((change) => { + if (change.index !== undefined) { + updatedElements.splice(change.index, 0, { ...change.item }); + } + else { + updatedElements.push({ ...change.item }); + } + }); + } + return updatedElements; +} +// Applies a single change to an element. This is a *mutable* update. +function applyChange(change, element) { + switch (change.type) { + case 'select': { + element.selected = change.selected; + break; + } + case 'position': { + if (typeof change.position !== 'undefined') { + element.position = change.position; + } + if (typeof change.dragging !== 'undefined') { + element.dragging = change.dragging; + } + break; + } + case 'dimensions': { + if (typeof change.dimensions !== 'undefined') { + element.measured = { + ...change.dimensions, + }; + if (change.setAttributes) { + if (change.setAttributes === true || change.setAttributes === 'width') { + element.width = change.dimensions.width; + } + if (change.setAttributes === true || change.setAttributes === 'height') { + element.height = change.dimensions.height; + } + } + } + if (typeof change.resizing === 'boolean') { + element.resizing = change.resizing; + } + break; + } + } +} +/** + * Drop in function that applies node changes to an array of nodes. + * @public + * @param changes - Array of changes to apply. + * @param nodes - Array of nodes to apply the changes to. + * @returns Array of updated nodes. + * @example + *```tsx + *import { useState, useCallback } from 'react'; + *import { ReactFlow, applyNodeChanges, type Node, type Edge, type OnNodesChange } from '@xyflow/react'; + * + *export default function Flow() { + * const [nodes, setNodes] = useState([]); + * const [edges, setEdges] = useState([]); + * const onNodesChange: OnNodesChange = useCallback( + * (changes) => { + * setNodes((oldNodes) => applyNodeChanges(changes, oldNodes)); + * }, + * [setNodes], + * ); + * + * return ( + * + * ); + *} + *``` + * @remarks Various events on the component can produce an {@link NodeChange} + * that describes how to update the edges of your flow in some way. + * If you don't need any custom behaviour, this util can be used to take an array + * of these changes and apply them to your edges. + */ +function applyNodeChanges(changes, nodes) { + return applyChanges(changes, nodes); +} +/** + * Drop in function that applies edge changes to an array of edges. + * @public + * @param changes - Array of changes to apply. + * @param edges - Array of edge to apply the changes to. + * @returns Array of updated edges. + * @example + * ```tsx + *import { useState, useCallback } from 'react'; + *import { ReactFlow, applyEdgeChanges } from '@xyflow/react'; + * + *export default function Flow() { + * const [nodes, setNodes] = useState([]); + * const [edges, setEdges] = useState([]); + * const onEdgesChange = useCallback( + * (changes) => { + * setEdges((oldEdges) => applyEdgeChanges(changes, oldEdges)); + * }, + * [setEdges], + * ); + * + * return ( + * + * ); + *} + *``` + * @remarks Various events on the component can produce an {@link EdgeChange} + * that describes how to update the edges of your flow in some way. + * If you don't need any custom behaviour, this util can be used to take an array + * of these changes and apply them to your edges. + */ +function applyEdgeChanges(changes, edges) { + return applyChanges(changes, edges); +} +function createSelectionChange(id, selected) { + return { + id, + type: 'select', + selected, + }; +} +function getSelectionChanges(items, selectedIds = new Set(), mutateItem = false) { + const changes = []; + for (const [id, item] of items) { + const willBeSelected = selectedIds.has(id); + // we don't want to set all items to selected=false on the first selection + if (!(item.selected === undefined && !willBeSelected) && item.selected !== willBeSelected) { + if (mutateItem) { + /* + * this hack is needed for nodes. When the user dragged a node, it's selected. + * When another node gets dragged, we need to deselect the previous one, + * in order to have only one selected node at a time - the onNodesChange callback comes too late here :/ + */ + item.selected = willBeSelected; + } + changes.push(createSelectionChange(item.id, willBeSelected)); + } + } + return changes; +} +function getElementsDiffChanges({ items = [], lookup, }) { + const changes = []; + const itemsLookup = new Map(items.map((item) => [item.id, item])); + for (const [index, item] of items.entries()) { + const lookupItem = lookup.get(item.id); + const storeItem = lookupItem?.internals?.userNode ?? lookupItem; + if (storeItem !== undefined && storeItem !== item) { + changes.push({ id: item.id, item: item, type: 'replace' }); + } + if (storeItem === undefined) { + changes.push({ item: item, type: 'add', index }); + } + } + for (const [id] of lookup) { + const nextNode = itemsLookup.get(id); + if (nextNode === undefined) { + changes.push({ id, type: 'remove' }); + } + } + return changes; +} +function elementToRemoveChange(item) { + return { + id: item.id, + type: 'remove', + }; +} + +const defaultOnError = createDevWarn('React Flow', 'https://reactflow.dev/'); +function addEdge(edgeParams, edges, options = {}) { + return addEdge$1(edgeParams, edges, { + ...options, + onError: options.onError ?? defaultOnError, + }); +} +function reconnectEdge(oldEdge, newConnection, edges, options = { shouldReplaceId: true }) { + return reconnectEdge$1(oldEdge, newConnection, edges, { + ...options, + onError: options.onError ?? defaultOnError, + }); +} + +/** + * Test whether an object is usable as an [`Node`](/api-reference/types/node). + * In TypeScript this is a type guard that will narrow the type of whatever you pass in to + * [`Node`](/api-reference/types/node) if it returns `true`. + * + * @public + * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Node if it returns true + * @param element - The element to test. + * @returns Tests whether the provided value can be used as a `Node`. If you're using TypeScript, + * this function acts as a type guard and will narrow the type of the value to `Node` if it returns + * `true`. + * + * @example + * ```js + *import { isNode } from '@xyflow/react'; + * + *if (isNode(node)) { + * // ... + *} + *``` + */ +const isNode = (element) => isNodeBase(element); +/** + * Test whether an object is usable as an [`Edge`](/api-reference/types/edge). + * In TypeScript this is a type guard that will narrow the type of whatever you pass in to + * [`Edge`](/api-reference/types/edge) if it returns `true`. + * + * @public + * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Edge if it returns true + * @param element - The element to test + * @returns Tests whether the provided value can be used as an `Edge`. If you're using TypeScript, + * this function acts as a type guard and will narrow the type of the value to `Edge` if it returns + * `true`. + * + * @example + * ```js + *import { isEdge } from '@xyflow/react'; + * + *if (isEdge(edge)) { + * // ... + *} + *``` + */ +const isEdge = (element) => isEdgeBase(element); +// eslint-disable-next-line @typescript-eslint/no-empty-object-type +function fixedForwardRef(render) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return forwardRef(render); +} + +// we need this hook to prevent a warning when using react-flow in SSR +const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect; + +/** + * This hook returns a queue that can be used to batch updates. + * + * @param runQueue - a function that gets called when the queue is flushed + * @internal + * + * @returns a Queue object + */ +function useQueue(runQueue) { + /* + * Because we're using a ref above, we need some way to let React know when to + * actually process the queue. We increment this number any time we mutate the + * queue, creating a new state to trigger the layout effect below. + * Using a boolean dirty flag here instead would lead to issues related to + * automatic batching. (https://github.com/xyflow/xyflow/issues/4779) + */ + const [serial, setSerial] = useState(BigInt(0)); + /* + * A reference of all the batched updates to process before the next render. We + * want a reference here so multiple synchronous calls to `setNodes` etc can be + * batched together. + */ + const [queue] = useState(() => createQueue(() => setSerial(n => n + BigInt(1)))); + /* + * Layout effects are guaranteed to run before the next render which means we + * shouldn't run into any issues with stale state or weird issues that come from + * rendering things one frame later than expected (we used to use `setTimeout`). + */ + useIsomorphicLayoutEffect(() => { + const queueItems = queue.get(); + if (queueItems.length) { + runQueue(queueItems); + queue.reset(); + } + }, [serial]); + return queue; +} +function createQueue(cb) { + let queue = []; + return { + get: () => queue, + reset: () => { + queue = []; + }, + push: (item) => { + queue.push(item); + cb(); + }, + }; +} + +const BatchContext = createContext(null); +/** + * This is a context provider that holds and processes the node and edge update queues + * that are needed to handle setNodes, addNodes, setEdges and addEdges. + * + * @internal + */ +function BatchProvider({ children, }) { + const store = useStoreApi(); + const nodeQueueHandler = useCallback((queueItems) => { + const { nodes = [], setNodes, hasDefaultNodes, onNodesChange, nodeLookup, fitViewQueued, onNodesChangeMiddlewareMap, } = store.getState(); + /* + * This is essentially an `Array.reduce` in imperative clothing. Processing + * this queue is a relatively hot path so we'd like to avoid the overhead of + * array methods where we can. + */ + let next = nodes; + for (const payload of queueItems) { + next = typeof payload === 'function' ? payload(next) : payload; + } + let changes = getElementsDiffChanges({ + items: next, + lookup: nodeLookup, + }); + for (const middleware of onNodesChangeMiddlewareMap.values()) { + changes = middleware(changes); + } + if (hasDefaultNodes) { + setNodes(next); + } + // We only want to fire onNodesChange if there are changes to the nodes + if (changes.length > 0) { + onNodesChange?.(changes); + } + else if (fitViewQueued) { + // If there are no changes to the nodes, we still need to call setNodes + // to trigger a re-render and fitView. + window.requestAnimationFrame(() => { + const { fitViewQueued, nodes, setNodes } = store.getState(); + if (fitViewQueued) { + setNodes(nodes); + } + }); + } + }, []); + const nodeQueue = useQueue(nodeQueueHandler); + const edgeQueueHandler = useCallback((queueItems) => { + const { edges = [], setEdges, hasDefaultEdges, onEdgesChange, edgeLookup } = store.getState(); + let next = edges; + for (const payload of queueItems) { + next = typeof payload === 'function' ? payload(next) : payload; + } + if (hasDefaultEdges) { + setEdges(next); + } + else if (onEdgesChange) { + onEdgesChange(getElementsDiffChanges({ + items: next, + lookup: edgeLookup, + })); + } + }, []); + const edgeQueue = useQueue(edgeQueueHandler); + const value = useMemo(() => ({ nodeQueue, edgeQueue }), []); + return jsx(BatchContext.Provider, { value: value, children: children }); +} +function useBatchContext() { + const batchContext = useContext(BatchContext); + if (!batchContext) { + throw new Error('useBatchContext must be used within a BatchProvider'); + } + return batchContext; +} + +const selector$j = (s) => !!s.panZoom; +/** + * This hook returns a ReactFlowInstance that can be used to update nodes and edges, manipulate the viewport, or query the current state of the flow. + * + * @public + * @example + * ```jsx + *import { useCallback, useState } from 'react'; + *import { useReactFlow } from '@xyflow/react'; + * + *export function NodeCounter() { + * const reactFlow = useReactFlow(); + * const [count, setCount] = useState(0); + * const countNodes = useCallback(() => { + * setCount(reactFlow.getNodes().length); + * // you need to pass it as a dependency if you are using it with useEffect or useCallback + * // because at the first render, it's not initialized yet and some functions might not work. + * }, [reactFlow]); + * + * return ( + *
+ * + *

There are {count} nodes in the flow.

+ *
+ * ); + *} + *``` + */ +function useReactFlow() { + const viewportHelper = useViewportHelper(); + const store = useStoreApi(); + const batchContext = useBatchContext(); + const viewportInitialized = useStore(selector$j); + const generalHelper = useMemo(() => { + const getInternalNode = (id) => store.getState().nodeLookup.get(id); + const setNodes = (payload) => { + batchContext.nodeQueue.push(payload); + }; + const setEdges = (payload) => { + batchContext.edgeQueue.push(payload); + }; + const getNodeRect = (node) => { + const { nodeLookup, nodeOrigin } = store.getState(); + const nodeToUse = isNode(node) ? node : nodeLookup.get(node.id); + const position = nodeToUse.parentId + ? evaluateAbsolutePosition(nodeToUse.position, nodeToUse.measured, nodeToUse.parentId, nodeLookup, nodeOrigin) + : nodeToUse.position; + const nodeWithPosition = { + ...nodeToUse, + position, + width: nodeToUse.measured?.width ?? nodeToUse.width, + height: nodeToUse.measured?.height ?? nodeToUse.height, + }; + return nodeToRect(nodeWithPosition); + }; + const updateNode = (id, nodeUpdate, options = { replace: false }) => { + setNodes((prevNodes) => prevNodes.map((node) => { + if (node.id === id) { + const nextNode = typeof nodeUpdate === 'function' ? nodeUpdate(node) : nodeUpdate; + return options.replace && isNode(nextNode) ? nextNode : { ...node, ...nextNode }; + } + return node; + })); + }; + const updateEdge = (id, edgeUpdate, options = { replace: false }) => { + setEdges((prevEdges) => prevEdges.map((edge) => { + if (edge.id === id) { + const nextEdge = typeof edgeUpdate === 'function' ? edgeUpdate(edge) : edgeUpdate; + return options.replace && isEdge(nextEdge) ? nextEdge : { ...edge, ...nextEdge }; + } + return edge; + })); + }; + return { + getNodes: () => store.getState().nodes.map((n) => ({ ...n })), + getNode: (id) => getInternalNode(id)?.internals.userNode, + getInternalNode, + getEdges: () => { + const { edges = [] } = store.getState(); + return edges.map((e) => ({ ...e })); + }, + getEdge: (id) => store.getState().edgeLookup.get(id), + setNodes, + setEdges, + addNodes: (payload) => { + const newNodes = Array.isArray(payload) ? payload : [payload]; + batchContext.nodeQueue.push((nodes) => [...nodes, ...newNodes]); + }, + addEdges: (payload) => { + const newEdges = Array.isArray(payload) ? payload : [payload]; + batchContext.edgeQueue.push((edges) => [...edges, ...newEdges]); + }, + toObject: () => { + const { nodes = [], edges = [], transform } = store.getState(); + const [x, y, zoom] = transform; + return { + nodes: nodes.map((n) => ({ ...n })), + edges: edges.map((e) => ({ ...e })), + viewport: { + x, + y, + zoom, + }, + }; + }, + deleteElements: async ({ nodes: nodesToRemove = [], edges: edgesToRemove = [] }) => { + const { nodes, edges, onNodesDelete, onEdgesDelete, triggerNodeChanges, triggerEdgeChanges, onDelete, onBeforeDelete, } = store.getState(); + const { nodes: matchingNodes, edges: matchingEdges } = await getElementsToRemove({ + nodesToRemove, + edgesToRemove, + nodes, + edges, + onBeforeDelete, + }); + const hasMatchingEdges = matchingEdges.length > 0; + const hasMatchingNodes = matchingNodes.length > 0; + if (hasMatchingEdges) { + const edgeChanges = matchingEdges.map(elementToRemoveChange); + onEdgesDelete?.(matchingEdges); + triggerEdgeChanges(edgeChanges); + } + if (hasMatchingNodes) { + const nodeChanges = matchingNodes.map(elementToRemoveChange); + onNodesDelete?.(matchingNodes); + triggerNodeChanges(nodeChanges); + } + if (hasMatchingNodes || hasMatchingEdges) { + onDelete?.({ nodes: matchingNodes, edges: matchingEdges }); + } + return { deletedNodes: matchingNodes, deletedEdges: matchingEdges }; + }, + /** + * Partial is defined as "the 2 nodes/areas are intersecting partially". + * If a is contained in b or b is contained in a, they are both + * considered fully intersecting. + */ + getIntersectingNodes: (nodeOrRect, partially = true, nodes) => { + const isRect = isRectObject(nodeOrRect); + const nodeRect = isRect ? nodeOrRect : getNodeRect(nodeOrRect); + const hasNodesOption = nodes !== undefined; + if (!nodeRect) { + return []; + } + return (nodes || store.getState().nodes).filter((n) => { + const internalNode = store.getState().nodeLookup.get(n.id); + if (internalNode && !isRect && (n.id === nodeOrRect.id || !internalNode.internals.positionAbsolute)) { + return false; + } + const currNodeRect = nodeToRect(hasNodesOption ? n : internalNode); + const overlappingArea = getOverlappingArea(currNodeRect, nodeRect); + const partiallyVisible = partially && overlappingArea > 0; + return (partiallyVisible || + overlappingArea >= currNodeRect.width * currNodeRect.height || + overlappingArea >= nodeRect.width * nodeRect.height); + }); + }, + isNodeIntersecting: (nodeOrRect, area, partially = true) => { + const isRect = isRectObject(nodeOrRect); + const nodeRect = isRect ? nodeOrRect : getNodeRect(nodeOrRect); + if (!nodeRect) { + return false; + } + const overlappingArea = getOverlappingArea(nodeRect, area); + const partiallyVisible = partially && overlappingArea > 0; + return (partiallyVisible || + overlappingArea >= area.width * area.height || + overlappingArea >= nodeRect.width * nodeRect.height); + }, + updateNode, + updateNodeData: (id, dataUpdate, options = { replace: false }) => { + updateNode(id, (node) => { + const nextData = typeof dataUpdate === 'function' ? dataUpdate(node) : dataUpdate; + return options.replace ? { ...node, data: nextData } : { ...node, data: { ...node.data, ...nextData } }; + }, options); + }, + updateEdge, + updateEdgeData: (id, dataUpdate, options = { replace: false }) => { + updateEdge(id, (edge) => { + const nextData = typeof dataUpdate === 'function' ? dataUpdate(edge) : dataUpdate; + return options.replace ? { ...edge, data: nextData } : { ...edge, data: { ...edge.data, ...nextData } }; + }, options); + }, + getNodesBounds: (nodes) => { + const { nodeLookup, nodeOrigin } = store.getState(); + return getNodesBounds(nodes, { nodeLookup, nodeOrigin }); + }, + getHandleConnections: ({ type, id, nodeId }) => Array.from(store + .getState() + .connectionLookup.get(`${nodeId}-${type}${id ? `-${id}` : ''}`) + ?.values() ?? []), + getNodeConnections: ({ type, handleId, nodeId }) => Array.from(store + .getState() + .connectionLookup.get(`${nodeId}${type ? (handleId ? `-${type}-${handleId}` : `-${type}`) : ''}`) + ?.values() ?? []), + fitView: async (options) => { + // We either create a new Promise or reuse the existing one + // Even if fitView is called multiple times in a row, we only end up with a single Promise + const fitViewResolver = store.getState().fitViewResolver ?? withResolvers(); + // We schedule a fitView by setting fitViewQueued and triggering a setNodes + store.setState({ fitViewQueued: true, fitViewOptions: options, fitViewResolver }); + batchContext.nodeQueue.push((nodes) => [...nodes]); + return fitViewResolver.promise; + }, + }; + }, []); + return useMemo(() => { + return { + ...generalHelper, + ...viewportHelper, + viewportInitialized, + }; + }, [viewportInitialized]); +} + +const selected = (item) => item.selected; +const win$1 = typeof window !== 'undefined' ? window : undefined; +/** + * Hook for handling global key events. + * + * @internal + */ +function useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode, }) { + const store = useStoreApi(); + const { deleteElements } = useReactFlow(); + const deleteKeyPressed = useKeyPress(deleteKeyCode, { actInsideInputWithModifier: false }); + const multiSelectionKeyPressed = useKeyPress(multiSelectionKeyCode, { target: win$1 }); + useEffect(() => { + if (deleteKeyPressed) { + const { edges, nodes } = store.getState(); + deleteElements({ nodes: nodes.filter(selected), edges: edges.filter(selected) }); + store.setState({ nodesSelectionActive: false }); + } + }, [deleteKeyPressed]); + useEffect(() => { + store.setState({ multiSelectionActive: multiSelectionKeyPressed }); + }, [multiSelectionKeyPressed]); +} + +/** + * Hook for handling resize events. + * + * @internal + */ +function useResizeHandler(domNode) { + const store = useStoreApi(); + useEffect(() => { + const updateDimensions = () => { + if (!domNode.current || !(domNode.current.checkVisibility?.() ?? true)) { + return false; + } + const size = getDimensions(domNode.current); + if (size.height === 0 || size.width === 0) { + store.getState().onError?.('004', errorMessages['error004']()); + } + store.setState({ width: size.width || 500, height: size.height || 500 }); + }; + if (domNode.current) { + updateDimensions(); + window.addEventListener('resize', updateDimensions); + const resizeObserver = new ResizeObserver(() => updateDimensions()); + resizeObserver.observe(domNode.current); + return () => { + window.removeEventListener('resize', updateDimensions); + if (resizeObserver && domNode.current) { + resizeObserver.unobserve(domNode.current); + } + }; + } + }, []); +} + +const containerStyle = { + position: 'absolute', + width: '100%', + height: '100%', + top: 0, + left: 0, +}; + +const selector$i = (s) => ({ + userSelectionActive: s.userSelectionActive, + lib: s.lib, + connectionInProgress: s.connection.inProgress, +}); +function ZoomPane({ onPaneContextMenu, zoomOnScroll = true, zoomOnPinch = true, panOnScroll = false, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = true, panOnDrag = true, defaultViewport, translateExtent, minZoom, maxZoom, zoomActivationKeyCode, preventScrolling = true, children, noWheelClassName, noPanClassName, onViewportChange, isControlledViewport, paneClickDistance, selectionOnDrag, }) { + const store = useStoreApi(); + const zoomPane = useRef(null); + const { userSelectionActive, lib, connectionInProgress } = useStore(selector$i, shallow); + const zoomActivationKeyPressed = useKeyPress(zoomActivationKeyCode); + const panZoom = useRef(); + useResizeHandler(zoomPane); + const onTransformChange = useCallback((transform) => { + onViewportChange?.({ x: transform[0], y: transform[1], zoom: transform[2] }); + if (!isControlledViewport) { + store.setState({ transform }); + } + }, [onViewportChange, isControlledViewport]); + useEffect(() => { + if (zoomPane.current) { + panZoom.current = XYPanZoom({ + domNode: zoomPane.current, + minZoom, + maxZoom, + translateExtent, + viewport: defaultViewport, + onDraggingChange: (paneDragging) => store.setState((prevState) => prevState.paneDragging === paneDragging ? prevState : { paneDragging }), + onPanZoomStart: (event, vp) => { + const { onViewportChangeStart, onMoveStart } = store.getState(); + onMoveStart?.(event, vp); + onViewportChangeStart?.(vp); + }, + onPanZoom: (event, vp) => { + const { onViewportChange, onMove } = store.getState(); + onMove?.(event, vp); + onViewportChange?.(vp); + }, + onPanZoomEnd: (event, vp) => { + const { onViewportChangeEnd, onMoveEnd } = store.getState(); + onMoveEnd?.(event, vp); + onViewportChangeEnd?.(vp); + }, + }); + const { x, y, zoom } = panZoom.current.getViewport(); + store.setState({ + panZoom: panZoom.current, + transform: [x, y, zoom], + domNode: zoomPane.current.closest('.react-flow'), + }); + return () => { + panZoom.current?.destroy(); + }; + } + }, []); + useEffect(() => { + panZoom.current?.update({ + onPaneContextMenu, + zoomOnScroll, + zoomOnPinch, + panOnScroll, + panOnScrollSpeed, + panOnScrollMode, + zoomOnDoubleClick, + panOnDrag, + zoomActivationKeyPressed, + preventScrolling, + noPanClassName, + userSelectionActive, + noWheelClassName, + lib, + onTransformChange, + connectionInProgress, + selectionOnDrag, + paneClickDistance, + }); + }, [ + onPaneContextMenu, + zoomOnScroll, + zoomOnPinch, + panOnScroll, + panOnScrollSpeed, + panOnScrollMode, + zoomOnDoubleClick, + panOnDrag, + zoomActivationKeyPressed, + preventScrolling, + noPanClassName, + userSelectionActive, + noWheelClassName, + lib, + onTransformChange, + connectionInProgress, + selectionOnDrag, + paneClickDistance, + ]); + return (jsx("div", { className: "react-flow__renderer", ref: zoomPane, style: containerStyle, children: children })); +} + +const selector$h = (s) => ({ + userSelectionActive: s.userSelectionActive, + userSelectionRect: s.userSelectionRect, +}); +function UserSelection() { + const { userSelectionActive, userSelectionRect } = useStore(selector$h, shallow); + const isActive = userSelectionActive && userSelectionRect; + if (!isActive) { + return null; + } + return (jsx("div", { className: "react-flow__selection react-flow__container", style: { + width: userSelectionRect.width, + height: userSelectionRect.height, + transform: `translate(${userSelectionRect.x}px, ${userSelectionRect.y}px)`, + } })); +} + +const wrapHandler = (handler, containerRef) => { + return (event) => { + if (event.target !== containerRef.current) { + return; + } + handler?.(event); + }; +}; +const selector$g = (s) => ({ + userSelectionActive: s.userSelectionActive, + elementsSelectable: s.elementsSelectable, + dragging: s.paneDragging, + panBy: s.panBy, + autoPanSpeed: s.autoPanSpeed, +}); +function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.Full, panOnDrag, autoPanOnSelection, paneClickDistance, selectionOnDrag, onSelectionStart, onSelectionEnd, onPaneClick, onPaneContextMenu, onPaneScroll, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, children, }) { + const autoPanId = useRef(0); + const store = useStoreApi(); + const { userSelectionActive, elementsSelectable, dragging, panBy, autoPanSpeed } = useStore(selector$g, shallow); + const isSelectionEnabled = elementsSelectable && (isSelecting || userSelectionActive); + const container = useRef(null); + const containerBounds = useRef(); + const selectedNodeIds = useRef(new Set()); + const selectedEdgeIds = useRef(new Set()); + const connectionEndedOnPane = useRef(false); + // Used to prevent click events when the user lets go of the selectionKey during a selection + const selectionInProgress = useRef(false); + // Used for auto pan when approaching the edges of the container during selection + const position = useRef({ x: 0, y: 0 }); + const autoPanStarted = useRef(false); + const onClick = (event) => { + // We prevent click events when the user let go of the selectionKey during a selection + // We also prevent click events when a connection is in progress + if (selectionInProgress.current || connectionEndedOnPane.current || store.getState().connection.inProgress) { + selectionInProgress.current = false; + connectionEndedOnPane.current = false; + return; + } + onPaneClick?.(event); + store.getState().resetSelectedElements(); + store.setState({ nodesSelectionActive: false }); + }; + const onContextMenu = (event) => { + if (Array.isArray(panOnDrag) && panOnDrag?.includes(2)) { + event.preventDefault(); + return; + } + onPaneContextMenu?.(event); + }; + const onWheel = onPaneScroll ? (event) => onPaneScroll(event) : undefined; + const onClickCapture = (event) => { + if (selectionInProgress.current) { + event.stopPropagation(); + selectionInProgress.current = false; + } + }; + // We are using capture here in order to prevent other pointer events + // to be able to create a selection above a node or an edge + const onPointerDownCapture = (event) => { + const { domNode, transform } = store.getState(); + containerBounds.current = domNode?.getBoundingClientRect(); + if (!containerBounds.current) + return; + const eventTargetIsContainer = event.target === container.current; + // if a child element has the 'nokey' class, we don't want to swallow the event and don't start a selection + const isNoKeyEvent = !eventTargetIsContainer && !!event.target.closest('.nokey'); + const isSelectionActive = (selectionOnDrag && eventTargetIsContainer) || selectionKeyPressed; + if (isNoKeyEvent || !isSelecting || !isSelectionActive || event.button !== 0 || !event.isPrimary) { + return; + } + event.target?.setPointerCapture?.(event.pointerId); + selectionInProgress.current = false; + const { x, y } = getEventPosition(event.nativeEvent, containerBounds.current); + const userSelectionStartPosition = pointToRendererPoint({ x, y }, transform); + store.setState({ + userSelectionRect: { + width: 0, + height: 0, + startX: userSelectionStartPosition.x, + startY: userSelectionStartPosition.y, + x, + y, + }, + }); + if (!eventTargetIsContainer) { + event.stopPropagation(); + event.preventDefault(); + } + }; + // We commit the user selection rectangle to the store on auto-panning or pointer move during selection. + function commitUserSelectionRect(mouseX, mouseY) { + const { userSelectionRect } = store.getState(); + if (!userSelectionRect) { + return; + } + const { transform, nodeLookup, edgeLookup, connectionLookup, triggerNodeChanges, triggerEdgeChanges, defaultEdgeOptions, } = store.getState(); + const userStartPosition = { x: userSelectionRect.startX, y: userSelectionRect.startY }; + const { x: screenStartX, y: screenStartY } = rendererPointToPoint(userStartPosition, transform); + // This has to be in screen coordinates, not in flow coordinates. + // We store the selection rectangle in userSelectionStartPosition coordinates to be able to + // fix the start position of the selection rectangle when we are auto-panning. + const nextUserSelectRect = { + startX: userStartPosition.x, + startY: userStartPosition.y, + x: mouseX < screenStartX ? mouseX : screenStartX, + y: mouseY < screenStartY ? mouseY : screenStartY, + width: Math.abs(mouseX - screenStartX), + height: Math.abs(mouseY - screenStartY), + }; + const prevSelectedNodeIds = selectedNodeIds.current; + const prevSelectedEdgeIds = selectedEdgeIds.current; + selectedNodeIds.current = new Set(getNodesInside(nodeLookup, nextUserSelectRect, transform, selectionMode === SelectionMode.Partial, true).map((node) => node.id)); + selectedEdgeIds.current = new Set(); + const edgesSelectable = defaultEdgeOptions?.selectable ?? true; + // We look for all edges connected to the selected nodes + for (const nodeId of selectedNodeIds.current) { + const connections = connectionLookup.get(nodeId); + if (!connections) + continue; + for (const { edgeId } of connections.values()) { + const edge = edgeLookup.get(edgeId); + if (edge && (edge.selectable ?? edgesSelectable)) { + selectedEdgeIds.current.add(edgeId); + } + } + } + if (!areSetsEqual(prevSelectedNodeIds, selectedNodeIds.current)) { + const changes = getSelectionChanges(nodeLookup, selectedNodeIds.current, true); + triggerNodeChanges(changes); + } + if (!areSetsEqual(prevSelectedEdgeIds, selectedEdgeIds.current)) { + const changes = getSelectionChanges(edgeLookup, selectedEdgeIds.current); + triggerEdgeChanges(changes); + } + store.setState({ + userSelectionRect: nextUserSelectRect, + userSelectionActive: true, + nodesSelectionActive: false, + }); + } + function autoPan() { + if (!autoPanOnSelection || !containerBounds.current) { + return; + } + const [x, y] = calcAutoPan(position.current, containerBounds.current, autoPanSpeed); + panBy({ x, y }).then((panned) => { + if (!selectionInProgress.current || !panned) { + autoPanId.current = requestAnimationFrame(autoPan); + return; + } + const { x: mx, y: my } = position.current; + commitUserSelectionRect(mx, my); + autoPanId.current = requestAnimationFrame(autoPan); + }); + } + const cleanupAutoPan = () => { + cancelAnimationFrame(autoPanId.current); + autoPanId.current = 0; + autoPanStarted.current = false; + }; + useEffect(() => { + return () => cleanupAutoPan(); + }, []); + const onPointerMove = (event) => { + const { userSelectionRect, transform, resetSelectedElements } = store.getState(); + if (!containerBounds.current || !userSelectionRect) { + return; + } + const { x: mouseX, y: mouseY } = getEventPosition(event.nativeEvent, containerBounds.current); + position.current = { x: mouseX, y: mouseY }; + const screenStart = rendererPointToPoint({ x: userSelectionRect.startX, y: userSelectionRect.startY }, transform); + if (!selectionInProgress.current) { + const requiredDistance = selectionKeyPressed ? 0 : paneClickDistance; + const distance = Math.hypot(mouseX - screenStart.x, mouseY - screenStart.y); + if (distance <= requiredDistance) { + return; + } + resetSelectedElements(); + onSelectionStart?.(event); + } + selectionInProgress.current = true; + if (!autoPanStarted.current) { + autoPan(); + autoPanStarted.current = true; + } + commitUserSelectionRect(mouseX, mouseY); + }; + const onPointerUp = (event) => { + if (!isSelectionEnabled) { + if (event.target === container.current && store.getState().connection.inProgress) { + connectionEndedOnPane.current = true; + } + return; + } + if (event.button !== 0) { + return; + } + event.target?.releasePointerCapture?.(event.pointerId); + /* + * We only want to trigger click functions when in selection mode if + * the user did not move the mouse. + */ + if (!userSelectionActive && event.target === container.current && store.getState().userSelectionRect) { + onClick?.(event); + } + store.setState({ + userSelectionActive: false, + userSelectionRect: null, + }); + if (selectionInProgress.current) { + onSelectionEnd?.(event); + store.setState({ + nodesSelectionActive: selectedNodeIds.current.size > 0, + }); + } + cleanupAutoPan(); + }; + const onPointerCancel = (event) => { + event.target?.releasePointerCapture?.(event.pointerId); + cleanupAutoPan(); + }; + const draggable = panOnDrag === true || (Array.isArray(panOnDrag) && panOnDrag.includes(0)); + return (jsxs("div", { className: cc(['react-flow__pane', { draggable, dragging, selection: isSelecting }]), onClick: isSelectionEnabled ? undefined : wrapHandler(onClick, container), onContextMenu: wrapHandler(onContextMenu, container), onWheel: wrapHandler(onWheel, container), onPointerEnter: isSelectionEnabled ? undefined : onPaneMouseEnter, onPointerMove: isSelectionEnabled ? onPointerMove : onPaneMouseMove, onPointerUp: onPointerUp, onPointerCancel: isSelectionEnabled ? onPointerCancel : undefined, onPointerDownCapture: isSelectionEnabled ? onPointerDownCapture : undefined, onClickCapture: isSelectionEnabled ? onClickCapture : undefined, onPointerLeave: onPaneMouseLeave, ref: container, style: containerStyle, children: [children, jsx(UserSelection, {})] })); +} + +/* + * this handler is called by + * 1. the click handler when node is not draggable or selectNodesOnDrag = false + * or + * 2. the on drag start handler when node is draggable and selectNodesOnDrag = true + */ +function handleNodeClick({ id, store, unselect = false, nodeRef, }) { + const { addSelectedNodes, unselectNodesAndEdges, multiSelectionActive, nodeLookup, onError } = store.getState(); + const node = nodeLookup.get(id); + if (!node) { + onError?.('012', errorMessages['error012'](id)); + return; + } + store.setState({ nodesSelectionActive: false }); + if (!node.selected) { + addSelectedNodes([id]); + } + else if (unselect || (node.selected && multiSelectionActive)) { + unselectNodesAndEdges({ nodes: [node], edges: [] }); + requestAnimationFrame(() => nodeRef?.current?.blur()); + } +} + +/** + * Hook for calling XYDrag helper from @xyflow/system. + * + * @internal + */ +function useDrag({ nodeRef, disabled = false, noDragClassName, handleSelector, nodeId, isSelectable, nodeClickDistance, }) { + const store = useStoreApi(); + const [dragging, setDragging] = useState(false); + const xyDrag = useRef(); + useEffect(() => { + if (disabled) { + return; + } + xyDrag.current = XYDrag({ + getStoreItems: () => store.getState(), + onNodeMouseDown: (id) => { + handleNodeClick({ + id, + store, + nodeRef, + }); + }, + onDragStart: () => { + setDragging(true); + }, + onDragStop: () => { + setDragging(false); + }, + }); + return () => { + xyDrag.current?.destroy(); + xyDrag.current = undefined; + }; + }, [disabled, store, nodeRef]); + useEffect(() => { + if (disabled || !nodeRef.current || !xyDrag.current) { + return; + } + xyDrag.current.update({ + noDragClassName, + handleSelector, + domNode: nodeRef.current, + isSelectable, + nodeId, + nodeClickDistance, + }); + }, [noDragClassName, handleSelector, disabled, isSelectable, nodeRef, nodeId, nodeClickDistance]); + return dragging; +} + +const selectedAndDraggable = (nodesDraggable) => (n) => n.selected && (n.draggable || (nodesDraggable && typeof n.draggable === 'undefined')); +/** + * Hook for updating node positions by passing a direction and factor + * + * @internal + * @returns function for updating node positions + */ +function useMoveSelectedNodes() { + const store = useStoreApi(); + const moveSelectedNodes = useCallback((params) => { + const { nodeExtent, snapToGrid, snapGrid, nodesDraggable, onError, updateNodePositions, nodeLookup, nodeOrigin } = store.getState(); + const nodeUpdates = new Map(); + const isSelected = selectedAndDraggable(nodesDraggable); + /* + * by default a node moves 5px on each key press + * if snap grid is enabled, we use that for the velocity + */ + const xVelo = snapToGrid ? snapGrid[0] : 5; + const yVelo = snapToGrid ? snapGrid[1] : 5; + const xDiff = params.direction.x * xVelo * params.factor; + const yDiff = params.direction.y * yVelo * params.factor; + for (const [, node] of nodeLookup) { + if (!isSelected(node)) { + continue; + } + let nextPosition = { + x: node.internals.positionAbsolute.x + xDiff, + y: node.internals.positionAbsolute.y + yDiff, + }; + if (snapToGrid) { + nextPosition = snapPosition(nextPosition, snapGrid); + } + const { position, positionAbsolute } = calculateNodePosition({ + nodeId: node.id, + nextPosition, + nodeLookup, + nodeExtent, + nodeOrigin, + onError, + }); + node.position = position; + node.internals.positionAbsolute = positionAbsolute; + nodeUpdates.set(node.id, node); + } + updateNodePositions(nodeUpdates); + }, []); + return moveSelectedNodes; +} + +const NodeIdContext = createContext(null); +const Provider = NodeIdContext.Provider; +NodeIdContext.Consumer; +/** + * You can use this hook to get the id of the node it is used inside. It is useful + * if you need the node's id deeper in the render tree but don't want to manually + * drill down the id as a prop. + * + * @public + * @returns The id for a node in the flow. + * + * @example + *```jsx + *import { useNodeId } from '@xyflow/react'; + * + *export default function CustomNode() { + * return ( + *
+ * This node has an id of + * + *
+ * ); + *} + * + *function NodeIdDisplay() { + * const nodeId = useNodeId(); + * + * return {nodeId}; + *} + *``` + */ +const useNodeId = () => { + const nodeId = useContext(NodeIdContext); + return nodeId; +}; + +const selector$f = (s) => ({ + connectOnClick: s.connectOnClick, + noPanClassName: s.noPanClassName, + rfId: s.rfId, +}); +const HandleConfigContext = createContext(null); +/* + * `connectOnClick`, `noPanClassName` and `rfId` are the same for every handle, so they are + * shared through context from a single store subscription. + */ +function HandleConfigProvider({ children }) { + const config = useStore(selector$f, shallow); + return jsx(HandleConfigContext.Provider, { value: config, children: children }); +} +function useHandleConfig() { + const config = useContext(HandleConfigContext); + if (!config) { + throw new Error('useHandleConfig must be used within a HandleConfigProvider'); + } + return config; +} + +/* + * While no connection is in progress every handle has this same state, so we return a + * shared reference rather than allocating + shallow-comparing one per handle on every + * store update. `isPossibleEndHandle` matches what the selector computes when idle. + */ +const idleConnectingState = { + connectingFrom: false, + connectingTo: false, + clickConnecting: false, + isPossibleEndHandle: true, + connectionInProcess: false, + clickConnectionInProcess: false, + valid: false, +}; +const connectingSelector = (nodeId, handleId, type) => (state) => { + const { connectionClickStartHandle: clickHandle, connectionMode, connection } = state; + const { fromHandle, toHandle, isValid } = connection; + if (!fromHandle && !clickHandle) { + return idleConnectingState; + } + const connectingTo = toHandle?.nodeId === nodeId && toHandle?.id === handleId && toHandle?.type === type; + return { + connectingFrom: fromHandle?.nodeId === nodeId && fromHandle?.id === handleId && fromHandle?.type === type, + connectingTo, + clickConnecting: clickHandle?.nodeId === nodeId && clickHandle?.id === handleId && clickHandle?.type === type, + isPossibleEndHandle: connectionMode === ConnectionMode.Strict + ? fromHandle?.type !== type + : nodeId !== fromHandle?.nodeId || handleId !== fromHandle?.id, + connectionInProcess: !!fromHandle, + clickConnectionInProcess: !!clickHandle, + valid: connectingTo && isValid, + }; +}; +function HandleComponent({ type = 'source', position = Position.Top, isValidConnection, isConnectable = true, isConnectableStart = true, isConnectableEnd = true, id, onConnect, children, className, onMouseDown, onTouchStart, ...rest }, ref) { + const handleId = id || null; + const isTarget = type === 'target'; + const store = useStoreApi(); + const nodeId = useNodeId(); + const { connectOnClick, noPanClassName, rfId } = useHandleConfig(); + const { connectingFrom, connectingTo, clickConnecting, isPossibleEndHandle, connectionInProcess, clickConnectionInProcess, valid, } = useStore(connectingSelector(nodeId, handleId, type), shallow); + if (!nodeId) { + store.getState().onError?.('010', errorMessages['error010']()); + } + const onConnectExtended = (params) => { + const { defaultEdgeOptions, onConnect: onConnectAction, hasDefaultEdges } = store.getState(); + const edgeParams = { + ...defaultEdgeOptions, + ...params, + }; + if (hasDefaultEdges) { + const { edges, setEdges, onError } = store.getState(); + setEdges(addEdge(edgeParams, edges, { onError })); + } + onConnectAction?.(edgeParams); + onConnect?.(edgeParams); + }; + const onPointerDown = (event) => { + if (!nodeId) { + return; + } + const isMouseTriggered = isMouseEvent(event.nativeEvent); + if (isConnectableStart && + ((isMouseTriggered && event.button === 0) || !isMouseTriggered)) { + const currentStore = store.getState(); + XYHandle.onPointerDown(event.nativeEvent, { + handleDomNode: event.currentTarget, + autoPanOnConnect: currentStore.autoPanOnConnect, + connectionMode: currentStore.connectionMode, + connectionRadius: currentStore.connectionRadius, + domNode: currentStore.domNode, + nodeLookup: currentStore.nodeLookup, + lib: currentStore.lib, + isTarget, + handleId, + nodeId, + flowId: currentStore.rfId, + panBy: currentStore.panBy, + cancelConnection: currentStore.cancelConnection, + onConnectStart: currentStore.onConnectStart, + onConnectEnd: (...args) => store.getState().onConnectEnd?.(...args), + updateConnection: currentStore.updateConnection, + onConnect: onConnectExtended, + isValidConnection: isValidConnection || ((...args) => store.getState().isValidConnection?.(...args) ?? true), + getTransform: () => store.getState().transform, + getFromHandle: () => store.getState().connection.fromHandle, + autoPanSpeed: currentStore.autoPanSpeed, + dragThreshold: currentStore.connectionDragThreshold, + }); + } + if (isMouseTriggered) { + onMouseDown?.(event); + } + else { + onTouchStart?.(event); + } + }; + const onClick = (event) => { + const { onClickConnectStart, onClickConnectEnd, connectionClickStartHandle, connectionMode, isValidConnection: isValidConnectionStore, lib, rfId: flowId, nodeLookup, connection: connectionState, } = store.getState(); + if (!nodeId || (!connectionClickStartHandle && !isConnectableStart)) { + return; + } + if (!connectionClickStartHandle) { + onClickConnectStart?.(event.nativeEvent, { nodeId, handleId, handleType: type }); + store.setState({ connectionClickStartHandle: { nodeId, type, id: handleId } }); + return; + } + const doc = getHostForElement(event.target); + const isValidConnectionHandler = isValidConnection || isValidConnectionStore; + const { connection, isValid } = XYHandle.isValid(event.nativeEvent, { + handle: { + nodeId, + id: handleId, + type, + }, + connectionMode, + fromNodeId: connectionClickStartHandle.nodeId, + fromHandleId: connectionClickStartHandle.id || null, + fromType: connectionClickStartHandle.type, + isValidConnection: isValidConnectionHandler, + flowId, + doc, + lib, + nodeLookup, + }); + if (isValid && connection) { + onConnectExtended(connection); + } + const connectionClone = structuredClone(connectionState); + delete connectionClone.inProgress; + connectionClone.toPosition = connectionClone.toHandle ? connectionClone.toHandle.position : null; + onClickConnectEnd?.(event, connectionClone); + store.setState({ connectionClickStartHandle: null }); + }; + return (jsx("div", { "data-handleid": handleId, "data-nodeid": nodeId, "data-handlepos": position, "data-id": `${rfId}-${nodeId}-${handleId}-${type}`, className: cc([ + 'react-flow__handle', + `react-flow__handle-${position}`, + 'nodrag', + noPanClassName, + className, + { + source: !isTarget, + target: isTarget, + connectable: isConnectable, + connectablestart: isConnectableStart, + connectableend: isConnectableEnd, + clickconnecting: clickConnecting, + connectingfrom: connectingFrom, + connectingto: connectingTo, + valid, + /* + * shows where you can start a connection from + * and where you can end it while connecting + */ + connectionindicator: isConnectable && + (!connectionInProcess || isPossibleEndHandle) && + (connectionInProcess || clickConnectionInProcess ? isConnectableEnd : isConnectableStart), + }, + ]), onMouseDown: onPointerDown, onTouchStart: onPointerDown, onClick: connectOnClick ? onClick : undefined, ref: ref, ...rest, children: children })); +} +/** + * The `` component is used in your [custom nodes](/learn/customization/custom-nodes) + * to define connection points. + * + *@public + * + *@example + * + *```jsx + *import { Handle, Position } from '@xyflow/react'; + * + *export function CustomNode({ data }) { + * return ( + * <> + *
+ * {data.label} + *
+ * + * + * + * + * ); + *}; + *``` + */ +const Handle = memo(fixedForwardRef(HandleComponent)); + +function InputNode({ data, isConnectable, sourcePosition = Position.Bottom }) { + return (jsxs(Fragment, { children: [data?.label, jsx(Handle, { type: "source", position: sourcePosition, isConnectable: isConnectable })] })); +} + +function DefaultNode({ data, isConnectable, targetPosition = Position.Top, sourcePosition = Position.Bottom, }) { + return (jsxs(Fragment, { children: [jsx(Handle, { type: "target", position: targetPosition, isConnectable: isConnectable }), data?.label, jsx(Handle, { type: "source", position: sourcePosition, isConnectable: isConnectable })] })); +} + +function GroupNode() { + return null; +} + +function OutputNode({ data, isConnectable, targetPosition = Position.Top }) { + return (jsxs(Fragment, { children: [jsx(Handle, { type: "target", position: targetPosition, isConnectable: isConnectable }), data?.label] })); +} + +const arrowKeyDiffs = { + ArrowUp: { x: 0, y: -1 }, + ArrowDown: { x: 0, y: 1 }, + ArrowLeft: { x: -1, y: 0 }, + ArrowRight: { x: 1, y: 0 }, +}; +const builtinNodeTypes = { + input: InputNode, + default: DefaultNode, + output: OutputNode, + group: GroupNode, +}; +function getNodeInlineStyleDimensions(node) { + if (node.internals.handleBounds === undefined) { + return { + width: node.width ?? node.initialWidth ?? node.style?.width, + height: node.height ?? node.initialHeight ?? node.style?.height, + }; + } + return { + width: node.width ?? node.style?.width, + height: node.height ?? node.style?.height, + }; +} + +const selector$e = (s) => { + const { width, height, x, y } = getInternalNodesBounds(s.nodeLookup, { + filter: (node) => !!node.selected, + }); + return { + width: isNumeric(width) ? width : null, + height: isNumeric(height) ? height : null, + userSelectionActive: s.userSelectionActive, + transformString: `translate(${s.transform[0]}px,${s.transform[1]}px) scale(${s.transform[2]}) translate(${x}px,${y}px)`, + }; +}; +function NodesSelection({ onSelectionContextMenu, noPanClassName, disableKeyboardA11y, }) { + const store = useStoreApi(); + const { width, height, transformString, userSelectionActive } = useStore(selector$e, shallow); + const moveSelectedNodes = useMoveSelectedNodes(); + const nodeRef = useRef(null); + useEffect(() => { + if (!disableKeyboardA11y) { + nodeRef.current?.focus({ + preventScroll: true, + }); + } + }, [disableKeyboardA11y]); + const shouldRender = !userSelectionActive && width !== null && height !== null; + useDrag({ + nodeRef, + disabled: !shouldRender, + }); + if (!shouldRender) { + return null; + } + const onContextMenu = onSelectionContextMenu + ? (event) => { + const selectedNodes = store.getState().nodes.filter((n) => n.selected); + onSelectionContextMenu(event, selectedNodes); + } + : undefined; + const onKeyDown = (event) => { + if (Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key)) { + event.preventDefault(); + moveSelectedNodes({ + direction: arrowKeyDiffs[event.key], + factor: event.shiftKey ? 4 : 1, + }); + } + }; + return (jsx("div", { className: cc(['react-flow__nodesselection', 'react-flow__container', noPanClassName]), style: { + transform: transformString, + }, children: jsx("div", { ref: nodeRef, className: "react-flow__nodesselection-rect", onContextMenu: onContextMenu, tabIndex: disableKeyboardA11y ? undefined : -1, onKeyDown: disableKeyboardA11y ? undefined : onKeyDown, style: { + width, + height, + } }) })); +} + +const win = typeof window !== 'undefined' ? window : undefined; +const selector$d = (s) => { + return { nodesSelectionActive: s.nodesSelectionActive, userSelectionActive: s.userSelectionActive }; +}; +function FlowRendererComponent({ children, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, paneClickDistance, deleteKeyCode, selectionKeyCode, selectionOnDrag, selectionMode, onSelectionStart, onSelectionEnd, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, elementsSelectable, zoomOnScroll, zoomOnPinch, panOnScroll: _panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag: _panOnDrag, autoPanOnSelection, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, onSelectionContextMenu, noWheelClassName, noPanClassName, disableKeyboardA11y, onViewportChange, isControlledViewport, }) { + const { nodesSelectionActive, userSelectionActive } = useStore(selector$d, shallow); + const selectionKeyPressed = useKeyPress(selectionKeyCode, { target: win }); + const panActivationKeyPressed = useKeyPress(panActivationKeyCode, { target: win }); + const panOnDrag = panActivationKeyPressed || _panOnDrag; + const panOnScroll = panActivationKeyPressed || _panOnScroll; + const _selectionOnDrag = selectionOnDrag && panOnDrag !== true; + const isSelecting = selectionKeyPressed || userSelectionActive || _selectionOnDrag; + useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode }); + return (jsx(ZoomPane, { 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, onViewportChange: onViewportChange, isControlledViewport: isControlledViewport, paneClickDistance: paneClickDistance, selectionOnDrag: _selectionOnDrag, children: jsxs(Pane, { onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneContextMenu: onPaneContextMenu, onPaneScroll: onPaneScroll, panOnDrag: panOnDrag, autoPanOnSelection: autoPanOnSelection, isSelecting: !!isSelecting, selectionMode: selectionMode, selectionKeyPressed: selectionKeyPressed, paneClickDistance: paneClickDistance, selectionOnDrag: _selectionOnDrag, children: [children, nodesSelectionActive && (jsx(NodesSelection, { onSelectionContextMenu: onSelectionContextMenu, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y }))] }) })); +} +FlowRendererComponent.displayName = 'FlowRenderer'; +const FlowRenderer = memo(FlowRendererComponent); + +const selector$c = (onlyRenderVisible) => (s) => { + return onlyRenderVisible + ? getNodesInside(s.nodeLookup, { x: 0, y: 0, width: s.width, height: s.height }, s.transform, true).map((node) => node.id) + : Array.from(s.nodeLookup.keys()); +}; +/** + * Hook for getting the visible node ids from the store. + * + * @internal + * @param onlyRenderVisible + * @returns array with visible node ids + */ +function useVisibleNodeIds(onlyRenderVisible) { + const nodeIds = useStore(useCallback(selector$c(onlyRenderVisible), [onlyRenderVisible]), shallow); + return nodeIds; +} + +const selector$b = (s) => s.updateNodeInternals; +function useResizeObserver() { + const updateNodeInternals = useStore(selector$b); + const [resizeObserver] = useState(() => { + if (typeof ResizeObserver === 'undefined') { + return null; + } + return new ResizeObserver((entries) => { + const updates = new Map(); + entries.forEach((entry) => { + const id = entry.target.getAttribute('data-id'); + updates.set(id, { + id, + nodeElement: entry.target, + force: true, + }); + }); + updateNodeInternals(updates); + }); + }); + useEffect(() => { + return () => { + resizeObserver?.disconnect(); + }; + }, [resizeObserver]); + return resizeObserver; +} + +/** + * Hook to handle the resize observation + internal updates for the passed node. + * + * @internal + * @returns nodeRef - reference to the node element + */ +function useNodeObserver({ node, nodeType, hasDimensions, resizeObserver, }) { + const store = useStoreApi(); + const nodeRef = useRef(null); + const observedNode = useRef(null); + const prevSourcePosition = useRef(node.sourcePosition); + const prevTargetPosition = useRef(node.targetPosition); + const prevType = useRef(nodeType); + const isInitialized = hasDimensions && !!node.internals.handleBounds; + useEffect(() => { + if (nodeRef.current && !node.hidden && (!isInitialized || observedNode.current !== nodeRef.current)) { + if (observedNode.current) { + resizeObserver?.unobserve(observedNode.current); + } + resizeObserver?.observe(nodeRef.current); + observedNode.current = nodeRef.current; + } + }, [isInitialized, node.hidden]); + useEffect(() => { + return () => { + if (observedNode.current) { + resizeObserver?.unobserve(observedNode.current); + observedNode.current = null; + } + }; + }, []); + useEffect(() => { + if (nodeRef.current) { + /* + * when the user programmatically changes the source or handle position, we need to update the internals + * to make sure the edges are updated correctly + */ + const typeChanged = prevType.current !== nodeType; + const sourcePosChanged = prevSourcePosition.current !== node.sourcePosition; + const targetPosChanged = prevTargetPosition.current !== node.targetPosition; + if (typeChanged || sourcePosChanged || targetPosChanged) { + prevType.current = nodeType; + prevSourcePosition.current = node.sourcePosition; + prevTargetPosition.current = node.targetPosition; + store + .getState() + .updateNodeInternals(new Map([[node.id, { id: node.id, nodeElement: nodeRef.current, force: true }]])); + } + } + }, [node.id, nodeType, node.sourcePosition, node.targetPosition]); + return nodeRef; +} + +function NodeWrapper({ id, onClick, onMouseEnter, onMouseMove, onMouseLeave, onContextMenu, onDoubleClick, nodesDraggable, elementsSelectable, nodesConnectable, nodesFocusable, resizeObserver, noDragClassName, noPanClassName, disableKeyboardA11y, rfId, nodeTypes, nodeClickDistance, onError, }) { + const { node, internals, isParent } = useStore((s) => { + const node = s.nodeLookup.get(id); + const isParent = s.parentLookup.has(id); + return { + node, + internals: node.internals, + isParent, + }; + }, shallow); + let nodeType = node.type || 'default'; + let NodeComponent = nodeTypes?.[nodeType] || builtinNodeTypes[nodeType]; + if (NodeComponent === undefined) { + onError?.('003', errorMessages['error003'](nodeType)); + nodeType = 'default'; + NodeComponent = nodeTypes?.['default'] || builtinNodeTypes.default; + } + const isDraggable = !!(node.draggable || (nodesDraggable && typeof node.draggable === 'undefined')); + const isSelectable = !!(node.selectable || (elementsSelectable && typeof node.selectable === 'undefined')); + const isConnectable = !!(node.connectable || (nodesConnectable && typeof node.connectable === 'undefined')); + const isFocusable = !!(node.focusable || (nodesFocusable && typeof node.focusable === 'undefined')); + const store = useStoreApi(); + const hasDimensions = nodeHasDimensions(node); + const nodeRef = useNodeObserver({ node, nodeType, hasDimensions, resizeObserver }); + const dragging = useDrag({ + nodeRef, + disabled: node.hidden || !isDraggable, + noDragClassName, + handleSelector: node.dragHandle, + nodeId: id, + isSelectable, + nodeClickDistance, + }); + const moveSelectedNodes = useMoveSelectedNodes(); + if (node.hidden) { + return null; + } + const nodeDimensions = getNodeDimensions(node); + const inlineDimensions = getNodeInlineStyleDimensions(node); + const hasPointerEvents = isSelectable || isDraggable || onClick || onMouseEnter || onMouseMove || onMouseLeave; + const onMouseEnterHandler = onMouseEnter + ? (event) => onMouseEnter(event, { ...internals.userNode }) + : undefined; + const onMouseMoveHandler = onMouseMove + ? (event) => onMouseMove(event, { ...internals.userNode }) + : undefined; + const onMouseLeaveHandler = onMouseLeave + ? (event) => onMouseLeave(event, { ...internals.userNode }) + : undefined; + const onContextMenuHandler = onContextMenu + ? (event) => onContextMenu(event, { ...internals.userNode }) + : undefined; + const onDoubleClickHandler = onDoubleClick + ? (event) => onDoubleClick(event, { ...internals.userNode }) + : undefined; + const onSelectNodeHandler = (event) => { + const { selectNodesOnDrag, nodeDragThreshold } = store.getState(); + if (isSelectable && (!selectNodesOnDrag || !isDraggable || nodeDragThreshold > 0)) { + /* + * this handler gets called by XYDrag on drag start when selectNodesOnDrag=true + * here we only need to call it when selectNodesOnDrag=false + */ + handleNodeClick({ + id, + store, + nodeRef, + }); + } + if (onClick) { + onClick(event, { ...internals.userNode }); + } + }; + const onKeyDown = (event) => { + if (isInputDOMNode(event.nativeEvent) || disableKeyboardA11y) { + return; + } + if (elementSelectionKeys.includes(event.key) && isSelectable) { + const unselect = event.key === 'Escape'; + handleNodeClick({ + id, + store, + unselect, + nodeRef, + }); + } + else if (isDraggable && node.selected && Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key)) { + // prevent default scrolling behavior on arrow key press when node is moved + event.preventDefault(); + const { ariaLabelConfig } = store.getState(); + store.setState({ + ariaLiveMessage: ariaLabelConfig['node.a11yDescription.ariaLiveMessage']({ + direction: event.key.replace('Arrow', '').toLowerCase(), + x: ~~internals.positionAbsolute.x, + y: ~~internals.positionAbsolute.y, + }), + }); + moveSelectedNodes({ + direction: arrowKeyDiffs[event.key], + factor: event.shiftKey ? 4 : 1, + }); + } + }; + const onFocus = () => { + if (disableKeyboardA11y || !nodeRef.current?.matches(':focus-visible')) { + return; + } + const { transform, width, height, autoPanOnNodeFocus, setCenter } = store.getState(); + if (!autoPanOnNodeFocus) { + return; + } + const withinViewport = getNodesInside(new Map([[id, node]]), { x: 0, y: 0, width, height }, transform, true).length > 0; + if (!withinViewport) { + setCenter(node.position.x + nodeDimensions.width / 2, node.position.y + nodeDimensions.height / 2, { + zoom: transform[2], + }); + } + }; + return (jsx("div", { className: cc([ + 'react-flow__node', + `react-flow__node-${nodeType}`, + { + // this is overwritable by passing `nopan` as a class name + [noPanClassName]: isDraggable, + }, + node.className, + { + selected: node.selected, + selectable: isSelectable, + parent: isParent, + draggable: isDraggable, + dragging, + }, + ]), ref: nodeRef, style: { + zIndex: internals.z, + transform: `translate(${internals.positionAbsolute.x}px,${internals.positionAbsolute.y}px)`, + pointerEvents: hasPointerEvents ? 'all' : 'none', + visibility: hasDimensions ? 'visible' : 'hidden', + ...node.style, + ...inlineDimensions, + }, "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, onFocus: isFocusable ? onFocus : undefined, role: node.ariaRole ?? (isFocusable ? 'group' : undefined), "aria-roledescription": "node", "aria-describedby": disableKeyboardA11y ? undefined : `${ARIA_NODE_DESC_KEY}-${rfId}`, "aria-label": node.ariaLabel, ...node.domAttributes, children: jsx(Provider, { value: id, children: jsx(NodeComponent, { id: id, data: node.data, type: nodeType, positionAbsoluteX: internals.positionAbsolute.x, positionAbsoluteY: internals.positionAbsolute.y, selected: node.selected ?? false, selectable: isSelectable, draggable: isDraggable, deletable: node.deletable ?? true, isConnectable: isConnectable, sourcePosition: node.sourcePosition, targetPosition: node.targetPosition, dragging: dragging, dragHandle: node.dragHandle, zIndex: internals.z, parentId: node.parentId, ...nodeDimensions }) }) })); +} +var NodeWrapper$1 = memo(NodeWrapper); + +const selector$a = (s) => ({ + nodesConnectable: s.nodesConnectable, + nodesFocusable: s.nodesFocusable, + elementsSelectable: s.elementsSelectable, + onError: s.onError, +}); +function NodeRendererComponent(props) { + const { nodesConnectable, nodesFocusable, elementsSelectable, onError } = useStore(selector$a, shallow); + const nodeIds = useVisibleNodeIds(props.onlyRenderVisibleElements); + const resizeObserver = useResizeObserver(); + return (jsx("div", { className: "react-flow__nodes", style: containerStyle, children: nodeIds.map((nodeId) => { + return ( + /* + * The split of responsibilities between NodeRenderer and + * NodeComponentWrapper may appear weird. However, it’s designed to + * minimize the cost of updates when individual nodes change. + * + * For example, when you’re dragging a single node, that node gets + * updated multiple times per second. If `NodeRenderer` were to update + * every time, it would have to re-run the `nodes.map()` loop every + * time. This gets pricey with hundreds of nodes, especially if every + * loop cycle does more than just rendering a JSX element! + * + * As a result of this choice, we took the following implementation + * decisions: + * - NodeRenderer subscribes *only* to node IDs – and therefore + * rerender *only* when visible nodes are added or removed. + * - NodeRenderer performs all operations the result of which can be + * shared between nodes (such as creating the `ResizeObserver` + * instance, or subscribing to `selector`). This means extra prop + * drilling into `NodeComponentWrapper`, but it means we need to run + * these operations only once – instead of once per node. + * - Any operations that you’d normally write inside `nodes.map` are + * moved into `NodeComponentWrapper`. This ensures they are + * memorized – so if `NodeRenderer` *has* to rerender, it only + * needs to regenerate the list of nodes, nothing else. + */ + jsx(NodeWrapper$1, { id: nodeId, nodeTypes: props.nodeTypes, nodeExtent: props.nodeExtent, onClick: props.onNodeClick, onMouseEnter: props.onNodeMouseEnter, onMouseMove: props.onNodeMouseMove, onMouseLeave: props.onNodeMouseLeave, onContextMenu: props.onNodeContextMenu, onDoubleClick: props.onNodeDoubleClick, noDragClassName: props.noDragClassName, noPanClassName: props.noPanClassName, rfId: props.rfId, disableKeyboardA11y: props.disableKeyboardA11y, resizeObserver: resizeObserver, nodesDraggable: props.nodesDraggable ?? true, nodesConnectable: nodesConnectable, nodesFocusable: nodesFocusable, elementsSelectable: elementsSelectable, nodeClickDistance: props.nodeClickDistance, onError: onError }, nodeId)); + }) })); +} +NodeRendererComponent.displayName = 'NodeRenderer'; +const NodeRenderer = memo(NodeRendererComponent); + +/** + * Hook for getting the visible edge ids from the store. + * + * @internal + * @param onlyRenderVisible + * @returns array with visible edge ids + */ +function useVisibleEdgeIds(onlyRenderVisible) { + const edgeIds = useStore(useCallback((s) => { + if (!onlyRenderVisible) { + return s.edges.map((edge) => edge.id); + } + const visibleEdgeIds = []; + if (s.width && s.height) { + for (const edge of s.edges) { + const sourceNode = s.nodeLookup.get(edge.source); + const targetNode = s.nodeLookup.get(edge.target); + if (sourceNode && + targetNode && + isEdgeVisible({ + sourceNode, + targetNode, + width: s.width, + height: s.height, + transform: s.transform, + })) { + visibleEdgeIds.push(edge.id); + } + } + } + return visibleEdgeIds; + }, [onlyRenderVisible]), shallow); + return edgeIds; +} + +const ArrowSymbol = ({ color = 'none', strokeWidth = 1 }) => { + const style = { + strokeWidth, + ...(color && { stroke: color }), + }; + return (jsx("polyline", { className: "arrow", style: style, strokeLinecap: "round", fill: "none", strokeLinejoin: "round", points: "-5,-4 0,0 -5,4" })); +}; +const ArrowClosedSymbol = ({ color = 'none', strokeWidth = 1 }) => { + const style = { + strokeWidth, + ...(color && { stroke: color, fill: color }), + }; + return (jsx("polyline", { className: "arrowclosed", style: style, strokeLinecap: "round", strokeLinejoin: "round", points: "-5,-4 0,0 -5,4 -5,-4" })); +}; +const MarkerSymbols = { + [MarkerType.Arrow]: ArrowSymbol, + [MarkerType.ArrowClosed]: ArrowClosedSymbol, +}; +function useMarkerSymbol(type) { + const store = useStoreApi(); + const symbol = useMemo(() => { + const symbolExists = Object.prototype.hasOwnProperty.call(MarkerSymbols, type); + if (!symbolExists) { + store.getState().onError?.('009', errorMessages['error009'](type)); + return null; + } + return MarkerSymbols[type]; + }, [type]); + return symbol; +} + +const Marker = ({ id, type, color, width = 12.5, height = 12.5, markerUnits = 'strokeWidth', strokeWidth, orient = 'auto-start-reverse', }) => { + const Symbol = useMarkerSymbol(type); + if (!Symbol) { + return null; + } + return (jsx("marker", { className: "react-flow__arrowhead", id: id, markerWidth: `${width}`, markerHeight: `${height}`, viewBox: "-10 -10 20 20", markerUnits: markerUnits, orient: orient, refX: "0", refY: "0", children: jsx(Symbol, { color: color, strokeWidth: strokeWidth }) })); +}; +/* + * when you have multiple flows on a page and you hide the first one, the other ones have no markers anymore + * when they do have markers with the same ids. To prevent this the user can pass a unique id to the react flow wrapper + * that we can then use for creating our unique marker ids + */ +const MarkerDefinitions = ({ defaultColor, rfId }) => { + const edges = useStore((s) => s.edges); + const defaultEdgeOptions = useStore((s) => s.defaultEdgeOptions); + const markers = useMemo(() => { + const markers = createMarkerIds(edges, { + id: rfId, + defaultColor, + defaultMarkerStart: defaultEdgeOptions?.markerStart, + defaultMarkerEnd: defaultEdgeOptions?.markerEnd, + }); + return markers; + }, [edges, defaultEdgeOptions, rfId, defaultColor]); + if (!markers.length) { + return null; + } + return (jsx("svg", { className: "react-flow__marker", "aria-hidden": "true", children: jsx("defs", { children: markers.map((marker) => (jsx(Marker, { id: marker.id, type: marker.type, color: marker.color, width: marker.width, height: marker.height, markerUnits: marker.markerUnits, strokeWidth: marker.strokeWidth, orient: marker.orient }, marker.id))) }) })); +}; +MarkerDefinitions.displayName = 'MarkerDefinitions'; +var MarkerDefinitions$1 = memo(MarkerDefinitions); + +function EdgeTextComponent({ x, y, label, labelStyle, labelShowBg = true, labelBgStyle, labelBgPadding = [2, 4], labelBgBorderRadius = 2, children, className, ...rest }) { + const [edgeTextBbox, setEdgeTextBbox] = useState({ x: 1, y: 0, width: 0, height: 0 }); + const edgeTextClasses = cc(['react-flow__edge-textwrapper', className]); + const edgeTextRef = useRef(null); + useEffect(() => { + if (edgeTextRef.current) { + const textBbox = edgeTextRef.current.getBBox(); + setEdgeTextBbox({ + x: textBbox.x, + y: textBbox.y, + width: textBbox.width, + height: textBbox.height, + }); + } + }, [label]); + if (!label) { + return null; + } + return (jsxs("g", { transform: `translate(${x - edgeTextBbox.width / 2} ${y - edgeTextBbox.height / 2})`, className: edgeTextClasses, visibility: edgeTextBbox.width ? 'visible' : 'hidden', ...rest, children: [labelShowBg && (jsx("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 })), jsx("text", { className: "react-flow__edge-text", y: edgeTextBbox.height / 2, dy: "0.3em", ref: edgeTextRef, style: labelStyle, children: label }), children] })); +} +EdgeTextComponent.displayName = 'EdgeText'; +/** + * You can use the `` component as a helper component to display text + * within your custom edges. + * + * @public + * + * @example + * ```jsx + * import { EdgeText } from '@xyflow/react'; + * + * export function CustomEdgeLabel({ label }) { + * return ( + * + * ); + * } + *``` + */ +const EdgeText = memo(EdgeTextComponent); + +/** + * The `` component gets used internally for all the edges. It can be + * used inside a custom edge and handles the invisible helper edge and the edge label + * for you. + * + * @public + * @example + * ```jsx + *import { BaseEdge } from '@xyflow/react'; + * + *export function CustomEdge({ sourceX, sourceY, targetX, targetY, ...props }) { + * const [edgePath] = getStraightPath({ + * sourceX, + * sourceY, + * targetX, + * targetY, + * }); + * + * return ; + *} + *``` + * + * @remarks If you want to use an edge marker with the [``](/api-reference/components/base-edge) component, + * you can pass the `markerStart` or `markerEnd` props passed to your custom edge + * through to the [``](/api-reference/components/base-edge) component. + * You can see all the props passed to a custom edge by looking at the [`EdgeProps`](/api-reference/types/edge-props) type. + */ +function BaseEdge({ path, labelX, labelY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, interactionWidth = 20, ...props }) { + return (jsxs(Fragment, { children: [jsx("path", { ...props, d: path, fill: "none", className: cc(['react-flow__edge-path', props.className]) }), interactionWidth ? (jsx("path", { d: path, fill: "none", strokeOpacity: 0, strokeWidth: interactionWidth, className: "react-flow__edge-interaction" })) : null, label && isNumeric(labelX) && isNumeric(labelY) ? (jsx(EdgeText, { x: labelX, y: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius })) : null] })); +} + +function getControl({ pos, x1, y1, x2, y2 }) { + if (pos === Position.Left || pos === Position.Right) { + return [0.5 * (x1 + x2), y1]; + } + return [x1, 0.5 * (y1 + y2)]; +} +/** + * The `getSimpleBezierPath` util returns everything you need to render a simple + * bezier edge between two nodes. + * @public + * @returns + * - `path`: the path to use in an SVG `` element. + * - `labelX`: the `x` position you can use to render a label for this edge. + * - `labelY`: the `y` position you can use to render a label for this edge. + * - `offsetX`: the absolute difference between the source `x` position and the `x` position of the + * middle of this path. + * - `offsetY`: the absolute difference between the source `y` position and the `y` position of the + * middle of this path. + */ +function getSimpleBezierPath({ sourceX, sourceY, sourcePosition = Position.Bottom, targetX, targetY, targetPosition = Position.Top, }) { + const [sourceControlX, sourceControlY] = getControl({ + pos: sourcePosition, + x1: sourceX, + y1: sourceY, + x2: targetX, + y2: targetY, + }); + const [targetControlX, targetControlY] = getControl({ + pos: targetPosition, + x1: targetX, + y1: targetY, + x2: sourceX, + y2: sourceY, + }); + const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({ + sourceX, + sourceY, + targetX, + targetY, + sourceControlX, + sourceControlY, + targetControlX, + targetControlY, + }); + return [ + `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`, + labelX, + labelY, + offsetX, + offsetY, + ]; +} +function createSimpleBezierEdge(params) { + // eslint-disable-next-line react/display-name + return memo(({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }) => { + const [path, labelX, labelY] = getSimpleBezierPath({ + sourceX, + sourceY, + sourcePosition, + targetX, + targetY, + targetPosition, + }); + const _id = params.isInternal ? undefined : id; + return (jsx(BaseEdge, { id: _id, 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 })); + }); +} +const SimpleBezierEdge = createSimpleBezierEdge({ isInternal: false }); +const SimpleBezierEdgeInternal = createSimpleBezierEdge({ isInternal: true }); +SimpleBezierEdge.displayName = 'SimpleBezierEdge'; +SimpleBezierEdgeInternal.displayName = 'SimpleBezierEdgeInternal'; + +function createSmoothStepEdge(params) { + // eslint-disable-next-line react/display-name + return memo(({ id, sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, sourcePosition = Position.Bottom, targetPosition = Position.Top, markerEnd, markerStart, pathOptions, interactionWidth, }) => { + const [path, labelX, labelY] = getSmoothStepPath({ + sourceX, + sourceY, + sourcePosition, + targetX, + targetY, + targetPosition, + borderRadius: pathOptions?.borderRadius, + offset: pathOptions?.offset, + stepPosition: pathOptions?.stepPosition, + }); + const _id = params.isInternal ? undefined : id; + return (jsx(BaseEdge, { id: _id, 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 })); + }); +} +/** + * Component that can be used inside a custom edge to render a smooth step edge. + * + * @public + * @example + * + * ```tsx + * import { SmoothStepEdge } from '@xyflow/react'; + * + * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) { + * return ( + * + * ); + * } + * ``` + */ +const SmoothStepEdge = createSmoothStepEdge({ isInternal: false }); +/** + * @internal + */ +const SmoothStepEdgeInternal = createSmoothStepEdge({ isInternal: true }); +SmoothStepEdge.displayName = 'SmoothStepEdge'; +SmoothStepEdgeInternal.displayName = 'SmoothStepEdgeInternal'; + +function createStepEdge(params) { + // eslint-disable-next-line react/display-name + return memo(({ id, ...props }) => { + const _id = params.isInternal ? undefined : id; + return (jsx(SmoothStepEdge, { ...props, id: _id, pathOptions: useMemo(() => ({ borderRadius: 0, offset: props.pathOptions?.offset }), [props.pathOptions?.offset]) })); + }); +} +/** + * Component that can be used inside a custom edge to render a step edge. + * + * @public + * @example + * + * ```tsx + * import { StepEdge } from '@xyflow/react'; + * + * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) { + * return ( + * + * ); + * } + * ``` + */ +const StepEdge = createStepEdge({ isInternal: false }); +/** + * @internal + */ +const StepEdgeInternal = createStepEdge({ isInternal: true }); +StepEdge.displayName = 'StepEdge'; +StepEdgeInternal.displayName = 'StepEdgeInternal'; + +function createStraightEdge(params) { + // eslint-disable-next-line react/display-name + return memo(({ id, sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }) => { + const [path, labelX, labelY] = getStraightPath({ sourceX, sourceY, targetX, targetY }); + const _id = params.isInternal ? undefined : id; + return (jsx(BaseEdge, { id: _id, 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 })); + }); +} +/** + * Component that can be used inside a custom edge to render a straight line. + * + * @public + * @example + * + * ```tsx + * import { StraightEdge } from '@xyflow/react'; + * + * function CustomEdge({ sourceX, sourceY, targetX, targetY }) { + * return ( + * + * ); + * } + * ``` + */ +const StraightEdge = createStraightEdge({ isInternal: false }); +/** + * @internal + */ +const StraightEdgeInternal = createStraightEdge({ isInternal: true }); +StraightEdge.displayName = 'StraightEdge'; +StraightEdgeInternal.displayName = 'StraightEdgeInternal'; + +function createBezierEdge(params) { + // eslint-disable-next-line react/display-name + return memo(({ id, sourceX, sourceY, targetX, targetY, sourcePosition = Position.Bottom, targetPosition = Position.Top, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, pathOptions, interactionWidth, }) => { + const [path, labelX, labelY] = getBezierPath({ + sourceX, + sourceY, + sourcePosition, + targetX, + targetY, + targetPosition, + curvature: pathOptions?.curvature, + }); + const _id = params.isInternal ? undefined : id; + return (jsx(BaseEdge, { id: _id, 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 })); + }); +} +/** + * Component that can be used inside a custom edge to render a bezier curve. + * + * @public + * @example + * + * ```tsx + * import { BezierEdge } from '@xyflow/react'; + * + * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) { + * return ( + * + * ); + * } + * ``` + */ +const BezierEdge = createBezierEdge({ isInternal: false }); +/** + * @internal + */ +const BezierEdgeInternal = createBezierEdge({ isInternal: true }); +BezierEdge.displayName = 'BezierEdge'; +BezierEdgeInternal.displayName = 'BezierEdgeInternal'; + +const builtinEdgeTypes = { + default: BezierEdgeInternal, + straight: StraightEdgeInternal, + step: StepEdgeInternal, + smoothstep: SmoothStepEdgeInternal, + simplebezier: SimpleBezierEdgeInternal, +}; +const nullPosition = { + sourceX: null, + sourceY: null, + targetX: null, + targetY: null, + sourcePosition: null, + targetPosition: null, + zIndex: undefined, +}; + +const shiftX = (x, shift, position) => { + if (position === Position.Left) + return x - shift; + if (position === Position.Right) + return x + shift; + return x; +}; +const shiftY = (y, shift, position) => { + if (position === Position.Top) + return y - shift; + if (position === Position.Bottom) + return y + shift; + return y; +}; +const EdgeUpdaterClassName = 'react-flow__edgeupdater'; +/** + * @internal + */ +function EdgeAnchor({ position, centerX, centerY, radius = 10, onMouseDown, onMouseEnter, onMouseOut, type, }) { + return (jsx("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" })); +} + +function EdgeUpdateAnchors({ isReconnectable, reconnectRadius, edge, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, onReconnect, onReconnectStart, onReconnectEnd, setReconnecting, setUpdateHover, }) { + const store = useStoreApi(); + const handleEdgeUpdater = (event, oppositeHandle) => { + // avoid triggering edge updater if mouse btn is not left + if (event.button !== 0) { + return; + } + const { autoPanOnConnect, domNode, connectionMode, connectionRadius, lib, onConnectStart, cancelConnection, nodeLookup, rfId: flowId, panBy, updateConnection, } = store.getState(); + const isTarget = oppositeHandle.type === 'target'; + const _onReconnectEnd = (evt, connectionState) => { + setReconnecting(false); + onReconnectEnd?.(evt, edge, oppositeHandle.type, connectionState); + }; + const onConnectEdge = (connection) => onReconnect?.(edge, connection); + const _onConnectStart = (_event, params) => { + setReconnecting(true); + onReconnectStart?.(event, edge, oppositeHandle.type); + onConnectStart?.(_event, params); + }; + XYHandle.onPointerDown(event.nativeEvent, { + autoPanOnConnect, + connectionMode, + connectionRadius, + domNode, + handleId: oppositeHandle.id, + nodeId: oppositeHandle.nodeId, + nodeLookup, + isTarget, + edgeUpdaterType: oppositeHandle.type, + lib, + flowId, + cancelConnection, + panBy, + isValidConnection: (...args) => store.getState().isValidConnection?.(...args) ?? true, + onConnect: onConnectEdge, + onConnectStart: _onConnectStart, + onConnectEnd: (...args) => store.getState().onConnectEnd?.(...args), + onReconnectEnd: _onReconnectEnd, + updateConnection, + getTransform: () => store.getState().transform, + getFromHandle: () => store.getState().connection.fromHandle, + dragThreshold: store.getState().connectionDragThreshold, + handleDomNode: event.currentTarget, + }); + }; + const onReconnectSourceMouseDown = (event) => handleEdgeUpdater(event, { nodeId: edge.target, id: edge.targetHandle ?? null, type: 'target' }); + const onReconnectTargetMouseDown = (event) => handleEdgeUpdater(event, { nodeId: edge.source, id: edge.sourceHandle ?? null, type: 'source' }); + const onReconnectMouseEnter = () => setUpdateHover(true); + const onReconnectMouseOut = () => setUpdateHover(false); + return (jsxs(Fragment, { children: [(isReconnectable === true || isReconnectable === 'source') && (jsx(EdgeAnchor, { position: sourcePosition, centerX: sourceX, centerY: sourceY, radius: reconnectRadius, onMouseDown: onReconnectSourceMouseDown, onMouseEnter: onReconnectMouseEnter, onMouseOut: onReconnectMouseOut, type: "source" })), (isReconnectable === true || isReconnectable === 'target') && (jsx(EdgeAnchor, { position: targetPosition, centerX: targetX, centerY: targetY, radius: reconnectRadius, onMouseDown: onReconnectTargetMouseDown, onMouseEnter: onReconnectMouseEnter, onMouseOut: onReconnectMouseOut, type: "target" }))] })); +} + +function EdgeWrapper({ id, edgesFocusable, edgesReconnectable, elementsSelectable, onClick, onDoubleClick, onContextMenu, onMouseEnter, onMouseMove, onMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, rfId, edgeTypes, noPanClassName, onError, disableKeyboardA11y, }) { + let edge = useStore((s) => s.edgeLookup.get(id)); + const defaultEdgeOptions = useStore((s) => s.defaultEdgeOptions); + edge = defaultEdgeOptions ? { ...defaultEdgeOptions, ...edge } : edge; + let edgeType = edge.type || 'default'; + let EdgeComponent = edgeTypes?.[edgeType] || builtinEdgeTypes[edgeType]; + if (EdgeComponent === undefined) { + onError?.('011', errorMessages['error011'](edgeType)); + edgeType = 'default'; + EdgeComponent = edgeTypes?.['default'] || builtinEdgeTypes.default; + } + const isFocusable = !!(edge.focusable || (edgesFocusable && typeof edge.focusable === 'undefined')); + const isReconnectable = typeof onReconnect !== 'undefined' && + (edge.reconnectable || (edgesReconnectable && typeof edge.reconnectable === 'undefined')); + const isSelectable = !!(edge.selectable || (elementsSelectable && typeof edge.selectable === 'undefined')); + const edgeRef = useRef(null); + const [updateHover, setUpdateHover] = useState(false); + const [reconnecting, setReconnecting] = useState(false); + const store = useStoreApi(); + const { zIndex = edge.zIndex, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, } = useStore(useCallback((store) => { + const sourceNode = store.nodeLookup.get(edge.source); + const targetNode = store.nodeLookup.get(edge.target); + if (!sourceNode || !targetNode) { + return nullPosition; + } + const edgePosition = getEdgePosition({ + id, + sourceNode, + targetNode, + sourceHandle: edge.sourceHandle || null, + targetHandle: edge.targetHandle || null, + connectionMode: store.connectionMode, + onError, + }); + const zIndex = getElevatedEdgeZIndex({ + selected: edge.selected, + zIndex: edge.zIndex, + sourceNode, + targetNode, + elevateOnSelect: store.elevateEdgesOnSelect, + zIndexMode: store.zIndexMode, + }); + return { + ...(edgePosition || nullPosition), + zIndex, + }; + }, [edge.source, edge.target, edge.sourceHandle, edge.targetHandle, edge.selected, edge.zIndex]), shallow); + const markerStartUrl = useMemo(() => (edge.markerStart ? `url('#${getMarkerId(edge.markerStart, rfId)}')` : undefined), [edge.markerStart, rfId]); + const markerEndUrl = useMemo(() => (edge.markerEnd ? `url('#${getMarkerId(edge.markerEnd, rfId)}')` : undefined), [edge.markerEnd, rfId]); + if (edge.hidden || sourceX === null || sourceY === null || targetX === null || targetY === null) { + return null; + } + const onEdgeClick = (event) => { + const { addSelectedEdges, unselectNodesAndEdges, multiSelectionActive } = store.getState(); + if (isSelectable) { + store.setState({ nodesSelectionActive: false }); + if (edge.selected && multiSelectionActive) { + unselectNodesAndEdges({ nodes: [], edges: [edge] }); + edgeRef.current?.blur(); + } + else { + addSelectedEdges([id]); + } + } + if (onClick) { + onClick(event, edge); + } + }; + const onEdgeDoubleClick = onDoubleClick + ? (event) => { + onDoubleClick(event, { ...edge }); + } + : undefined; + const onEdgeContextMenu = onContextMenu + ? (event) => { + onContextMenu(event, { ...edge }); + } + : undefined; + const onEdgeMouseEnter = onMouseEnter + ? (event) => { + onMouseEnter(event, { ...edge }); + } + : undefined; + const onEdgeMouseMove = onMouseMove + ? (event) => { + onMouseMove(event, { ...edge }); + } + : undefined; + const onEdgeMouseLeave = onMouseLeave + ? (event) => { + onMouseLeave(event, { ...edge }); + } + : undefined; + const onKeyDown = (event) => { + if (!disableKeyboardA11y && elementSelectionKeys.includes(event.key) && isSelectable) { + const { unselectNodesAndEdges, addSelectedEdges } = store.getState(); + const unselect = event.key === 'Escape'; + if (unselect) { + edgeRef.current?.blur(); + unselectNodesAndEdges({ edges: [edge] }); + } + else { + addSelectedEdges([id]); + } + } + }; + return (jsx("svg", { style: { zIndex }, children: jsxs("g", { className: cc([ + 'react-flow__edge', + `react-flow__edge-${edgeType}`, + edge.className, + noPanClassName, + { + selected: edge.selected, + animated: edge.animated, + inactive: !isSelectable && !onClick, + updating: updateHover, + selectable: isSelectable, + }, + ]), onClick: onEdgeClick, onDoubleClick: onEdgeDoubleClick, onContextMenu: onEdgeContextMenu, onMouseEnter: onEdgeMouseEnter, onMouseMove: onEdgeMouseMove, onMouseLeave: onEdgeMouseLeave, onKeyDown: isFocusable ? onKeyDown : undefined, tabIndex: isFocusable ? 0 : undefined, role: edge.ariaRole ?? (isFocusable ? 'group' : 'img'), "aria-roledescription": "edge", "data-id": id, "data-testid": `rf__edge-${id}`, "aria-label": edge.ariaLabel === null ? undefined : edge.ariaLabel || `Edge from ${edge.source} to ${edge.target}`, "aria-describedby": isFocusable ? `${ARIA_EDGE_DESC_KEY}-${rfId}` : undefined, ref: edgeRef, ...edge.domAttributes, children: [!reconnecting && (jsx(EdgeComponent, { id: id, source: edge.source, target: edge.target, type: edge.type, selected: edge.selected, animated: edge.animated, selectable: isSelectable, deletable: edge.deletable ?? true, label: edge.label, labelStyle: edge.labelStyle, labelShowBg: edge.labelShowBg, labelBgStyle: edge.labelBgStyle, labelBgPadding: edge.labelBgPadding, labelBgBorderRadius: edge.labelBgBorderRadius, sourceX: sourceX, sourceY: sourceY, targetX: targetX, targetY: targetY, sourcePosition: sourcePosition, targetPosition: targetPosition, data: edge.data, style: edge.style, sourceHandleId: edge.sourceHandle, targetHandleId: edge.targetHandle, markerStart: markerStartUrl, markerEnd: markerEndUrl, pathOptions: 'pathOptions' in edge ? edge.pathOptions : undefined, interactionWidth: edge.interactionWidth })), isReconnectable && (jsx(EdgeUpdateAnchors, { edge: edge, isReconnectable: isReconnectable, reconnectRadius: reconnectRadius, onReconnect: onReconnect, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, sourceX: sourceX, sourceY: sourceY, targetX: targetX, targetY: targetY, sourcePosition: sourcePosition, targetPosition: targetPosition, setUpdateHover: setUpdateHover, setReconnecting: setReconnecting }))] }) })); +} +var EdgeWrapper$1 = memo(EdgeWrapper); + +const selector$9 = (s) => ({ + edgesFocusable: s.edgesFocusable, + edgesReconnectable: s.edgesReconnectable, + elementsSelectable: s.elementsSelectable, + connectionMode: s.connectionMode, + onError: s.onError, +}); +function EdgeRendererComponent({ defaultMarkerColor, onlyRenderVisibleElements, rfId, edgeTypes, noPanClassName, onReconnect, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, onEdgeClick, reconnectRadius, onEdgeDoubleClick, onReconnectStart, onReconnectEnd, disableKeyboardA11y, }) { + const { edgesFocusable, edgesReconnectable, elementsSelectable, onError } = useStore(selector$9, shallow); + const edgeIds = useVisibleEdgeIds(onlyRenderVisibleElements); + return (jsxs("div", { className: "react-flow__edges", children: [jsx(MarkerDefinitions$1, { defaultColor: defaultMarkerColor, rfId: rfId }), edgeIds.map((id) => { + return (jsx(EdgeWrapper$1, { id: id, edgesFocusable: edgesFocusable, edgesReconnectable: edgesReconnectable, elementsSelectable: elementsSelectable, noPanClassName: noPanClassName, onReconnect: onReconnect, onContextMenu: onEdgeContextMenu, onMouseEnter: onEdgeMouseEnter, onMouseMove: onEdgeMouseMove, onMouseLeave: onEdgeMouseLeave, onClick: onEdgeClick, reconnectRadius: reconnectRadius, onDoubleClick: onEdgeDoubleClick, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, rfId: rfId, onError: onError, edgeTypes: edgeTypes, disableKeyboardA11y: disableKeyboardA11y }, id)); + })] })); +} +EdgeRendererComponent.displayName = 'EdgeRenderer'; +const EdgeRenderer = memo(EdgeRendererComponent); + +const toTransformString = (transform) => `translate(${transform[0]}px,${transform[1]}px) scale(${transform[2]})`; +function Viewport({ children }) { + const store = useStoreApi(); + const viewportRef = useRef(null); + // seed the transform for first paint and SSR without subscribing, so we don't re-render on pan/zoom + const [initialTransform] = useState(() => store.getState().transform); + // transform changes every pan/zoom frame, so write it to the DOM directly to keep React out of the hot path + useIsomorphicLayoutEffect(() => { + let prevTransform = null; + const applyTransform = () => { + const transform = store.getState().transform; + // store.subscribe fires on every update, so only touch the DOM when x, y or zoom actually changed + if (prevTransform && + transform[0] === prevTransform[0] && + transform[1] === prevTransform[1] && + transform[2] === prevTransform[2]) { + return; + } + prevTransform = transform; + if (viewportRef.current) { + viewportRef.current.style.transform = toTransformString(transform); + } + }; + applyTransform(); + return store.subscribe(applyTransform); + }, [store]); + return (jsx("div", { ref: viewportRef, className: "react-flow__viewport xyflow__viewport react-flow__container", style: { transform: toTransformString(initialTransform) }, children: children })); +} + +/** + * Hook for calling onInit handler. + * + * @internal + */ +function useOnInitHandler(onInit) { + const rfInstance = useReactFlow(); + const isInitialized = useRef(false); + useEffect(() => { + if (!isInitialized.current && rfInstance.viewportInitialized && onInit) { + setTimeout(() => onInit(rfInstance), 1); + isInitialized.current = true; + } + }, [onInit, rfInstance.viewportInitialized]); +} + +const selector$8 = (state) => state.panZoom?.syncViewport; +/** + * Hook for syncing the viewport with the panzoom instance. + * + * @internal + * @param viewport + */ +function useViewportSync(viewport) { + const syncViewport = useStore(selector$8); + const store = useStoreApi(); + useEffect(() => { + if (viewport) { + syncViewport?.(viewport); + store.setState({ transform: [viewport.x, viewport.y, viewport.zoom] }); + } + }, [viewport, syncViewport]); + return null; +} + +function storeSelector$1(s) { + return s.connection.inProgress + ? { ...s.connection, to: pointToRendererPoint(s.connection.to, s.transform) } + : { ...s.connection }; +} +function getSelector(connectionSelector) { + if (connectionSelector) { + const combinedSelector = (s) => { + const connection = storeSelector$1(s); + return connectionSelector(connection); + }; + return combinedSelector; + } + return storeSelector$1; +} +/** + * The `useConnection` hook returns the current connection when there is an active + * connection interaction. If no connection interaction is active, it returns null + * for every property. A typical use case for this hook is to colorize handles + * based on a certain condition (e.g. if the connection is valid or not). + * + * @public + * @param connectionSelector - An optional selector function used to extract a slice of the + * `ConnectionState` data. Using a selector can prevent component re-renders where data you don't + * otherwise care about might change. If a selector is not provided, the entire `ConnectionState` + * object is returned unchanged. + * @example + * + * ```tsx + *import { useConnection } from '@xyflow/react'; + * + *function App() { + * const connection = useConnection(); + * + * return ( + *
{connection ? `Someone is trying to make a connection from ${connection.fromNode} to this one.` : 'There are currently no incoming connections!'} + * + *
+ * ); + * } + * ``` + * + * @returns ConnectionState + */ +function useConnection(connectionSelector) { + const combinedSelector = getSelector(connectionSelector); + return useStore(combinedSelector, shallow); +} + +const selector$7 = (s) => ({ + nodesConnectable: s.nodesConnectable, + isValid: s.connection.isValid, + inProgress: s.connection.inProgress, + width: s.width, + height: s.height, +}); +function ConnectionLineWrapper({ containerStyle, style, type, component, }) { + const { nodesConnectable, width, height, isValid, inProgress } = useStore(selector$7, shallow); + const renderConnection = !!(width && nodesConnectable && inProgress); + if (!renderConnection) { + return null; + } + return (jsx("svg", { style: containerStyle, width: width, height: height, className: "react-flow__connectionline react-flow__container", children: jsx("g", { className: cc(['react-flow__connection', getConnectionStatus(isValid)]), children: jsx(ConnectionLine, { style: style, type: type, CustomComponent: component, isValid: isValid }) }) })); +} +const ConnectionLine = ({ style, type = ConnectionLineType.Bezier, CustomComponent, isValid, }) => { + const { inProgress, from, fromNode, fromHandle, fromPosition, to, toNode, toHandle, toPosition, pointer } = useConnection(); + if (!inProgress) { + return; + } + if (CustomComponent) { + return (jsx(CustomComponent, { connectionLineType: type, connectionLineStyle: style, fromNode: fromNode, fromHandle: fromHandle, fromX: from.x, fromY: from.y, toX: to.x, toY: to.y, fromPosition: fromPosition, toPosition: toPosition, connectionStatus: getConnectionStatus(isValid), toNode: toNode, toHandle: toHandle, pointer: pointer })); + } + let path = ''; + const pathParams = { + sourceX: from.x, + sourceY: from.y, + sourcePosition: fromPosition, + targetX: to.x, + targetY: to.y, + targetPosition: toPosition, + }; + switch (type) { + case ConnectionLineType.Bezier: + [path] = getBezierPath(pathParams); + break; + case ConnectionLineType.SimpleBezier: + [path] = getSimpleBezierPath(pathParams); + break; + case ConnectionLineType.Step: + [path] = getSmoothStepPath({ + ...pathParams, + borderRadius: 0, + }); + break; + case ConnectionLineType.SmoothStep: + [path] = getSmoothStepPath(pathParams); + break; + default: + [path] = getStraightPath(pathParams); + } + return jsx("path", { d: path, fill: "none", className: "react-flow__connection-path", style: style }); +}; +ConnectionLine.displayName = 'ConnectionLine'; + +const emptyTypes = {}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function useNodeOrEdgeTypesWarning(nodeOrEdgeTypes = emptyTypes) { + const typesRef = useRef(nodeOrEdgeTypes); + const store = useStoreApi(); + useEffect(() => { + if (process.env.NODE_ENV === 'development') { + const usedKeys = new Set([...Object.keys(typesRef.current), ...Object.keys(nodeOrEdgeTypes)]); + for (const key of usedKeys) { + if (typesRef.current[key] !== nodeOrEdgeTypes[key]) { + store.getState().onError?.('002', errorMessages['error002']()); + break; + } + } + typesRef.current = nodeOrEdgeTypes; + } + }, [nodeOrEdgeTypes]); +} + +function useStylesLoadedWarning() { + const store = useStoreApi(); + const checked = useRef(false); + useEffect(() => { + if (process.env.NODE_ENV === 'development') { + if (!checked.current) { + const pane = document.querySelector('.react-flow__pane'); + if (pane && !(window.getComputedStyle(pane).zIndex === '1')) { + store.getState().onError?.('013', errorMessages['error013']('react')); + } + checked.current = true; + } + } + }, []); +} + +function GraphViewComponent({ nodeTypes, edgeTypes, onInit, onNodeClick, onEdgeClick, onNodeDoubleClick, onEdgeDoubleClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onSelectionContextMenu, onSelectionStart, onSelectionEnd, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, deleteKeyCode, onlyRenderVisibleElements, elementsSelectable, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, defaultMarkerColor, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag, autoPanOnSelection, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance, nodeClickDistance, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, noDragClassName, noWheelClassName, noPanClassName, disableKeyboardA11y, nodeExtent, rfId, viewport, onViewportChange, nodesDraggable, }) { + useNodeOrEdgeTypesWarning(nodeTypes); + useNodeOrEdgeTypesWarning(edgeTypes); + useStylesLoadedWarning(); + useOnInitHandler(onInit); + useViewportSync(viewport); + return (jsx(FlowRenderer, { onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneContextMenu: onPaneContextMenu, onPaneScroll: onPaneScroll, paneClickDistance: paneClickDistance, deleteKeyCode: deleteKeyCode, selectionKeyCode: selectionKeyCode, selectionOnDrag: selectionOnDrag, selectionMode: selectionMode, onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, multiSelectionKeyCode: multiSelectionKeyCode, panActivationKeyCode: panActivationKeyCode, zoomActivationKeyCode: zoomActivationKeyCode, elementsSelectable: elementsSelectable, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, zoomOnDoubleClick: zoomOnDoubleClick, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, panOnDrag: panOnDrag, autoPanOnSelection: autoPanOnSelection, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, onSelectionContextMenu: onSelectionContextMenu, preventScrolling: preventScrolling, noDragClassName: noDragClassName, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y, onViewportChange: onViewportChange, isControlledViewport: !!viewport, children: jsxs(Viewport, { children: [jsx(EdgeRenderer, { edgeTypes: edgeTypes, onEdgeClick: onEdgeClick, onEdgeDoubleClick: onEdgeDoubleClick, onReconnect: onReconnect, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, onlyRenderVisibleElements: onlyRenderVisibleElements, onEdgeContextMenu: onEdgeContextMenu, onEdgeMouseEnter: onEdgeMouseEnter, onEdgeMouseMove: onEdgeMouseMove, onEdgeMouseLeave: onEdgeMouseLeave, reconnectRadius: reconnectRadius, defaultMarkerColor: defaultMarkerColor, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y, rfId: rfId }), jsx(ConnectionLineWrapper, { style: connectionLineStyle, type: connectionLineType, component: connectionLineComponent, containerStyle: connectionLineContainerStyle }), jsx("div", { className: "react-flow__edgelabel-renderer" }), jsx(NodeRenderer, { nodeTypes: nodeTypes, onNodeClick: onNodeClick, onNodeDoubleClick: onNodeDoubleClick, onNodeMouseEnter: onNodeMouseEnter, onNodeMouseMove: onNodeMouseMove, onNodeMouseLeave: onNodeMouseLeave, onNodeContextMenu: onNodeContextMenu, nodeClickDistance: nodeClickDistance, onlyRenderVisibleElements: onlyRenderVisibleElements, noPanClassName: noPanClassName, noDragClassName: noDragClassName, disableKeyboardA11y: disableKeyboardA11y, nodeExtent: nodeExtent, rfId: rfId, nodesDraggable: nodesDraggable }), jsx("div", { className: "react-flow__viewport-portal" })] }) })); +} +GraphViewComponent.displayName = 'GraphView'; +const GraphView = memo(GraphViewComponent); + +const devWarn = createDevWarn('React Flow', 'https://reactflow.dev/'); +const getInitialState = ({ nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom = 0.5, maxZoom = 2, nodeOrigin, nodeExtent, zIndexMode = 'basic', } = {}) => { + const nodeLookup = new Map(); + const parentLookup = new Map(); + const connectionLookup = new Map(); + const edgeLookup = new Map(); + const storeEdges = defaultEdges ?? edges ?? []; + const storeNodes = defaultNodes ?? nodes ?? []; + const storeNodeOrigin = nodeOrigin ?? [0, 0]; + const storeNodeExtent = nodeExtent ?? infiniteExtent; + updateConnectionLookup(connectionLookup, edgeLookup, storeEdges); + const { nodesInitialized } = adoptUserNodes(storeNodes, nodeLookup, parentLookup, { + nodeOrigin: storeNodeOrigin, + nodeExtent: storeNodeExtent, + zIndexMode, + }); + let transform = [0, 0, 1]; + if (fitView && width && height) { + const bounds = getInternalNodesBounds(nodeLookup, { + filter: (node) => !!((node.width || node.initialWidth) && (node.height || node.initialHeight)), + }); + const { x, y, zoom } = getViewportForBounds(bounds, width, height, minZoom, maxZoom, fitViewOptions?.padding ?? 0.1); + transform = [x, y, zoom]; + } + return { + rfId: '1', + width: width ?? 0, + height: height ?? 0, + transform, + nodes: storeNodes, + nodesInitialized, + nodeLookup, + parentLookup, + edges: storeEdges, + edgeLookup, + connectionLookup, + onNodesChange: null, + onEdgesChange: null, + hasDefaultNodes: defaultNodes !== undefined, + hasDefaultEdges: defaultEdges !== undefined, + panZoom: null, + minZoom, + maxZoom, + translateExtent: infiniteExtent, + nodeExtent: storeNodeExtent, + nodesSelectionActive: false, + userSelectionActive: false, + userSelectionRect: null, + connectionMode: ConnectionMode.Strict, + domNode: null, + paneDragging: false, + noPanClassName: 'nopan', + nodeOrigin: storeNodeOrigin, + nodeDragThreshold: 1, + connectionDragThreshold: 1, + snapGrid: [15, 15], + snapToGrid: false, + nodesDraggable: true, + nodesConnectable: true, + nodesFocusable: true, + edgesFocusable: true, + edgesReconnectable: true, + elementsSelectable: true, + elevateNodesOnSelect: true, + elevateEdgesOnSelect: true, + selectNodesOnDrag: true, + multiSelectionActive: false, + fitViewQueued: fitView ?? false, + fitViewOptions, + fitViewResolver: null, + connection: { ...initialConnection }, + connectionClickStartHandle: null, + connectOnClick: true, + ariaLiveMessage: '', + autoPanOnConnect: true, + autoPanOnNodeDrag: true, + autoPanOnNodeFocus: true, + autoPanSpeed: 15, + connectionRadius: 20, + onError: devWarn, + isValidConnection: undefined, + onSelectionChangeHandlers: [], + lib: 'react', + debug: false, + ariaLabelConfig: defaultAriaLabelConfig, + zIndexMode, + onNodesChangeMiddlewareMap: new Map(), + onEdgesChangeMiddlewareMap: new Map(), + }; +}; + +const createStore = ({ nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom, maxZoom, nodeOrigin, nodeExtent, zIndexMode, }) => createWithEqualityFn((set, get) => { + async function resolveFitView() { + const { nodeLookup, panZoom, fitViewOptions, fitViewResolver, width, height, minZoom, maxZoom } = get(); + if (!panZoom) { + return; + } + await fitViewport({ + nodes: nodeLookup, + width, + height, + panZoom, + minZoom, + maxZoom, + }, fitViewOptions); + fitViewResolver?.resolve(true); + /** + * wait for the fitViewport to resolve before deleting the resolver, + * we want to reuse the old resolver if the user calls fitView again in the mean time + */ + set({ fitViewResolver: null }); + } + return { + ...getInitialState({ + nodes, + edges, + width, + height, + fitView, + fitViewOptions, + minZoom, + maxZoom, + nodeOrigin, + nodeExtent, + defaultNodes, + defaultEdges, + zIndexMode, + }), + setNodes: (nodes) => { + const { nodeLookup, parentLookup, nodeOrigin, elevateNodesOnSelect, fitViewQueued, zIndexMode, nodesSelectionActive, } = get(); + /* + * setNodes() is called exclusively in response to user actions: + * - either when the `` prop is updated in the controlled ReactFlow setup, + * - or when the user calls something like `reactFlowInstance.setNodes()` in an uncontrolled ReactFlow setup. + * + * When this happens, we take the note objects passed by the user and extend them with fields + * relevant for internal React Flow operations. + */ + const { nodesInitialized, hasSelectedNodes } = adoptUserNodes(nodes, nodeLookup, parentLookup, { + nodeOrigin, + nodeExtent, + elevateNodesOnSelect, + checkEquality: true, + zIndexMode, + }); + const nextNodesSelectionActive = nodesSelectionActive && hasSelectedNodes; + if (fitViewQueued && nodesInitialized) { + resolveFitView(); + set({ + nodes, + nodesInitialized, + fitViewQueued: false, + fitViewOptions: undefined, + nodesSelectionActive: nextNodesSelectionActive + }); + } + else { + set({ nodes, nodesInitialized, nodesSelectionActive: nextNodesSelectionActive }); + } + }, + setEdges: (edges) => { + const { connectionLookup, edgeLookup } = get(); + updateConnectionLookup(connectionLookup, edgeLookup, edges); + set({ edges }); + }, + setDefaultNodesAndEdges: (nodes, edges) => { + if (nodes) { + const { setNodes } = get(); + setNodes(nodes); + set({ hasDefaultNodes: true }); + } + if (edges) { + const { setEdges } = get(); + setEdges(edges); + set({ hasDefaultEdges: true }); + } + }, + /* + * Every node gets registered at a ResizeObserver. Whenever a node + * changes its dimensions, this function is called to measure the + * new dimensions and update the nodes. + */ + updateNodeInternals: (updates) => { + const { triggerNodeChanges, nodeLookup, parentLookup, domNode, nodeOrigin, nodeExtent, debug, fitViewQueued, zIndexMode, } = get(); + const { changes, updatedInternals } = updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOrigin, nodeExtent, zIndexMode); + if (!updatedInternals) { + return; + } + updateAbsolutePositions(nodeLookup, parentLookup, { nodeOrigin, nodeExtent, zIndexMode }); + if (fitViewQueued) { + resolveFitView(); + set({ fitViewQueued: false, fitViewOptions: undefined }); + } + else { + // we always want to trigger useStore calls whenever updateNodeInternals is called + set({}); + } + if (changes?.length > 0) { + if (debug) { + console.log('React Flow: trigger node changes', changes); + } + triggerNodeChanges?.(changes); + } + }, + updateNodePositions: (nodeDragItems, dragging = false) => { + const parentExpandChildren = []; + let changes = []; + const { nodeLookup, triggerNodeChanges, connection, updateConnection, onNodesChangeMiddlewareMap } = get(); + for (const [id, dragItem] of nodeDragItems) { + // we are using the nodelookup to be sure to use the current expandParent and parentId value + const node = nodeLookup.get(id); + const expandParent = !!(node?.expandParent && node?.parentId && dragItem?.position); + const change = { + id, + type: 'position', + position: expandParent + ? { + x: Math.max(0, dragItem.position.x), + y: Math.max(0, dragItem.position.y), + } + : dragItem.position, + dragging, + }; + if (node && connection.inProgress && connection.fromNode.id === node.id) { + const updatedFrom = getHandlePosition(node, connection.fromHandle, Position.Left, true); + updateConnection({ ...connection, from: updatedFrom }); + } + if (expandParent && node.parentId) { + parentExpandChildren.push({ + id, + parentId: node.parentId, + rect: { + ...dragItem.internals.positionAbsolute, + width: dragItem.measured.width ?? 0, + height: dragItem.measured.height ?? 0, + }, + }); + } + changes.push(change); + } + if (parentExpandChildren.length > 0) { + const { parentLookup, nodeOrigin } = get(); + const parentExpandChanges = handleExpandParent(parentExpandChildren, nodeLookup, parentLookup, nodeOrigin); + changes.push(...parentExpandChanges); + } + for (const middleware of onNodesChangeMiddlewareMap.values()) { + changes = middleware(changes); + } + triggerNodeChanges(changes); + }, + triggerNodeChanges: (changes) => { + const { onNodesChange, setNodes, nodes, hasDefaultNodes, debug } = get(); + if (changes?.length) { + if (hasDefaultNodes) { + const updatedNodes = applyNodeChanges(changes, nodes); + setNodes(updatedNodes); + } + if (debug) { + console.log('React Flow: trigger node changes', changes); + } + onNodesChange?.(changes); + } + }, + triggerEdgeChanges: (changes) => { + const { onEdgesChange, setEdges, edges, hasDefaultEdges, debug } = get(); + if (changes?.length) { + if (hasDefaultEdges) { + const updatedEdges = applyEdgeChanges(changes, edges); + setEdges(updatedEdges); + } + if (debug) { + console.log('React Flow: trigger edge changes', changes); + } + onEdgesChange?.(changes); + } + }, + addSelectedNodes: (selectedNodeIds) => { + const { multiSelectionActive, edgeLookup, nodeLookup, triggerNodeChanges, triggerEdgeChanges } = get(); + if (multiSelectionActive) { + const nodeChanges = selectedNodeIds.map((nodeId) => createSelectionChange(nodeId, true)); + triggerNodeChanges(nodeChanges); + return; + } + triggerNodeChanges(getSelectionChanges(nodeLookup, new Set([...selectedNodeIds]), true)); + triggerEdgeChanges(getSelectionChanges(edgeLookup)); + }, + addSelectedEdges: (selectedEdgeIds) => { + const { multiSelectionActive, edgeLookup, nodeLookup, triggerNodeChanges, triggerEdgeChanges } = get(); + if (multiSelectionActive) { + const changedEdges = selectedEdgeIds.map((edgeId) => createSelectionChange(edgeId, true)); + triggerEdgeChanges(changedEdges); + return; + } + triggerEdgeChanges(getSelectionChanges(edgeLookup, new Set([...selectedEdgeIds]))); + triggerNodeChanges(getSelectionChanges(nodeLookup, new Set(), true)); + }, + unselectNodesAndEdges: ({ nodes, edges } = {}) => { + const { edges: storeEdges, nodes: storeNodes, nodeLookup, triggerNodeChanges, triggerEdgeChanges } = get(); + const nodesToUnselect = nodes ? nodes : storeNodes; + const edgesToUnselect = edges ? edges : storeEdges; + const nodeChanges = []; + for (const node of nodesToUnselect) { + if (!node.selected) { + continue; // skip changing nodes that are not selected + } + const internalNode = nodeLookup.get(node.id); + if (internalNode) { + /* + * we need to unselect the internal node that was selected previously before we + * send the change to the user to prevent it to be selected while dragging the new node + */ + internalNode.selected = false; + } + nodeChanges.push(createSelectionChange(node.id, false)); + } + const edgeChanges = []; + for (const edge of edgesToUnselect) { + if (!edge.selected) { + continue; // skip changing edges that are not selected + } + edgeChanges.push(createSelectionChange(edge.id, false)); + } + triggerNodeChanges(nodeChanges); + triggerEdgeChanges(edgeChanges); + }, + setMinZoom: (minZoom) => { + const { panZoom, maxZoom } = get(); + panZoom?.setScaleExtent([minZoom, maxZoom]); + set({ minZoom }); + }, + setMaxZoom: (maxZoom) => { + const { panZoom, minZoom } = get(); + panZoom?.setScaleExtent([minZoom, maxZoom]); + set({ maxZoom }); + }, + setTranslateExtent: (translateExtent) => { + get().panZoom?.setTranslateExtent(translateExtent); + set({ translateExtent }); + }, + resetSelectedElements: () => { + const { edges, nodes, triggerNodeChanges, triggerEdgeChanges, elementsSelectable } = get(); + if (!elementsSelectable) { + return; + } + const nodeChanges = nodes.reduce((res, node) => (node.selected ? [...res, createSelectionChange(node.id, false)] : res), []); + const edgeChanges = edges.reduce((res, edge) => (edge.selected ? [...res, createSelectionChange(edge.id, false)] : res), []); + triggerNodeChanges(nodeChanges); + triggerEdgeChanges(edgeChanges); + }, + setNodeExtent: (nextNodeExtent) => { + const { nodes, nodeLookup, parentLookup, nodeOrigin, elevateNodesOnSelect, nodeExtent, zIndexMode } = get(); + if (nextNodeExtent[0][0] === nodeExtent[0][0] && + nextNodeExtent[0][1] === nodeExtent[0][1] && + nextNodeExtent[1][0] === nodeExtent[1][0] && + nextNodeExtent[1][1] === nodeExtent[1][1]) { + return; + } + adoptUserNodes(nodes, nodeLookup, parentLookup, { + nodeOrigin, + nodeExtent: nextNodeExtent, + elevateNodesOnSelect, + checkEquality: false, + zIndexMode, + }); + set({ nodeExtent: nextNodeExtent }); + }, + panBy: (delta) => { + const { transform, width, height, panZoom, translateExtent } = get(); + return panBy({ delta, panZoom, transform, translateExtent, width, height }); + }, + setCenter: async (x, y, options) => { + const { width, height, maxZoom, panZoom } = get(); + if (!panZoom) { + return false; + } + const nextZoom = typeof options?.zoom !== 'undefined' ? options.zoom : maxZoom; + await panZoom.setViewport({ + x: width / 2 - x * nextZoom, + y: height / 2 - y * nextZoom, + zoom: nextZoom, + }, { duration: options?.duration, ease: options?.ease, interpolate: options?.interpolate }); + return true; + }, + cancelConnection: () => { + set({ + connection: { ...initialConnection }, + }); + }, + updateConnection: (connection) => { + set({ connection }); + }, + reset: () => set({ ...getInitialState() }), + }; +}, Object.is); + +/** + * The `` component is a [context provider](https://react.dev/learn/passing-data-deeply-with-context#) + * that makes it possible to access a flow's internal state outside of the + * [``](/api-reference/react-flow) component. Many of the hooks we + * provide rely on this component to work. + * @public + * + * @example + * ```tsx + *import { ReactFlow, ReactFlowProvider, useNodes } from '@xyflow/react' + * + *export default function Flow() { + * return ( + * + * + * + * + * ); + *} + * + *function Sidebar() { + * // This hook will only work if the component it's used in is a child of a + * // . + * const nodes = useNodes() + * + * return ; + *} + *``` + * + * @remarks If you're using a router and want your flow's state to persist across routes, + * it's vital that you place the `` component _outside_ of + * your router. If you have multiple flows on the same page you will need to use a separate + * `` for each flow. + */ +function ReactFlowProvider({ initialNodes: nodes, initialEdges: edges, defaultNodes, defaultEdges, initialWidth: width, initialHeight: height, initialMinZoom: minZoom, initialMaxZoom: maxZoom, initialFitViewOptions: fitViewOptions, fitView, nodeOrigin, nodeExtent, zIndexMode, children, }) { + const [store] = useState(() => createStore({ + nodes, + edges, + defaultNodes, + defaultEdges, + width, + height, + fitView, + minZoom, + maxZoom, + fitViewOptions, + nodeOrigin, + nodeExtent, + zIndexMode, + })); + return (jsx(Provider$1, { value: store, children: jsx(BatchProvider, { children: jsx(HandleConfigProvider, { children: children }) }) })); +} + +function Wrapper({ children, nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom, maxZoom, nodeOrigin, nodeExtent, zIndexMode, }) { + const isWrapped = useContext(StoreContext); + if (isWrapped) { + /* + * we need to wrap it with a fragment because it's not allowed for children to be a ReactNode + * https://github.com/DefinitelyTyped/DefinitelyTyped/issues/18051 + */ + return jsx(Fragment, { children: children }); + } + return (jsx(ReactFlowProvider, { initialNodes: nodes, initialEdges: edges, defaultNodes: defaultNodes, defaultEdges: defaultEdges, initialWidth: width, initialHeight: height, fitView: fitView, initialFitViewOptions: fitViewOptions, initialMinZoom: minZoom, initialMaxZoom: maxZoom, nodeOrigin: nodeOrigin, nodeExtent: nodeExtent, zIndexMode: zIndexMode, children: children })); +} + +const wrapperStyle = { + width: '100%', + height: '100%', + overflow: 'hidden', + position: 'relative', + zIndex: 0, +}; +function ReactFlow({ nodes, edges, defaultNodes, defaultEdges, className, nodeTypes, edgeTypes, onNodeClick, onEdgeClick, onInit, onMove, onMoveStart, onMoveEnd, onConnect, onConnectStart, onConnectEnd, onClickConnectStart, onClickConnectEnd, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onNodeDoubleClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onNodesDelete, onEdgesDelete, onDelete, onSelectionChange, onSelectionDragStart, onSelectionDrag, onSelectionDragStop, onSelectionContextMenu, onSelectionStart, onSelectionEnd, onBeforeDelete, connectionMode, connectionLineType = ConnectionLineType.Bezier, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, deleteKeyCode = 'Backspace', selectionKeyCode = 'Shift', selectionOnDrag = false, selectionMode = SelectionMode.Full, panActivationKeyCode = 'Space', multiSelectionKeyCode = isMacOs() ? 'Meta' : 'Control', zoomActivationKeyCode = isMacOs() ? 'Meta' : 'Control', snapToGrid, snapGrid, onlyRenderVisibleElements = false, selectNodesOnDrag, nodesDraggable, autoPanOnNodeFocus, nodesConnectable, nodesFocusable, nodeOrigin = defaultNodeOrigin, edgesFocusable, edgesReconnectable, elementsSelectable = true, defaultViewport: defaultViewport$1 = defaultViewport, minZoom = 0.5, maxZoom = 2, translateExtent = infiniteExtent, preventScrolling = true, nodeExtent, defaultMarkerColor = '#b1b1b7', zoomOnScroll = true, zoomOnPinch = true, panOnScroll = false, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = true, panOnDrag = true, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance = 1, nodeClickDistance = 0, children, onReconnect, onReconnectStart, onReconnectEnd, onEdgeContextMenu, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius = 10, onNodesChange, onEdgesChange, noDragClassName = 'nodrag', noWheelClassName = 'nowheel', noPanClassName = 'nopan', fitView, fitViewOptions, connectOnClick, attributionPosition, proOptions, defaultEdgeOptions, elevateNodesOnSelect = true, elevateEdgesOnSelect = false, disableKeyboardA11y = false, autoPanOnConnect, autoPanOnNodeDrag, autoPanOnSelection = true, autoPanSpeed, connectionRadius, isValidConnection, onError, style, id, nodeDragThreshold, connectionDragThreshold, viewport, onViewportChange, width, height, colorMode = 'light', debug, onScroll, ariaLabelConfig, zIndexMode = 'basic', ...rest }, ref) { + const rfId = id || '1'; + const colorModeClassName = useColorModeClass(colorMode); + // Undo scroll events, preventing viewport from shifting when nodes outside of it are focused + const wrapperOnScroll = useCallback((e) => { + e.currentTarget.scrollTo({ top: 0, left: 0, behavior: 'instant' }); + onScroll?.(e); + }, [onScroll]); + return (jsx("div", { "data-testid": "rf__wrapper", ...rest, onScroll: wrapperOnScroll, style: { ...style, ...wrapperStyle }, ref: ref, className: cc(['react-flow', className, colorModeClassName]), id: id, role: "application", children: jsxs(Wrapper, { nodes: nodes, edges: edges, width: width, height: height, fitView: fitView, fitViewOptions: fitViewOptions, minZoom: minZoom, maxZoom: maxZoom, nodeOrigin: nodeOrigin, nodeExtent: nodeExtent, zIndexMode: zIndexMode, children: [jsx(StoreUpdater, { nodes: nodes, edges: edges, defaultNodes: defaultNodes, defaultEdges: defaultEdges, onConnect: onConnect, onConnectStart: onConnectStart, onConnectEnd: onConnectEnd, onClickConnectStart: onClickConnectStart, onClickConnectEnd: onClickConnectEnd, nodesDraggable: nodesDraggable, autoPanOnNodeFocus: autoPanOnNodeFocus, nodesConnectable: nodesConnectable, nodesFocusable: nodesFocusable, edgesFocusable: edgesFocusable, edgesReconnectable: edgesReconnectable, elementsSelectable: elementsSelectable, elevateNodesOnSelect: elevateNodesOnSelect, elevateEdgesOnSelect: elevateEdgesOnSelect, 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, onDelete: onDelete, onNodeDragStart: onNodeDragStart, onNodeDrag: onNodeDrag, onNodeDragStop: onNodeDragStop, onSelectionDrag: onSelectionDrag, onSelectionDragStart: onSelectionDragStart, onSelectionDragStop: onSelectionDragStop, onMove: onMove, onMoveStart: onMoveStart, onMoveEnd: onMoveEnd, noPanClassName: noPanClassName, nodeOrigin: nodeOrigin, rfId: rfId, autoPanOnConnect: autoPanOnConnect, autoPanOnNodeDrag: autoPanOnNodeDrag, autoPanSpeed: autoPanSpeed, onError: onError, connectionRadius: connectionRadius, isValidConnection: isValidConnection, selectNodesOnDrag: selectNodesOnDrag, nodeDragThreshold: nodeDragThreshold, connectionDragThreshold: connectionDragThreshold, onBeforeDelete: onBeforeDelete, debug: debug, ariaLabelConfig: ariaLabelConfig, zIndexMode: zIndexMode }), jsx(GraphView, { onInit: onInit, 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, defaultViewport: defaultViewport$1, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, preventScrolling: preventScrolling, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, zoomOnDoubleClick: zoomOnDoubleClick, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, panOnDrag: panOnDrag, autoPanOnSelection: autoPanOnSelection, onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneScroll: onPaneScroll, onPaneContextMenu: onPaneContextMenu, paneClickDistance: paneClickDistance, nodeClickDistance: nodeClickDistance, onSelectionContextMenu: onSelectionContextMenu, onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, onReconnect: onReconnect, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, onEdgeContextMenu: onEdgeContextMenu, onEdgeDoubleClick: onEdgeDoubleClick, onEdgeMouseEnter: onEdgeMouseEnter, onEdgeMouseMove: onEdgeMouseMove, onEdgeMouseLeave: onEdgeMouseLeave, reconnectRadius: reconnectRadius, defaultMarkerColor: defaultMarkerColor, noDragClassName: noDragClassName, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, rfId: rfId, disableKeyboardA11y: disableKeyboardA11y, nodeExtent: nodeExtent, viewport: viewport, onViewportChange: onViewportChange, nodesDraggable: nodesDraggable }), jsx(SelectionListener, { onSelectionChange: onSelectionChange }), children, jsx(Attribution, { proOptions: proOptions, position: attributionPosition }), jsx(A11yDescriptions, { rfId: rfId, disableKeyboardA11y: disableKeyboardA11y })] }) })); +} +/** + * The `` component is the heart of your React Flow application. + * It renders your nodes and edges and handles user interaction + * + * @public + * + * @example + * ```tsx + *import { ReactFlow } from '@xyflow/react' + * + *export default function Flow() { + * return (); + *} + *``` + */ +var index = fixedForwardRef(ReactFlow); + +const selector$6 = (s) => s.domNode?.querySelector('.react-flow__edgelabel-renderer'); +/** + * Edges are SVG-based. If you want to render more complex labels you can use the + * `` component to access a div based renderer. This component + * is a portal that renders the label in a `
` that is positioned on top of + * the edges. You can see an example usage of the component in the + * [edge label renderer example](/examples/edges/edge-label-renderer). + * @public + * + * @example + * ```jsx + * import React from 'react'; + * import { getBezierPath, EdgeLabelRenderer, BaseEdge } from '@xyflow/react'; + * + * export function CustomEdge({ id, data, ...props }) { + * const [edgePath, labelX, labelY] = getBezierPath(props); + * + * return ( + * <> + * + * + *
+ * {data.label} + *
+ *
+ * + * ); + * }; + * ``` + * + * @remarks The `` has no pointer events by default. If you want to + * add mouse interactions you need to set the style `pointerEvents: all` and add + * the `nopan` class on the label or the element you want to interact with. + */ +function EdgeLabelRenderer({ children }) { + const edgeLabelRenderer = useStore(selector$6); + if (!edgeLabelRenderer) { + return null; + } + return createPortal(children, edgeLabelRenderer); +} + +const selector$5 = (s) => s.domNode?.querySelector('.react-flow__viewport-portal'); +/** + * The `` component can be used to add components to the same viewport + * of the flow where nodes and edges are rendered. This is useful when you want to render + * your own components that are adhere to the same coordinate system as the nodes & edges + * and are also affected by zooming and panning + * @public + * @example + * + * ```jsx + *import React from 'react'; + *import { ViewportPortal } from '@xyflow/react'; + * + *export default function () { + * return ( + * + *
+ * This div is positioned at [100, 100] on the flow. + *
+ *
+ * ); + *} + *``` + */ +function ViewportPortal({ children }) { + const viewPortalDiv = useStore(selector$5); + if (!viewPortalDiv) { + return null; + } + return createPortal(children, viewPortalDiv); +} + +/** + * When you programmatically add or remove handles to a node or update a node's + * handle position, you need to let React Flow know about it using this hook. This + * will update the internal dimensions of the node and properly reposition handles + * on the canvas if necessary. + * + * @public + * @returns Use this function to tell React Flow to update the internal state of one or more nodes + * that you have changed programmatically. + * + * @example + * ```jsx + *import { useCallback, useState } from 'react'; + *import { Handle, useUpdateNodeInternals } from '@xyflow/react'; + * + *export default function RandomHandleNode({ id }) { + * const updateNodeInternals = useUpdateNodeInternals(); + * const [handleCount, setHandleCount] = useState(0); + * const randomizeHandleCount = useCallback(() => { + * setHandleCount(Math.floor(Math.random() * 10)); + * updateNodeInternals(id); + * }, [id, updateNodeInternals]); + * + * return ( + * <> + * {Array.from({ length: handleCount }).map((_, index) => ( + * + * ))} + * + *
+ * + *

There are {handleCount} handles on this node.

+ *
+ * + * ); + *} + *``` + * @remarks This hook can only be used in a component that is a child of a + *{@link ReactFlowProvider} or a {@link ReactFlow} component. + */ +function useUpdateNodeInternals() { + const store = useStoreApi(); + return useCallback((id) => { + const { domNode, updateNodeInternals } = store.getState(); + const updateIds = Array.isArray(id) ? id : [id]; + const updates = new Map(); + updateIds.forEach((updateId) => { + const nodeElement = domNode?.querySelector(`.react-flow__node[data-id="${updateId}"]`); + if (nodeElement) { + updates.set(updateId, { id: updateId, nodeElement, force: true }); + } + }); + requestAnimationFrame(() => updateNodeInternals(updates, { triggerFitView: false })); + }, []); +} + +const nodesSelector = (state) => state.nodes; +/** + * This hook returns an array of the current nodes. Components that use this hook + * will re-render **whenever any node changes**, including when a node is selected + * or moved. + * + * @public + * @returns An array of all nodes currently in the flow. + * + * @example + * ```jsx + *import { useNodes } from '@xyflow/react'; + * + *export default function() { + * const nodes = useNodes(); + * + * return
There are currently {nodes.length} nodes!
; + *} + *``` + */ +function useNodes() { + const nodes = useStore(nodesSelector, shallow); + return nodes; +} + +const edgesSelector = (state) => state.edges; +/** + * This hook returns an array of the current edges. Components that use this hook + * will re-render **whenever any edge changes**. + * + * @public + * @returns An array of all edges currently in the flow. + * + * @example + * ```tsx + *import { useEdges } from '@xyflow/react'; + * + *export default function () { + * const edges = useEdges(); + * + * return
There are currently {edges.length} edges!
; + *} + *``` + */ +function useEdges() { + const edges = useStore(edgesSelector, shallow); + return edges; +} + +const viewportSelector = (state) => ({ + x: state.transform[0], + y: state.transform[1], + zoom: state.transform[2], +}); +/** + * The `useViewport` hook is a convenient way to read the current state of the + * {@link Viewport} in a component. Components that use this hook + * will re-render **whenever the viewport changes**. + * + * @public + * @returns The current viewport. + * + * @example + * + *```jsx + *import { useViewport } from '@xyflow/react'; + * + *export default function ViewportDisplay() { + * const { x, y, zoom } = useViewport(); + * + * return ( + *
+ *

+ * The viewport is currently at ({x}, {y}) and zoomed to {zoom}. + *

+ *
+ * ); + *} + *``` + * + * @remarks This hook can only be used in a component that is a child of a + *{@link ReactFlowProvider} or a {@link ReactFlow} component. + */ +function useViewport() { + const viewport = useStore(viewportSelector, shallow); + return viewport; +} + +/** + * This hook makes it easy to prototype a controlled flow where you manage the + * state of nodes and edges outside the `ReactFlowInstance`. You can think of it + * like React's `useState` hook with an additional helper callback. + * + * @public + * @returns + * - `nodes`: The current array of nodes. You might pass this directly to the `nodes` prop of your + * `` component, or you may want to manipulate it first to perform some layouting, + * for example. + * - `setNodes`: A function that you can use to update the nodes. You can pass it a new array of + * nodes or a callback that receives the current array of nodes and returns a new array of nodes. + * This is the same as the second element of the tuple returned by React's `useState` hook. + * - `onNodesChange`: A handy callback that can take an array of `NodeChanges` and update the nodes + * state accordingly. You'll typically pass this directly to the `onNodesChange` prop of your + * `` component. + * @example + * + *```tsx + *import { ReactFlow, useNodesState, useEdgesState } from '@xyflow/react'; + * + *const initialNodes = []; + *const initialEdges = []; + * + *export default function () { + * const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes); + * const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges); + * + * return ( + * + * ); + *} + *``` + * + * @remarks This hook was created to make prototyping easier and our documentation + * examples clearer. Although it is OK to use this hook in production, in + * practice you may want to use a more sophisticated state management solution + * like Zustand {@link https://reactflow.dev/docs/guides/state-management/} instead. + * + */ +function useNodesState(initialNodes) { + const [nodes, setNodes] = useState(initialNodes); + const onNodesChange = useCallback((changes) => setNodes((nds) => applyNodeChanges(changes, nds)), []); + return [nodes, setNodes, onNodesChange]; +} +/** + * This hook makes it easy to prototype a controlled flow where you manage the + * state of nodes and edges outside the `ReactFlowInstance`. You can think of it + * like React's `useState` hook with an additional helper callback. + * + * @public + * @returns + * - `edges`: The current array of edges. You might pass this directly to the `edges` prop of your + * `` component, or you may want to manipulate it first to perform some layouting, + * for example. + * + * - `setEdges`: A function that you can use to update the edges. You can pass it a new array of + * edges or a callback that receives the current array of edges and returns a new array of edges. + * This is the same as the second element of the tuple returned by React's `useState` hook. + * + * - `onEdgesChange`: A handy callback that can take an array of `EdgeChanges` and update the edges + * state accordingly. You'll typically pass this directly to the `onEdgesChange` prop of your + * `` component. + * @example + * + *```tsx + *import { ReactFlow, useNodesState, useEdgesState } from '@xyflow/react'; + * + *const initialNodes = []; + *const initialEdges = []; + * + *export default function () { + * const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes); + * const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges); + * + * return ( + * + * ); + *} + *``` + * + * @remarks This hook was created to make prototyping easier and our documentation + * examples clearer. Although it is OK to use this hook in production, in + * practice you may want to use a more sophisticated state management solution + * like Zustand {@link https://reactflow.dev/docs/guides/state-management/} instead. + * + */ +function useEdgesState(initialEdges) { + const [edges, setEdges] = useState(initialEdges); + const onEdgesChange = useCallback((changes) => setEdges((eds) => applyEdgeChanges(changes, eds)), []); + return [edges, setEdges, onEdgesChange]; +} + +/** + * The `useOnViewportChange` hook lets you listen for changes to the viewport such + * as panning and zooming. You can provide a callback for each phase of a viewport + * change: `onStart`, `onChange`, and `onEnd`. + * + * @public + * @example + * ```jsx + *import { useCallback } from 'react'; + *import { useOnViewportChange } from '@xyflow/react'; + * + *function ViewportChangeLogger() { + * useOnViewportChange({ + * onStart: (viewport: Viewport) => console.log('start', viewport), + * onChange: (viewport: Viewport) => console.log('change', viewport), + * onEnd: (viewport: Viewport) => console.log('end', viewport), + * }); + * + * return null; + *} + *``` + */ +function useOnViewportChange({ onStart, onChange, onEnd }) { + const store = useStoreApi(); + useEffect(() => { + store.setState({ onViewportChangeStart: onStart }); + }, [onStart]); + useEffect(() => { + store.setState({ onViewportChange: onChange }); + }, [onChange]); + useEffect(() => { + store.setState({ onViewportChangeEnd: onEnd }); + }, [onEnd]); +} + +/** + * This hook lets you listen for changes to both node and edge selection. As the + *name implies, the callback you provide will be called whenever the selection of + *_either_ nodes or edges changes. + * + * @public + * @example + * ```jsx + *import { useState } from 'react'; + *import { ReactFlow, useOnSelectionChange } from '@xyflow/react'; + * + *function SelectionDisplay() { + * const [selectedNodes, setSelectedNodes] = useState([]); + * const [selectedEdges, setSelectedEdges] = useState([]); + * + * // the passed handler has to be memoized, otherwise the hook will not work correctly + * const onChange = useCallback(({ nodes, edges }) => { + * setSelectedNodes(nodes.map((node) => node.id)); + * setSelectedEdges(edges.map((edge) => edge.id)); + * }, []); + * + * useOnSelectionChange({ + * onChange, + * }); + * + * return ( + *
+ *

Selected nodes: {selectedNodes.join(', ')}

+ *

Selected edges: {selectedEdges.join(', ')}

+ *
+ * ); + *} + *``` + * + * @remarks You need to memoize the passed `onChange` handler, otherwise the hook will not work correctly. + */ +function useOnSelectionChange({ onChange, }) { + const store = useStoreApi(); + useEffect(() => { + const nextOnSelectionChangeHandlers = [...store.getState().onSelectionChangeHandlers, onChange]; + store.setState({ onSelectionChangeHandlers: nextOnSelectionChangeHandlers }); + return () => { + const nextHandlers = store.getState().onSelectionChangeHandlers.filter((fn) => fn !== onChange); + store.setState({ onSelectionChangeHandlers: nextHandlers }); + }; + }, [onChange]); +} + +const selector$4 = (options) => (s) => { + if (!options.includeHiddenNodes) { + return s.nodesInitialized; + } + if (s.nodeLookup.size === 0) { + return false; + } + for (const [, { internals }] of s.nodeLookup) { + if (internals.handleBounds === undefined || !nodeHasDimensions(internals.userNode)) { + return false; + } + } + return true; +}; +/** + * This hook tells you whether all the nodes in a flow have been measured and given + *a width and height. When you add a node to the flow, this hook will return + *`false` and then `true` again once the node has been measured. + * + * @public + * @returns Whether or not the nodes have been initialized by the `` component and + * given a width and height. + * + * @example + * ```jsx + *import { useReactFlow, useNodesInitialized } from '@xyflow/react'; + *import { useEffect, useState } from 'react'; + * + *const options = { + * includeHiddenNodes: false, + *}; + * + *export default function useLayout() { + * const { getNodes } = useReactFlow(); + * const nodesInitialized = useNodesInitialized(options); + * const [layoutedNodes, setLayoutedNodes] = useState(getNodes()); + * + * useEffect(() => { + * if (nodesInitialized) { + * setLayoutedNodes(yourLayoutingFunction(getNodes())); + * } + * }, [nodesInitialized]); + * + * return layoutedNodes; + *} + *``` + */ +function useNodesInitialized(options = { + includeHiddenNodes: false, +}) { + const initialized = useStore(selector$4(options)); + return initialized; +} + +/** + * Hook to check if a is connected to another and get the connections. + * + * @public + * @deprecated Use `useNodeConnections` instead. + * @returns An array with handle connections. + */ +function useHandleConnections({ type, id, nodeId, onConnect, onDisconnect, }) { + console.warn('[DEPRECATED] `useHandleConnections` is deprecated. Instead use `useNodeConnections` https://reactflow.dev/api-reference/hooks/useNodeConnections'); + const _nodeId = useNodeId(); + const currentNodeId = nodeId ?? _nodeId; + const prevConnections = useRef(null); + const connections = useStore((state) => state.connectionLookup.get(`${currentNodeId}-${type}${id ? `-${id}` : ''}`), areConnectionMapsEqual); + useEffect(() => { + // @todo discuss if onConnect/onDisconnect should be called when the component mounts/unmounts + if (prevConnections.current && prevConnections.current !== connections) { + const _connections = connections ?? new Map(); + handleConnectionChange(prevConnections.current, _connections, onDisconnect); + handleConnectionChange(_connections, prevConnections.current, onConnect); + } + prevConnections.current = connections ?? new Map(); + }, [connections, onConnect, onDisconnect]); + return useMemo(() => Array.from(connections?.values() ?? []), [connections]); +} + +const error014 = errorMessages['error014'](); +/** + * This hook returns an array of connections on a specific node, handle type ('source', 'target') or handle ID. + * + * @public + * @returns An array with connections. + * + * @example + * ```jsx + *import { useNodeConnections } from '@xyflow/react'; + * + *export default function () { + * const connections = useNodeConnections({ + * handleType: 'target', + * handleId: 'my-handle', + * }); + * + * return ( + *
There are currently {connections.length} incoming connections!
+ * ); + *} + *``` + */ +function useNodeConnections({ id, handleType, handleId, onConnect, onDisconnect, } = {}) { + const nodeId = useNodeId(); + const currentNodeId = id ?? nodeId; + if (!currentNodeId) { + throw new Error(error014); + } + const prevConnections = useRef(null); + const connections = useStore((state) => state.connectionLookup.get(`${currentNodeId}${handleType ? (handleId ? `-${handleType}-${handleId}` : `-${handleType}`) : ''}`), areConnectionMapsEqual); + useEffect(() => { + // @todo discuss if onConnect/onDisconnect should be called when the component mounts/unmounts + if (prevConnections.current && prevConnections.current !== connections) { + const _connections = connections ?? new Map(); + handleConnectionChange(prevConnections.current, _connections, onDisconnect); + handleConnectionChange(_connections, prevConnections.current, onConnect); + } + prevConnections.current = connections ?? new Map(); + }, [connections, onConnect, onDisconnect]); + return useMemo(() => Array.from(connections?.values() ?? []), [connections]); +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function useNodesData(nodeIds) { + const nodesData = useStore(useCallback((s) => { + const data = []; + const isArrayOfIds = Array.isArray(nodeIds); + const _nodeIds = isArrayOfIds ? nodeIds : [nodeIds]; + for (const nodeId of _nodeIds) { + const node = s.nodeLookup.get(nodeId); + if (node) { + data.push({ + id: node.id, + type: node.type, + data: node.data, + }); + } + } + return isArrayOfIds ? data : data[0] ?? null; + }, [nodeIds]), shallowNodeData); + return nodesData; +} + +/** + * This hook returns the internal representation of a specific node. + * Components that use this hook will re-render **whenever the node changes**, + * including when a node is selected or moved. + * + * @public + * @param id - The ID of a node you want to observe. + * @returns The `InternalNode` object for the node with the given ID. + * + * @example + * ```tsx + *import { useInternalNode } from '@xyflow/react'; + * + *export default function () { + * const internalNode = useInternalNode('node-1'); + * const absolutePosition = internalNode.internals.positionAbsolute; + * + * return ( + *
+ * The absolute position of the node is at: + *

x: {absolutePosition.x}

+ *

y: {absolutePosition.y}

+ *
+ * ); + *} + *``` + */ +function useInternalNode(id) { + const node = useStore(useCallback((s) => s.nodeLookup.get(id), [id]), shallow); + return node; +} + +/** + * Registers a middleware function to transform node changes. + * + * @public + * @param fn - Middleware function. Should be memoized with useCallback to avoid re-registration. + */ +function experimental_useOnNodesChangeMiddleware(fn) { + const store = useStoreApi(); + const [symbol] = useState(() => Symbol()); + useEffect(() => { + const { onNodesChangeMiddlewareMap } = store.getState(); + onNodesChangeMiddlewareMap.set(symbol, fn); + }, [fn]); + useEffect(() => { + const { onNodesChangeMiddlewareMap } = store.getState(); + return () => { + onNodesChangeMiddlewareMap.delete(symbol); + }; + }, []); +} + +/** + * Registers a middleware function to transform edge changes. + * + * @public + * @param fn - Middleware function. Should be memoized with useCallback to avoid re-registration. + */ +function experimental_useOnEdgesChangeMiddleware(fn) { + const store = useStoreApi(); + const [symbol] = useState(() => Symbol()); + useEffect(() => { + const { onEdgesChangeMiddlewareMap } = store.getState(); + onEdgesChangeMiddlewareMap.set(symbol, fn); + }, [fn]); + useEffect(() => { + const { onEdgesChangeMiddlewareMap } = store.getState(); + return () => { + onEdgesChangeMiddlewareMap.delete(symbol); + }; + }, []); +} + +function LinePattern({ dimensions, lineWidth, variant, className }) { + return (jsx("path", { strokeWidth: lineWidth, d: `M${dimensions[0] / 2} 0 V${dimensions[1]} M0 ${dimensions[1] / 2} H${dimensions[0]}`, className: cc(['react-flow__background-pattern', variant, className]) })); +} +function DotPattern({ radius, className }) { + return (jsx("circle", { cx: radius, cy: radius, r: radius, className: cc(['react-flow__background-pattern', 'dots', className]) })); +} + +/** + * The three variants are exported as an enum for convenience. You can either import + * the enum and use it like `BackgroundVariant.Lines` or you can use the raw string + * value directly. + * @public + */ +var BackgroundVariant; +(function (BackgroundVariant) { + BackgroundVariant["Lines"] = "lines"; + BackgroundVariant["Dots"] = "dots"; + BackgroundVariant["Cross"] = "cross"; +})(BackgroundVariant || (BackgroundVariant = {})); + +const defaultSize = { + [BackgroundVariant.Dots]: 1, + [BackgroundVariant.Lines]: 1, + [BackgroundVariant.Cross]: 6, +}; +const selector$3 = (s) => ({ transform: s.transform, patternId: `pattern-${s.rfId}` }); +function BackgroundComponent({ id, variant = BackgroundVariant.Dots, +// only used for dots and cross +gap = 20, +// only used for lines and cross +size, lineWidth = 1, offset = 0, color, bgColor, style, className, patternClassName, }) { + const ref = useRef(null); + const { transform, patternId } = useStore(selector$3, shallow); + const patternSize = size || defaultSize[variant]; + const isDots = variant === BackgroundVariant.Dots; + const isCross = variant === BackgroundVariant.Cross; + const gapXY = Array.isArray(gap) ? gap : [gap, gap]; + const scaledGap = [gapXY[0] * transform[2] || 1, gapXY[1] * transform[2] || 1]; + const scaledSize = patternSize * transform[2]; + const offsetXY = Array.isArray(offset) ? offset : [offset, offset]; + const patternDimensions = isCross ? [scaledSize, scaledSize] : scaledGap; + const scaledOffset = [ + offsetXY[0] * transform[2] || 1 + patternDimensions[0] / 2, + offsetXY[1] * transform[2] || 1 + patternDimensions[1] / 2, + ]; + const _patternId = `${patternId}${id ? id : ''}`; + return (jsxs("svg", { className: cc(['react-flow__background', className]), style: { + ...style, + ...containerStyle, + '--xy-background-color-props': bgColor, + '--xy-background-pattern-color-props': color, + }, ref: ref, "data-testid": "rf__background", children: [jsx("pattern", { id: _patternId, x: transform[0] % scaledGap[0], y: transform[1] % scaledGap[1], width: scaledGap[0], height: scaledGap[1], patternUnits: "userSpaceOnUse", patternTransform: `translate(-${scaledOffset[0]},-${scaledOffset[1]})`, children: isDots ? (jsx(DotPattern, { radius: scaledSize / 2, className: patternClassName })) : (jsx(LinePattern, { dimensions: patternDimensions, lineWidth: lineWidth, variant: variant, className: patternClassName })) }), jsx("rect", { x: "0", y: "0", width: "100%", height: "100%", fill: `url(#${_patternId})` })] })); +} +BackgroundComponent.displayName = 'Background'; +/** + * The `` component makes it convenient to render different types of backgrounds common in node-based UIs. It comes with three variants: lines, dots and cross. + * + * @example + * + * A simple example of how to use the Background component. + * + * ```tsx + * import { useState } from 'react'; + * import { ReactFlow, Background, BackgroundVariant } from '@xyflow/react'; + * + * export default function Flow() { + * return ( + * + * + * + * ); + * } + * ``` + * + * @example + * + * In this example you can see how to combine multiple backgrounds + * + * ```tsx + * import { ReactFlow, Background, BackgroundVariant } from '@xyflow/react'; + * import '@xyflow/react/dist/style.css'; + * + * export default function Flow() { + * return ( + * + * + * + * + * ); + * } + * ``` + * + * @remarks + * + * When combining multiple components it’s important to give each of them a unique id prop! + * + */ +const Background = memo(BackgroundComponent); + +function PlusIcon() { + return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 32", children: jsx("path", { d: "M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z" }) })); +} + +function MinusIcon() { + return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 5", children: jsx("path", { d: "M0 0h32v4.2H0z" }) })); +} + +function FitViewIcon() { + return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 30", children: jsx("path", { d: "M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z" }) })); +} + +function LockIcon() { + return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 25 32", children: jsx("path", { d: "M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z" }) })); +} + +function UnlockIcon() { + return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 25 32", children: jsx("path", { d: "M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z" }) })); +} + +/** + * You can add buttons to the control panel by using the `` component + * and pass it as a child to the [``](/api-reference/components/controls) component. + * + * @public + * @example + *```jsx + *import { MagicWand } from '@radix-ui/react-icons' + *import { ReactFlow, Controls, ControlButton } from '@xyflow/react' + * + *export default function Flow() { + * return ( + * + * + * alert('Something magical just happened. ✨')}> + * + * + * + * + * ) + *} + *``` + */ +function ControlButton({ children, className, ...rest }) { + return (jsx("button", { type: "button", className: cc(['react-flow__controls-button', className]), ...rest, children: children })); +} + +const selector$2 = (s) => ({ + isInteractive: s.nodesDraggable || s.nodesConnectable || s.elementsSelectable, + minZoomReached: s.transform[2] <= s.minZoom, + maxZoomReached: s.transform[2] >= s.maxZoom, + ariaLabelConfig: s.ariaLabelConfig, +}); +function ControlsComponent({ style, showZoom = true, showFitView = true, showInteractive = true, fitViewOptions, onZoomIn, onZoomOut, onFitView, onInteractiveChange, className, children, position = 'bottom-left', orientation = 'vertical', 'aria-label': ariaLabel, }) { + const store = useStoreApi(); + const { isInteractive, minZoomReached, maxZoomReached, ariaLabelConfig } = useStore(selector$2, shallow); + const { zoomIn, zoomOut, fitView } = useReactFlow(); + const onZoomInHandler = () => { + zoomIn(); + onZoomIn?.(); + }; + const onZoomOutHandler = () => { + zoomOut(); + onZoomOut?.(); + }; + const onFitViewHandler = () => { + fitView(fitViewOptions); + onFitView?.(); + }; + const onToggleInteractivity = () => { + store.setState({ + nodesDraggable: !isInteractive, + nodesConnectable: !isInteractive, + elementsSelectable: !isInteractive, + }); + onInteractiveChange?.(!isInteractive); + }; + const orientationClass = orientation === 'horizontal' ? 'horizontal' : 'vertical'; + return (jsxs(Panel, { className: cc(['react-flow__controls', orientationClass, className]), position: position, style: style, "data-testid": "rf__controls", "aria-label": ariaLabel ?? ariaLabelConfig['controls.ariaLabel'], children: [showZoom && (jsxs(Fragment, { children: [jsx(ControlButton, { onClick: onZoomInHandler, className: "react-flow__controls-zoomin", title: ariaLabelConfig['controls.zoomIn.ariaLabel'], "aria-label": ariaLabelConfig['controls.zoomIn.ariaLabel'], disabled: maxZoomReached, children: jsx(PlusIcon, {}) }), jsx(ControlButton, { onClick: onZoomOutHandler, className: "react-flow__controls-zoomout", title: ariaLabelConfig['controls.zoomOut.ariaLabel'], "aria-label": ariaLabelConfig['controls.zoomOut.ariaLabel'], disabled: minZoomReached, children: jsx(MinusIcon, {}) })] })), showFitView && (jsx(ControlButton, { className: "react-flow__controls-fitview", onClick: onFitViewHandler, title: ariaLabelConfig['controls.fitView.ariaLabel'], "aria-label": ariaLabelConfig['controls.fitView.ariaLabel'], children: jsx(FitViewIcon, {}) })), showInteractive && (jsx(ControlButton, { className: "react-flow__controls-interactive", onClick: onToggleInteractivity, title: ariaLabelConfig['controls.interactive.ariaLabel'], "aria-label": ariaLabelConfig['controls.interactive.ariaLabel'], children: isInteractive ? jsx(UnlockIcon, {}) : jsx(LockIcon, {}) })), children] })); +} +ControlsComponent.displayName = 'Controls'; +/** + * The `` component renders a small panel that contains convenient + * buttons to zoom in, zoom out, fit the view, and lock the viewport. + * + * @public + * @example + *```tsx + *import { ReactFlow, Controls } from '@xyflow/react' + * + *export default function Flow() { + * return ( + * + * + * + * ) + *} + *``` + * + * @remarks To extend or customise the controls, you can use the [``](/api-reference/components/control-button) component + * + */ +const Controls = memo(ControlsComponent); + +function MiniMapNodeComponent({ id, x, y, width, height, style, color, strokeColor, strokeWidth, className, borderRadius, shapeRendering, selected, onClick, }) { + const { background, backgroundColor } = style || {}; + const fill = (color || background || backgroundColor); + return (jsx("rect", { className: cc(['react-flow__minimap-node', { selected }, className]), x: x, y: y, rx: borderRadius, ry: borderRadius, width: width, height: height, style: { + fill, + stroke: strokeColor, + strokeWidth, + }, shapeRendering: shapeRendering, onClick: onClick ? (event) => onClick(event, id) : undefined })); +} +const MiniMapNode = memo(MiniMapNodeComponent); + +const selectorNodeIds = (s) => s.nodes.map((node) => node.id); +const getAttrFunction = (func) => func instanceof Function ? func : () => func; +function MiniMapNodes({ nodeStrokeColor, nodeColor, nodeClassName = '', nodeBorderRadius = 5, nodeStrokeWidth, +/* + * We need to rename the prop to be `CapitalCase` so that JSX will render it as + * a component properly. + */ +nodeComponent: NodeComponent = MiniMapNode, onClick, }) { + const nodeIds = useStore(selectorNodeIds, shallow); + const nodeColorFunc = getAttrFunction(nodeColor); + const nodeStrokeColorFunc = getAttrFunction(nodeStrokeColor); + const nodeClassNameFunc = getAttrFunction(nodeClassName); + const shapeRendering = typeof window === 'undefined' || !!window.chrome ? 'crispEdges' : 'geometricPrecision'; + return (jsx(Fragment, { children: nodeIds.map((nodeId) => ( + /* + * The split of responsibilities between MiniMapNodes and + * NodeComponentWrapper may appear weird. However, it’s designed to + * minimize the cost of updates when individual nodes change. + * + * For more details, see a similar commit in `NodeRenderer/index.tsx`. + */ + jsx(NodeComponentWrapper, { id: nodeId, nodeColorFunc: nodeColorFunc, nodeStrokeColorFunc: nodeStrokeColorFunc, nodeClassNameFunc: nodeClassNameFunc, nodeBorderRadius: nodeBorderRadius, nodeStrokeWidth: nodeStrokeWidth, NodeComponent: NodeComponent, onClick: onClick, shapeRendering: shapeRendering }, nodeId))) })); +} +function NodeComponentWrapperInner({ id, nodeColorFunc, nodeStrokeColorFunc, nodeClassNameFunc, nodeBorderRadius, nodeStrokeWidth, shapeRendering, NodeComponent, onClick, }) { + const { node, x, y, width, height } = useStore((s) => { + const node = s.nodeLookup.get(id); + if (!node) { + return { node: undefined, x: 0, y: 0, width: 0, height: 0 }; + } + const userNode = node.internals.userNode; + const { x, y } = node.internals.positionAbsolute; + const { width, height } = getNodeDimensions(userNode); + return { + node: userNode, + x, + y, + width, + height, + }; + }, shallow); + if (!node || node.hidden || !nodeHasDimensions(node)) { + return null; + } + return (jsx(NodeComponent, { x: x, y: y, width: width, height: height, style: node.style, selected: !!node.selected, className: nodeClassNameFunc(node), color: nodeColorFunc(node), borderRadius: nodeBorderRadius, strokeColor: nodeStrokeColorFunc(node), strokeWidth: nodeStrokeWidth, shapeRendering: shapeRendering, onClick: onClick, id: node.id })); +} +const NodeComponentWrapper = memo(NodeComponentWrapperInner); +var MiniMapNodes$1 = memo(MiniMapNodes); + +const defaultWidth = 200; +const defaultHeight = 150; +const filterHidden = (node) => !node.hidden; +const selector$1 = (s) => { + const viewBB = { + x: -s.transform[0] / s.transform[2], + y: -s.transform[1] / s.transform[2], + width: s.width / s.transform[2], + height: s.height / s.transform[2], + }; + return { + viewBB, + boundingRect: s.nodeLookup.size > 0 + ? getBoundsOfRects(getInternalNodesBounds(s.nodeLookup, { filter: filterHidden }), viewBB) + : viewBB, + rfId: s.rfId, + panZoom: s.panZoom, + translateExtent: s.translateExtent, + flowWidth: s.width, + flowHeight: s.height, + ariaLabelConfig: s.ariaLabelConfig, + }; +}; +const rectEqual = (a, b) => a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height; +// the selector builds new viewBB/boundingRect objects every call, so the default shallow equality always +// treats them as changed; comparing the rects by value lets the minimap skip re-renders when nothing moved +const areEqual = (a, b) => rectEqual(a.viewBB, b.viewBB) && + rectEqual(a.boundingRect, b.boundingRect) && + a.rfId === b.rfId && + a.panZoom === b.panZoom && + a.translateExtent === b.translateExtent && + a.flowWidth === b.flowWidth && + a.flowHeight === b.flowHeight && + a.ariaLabelConfig === b.ariaLabelConfig; +const ARIA_LABEL_KEY = 'react-flow__minimap-desc'; +function MiniMapComponent({ style, className, nodeStrokeColor, nodeColor, nodeClassName = '', nodeBorderRadius = 5, nodeStrokeWidth, +/* + * We need to rename the prop to be `CapitalCase` so that JSX will render it as + * a component properly. + */ +nodeComponent, bgColor, maskColor, maskStrokeColor, maskStrokeWidth, position = 'bottom-right', onClick, onNodeClick, pannable = false, zoomable = false, ariaLabel, inversePan, zoomStep = 1, offsetScale = 5, }) { + const store = useStoreApi(); + const svg = useRef(null); + const { boundingRect, viewBB, rfId, panZoom, translateExtent, flowWidth, flowHeight, ariaLabelConfig } = useStore(selector$1, areEqual); + const elementWidth = style?.width ?? defaultWidth; + const elementHeight = style?.height ?? defaultHeight; + const scaledWidth = boundingRect.width / elementWidth; + const scaledHeight = boundingRect.height / elementHeight; + const viewScale = Math.max(scaledWidth, scaledHeight); + const viewWidth = viewScale * elementWidth; + const viewHeight = viewScale * elementHeight; + const offset = offsetScale * viewScale; + const x = boundingRect.x - (viewWidth - boundingRect.width) / 2 - offset; + const y = boundingRect.y - (viewHeight - boundingRect.height) / 2 - offset; + const width = viewWidth + offset * 2; + const height = viewHeight + offset * 2; + const labelledBy = `${ARIA_LABEL_KEY}-${rfId}`; + const viewScaleRef = useRef(0); + const minimapInstance = useRef(); + viewScaleRef.current = viewScale; + useEffect(() => { + if (svg.current && panZoom) { + minimapInstance.current = XYMinimap({ + domNode: svg.current, + panZoom, + getTransform: () => store.getState().transform, + getViewScale: () => viewScaleRef.current, + }); + return () => { + minimapInstance.current?.destroy(); + }; + } + }, [panZoom]); + useEffect(() => { + minimapInstance.current?.update({ + translateExtent, + width: flowWidth, + height: flowHeight, + inversePan, + pannable, + zoomStep, + zoomable, + }); + }, [pannable, zoomable, inversePan, zoomStep, translateExtent, flowWidth, flowHeight]); + const onSvgClick = onClick + ? (event) => { + const [x, y] = minimapInstance.current?.pointer(event) || [0, 0]; + onClick(event, { x, y }); + } + : undefined; + const onSvgNodeClick = onNodeClick + ? useCallback((event, nodeId) => { + const node = store.getState().nodeLookup.get(nodeId).internals.userNode; + onNodeClick(event, node); + }, []) + : undefined; + const _ariaLabel = ariaLabel ?? ariaLabelConfig['minimap.ariaLabel']; + return (jsx(Panel, { position: position, style: { + ...style, + '--xy-minimap-background-color-props': typeof bgColor === 'string' ? bgColor : undefined, + '--xy-minimap-mask-background-color-props': typeof maskColor === 'string' ? maskColor : undefined, + '--xy-minimap-mask-stroke-color-props': typeof maskStrokeColor === 'string' ? maskStrokeColor : undefined, + '--xy-minimap-mask-stroke-width-props': typeof maskStrokeWidth === 'number' ? maskStrokeWidth * viewScale : undefined, + '--xy-minimap-node-background-color-props': typeof nodeColor === 'string' ? nodeColor : undefined, + '--xy-minimap-node-stroke-color-props': typeof nodeStrokeColor === 'string' ? nodeStrokeColor : undefined, + '--xy-minimap-node-stroke-width-props': typeof nodeStrokeWidth === 'number' ? nodeStrokeWidth : undefined, + }, className: cc(['react-flow__minimap', className]), "data-testid": "rf__minimap", children: jsxs("svg", { width: elementWidth, height: elementHeight, viewBox: `${x} ${y} ${width} ${height}`, className: "react-flow__minimap-svg", role: "img", "aria-labelledby": labelledBy, ref: svg, onClick: onSvgClick, children: [_ariaLabel && jsx("title", { id: labelledBy, children: _ariaLabel }), jsx(MiniMapNodes$1, { onClick: onSvgNodeClick, nodeColor: nodeColor, nodeStrokeColor: nodeStrokeColor, nodeBorderRadius: nodeBorderRadius, nodeClassName: nodeClassName, nodeStrokeWidth: nodeStrokeWidth, nodeComponent: nodeComponent }), jsx("path", { className: "react-flow__minimap-mask", d: `M${x - offset},${y - offset}h${width + offset * 2}v${height + offset * 2}h${-width - offset * 2}z + M${viewBB.x},${viewBB.y}h${viewBB.width}v${viewBB.height}h${-viewBB.width}z`, fillRule: "evenodd", pointerEvents: "none" })] }) })); +} +MiniMapComponent.displayName = 'MiniMap'; +/** + * The `` component can be used to render an overview of your flow. It + * renders each node as an SVG element and visualizes where the current viewport is + * in relation to the rest of the flow. + * + * @public + * @example + * + * ```jsx + *import { ReactFlow, MiniMap } from '@xyflow/react'; + * + *export default function Flow() { + * return ( + * + * + * + * ); + *} + *``` + */ +const MiniMap = memo(MiniMapComponent); + +const scaleSelector = (calculateScale) => (store) => calculateScale ? `${Math.max(1 / store.transform[2], 1)}` : undefined; +const defaultPositions = { + [ResizeControlVariant.Line]: 'right', + [ResizeControlVariant.Handle]: 'bottom-right', +}; +function ResizeControl({ nodeId, position, variant = ResizeControlVariant.Handle, className, style = undefined, children, color, minWidth = 10, minHeight = 10, maxWidth = Number.MAX_VALUE, maxHeight = Number.MAX_VALUE, keepAspectRatio = false, resizeDirection, autoScale = true, shouldResize, onResizeStart, onResize, onResizeEnd, }) { + const contextNodeId = useNodeId(); + const id = typeof nodeId === 'string' ? nodeId : contextNodeId; + const store = useStoreApi(); + const resizeControlRef = useRef(null); + const isHandleControl = variant === ResizeControlVariant.Handle; + const scale = useStore(useCallback(scaleSelector(isHandleControl && autoScale), [isHandleControl, autoScale]), shallow); + const resizer = useRef(null); + const controlPosition = position ?? defaultPositions[variant]; + useEffect(() => { + if (!resizeControlRef.current || !id) { + return; + } + if (!resizer.current) { + resizer.current = XYResizer({ + domNode: resizeControlRef.current, + nodeId: id, + getStoreItems: () => { + const { nodeLookup, transform, snapGrid, snapToGrid, nodeOrigin, domNode } = store.getState(); + return { + nodeLookup, + transform, + snapGrid, + snapToGrid, + nodeOrigin, + paneDomNode: domNode, + }; + }, + onChange: (change, childChanges) => { + const { triggerNodeChanges, nodeLookup, parentLookup, nodeOrigin } = store.getState(); + const changes = []; + const nextPosition = { x: change.x, y: change.y }; + const node = nodeLookup.get(id); + if (node && node.expandParent && node.parentId) { + const origin = node.origin ?? nodeOrigin; + const width = change.width ?? node.measured.width ?? 0; + const height = change.height ?? node.measured.height ?? 0; + const child = { + id: node.id, + parentId: node.parentId, + rect: { + width, + height, + ...evaluateAbsolutePosition({ + x: change.x ?? node.position.x, + y: change.y ?? node.position.y, + }, { width, height }, node.parentId, nodeLookup, origin), + }, + }; + const parentExpandChanges = handleExpandParent([child], nodeLookup, parentLookup, nodeOrigin); + changes.push(...parentExpandChanges); + /* + * when the parent was expanded by the child node, its position will be clamped at + * 0,0 when node origin is 0,0 and to width, height if it's 1,1 + */ + nextPosition.x = change.x ? Math.max(origin[0] * width, change.x) : undefined; + nextPosition.y = change.y ? Math.max(origin[1] * height, change.y) : undefined; + } + if (nextPosition.x !== undefined && nextPosition.y !== undefined) { + const positionChange = { + id, + type: 'position', + position: { ...nextPosition }, + }; + changes.push(positionChange); + } + if (change.width !== undefined && change.height !== undefined) { + const setAttributes = !resizeDirection ? true : resizeDirection === 'horizontal' ? 'width' : 'height'; + const dimensionChange = { + id, + type: 'dimensions', + resizing: true, + setAttributes, + dimensions: { + width: change.width, + height: change.height, + }, + }; + changes.push(dimensionChange); + } + for (const childChange of childChanges) { + const positionChange = { + ...childChange, + type: 'position', + }; + changes.push(positionChange); + } + triggerNodeChanges(changes); + }, + onEnd: ({ width, height }) => { + const dimensionChange = { + id: id, + type: 'dimensions', + resizing: false, + dimensions: { + width, + height, + }, + }; + store.getState().triggerNodeChanges([dimensionChange]); + }, + }); + } + resizer.current.update({ + controlPosition, + boundaries: { + minWidth, + minHeight, + maxWidth, + maxHeight, + }, + keepAspectRatio, + resizeDirection, + onResizeStart, + onResize, + onResizeEnd, + shouldResize, + }); + return () => { + resizer.current?.destroy(); + }; + }, [ + controlPosition, + minWidth, + minHeight, + maxWidth, + maxHeight, + keepAspectRatio, + onResizeStart, + onResize, + onResizeEnd, + shouldResize, + ]); + const positionClassNames = controlPosition.split('-'); + return (jsx("div", { className: cc(['react-flow__resize-control', 'nodrag', ...positionClassNames, variant, className]), ref: resizeControlRef, style: { + ...style, + scale, + ...(color && { [isHandleControl ? 'backgroundColor' : 'borderColor']: color }), + }, children: children })); +} +/** + * To create your own resizing UI, you can use the `NodeResizeControl` component where you can pass children (such as icons). + * @public + * + */ +const NodeResizeControl = memo(ResizeControl); + +/** + * The `` component can be used to add a resize functionality to your + * nodes. It renders draggable controls around the node to resize in all directions. + * @public + * + * @example + *```jsx + *import { memo } from 'react'; + *import { Handle, Position, NodeResizer } from '@xyflow/react'; + * + *function ResizableNode({ data }) { + * return ( + * <> + * + * + *
{data.label}
+ * + * + * ); + *}; + * + *export default memo(ResizableNode); + *``` + */ +function NodeResizer({ nodeId, isVisible = true, handleClassName, handleStyle, lineClassName, lineStyle, color, minWidth = 10, minHeight = 10, maxWidth = Number.MAX_VALUE, maxHeight = Number.MAX_VALUE, keepAspectRatio = false, autoScale = true, shouldResize, onResizeStart, onResize, onResizeEnd, }) { + if (!isVisible) { + return null; + } + return (jsxs(Fragment, { children: [XY_RESIZER_LINE_POSITIONS.map((position) => (jsx(NodeResizeControl, { className: lineClassName, style: lineStyle, nodeId: nodeId, position: position, variant: ResizeControlVariant.Line, color: color, minWidth: minWidth, minHeight: minHeight, maxWidth: maxWidth, maxHeight: maxHeight, onResizeStart: onResizeStart, keepAspectRatio: keepAspectRatio, autoScale: autoScale, shouldResize: shouldResize, onResize: onResize, onResizeEnd: onResizeEnd }, position))), XY_RESIZER_HANDLE_POSITIONS.map((position) => (jsx(NodeResizeControl, { className: handleClassName, style: handleStyle, nodeId: nodeId, position: position, color: color, minWidth: minWidth, minHeight: minHeight, maxWidth: maxWidth, maxHeight: maxHeight, onResizeStart: onResizeStart, keepAspectRatio: keepAspectRatio, autoScale: autoScale, shouldResize: shouldResize, onResize: onResize, onResizeEnd: onResizeEnd }, position)))] })); +} + +const selector = (state) => state.domNode?.querySelector('.react-flow__renderer'); +function NodeToolbarPortal({ children }) { + const wrapperRef = useStore(selector); + if (!wrapperRef) { + return null; + } + return createPortal(children, wrapperRef); +} + +const nodeEqualityFn = (a, b) => a?.internals.positionAbsolute.x !== b?.internals.positionAbsolute.x || + a?.internals.positionAbsolute.y !== b?.internals.positionAbsolute.y || + a?.measured.width !== b?.measured.width || + a?.measured.height !== b?.measured.height || + a?.selected !== b?.selected || + a?.internals.z !== b?.internals.z; +const nodesEqualityFn = (a, b) => { + if (a.size !== b.size) { + return false; + } + for (const [key, node] of a) { + if (nodeEqualityFn(node, b.get(key))) { + return false; + } + } + return true; +}; +const storeSelector = (state) => ({ + x: state.transform[0], + y: state.transform[1], + zoom: state.transform[2], + selectedNodesCount: state.nodes.filter((node) => node.selected).length, +}); +/** + * This component can render a toolbar or tooltip to one side of a custom node. This + * toolbar doesn't scale with the viewport so that the content is always visible. + * + * @public + * @example + * ```jsx + *import { memo } from 'react'; + *import { Handle, Position, NodeToolbar } from '@xyflow/react'; + * + *function CustomNode({ data }) { + * return ( + * <> + * + * + * + * + * + * + *
+ * {data.label} + *
+ * + * + * + * + * ); + *}; + * + *export default memo(CustomNode); + *``` + * @remarks By default, the toolbar is only visible when a node is selected. If multiple + * nodes are selected it will not be visible to prevent overlapping toolbars or + * clutter. You can override this behavior by setting the `isVisible` prop to `true`. + */ +function NodeToolbar({ nodeId, children, className, style, isVisible, position = Position.Top, offset = 10, align = 'center', ...rest }) { + const contextNodeId = useNodeId(); + const nodesSelector = useCallback((state) => { + const nodeIds = Array.isArray(nodeId) ? nodeId : [nodeId || contextNodeId || '']; + const internalNodes = nodeIds.reduce((res, id) => { + const node = state.nodeLookup.get(id); + if (node) { + res.set(node.id, node); + } + return res; + }, new Map()); + return internalNodes; + }, [nodeId, contextNodeId]); + const nodes = useStore(nodesSelector, nodesEqualityFn); + const { x, y, zoom, selectedNodesCount } = useStore(storeSelector, shallow); + // if isVisible is not set, we show the toolbar only if its node is selected and no other node is selected + const isActive = typeof isVisible === 'boolean' + ? isVisible + : nodes.size === 1 && nodes.values().next().value?.selected && selectedNodesCount === 1; + if (!isActive || !nodes.size) { + return null; + } + const nodeRect = getInternalNodesBounds(nodes); + const nodesArray = Array.from(nodes.values()); + const zIndex = Math.max(...nodesArray.map((node) => node.internals.z + 1)); + const wrapperStyle = { + position: 'absolute', + transform: getNodeToolbarTransform(nodeRect, { x, y, zoom }, position, offset, align), + zIndex, + ...style, + }; + return (jsx(NodeToolbarPortal, { children: jsx("div", { style: wrapperStyle, className: cc(['react-flow__node-toolbar', className]), ...rest, "data-id": nodesArray.reduce((acc, node) => `${acc}${node.id} `, '').trim(), children: children }) })); +} + +const zoomSelector = (state) => state.transform[2]; +/** + * This component can render a toolbar or tooltip to one side of a custom edge. This + * toolbar doesn't scale with the viewport so that the content stays the same size. + * + * @public + * @example + * ```jsx + * import { EdgeToolbar, BaseEdge, getBezierPath, type EdgeProps } from "@xyflow/react"; + * + * export function CustomEdge({ id, data, ...props }: EdgeProps) { + * const [edgePath, centerX, centerY] = getBezierPath(props); + * + * return ( + * <> + * + * + * + * + * + * ); + * } + * ``` + */ +function EdgeToolbar({ edgeId, x, y, children, className, style, isVisible, alignX = 'center', alignY = 'center', ...rest }) { + const edgeSelector = useCallback((state) => state.edgeLookup.get(edgeId), [edgeId]); + const edge = useStore(edgeSelector, shallow); + const isActive = typeof isVisible === 'boolean' ? isVisible : edge?.selected; + const zoom = useStore(zoomSelector); + if (!isActive) { + return null; + } + const zIndex = (edge?.zIndex ?? 0) + 1; + const transform = getEdgeToolbarTransform(x, y, zoom, alignX, alignY); + return (jsx(EdgeLabelRenderer, { children: jsx("div", { style: { + position: 'absolute', + transform, + zIndex, + pointerEvents: 'all', + transformOrigin: '0 0', + ...style, + }, className: cc(['react-flow__edge-toolbar', className]), "data-id": edge?.id ?? '', ...rest, children: children }) })); +} + +export { Background, BackgroundVariant, BaseEdge, BezierEdge, ControlButton, Controls, EdgeLabelRenderer, EdgeText, EdgeToolbar, Handle, MiniMap, MiniMapNode, NodeResizeControl, NodeResizer, NodeToolbar, Panel, index as ReactFlow, ReactFlowProvider, SimpleBezierEdge, SmoothStepEdge, StepEdge, StraightEdge, ViewportPortal, addEdge, applyEdgeChanges, applyNodeChanges, experimental_useOnEdgesChangeMiddleware, experimental_useOnNodesChangeMiddleware, getSimpleBezierPath, isEdge, isNode, reconnectEdge, useConnection, useEdges, useEdgesState, useHandleConnections, useInternalNode, useKeyPress, useNodeConnections, useNodeId, useNodes, useNodesData, useNodesInitialized, useNodesState, useOnSelectionChange, useOnViewportChange, useReactFlow, useStore, useStoreApi, useUpdateNodeInternals, useViewport }; diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/index.mjs b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/index.mjs new file mode 100644 index 0000000000000000000000000000000000000000..82876075f0ef9df255c92454a668908996b04c14 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/index.mjs @@ -0,0 +1,5128 @@ +"use client" +import { jsxs, Fragment, jsx } from 'react/jsx-runtime'; +import { createContext, useContext, useMemo, forwardRef, useEffect, useRef, useState, useLayoutEffect, useCallback, memo } from 'react'; +import cc from 'classcat'; +import { errorMessages, infiniteExtent, mergeAriaLabelConfig, isInputDOMNode, rendererPointToPoint, pointToRendererPoint, getViewportForBounds, createDevWarn, addEdge as addEdge$1, reconnectEdge as reconnectEdge$1, isNodeBase, isEdgeBase, withResolvers, getNodesBounds, isRectObject, getOverlappingArea, nodeToRect, getElementsToRemove, evaluateAbsolutePosition, getDimensions, XYPanZoom, PanOnScrollMode, SelectionMode, getEventPosition, calcAutoPan, getNodesInside, areSetsEqual, XYDrag, snapPosition, calculateNodePosition, Position, ConnectionMode, getHostForElement, XYHandle, isMouseEvent, getInternalNodesBounds, isNumeric, nodeHasDimensions, getNodeDimensions, elementSelectionKeys, isEdgeVisible, MarkerType, createMarkerIds, getBezierEdgeCenter, getSmoothStepPath, getStraightPath, getBezierPath, getEdgePosition, getElevatedEdgeZIndex, getMarkerId, getConnectionStatus, ConnectionLineType, updateConnectionLookup, adoptUserNodes, defaultAriaLabelConfig, initialConnection, panBy, getHandlePosition, handleExpandParent, updateNodeInternals, updateAbsolutePositions, fitViewport, isMacOs, areConnectionMapsEqual, handleConnectionChange, shallowNodeData, XYMinimap, getBoundsOfRects, ResizeControlVariant, XYResizer, XY_RESIZER_LINE_POSITIONS, XY_RESIZER_HANDLE_POSITIONS, getNodeToolbarTransform, getEdgeToolbarTransform } from '@xyflow/system'; +export { ConnectionLineType, ConnectionMode, MarkerType, PanOnScrollMode, Position, ResizeControlVariant, SelectionMode, getBezierEdgeCenter, getBezierPath, getConnectedEdges, getEdgeCenter, getIncomers, getNodesBounds, getOutgoers, getSmoothStepPath, getStraightPath, getViewportForBounds } from '@xyflow/system'; +import { useStoreWithEqualityFn, createWithEqualityFn } from 'zustand/traditional'; +import { shallow } from 'zustand/shallow'; +import { createPortal } from 'react-dom'; + +const StoreContext = createContext(null); +const Provider$1 = StoreContext.Provider; + +const zustandErrorMessage = errorMessages['error001']('react'); +/** + * This hook can be used to subscribe to internal state changes of the React Flow + * component. The `useStore` hook is re-exported from the [Zustand](https://github.com/pmndrs/zustand) + * state management library, so you should check out their docs for more details. + * + * @public + * @param selector - A selector function that returns a slice of the flow's internal state. + * Extracting or transforming just the state you need is a good practice to avoid unnecessary + * re-renders. + * @param equalityFn - A function to compare the previous and next value. This is incredibly useful + * for preventing unnecessary re-renders. Good sensible defaults are using `Object.is` or importing + * `zustand/shallow`, but you can be as granular as you like. + * @returns The selected state slice. + * + * @example + * ```ts + * const nodes = useStore((state) => state.nodes); + * ``` + * + * @remarks This hook should only be used if there is no other way to access the internal + * state. For many of the common use cases, there are dedicated hooks available + * such as {@link useReactFlow}, {@link useViewport}, etc. + */ +function useStore(selector, equalityFn) { + const store = useContext(StoreContext); + if (store === null) { + throw new Error(zustandErrorMessage); + } + return useStoreWithEqualityFn(store, selector, equalityFn); +} +/** + * In some cases, you might need to access the store directly. This hook returns the store object which can be used on demand to access the state or dispatch actions. + * + * @returns The store object. + * @example + * ```ts + * const store = useStoreApi(); + * ``` + * + * @remarks This hook should only be used if there is no other way to access the internal + * state. For many of the common use cases, there are dedicated hooks available + * such as {@link useReactFlow}, {@link useViewport}, etc. + */ +function useStoreApi() { + const store = useContext(StoreContext); + if (store === null) { + throw new Error(zustandErrorMessage); + } + return useMemo(() => ({ + getState: store.getState, + setState: store.setState, + subscribe: store.subscribe, + }), [store]); +} + +const style = { display: 'none' }; +const ariaLiveStyle = { + position: 'absolute', + width: 1, + height: 1, + margin: -1, + border: 0, + padding: 0, + overflow: 'hidden', + clip: 'rect(0px, 0px, 0px, 0px)', + clipPath: 'inset(100%)', +}; +const ARIA_NODE_DESC_KEY = 'react-flow__node-desc'; +const ARIA_EDGE_DESC_KEY = 'react-flow__edge-desc'; +const ARIA_LIVE_MESSAGE = 'react-flow__aria-live'; +const ariaLiveSelector = (s) => s.ariaLiveMessage; +const ariaLabelConfigSelector = (s) => s.ariaLabelConfig; +function AriaLiveMessage({ rfId }) { + const ariaLiveMessage = useStore(ariaLiveSelector); + return (jsx("div", { id: `${ARIA_LIVE_MESSAGE}-${rfId}`, "aria-live": "assertive", "aria-atomic": "true", style: ariaLiveStyle, children: ariaLiveMessage })); +} +function A11yDescriptions({ rfId, disableKeyboardA11y }) { + const ariaLabelConfig = useStore(ariaLabelConfigSelector); + return (jsxs(Fragment, { children: [jsx("div", { id: `${ARIA_NODE_DESC_KEY}-${rfId}`, style: style, children: disableKeyboardA11y + ? ariaLabelConfig['node.a11yDescription.default'] + : ariaLabelConfig['node.a11yDescription.keyboardDisabled'] }), jsx("div", { id: `${ARIA_EDGE_DESC_KEY}-${rfId}`, style: style, children: ariaLabelConfig['edge.a11yDescription.default'] }), !disableKeyboardA11y && jsx(AriaLiveMessage, { rfId: rfId })] })); +} + +/** + * The `` component helps you position content above the viewport. + * It is used internally by the [``](/api-reference/components/minimap) + * and [``](/api-reference/components/controls) components. + * + * @public + * + * @example + * ```jsx + *import { ReactFlow, Background, Panel } from '@xyflow/react'; + * + *export default function Flow() { + * return ( + * + * top-left + * top-center + * top-right + * bottom-left + * bottom-center + * bottom-right + * + * ); + *} + *``` + */ +const Panel = forwardRef(({ position = 'top-left', children, className, style, ...rest }, ref) => { + const positionClasses = `${position}`.split('-'); + return (jsx("div", { className: cc(['react-flow__panel', className, ...positionClasses]), style: style, ref: ref, ...rest, children: children })); +}); +Panel.displayName = 'Panel'; + +const link = `https://reactflow.dev${process.env.NODE_ENV === 'production' ? '?utm_source=attribution' : '/attribution'}`; +function Attribution({ proOptions, position = 'bottom-right' }) { + if (proOptions?.hideAttribution) { + return null; + } + return (jsx(Panel, { position: position, className: "react-flow__attribution", "data-message": `Please only hide this attribution when you are subscribed to React Flow Pro: ${link}`, children: jsx("a", { href: link, target: "_blank", rel: "noopener noreferrer", "aria-label": "React Flow attribution", children: "React Flow" }) })); +} + +const selector$l = (s) => { + const selectedNodes = []; + const selectedEdges = []; + for (const [, node] of s.nodeLookup) { + if (node.selected) { + selectedNodes.push(node.internals.userNode); + } + } + for (const [, edge] of s.edgeLookup) { + if (edge.selected) { + selectedEdges.push(edge); + } + } + return { selectedNodes, selectedEdges }; +}; +const selectId = (obj) => obj.id; +function areEqual$1(a, b) { + return (shallow(a.selectedNodes.map(selectId), b.selectedNodes.map(selectId)) && + shallow(a.selectedEdges.map(selectId), b.selectedEdges.map(selectId))); +} +function SelectionListenerInner({ onSelectionChange, }) { + const store = useStoreApi(); + const { selectedNodes, selectedEdges } = useStore(selector$l, areEqual$1); + useEffect(() => { + const params = { nodes: selectedNodes, edges: selectedEdges }; + onSelectionChange?.(params); + store.getState().onSelectionChangeHandlers.forEach((fn) => fn(params)); + }, [selectedNodes, selectedEdges, onSelectionChange]); + return null; +} +const changeSelector = (s) => !!s.onSelectionChangeHandlers; +function SelectionListener({ onSelectionChange, }) { + const storeHasSelectionChangeHandlers = useStore(changeSelector); + if (onSelectionChange || storeHasSelectionChangeHandlers) { + return jsx(SelectionListenerInner, { onSelectionChange: onSelectionChange }); + } + return null; +} + +const defaultNodeOrigin = [0, 0]; +const defaultViewport = { x: 0, y: 0, zoom: 1 }; + +/* + * This component helps us to update the store with the values coming from the user. + * We distinguish between values we can update directly with `useDirectStoreUpdater` (like `snapGrid`) + * and values that have a dedicated setter function in the store (like `setNodes`). + */ +// These fields exist in the global store, and we need to keep them up to date +const reactFlowFieldsToTrack = [ + 'nodes', + 'edges', + 'defaultNodes', + 'defaultEdges', + 'onConnect', + 'onConnectStart', + 'onConnectEnd', + 'onClickConnectStart', + 'onClickConnectEnd', + 'nodesDraggable', + 'autoPanOnNodeFocus', + 'nodesConnectable', + 'nodesFocusable', + 'edgesFocusable', + 'edgesReconnectable', + 'elevateNodesOnSelect', + 'elevateEdgesOnSelect', + 'minZoom', + 'maxZoom', + 'nodeExtent', + 'onNodesChange', + 'onEdgesChange', + 'elementsSelectable', + 'connectionMode', + 'snapGrid', + 'snapToGrid', + 'translateExtent', + 'connectOnClick', + 'defaultEdgeOptions', + 'fitView', + 'fitViewOptions', + 'onNodesDelete', + 'onEdgesDelete', + 'onDelete', + 'onNodeDrag', + 'onNodeDragStart', + 'onNodeDragStop', + 'onSelectionDrag', + 'onSelectionDragStart', + 'onSelectionDragStop', + 'onMoveStart', + 'onMove', + 'onMoveEnd', + 'noPanClassName', + 'nodeOrigin', + 'autoPanOnConnect', + 'autoPanOnNodeDrag', + 'onError', + 'connectionRadius', + 'isValidConnection', + 'selectNodesOnDrag', + 'nodeDragThreshold', + 'connectionDragThreshold', + 'onBeforeDelete', + 'debug', + 'autoPanSpeed', + 'ariaLabelConfig', + 'zIndexMode', +]; +// rfId doesn't exist in ReactFlowProps, but it's one of the fields we want to update +const fieldsToTrack = [...reactFlowFieldsToTrack, 'rfId']; +const selector$k = (s) => ({ + setNodes: s.setNodes, + setEdges: s.setEdges, + setMinZoom: s.setMinZoom, + setMaxZoom: s.setMaxZoom, + setTranslateExtent: s.setTranslateExtent, + setNodeExtent: s.setNodeExtent, + reset: s.reset, + setDefaultNodesAndEdges: s.setDefaultNodesAndEdges, +}); +const initPrevValues = { + /* + * these are values that are also passed directly to other components + * than the StoreUpdater. We can reduce the number of setStore calls + * by setting the same values here as prev fields. + */ + translateExtent: infiniteExtent, + nodeOrigin: defaultNodeOrigin, + minZoom: 0.5, + maxZoom: 2, + elementsSelectable: true, + noPanClassName: 'nopan', + rfId: '1', +}; +function StoreUpdater(props) { + const { setNodes, setEdges, setMinZoom, setMaxZoom, setTranslateExtent, setNodeExtent, reset, setDefaultNodesAndEdges, } = useStore(selector$k, shallow); + const store = useStoreApi(); + useEffect(() => { + setDefaultNodesAndEdges(props.defaultNodes, props.defaultEdges); + return () => { + // when we reset the store we also need to reset the previous fields + previousFields.current = initPrevValues; + reset(); + }; + }, []); + const previousFields = useRef(initPrevValues); + useEffect(() => { + for (const fieldName of fieldsToTrack) { + const fieldValue = props[fieldName]; + const previousFieldValue = previousFields.current[fieldName]; + if (fieldValue === previousFieldValue) + continue; + if (typeof props[fieldName] === 'undefined') + continue; + // Custom handling with dedicated setters for some fields + if (fieldName === 'nodes') + setNodes(fieldValue); + else if (fieldName === 'edges') + setEdges(fieldValue); + else if (fieldName === 'minZoom') + setMinZoom(fieldValue); + else if (fieldName === 'maxZoom') + setMaxZoom(fieldValue); + else if (fieldName === 'translateExtent') + setTranslateExtent(fieldValue); + else if (fieldName === 'nodeExtent') + setNodeExtent(fieldValue); + else if (fieldName === 'ariaLabelConfig') + store.setState({ ariaLabelConfig: mergeAriaLabelConfig(fieldValue) }); + // Renamed fields + else if (fieldName === 'fitView') + store.setState({ fitViewQueued: fieldValue }); + else if (fieldName === 'fitViewOptions') + store.setState({ fitViewOptions: fieldValue }); + // General case + else + store.setState({ [fieldName]: fieldValue }); + } + previousFields.current = props; + }, + // Only re-run the effect if one of the fields we track changes + fieldsToTrack.map((fieldName) => props[fieldName])); + return null; +} + +function getMediaQuery() { + if (typeof window === 'undefined' || !window.matchMedia) { + return null; + } + return window.matchMedia('(prefers-color-scheme: dark)'); +} +/** + * Hook for receiving the current color mode class 'dark' or 'light'. + * + * @internal + * @param colorMode - The color mode to use ('dark', 'light' or 'system') + */ +function useColorModeClass(colorMode) { + const [colorModeClass, setColorModeClass] = useState(colorMode === 'system' ? null : colorMode); + useEffect(() => { + if (colorMode !== 'system') { + setColorModeClass(colorMode); + return; + } + const mediaQuery = getMediaQuery(); + const updateColorModeClass = () => setColorModeClass(mediaQuery?.matches ? 'dark' : 'light'); + updateColorModeClass(); + mediaQuery?.addEventListener('change', updateColorModeClass); + return () => { + mediaQuery?.removeEventListener('change', updateColorModeClass); + }; + }, [colorMode]); + return colorModeClass !== null ? colorModeClass : getMediaQuery()?.matches ? 'dark' : 'light'; +} + +const defaultDoc = typeof document !== 'undefined' ? document : null; +/** + * This hook lets you listen for specific key codes and tells you whether they are + * currently pressed or not. + * + * @public + * @param options - Options + * + * @example + * ```tsx + *import { useKeyPress } from '@xyflow/react'; + * + *export default function () { + * const spacePressed = useKeyPress('Space'); + * const cmdAndSPressed = useKeyPress(['Meta+s', 'Strg+s']); + * + * return ( + *
+ * {spacePressed &&

Space pressed!

} + * {cmdAndSPressed &&

Cmd + S pressed!

} + *
+ * ); + *} + *``` + */ +function useKeyPress( +/** + * The key code (string or array of strings) specifies which key(s) should trigger + * an action. + * + * A **string** can represent: + * - A **single key**, e.g. `'a'` + * - A **key combination**, using `'+'` to separate keys, e.g. `'a+d'` + * + * An **array of strings** represents **multiple possible key inputs**. For example, `['a', 'd+s']` + * means the user can press either the single key `'a'` or the combination of `'d'` and `'s'`. + * @default null + */ +keyCode = null, options = { target: defaultDoc, actInsideInputWithModifier: true }) { + const [keyPressed, setKeyPressed] = useState(false); + // we need to remember if a modifier key is pressed in order to track it + const modifierPressed = useRef(false); + // we need to remember the pressed keys in order to support combinations + const pressedKeys = useRef(new Set([])); + /* + * keyCodes = array with single keys [['a']] or key combinations [['a', 's']] + * keysToWatch = array with all keys flattened ['a', 'd', 'ShiftLeft'] + * used to check if we store event.code or event.key. When the code is in the list of keysToWatch + * we use the code otherwise the key. Explainer: When you press the left "command" key, the code is "MetaLeft" + * 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 + * we can't find it in the list of keysToWatch. + */ + const [keyCodes, keysToWatch] = useMemo(() => { + if (keyCode !== null) { + const keyCodeArr = Array.isArray(keyCode) ? keyCode : [keyCode]; + const keys = keyCodeArr + .filter((kc) => typeof kc === 'string') + /* + * we first replace all '+' with '\n' which we will use to split the keys on + * then we replace '\n\n' with '\n+', this way we can also support the combination 'key++' + * in the end we simply split on '\n' to get the key array + */ + .map((kc) => kc.replace('+', '\n').replace('\n\n', '\n+').split('\n')); + const keysFlat = keys.reduce((res, item) => res.concat(...item), []); + return [keys, keysFlat]; + } + return [[], []]; + }, [keyCode]); + useEffect(() => { + const target = options?.target ?? defaultDoc; + const actInsideInputWithModifier = options?.actInsideInputWithModifier ?? true; + if (keyCode !== null) { + const downHandler = (event) => { + modifierPressed.current = event.ctrlKey || event.metaKey || event.shiftKey || event.altKey; + const preventAction = (!modifierPressed.current || (modifierPressed.current && !actInsideInputWithModifier)) && + isInputDOMNode(event); + if (preventAction) { + return false; + } + const keyOrCode = useKeyOrCode(event.code, keysToWatch); + pressedKeys.current.add(event[keyOrCode]); + if (isMatchingKey(keyCodes, pressedKeys.current, false)) { + const target = (event.composedPath?.()?.[0] || event.target); + const isInteractiveElement = target?.nodeName === 'BUTTON' || target?.nodeName === 'A'; + if (options.preventDefault !== false && (modifierPressed.current || !isInteractiveElement)) { + event.preventDefault(); + } + setKeyPressed(true); + } + }; + const upHandler = (event) => { + const keyOrCode = useKeyOrCode(event.code, keysToWatch); + if (isMatchingKey(keyCodes, pressedKeys.current, true)) { + setKeyPressed(false); + pressedKeys.current.clear(); + } + else { + pressedKeys.current.delete(event[keyOrCode]); + } + // 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 + if (event.key === 'Meta') { + pressedKeys.current.clear(); + } + modifierPressed.current = false; + }; + const resetHandler = () => { + pressedKeys.current.clear(); + setKeyPressed(false); + }; + target?.addEventListener('keydown', downHandler); + target?.addEventListener('keyup', upHandler); + window.addEventListener('blur', resetHandler); + window.addEventListener('contextmenu', resetHandler); + return () => { + target?.removeEventListener('keydown', downHandler); + target?.removeEventListener('keyup', upHandler); + window.removeEventListener('blur', resetHandler); + window.removeEventListener('contextmenu', resetHandler); + }; + } + }, [keyCode, setKeyPressed]); + return keyPressed; +} +// utils +function isMatchingKey(keyCodes, pressedKeys, isUp) { + return (keyCodes + /* + * we only want to compare same sizes of keyCode definitions + * and pressed keys. When the user specified 'Meta' as a key somewhere + * this would also be truthy without this filter when user presses 'Meta' + 'r' + */ + .filter((keys) => isUp || keys.length === pressedKeys.size) + /* + * since we want to support multiple possibilities only one of the + * combinations need to be part of the pressed keys + */ + .some((keys) => keys.every((k) => pressedKeys.has(k)))); +} +function useKeyOrCode(eventCode, keysToWatch) { + return keysToWatch.includes(eventCode) ? 'code' : 'key'; +} + +/** + * Hook for getting viewport helper functions. + * + * @internal + * @returns viewport helper functions + */ +const useViewportHelper = () => { + const store = useStoreApi(); + return useMemo(() => { + return { + zoomIn: async (options) => { + const { panZoom } = store.getState(); + return panZoom ? panZoom.scaleBy(1.2, options) : false; + }, + zoomOut: async (options) => { + const { panZoom } = store.getState(); + return panZoom ? panZoom.scaleBy(1 / 1.2, options) : false; + }, + zoomTo: async (zoomLevel, options) => { + const { panZoom } = store.getState(); + return panZoom ? panZoom.scaleTo(zoomLevel, options) : false; + }, + getZoom: () => store.getState().transform[2], + setViewport: async (viewport, options) => { + const { transform: [tX, tY, tZoom], panZoom, } = store.getState(); + if (!panZoom) { + return false; + } + await panZoom.setViewport({ + x: viewport.x ?? tX, + y: viewport.y ?? tY, + zoom: viewport.zoom ?? tZoom, + }, options); + return true; + }, + getViewport: () => { + const [x, y, zoom] = store.getState().transform; + return { x, y, zoom }; + }, + setCenter: async (x, y, options) => { + return store.getState().setCenter(x, y, options); + }, + fitBounds: async (bounds, options) => { + const { width, height, minZoom, maxZoom, panZoom } = store.getState(); + const viewport = getViewportForBounds(bounds, width, height, minZoom, maxZoom, options?.padding ?? 0.1); + if (!panZoom) { + return false; + } + await panZoom.setViewport(viewport, { + duration: options?.duration, + ease: options?.ease, + interpolate: options?.interpolate, + }); + return true; + }, + screenToFlowPosition: (clientPosition, options = {}) => { + const { transform, snapGrid, snapToGrid, domNode } = store.getState(); + if (!domNode) { + return clientPosition; + } + const { x: domX, y: domY } = domNode.getBoundingClientRect(); + const correctedPosition = { + x: clientPosition.x - domX, + y: clientPosition.y - domY, + }; + const _snapGrid = options.snapGrid ?? snapGrid; + const _snapToGrid = options.snapToGrid ?? snapToGrid; + return pointToRendererPoint(correctedPosition, transform, _snapToGrid, _snapGrid); + }, + flowToScreenPosition: (flowPosition) => { + const { transform, domNode } = store.getState(); + if (!domNode) { + return flowPosition; + } + const { x: domX, y: domY } = domNode.getBoundingClientRect(); + const rendererPosition = rendererPointToPoint(flowPosition, transform); + return { + x: rendererPosition.x + domX, + y: rendererPosition.y + domY, + }; + }, + }; + }, []); +}; + +/* + * This function applies changes to nodes or edges that are triggered by React Flow internally. + * When you drag a node for example, React Flow will send a position change update. + * This function then applies the changes and returns the updated elements. + */ +function applyChanges(changes, elements) { + const updatedElements = []; + /* + * By storing a map of changes for each element, we can a quick lookup as we + * iterate over the elements array! + */ + const changesMap = new Map(); + const addItemChanges = []; + for (const change of changes) { + if (change.type === 'add') { + addItemChanges.push(change); + continue; + } + else if (change.type === 'remove' || change.type === 'replace') { + /* + * For a 'remove' change we can safely ignore any other changes queued for + * the same element, it's going to be removed anyway! + */ + changesMap.set(change.id, [change]); + } + else { + const elementChanges = changesMap.get(change.id); + if (elementChanges) { + /* + * If we have some changes queued already, we can do a mutable update of + * that array and save ourselves some copying. + */ + elementChanges.push(change); + } + else { + changesMap.set(change.id, [change]); + } + } + } + for (const element of elements) { + const changes = changesMap.get(element.id); + /* + * When there are no changes for an element we can just push it unmodified, + * no need to copy it. + */ + if (!changes) { + updatedElements.push(element); + continue; + } + // If we have a 'remove' change queued, it'll be the only change in the array + if (changes[0].type === 'remove') { + continue; + } + if (changes[0].type === 'replace') { + updatedElements.push({ ...changes[0].item }); + continue; + } + /** + * For other types of changes, we want to start with a shallow copy of the + * object so React knows this element has changed. Sequential changes will + * each _mutate_ this object, so there's only ever one copy. + */ + const updatedElement = { ...element }; + for (const change of changes) { + applyChange(change, updatedElement); + } + updatedElements.push(updatedElement); + } + /* + * we need to wait for all changes to be applied before adding new items + * to be able to add them at the correct index + */ + if (addItemChanges.length) { + addItemChanges.forEach((change) => { + if (change.index !== undefined) { + updatedElements.splice(change.index, 0, { ...change.item }); + } + else { + updatedElements.push({ ...change.item }); + } + }); + } + return updatedElements; +} +// Applies a single change to an element. This is a *mutable* update. +function applyChange(change, element) { + switch (change.type) { + case 'select': { + element.selected = change.selected; + break; + } + case 'position': { + if (typeof change.position !== 'undefined') { + element.position = change.position; + } + if (typeof change.dragging !== 'undefined') { + element.dragging = change.dragging; + } + break; + } + case 'dimensions': { + if (typeof change.dimensions !== 'undefined') { + element.measured = { + ...change.dimensions, + }; + if (change.setAttributes) { + if (change.setAttributes === true || change.setAttributes === 'width') { + element.width = change.dimensions.width; + } + if (change.setAttributes === true || change.setAttributes === 'height') { + element.height = change.dimensions.height; + } + } + } + if (typeof change.resizing === 'boolean') { + element.resizing = change.resizing; + } + break; + } + } +} +/** + * Drop in function that applies node changes to an array of nodes. + * @public + * @param changes - Array of changes to apply. + * @param nodes - Array of nodes to apply the changes to. + * @returns Array of updated nodes. + * @example + *```tsx + *import { useState, useCallback } from 'react'; + *import { ReactFlow, applyNodeChanges, type Node, type Edge, type OnNodesChange } from '@xyflow/react'; + * + *export default function Flow() { + * const [nodes, setNodes] = useState([]); + * const [edges, setEdges] = useState([]); + * const onNodesChange: OnNodesChange = useCallback( + * (changes) => { + * setNodes((oldNodes) => applyNodeChanges(changes, oldNodes)); + * }, + * [setNodes], + * ); + * + * return ( + * + * ); + *} + *``` + * @remarks Various events on the component can produce an {@link NodeChange} + * that describes how to update the edges of your flow in some way. + * If you don't need any custom behaviour, this util can be used to take an array + * of these changes and apply them to your edges. + */ +function applyNodeChanges(changes, nodes) { + return applyChanges(changes, nodes); +} +/** + * Drop in function that applies edge changes to an array of edges. + * @public + * @param changes - Array of changes to apply. + * @param edges - Array of edge to apply the changes to. + * @returns Array of updated edges. + * @example + * ```tsx + *import { useState, useCallback } from 'react'; + *import { ReactFlow, applyEdgeChanges } from '@xyflow/react'; + * + *export default function Flow() { + * const [nodes, setNodes] = useState([]); + * const [edges, setEdges] = useState([]); + * const onEdgesChange = useCallback( + * (changes) => { + * setEdges((oldEdges) => applyEdgeChanges(changes, oldEdges)); + * }, + * [setEdges], + * ); + * + * return ( + * + * ); + *} + *``` + * @remarks Various events on the component can produce an {@link EdgeChange} + * that describes how to update the edges of your flow in some way. + * If you don't need any custom behaviour, this util can be used to take an array + * of these changes and apply them to your edges. + */ +function applyEdgeChanges(changes, edges) { + return applyChanges(changes, edges); +} +function createSelectionChange(id, selected) { + return { + id, + type: 'select', + selected, + }; +} +function getSelectionChanges(items, selectedIds = new Set(), mutateItem = false) { + const changes = []; + for (const [id, item] of items) { + const willBeSelected = selectedIds.has(id); + // we don't want to set all items to selected=false on the first selection + if (!(item.selected === undefined && !willBeSelected) && item.selected !== willBeSelected) { + if (mutateItem) { + /* + * this hack is needed for nodes. When the user dragged a node, it's selected. + * When another node gets dragged, we need to deselect the previous one, + * in order to have only one selected node at a time - the onNodesChange callback comes too late here :/ + */ + item.selected = willBeSelected; + } + changes.push(createSelectionChange(item.id, willBeSelected)); + } + } + return changes; +} +function getElementsDiffChanges({ items = [], lookup, }) { + const changes = []; + const itemsLookup = new Map(items.map((item) => [item.id, item])); + for (const [index, item] of items.entries()) { + const lookupItem = lookup.get(item.id); + const storeItem = lookupItem?.internals?.userNode ?? lookupItem; + if (storeItem !== undefined && storeItem !== item) { + changes.push({ id: item.id, item: item, type: 'replace' }); + } + if (storeItem === undefined) { + changes.push({ item: item, type: 'add', index }); + } + } + for (const [id] of lookup) { + const nextNode = itemsLookup.get(id); + if (nextNode === undefined) { + changes.push({ id, type: 'remove' }); + } + } + return changes; +} +function elementToRemoveChange(item) { + return { + id: item.id, + type: 'remove', + }; +} + +const defaultOnError = createDevWarn('React Flow', 'https://reactflow.dev/'); +function addEdge(edgeParams, edges, options = {}) { + return addEdge$1(edgeParams, edges, { + ...options, + onError: options.onError ?? defaultOnError, + }); +} +function reconnectEdge(oldEdge, newConnection, edges, options = { shouldReplaceId: true }) { + return reconnectEdge$1(oldEdge, newConnection, edges, { + ...options, + onError: options.onError ?? defaultOnError, + }); +} + +/** + * Test whether an object is usable as an [`Node`](/api-reference/types/node). + * In TypeScript this is a type guard that will narrow the type of whatever you pass in to + * [`Node`](/api-reference/types/node) if it returns `true`. + * + * @public + * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Node if it returns true + * @param element - The element to test. + * @returns Tests whether the provided value can be used as a `Node`. If you're using TypeScript, + * this function acts as a type guard and will narrow the type of the value to `Node` if it returns + * `true`. + * + * @example + * ```js + *import { isNode } from '@xyflow/react'; + * + *if (isNode(node)) { + * // ... + *} + *``` + */ +const isNode = (element) => isNodeBase(element); +/** + * Test whether an object is usable as an [`Edge`](/api-reference/types/edge). + * In TypeScript this is a type guard that will narrow the type of whatever you pass in to + * [`Edge`](/api-reference/types/edge) if it returns `true`. + * + * @public + * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Edge if it returns true + * @param element - The element to test + * @returns Tests whether the provided value can be used as an `Edge`. If you're using TypeScript, + * this function acts as a type guard and will narrow the type of the value to `Edge` if it returns + * `true`. + * + * @example + * ```js + *import { isEdge } from '@xyflow/react'; + * + *if (isEdge(edge)) { + * // ... + *} + *``` + */ +const isEdge = (element) => isEdgeBase(element); +// eslint-disable-next-line @typescript-eslint/no-empty-object-type +function fixedForwardRef(render) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return forwardRef(render); +} + +// we need this hook to prevent a warning when using react-flow in SSR +const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect; + +/** + * This hook returns a queue that can be used to batch updates. + * + * @param runQueue - a function that gets called when the queue is flushed + * @internal + * + * @returns a Queue object + */ +function useQueue(runQueue) { + /* + * Because we're using a ref above, we need some way to let React know when to + * actually process the queue. We increment this number any time we mutate the + * queue, creating a new state to trigger the layout effect below. + * Using a boolean dirty flag here instead would lead to issues related to + * automatic batching. (https://github.com/xyflow/xyflow/issues/4779) + */ + const [serial, setSerial] = useState(BigInt(0)); + /* + * A reference of all the batched updates to process before the next render. We + * want a reference here so multiple synchronous calls to `setNodes` etc can be + * batched together. + */ + const [queue] = useState(() => createQueue(() => setSerial(n => n + BigInt(1)))); + /* + * Layout effects are guaranteed to run before the next render which means we + * shouldn't run into any issues with stale state or weird issues that come from + * rendering things one frame later than expected (we used to use `setTimeout`). + */ + useIsomorphicLayoutEffect(() => { + const queueItems = queue.get(); + if (queueItems.length) { + runQueue(queueItems); + queue.reset(); + } + }, [serial]); + return queue; +} +function createQueue(cb) { + let queue = []; + return { + get: () => queue, + reset: () => { + queue = []; + }, + push: (item) => { + queue.push(item); + cb(); + }, + }; +} + +const BatchContext = createContext(null); +/** + * This is a context provider that holds and processes the node and edge update queues + * that are needed to handle setNodes, addNodes, setEdges and addEdges. + * + * @internal + */ +function BatchProvider({ children, }) { + const store = useStoreApi(); + const nodeQueueHandler = useCallback((queueItems) => { + const { nodes = [], setNodes, hasDefaultNodes, onNodesChange, nodeLookup, fitViewQueued, onNodesChangeMiddlewareMap, } = store.getState(); + /* + * This is essentially an `Array.reduce` in imperative clothing. Processing + * this queue is a relatively hot path so we'd like to avoid the overhead of + * array methods where we can. + */ + let next = nodes; + for (const payload of queueItems) { + next = typeof payload === 'function' ? payload(next) : payload; + } + let changes = getElementsDiffChanges({ + items: next, + lookup: nodeLookup, + }); + for (const middleware of onNodesChangeMiddlewareMap.values()) { + changes = middleware(changes); + } + if (hasDefaultNodes) { + setNodes(next); + } + // We only want to fire onNodesChange if there are changes to the nodes + if (changes.length > 0) { + onNodesChange?.(changes); + } + else if (fitViewQueued) { + // If there are no changes to the nodes, we still need to call setNodes + // to trigger a re-render and fitView. + window.requestAnimationFrame(() => { + const { fitViewQueued, nodes, setNodes } = store.getState(); + if (fitViewQueued) { + setNodes(nodes); + } + }); + } + }, []); + const nodeQueue = useQueue(nodeQueueHandler); + const edgeQueueHandler = useCallback((queueItems) => { + const { edges = [], setEdges, hasDefaultEdges, onEdgesChange, edgeLookup } = store.getState(); + let next = edges; + for (const payload of queueItems) { + next = typeof payload === 'function' ? payload(next) : payload; + } + if (hasDefaultEdges) { + setEdges(next); + } + else if (onEdgesChange) { + onEdgesChange(getElementsDiffChanges({ + items: next, + lookup: edgeLookup, + })); + } + }, []); + const edgeQueue = useQueue(edgeQueueHandler); + const value = useMemo(() => ({ nodeQueue, edgeQueue }), []); + return jsx(BatchContext.Provider, { value: value, children: children }); +} +function useBatchContext() { + const batchContext = useContext(BatchContext); + if (!batchContext) { + throw new Error('useBatchContext must be used within a BatchProvider'); + } + return batchContext; +} + +const selector$j = (s) => !!s.panZoom; +/** + * This hook returns a ReactFlowInstance that can be used to update nodes and edges, manipulate the viewport, or query the current state of the flow. + * + * @public + * @example + * ```jsx + *import { useCallback, useState } from 'react'; + *import { useReactFlow } from '@xyflow/react'; + * + *export function NodeCounter() { + * const reactFlow = useReactFlow(); + * const [count, setCount] = useState(0); + * const countNodes = useCallback(() => { + * setCount(reactFlow.getNodes().length); + * // you need to pass it as a dependency if you are using it with useEffect or useCallback + * // because at the first render, it's not initialized yet and some functions might not work. + * }, [reactFlow]); + * + * return ( + *
+ * + *

There are {count} nodes in the flow.

+ *
+ * ); + *} + *``` + */ +function useReactFlow() { + const viewportHelper = useViewportHelper(); + const store = useStoreApi(); + const batchContext = useBatchContext(); + const viewportInitialized = useStore(selector$j); + const generalHelper = useMemo(() => { + const getInternalNode = (id) => store.getState().nodeLookup.get(id); + const setNodes = (payload) => { + batchContext.nodeQueue.push(payload); + }; + const setEdges = (payload) => { + batchContext.edgeQueue.push(payload); + }; + const getNodeRect = (node) => { + const { nodeLookup, nodeOrigin } = store.getState(); + const nodeToUse = isNode(node) ? node : nodeLookup.get(node.id); + const position = nodeToUse.parentId + ? evaluateAbsolutePosition(nodeToUse.position, nodeToUse.measured, nodeToUse.parentId, nodeLookup, nodeOrigin) + : nodeToUse.position; + const nodeWithPosition = { + ...nodeToUse, + position, + width: nodeToUse.measured?.width ?? nodeToUse.width, + height: nodeToUse.measured?.height ?? nodeToUse.height, + }; + return nodeToRect(nodeWithPosition); + }; + const updateNode = (id, nodeUpdate, options = { replace: false }) => { + setNodes((prevNodes) => prevNodes.map((node) => { + if (node.id === id) { + const nextNode = typeof nodeUpdate === 'function' ? nodeUpdate(node) : nodeUpdate; + return options.replace && isNode(nextNode) ? nextNode : { ...node, ...nextNode }; + } + return node; + })); + }; + const updateEdge = (id, edgeUpdate, options = { replace: false }) => { + setEdges((prevEdges) => prevEdges.map((edge) => { + if (edge.id === id) { + const nextEdge = typeof edgeUpdate === 'function' ? edgeUpdate(edge) : edgeUpdate; + return options.replace && isEdge(nextEdge) ? nextEdge : { ...edge, ...nextEdge }; + } + return edge; + })); + }; + return { + getNodes: () => store.getState().nodes.map((n) => ({ ...n })), + getNode: (id) => getInternalNode(id)?.internals.userNode, + getInternalNode, + getEdges: () => { + const { edges = [] } = store.getState(); + return edges.map((e) => ({ ...e })); + }, + getEdge: (id) => store.getState().edgeLookup.get(id), + setNodes, + setEdges, + addNodes: (payload) => { + const newNodes = Array.isArray(payload) ? payload : [payload]; + batchContext.nodeQueue.push((nodes) => [...nodes, ...newNodes]); + }, + addEdges: (payload) => { + const newEdges = Array.isArray(payload) ? payload : [payload]; + batchContext.edgeQueue.push((edges) => [...edges, ...newEdges]); + }, + toObject: () => { + const { nodes = [], edges = [], transform } = store.getState(); + const [x, y, zoom] = transform; + return { + nodes: nodes.map((n) => ({ ...n })), + edges: edges.map((e) => ({ ...e })), + viewport: { + x, + y, + zoom, + }, + }; + }, + deleteElements: async ({ nodes: nodesToRemove = [], edges: edgesToRemove = [] }) => { + const { nodes, edges, onNodesDelete, onEdgesDelete, triggerNodeChanges, triggerEdgeChanges, onDelete, onBeforeDelete, } = store.getState(); + const { nodes: matchingNodes, edges: matchingEdges } = await getElementsToRemove({ + nodesToRemove, + edgesToRemove, + nodes, + edges, + onBeforeDelete, + }); + const hasMatchingEdges = matchingEdges.length > 0; + const hasMatchingNodes = matchingNodes.length > 0; + if (hasMatchingEdges) { + const edgeChanges = matchingEdges.map(elementToRemoveChange); + onEdgesDelete?.(matchingEdges); + triggerEdgeChanges(edgeChanges); + } + if (hasMatchingNodes) { + const nodeChanges = matchingNodes.map(elementToRemoveChange); + onNodesDelete?.(matchingNodes); + triggerNodeChanges(nodeChanges); + } + if (hasMatchingNodes || hasMatchingEdges) { + onDelete?.({ nodes: matchingNodes, edges: matchingEdges }); + } + return { deletedNodes: matchingNodes, deletedEdges: matchingEdges }; + }, + /** + * Partial is defined as "the 2 nodes/areas are intersecting partially". + * If a is contained in b or b is contained in a, they are both + * considered fully intersecting. + */ + getIntersectingNodes: (nodeOrRect, partially = true, nodes) => { + const isRect = isRectObject(nodeOrRect); + const nodeRect = isRect ? nodeOrRect : getNodeRect(nodeOrRect); + const hasNodesOption = nodes !== undefined; + if (!nodeRect) { + return []; + } + return (nodes || store.getState().nodes).filter((n) => { + const internalNode = store.getState().nodeLookup.get(n.id); + if (internalNode && !isRect && (n.id === nodeOrRect.id || !internalNode.internals.positionAbsolute)) { + return false; + } + const currNodeRect = nodeToRect(hasNodesOption ? n : internalNode); + const overlappingArea = getOverlappingArea(currNodeRect, nodeRect); + const partiallyVisible = partially && overlappingArea > 0; + return (partiallyVisible || + overlappingArea >= currNodeRect.width * currNodeRect.height || + overlappingArea >= nodeRect.width * nodeRect.height); + }); + }, + isNodeIntersecting: (nodeOrRect, area, partially = true) => { + const isRect = isRectObject(nodeOrRect); + const nodeRect = isRect ? nodeOrRect : getNodeRect(nodeOrRect); + if (!nodeRect) { + return false; + } + const overlappingArea = getOverlappingArea(nodeRect, area); + const partiallyVisible = partially && overlappingArea > 0; + return (partiallyVisible || + overlappingArea >= area.width * area.height || + overlappingArea >= nodeRect.width * nodeRect.height); + }, + updateNode, + updateNodeData: (id, dataUpdate, options = { replace: false }) => { + updateNode(id, (node) => { + const nextData = typeof dataUpdate === 'function' ? dataUpdate(node) : dataUpdate; + return options.replace ? { ...node, data: nextData } : { ...node, data: { ...node.data, ...nextData } }; + }, options); + }, + updateEdge, + updateEdgeData: (id, dataUpdate, options = { replace: false }) => { + updateEdge(id, (edge) => { + const nextData = typeof dataUpdate === 'function' ? dataUpdate(edge) : dataUpdate; + return options.replace ? { ...edge, data: nextData } : { ...edge, data: { ...edge.data, ...nextData } }; + }, options); + }, + getNodesBounds: (nodes) => { + const { nodeLookup, nodeOrigin } = store.getState(); + return getNodesBounds(nodes, { nodeLookup, nodeOrigin }); + }, + getHandleConnections: ({ type, id, nodeId }) => Array.from(store + .getState() + .connectionLookup.get(`${nodeId}-${type}${id ? `-${id}` : ''}`) + ?.values() ?? []), + getNodeConnections: ({ type, handleId, nodeId }) => Array.from(store + .getState() + .connectionLookup.get(`${nodeId}${type ? (handleId ? `-${type}-${handleId}` : `-${type}`) : ''}`) + ?.values() ?? []), + fitView: async (options) => { + // We either create a new Promise or reuse the existing one + // Even if fitView is called multiple times in a row, we only end up with a single Promise + const fitViewResolver = store.getState().fitViewResolver ?? withResolvers(); + // We schedule a fitView by setting fitViewQueued and triggering a setNodes + store.setState({ fitViewQueued: true, fitViewOptions: options, fitViewResolver }); + batchContext.nodeQueue.push((nodes) => [...nodes]); + return fitViewResolver.promise; + }, + }; + }, []); + return useMemo(() => { + return { + ...generalHelper, + ...viewportHelper, + viewportInitialized, + }; + }, [viewportInitialized]); +} + +const selected = (item) => item.selected; +const win$1 = typeof window !== 'undefined' ? window : undefined; +/** + * Hook for handling global key events. + * + * @internal + */ +function useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode, }) { + const store = useStoreApi(); + const { deleteElements } = useReactFlow(); + const deleteKeyPressed = useKeyPress(deleteKeyCode, { actInsideInputWithModifier: false }); + const multiSelectionKeyPressed = useKeyPress(multiSelectionKeyCode, { target: win$1 }); + useEffect(() => { + if (deleteKeyPressed) { + const { edges, nodes } = store.getState(); + deleteElements({ nodes: nodes.filter(selected), edges: edges.filter(selected) }); + store.setState({ nodesSelectionActive: false }); + } + }, [deleteKeyPressed]); + useEffect(() => { + store.setState({ multiSelectionActive: multiSelectionKeyPressed }); + }, [multiSelectionKeyPressed]); +} + +/** + * Hook for handling resize events. + * + * @internal + */ +function useResizeHandler(domNode) { + const store = useStoreApi(); + useEffect(() => { + const updateDimensions = () => { + if (!domNode.current || !(domNode.current.checkVisibility?.() ?? true)) { + return false; + } + const size = getDimensions(domNode.current); + if (size.height === 0 || size.width === 0) { + store.getState().onError?.('004', errorMessages['error004']()); + } + store.setState({ width: size.width || 500, height: size.height || 500 }); + }; + if (domNode.current) { + updateDimensions(); + window.addEventListener('resize', updateDimensions); + const resizeObserver = new ResizeObserver(() => updateDimensions()); + resizeObserver.observe(domNode.current); + return () => { + window.removeEventListener('resize', updateDimensions); + if (resizeObserver && domNode.current) { + resizeObserver.unobserve(domNode.current); + } + }; + } + }, []); +} + +const containerStyle = { + position: 'absolute', + width: '100%', + height: '100%', + top: 0, + left: 0, +}; + +const selector$i = (s) => ({ + userSelectionActive: s.userSelectionActive, + lib: s.lib, + connectionInProgress: s.connection.inProgress, +}); +function ZoomPane({ onPaneContextMenu, zoomOnScroll = true, zoomOnPinch = true, panOnScroll = false, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = true, panOnDrag = true, defaultViewport, translateExtent, minZoom, maxZoom, zoomActivationKeyCode, preventScrolling = true, children, noWheelClassName, noPanClassName, onViewportChange, isControlledViewport, paneClickDistance, selectionOnDrag, }) { + const store = useStoreApi(); + const zoomPane = useRef(null); + const { userSelectionActive, lib, connectionInProgress } = useStore(selector$i, shallow); + const zoomActivationKeyPressed = useKeyPress(zoomActivationKeyCode); + const panZoom = useRef(); + useResizeHandler(zoomPane); + const onTransformChange = useCallback((transform) => { + onViewportChange?.({ x: transform[0], y: transform[1], zoom: transform[2] }); + if (!isControlledViewport) { + store.setState({ transform }); + } + }, [onViewportChange, isControlledViewport]); + useEffect(() => { + if (zoomPane.current) { + panZoom.current = XYPanZoom({ + domNode: zoomPane.current, + minZoom, + maxZoom, + translateExtent, + viewport: defaultViewport, + onDraggingChange: (paneDragging) => store.setState((prevState) => prevState.paneDragging === paneDragging ? prevState : { paneDragging }), + onPanZoomStart: (event, vp) => { + const { onViewportChangeStart, onMoveStart } = store.getState(); + onMoveStart?.(event, vp); + onViewportChangeStart?.(vp); + }, + onPanZoom: (event, vp) => { + const { onViewportChange, onMove } = store.getState(); + onMove?.(event, vp); + onViewportChange?.(vp); + }, + onPanZoomEnd: (event, vp) => { + const { onViewportChangeEnd, onMoveEnd } = store.getState(); + onMoveEnd?.(event, vp); + onViewportChangeEnd?.(vp); + }, + }); + const { x, y, zoom } = panZoom.current.getViewport(); + store.setState({ + panZoom: panZoom.current, + transform: [x, y, zoom], + domNode: zoomPane.current.closest('.react-flow'), + }); + return () => { + panZoom.current?.destroy(); + }; + } + }, []); + useEffect(() => { + panZoom.current?.update({ + onPaneContextMenu, + zoomOnScroll, + zoomOnPinch, + panOnScroll, + panOnScrollSpeed, + panOnScrollMode, + zoomOnDoubleClick, + panOnDrag, + zoomActivationKeyPressed, + preventScrolling, + noPanClassName, + userSelectionActive, + noWheelClassName, + lib, + onTransformChange, + connectionInProgress, + selectionOnDrag, + paneClickDistance, + }); + }, [ + onPaneContextMenu, + zoomOnScroll, + zoomOnPinch, + panOnScroll, + panOnScrollSpeed, + panOnScrollMode, + zoomOnDoubleClick, + panOnDrag, + zoomActivationKeyPressed, + preventScrolling, + noPanClassName, + userSelectionActive, + noWheelClassName, + lib, + onTransformChange, + connectionInProgress, + selectionOnDrag, + paneClickDistance, + ]); + return (jsx("div", { className: "react-flow__renderer", ref: zoomPane, style: containerStyle, children: children })); +} + +const selector$h = (s) => ({ + userSelectionActive: s.userSelectionActive, + userSelectionRect: s.userSelectionRect, +}); +function UserSelection() { + const { userSelectionActive, userSelectionRect } = useStore(selector$h, shallow); + const isActive = userSelectionActive && userSelectionRect; + if (!isActive) { + return null; + } + return (jsx("div", { className: "react-flow__selection react-flow__container", style: { + width: userSelectionRect.width, + height: userSelectionRect.height, + transform: `translate(${userSelectionRect.x}px, ${userSelectionRect.y}px)`, + } })); +} + +const wrapHandler = (handler, containerRef) => { + return (event) => { + if (event.target !== containerRef.current) { + return; + } + handler?.(event); + }; +}; +const selector$g = (s) => ({ + userSelectionActive: s.userSelectionActive, + elementsSelectable: s.elementsSelectable, + dragging: s.paneDragging, + panBy: s.panBy, + autoPanSpeed: s.autoPanSpeed, +}); +function Pane({ isSelecting, selectionKeyPressed, selectionMode = SelectionMode.Full, panOnDrag, autoPanOnSelection, paneClickDistance, selectionOnDrag, onSelectionStart, onSelectionEnd, onPaneClick, onPaneContextMenu, onPaneScroll, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, children, }) { + const autoPanId = useRef(0); + const store = useStoreApi(); + const { userSelectionActive, elementsSelectable, dragging, panBy, autoPanSpeed } = useStore(selector$g, shallow); + const isSelectionEnabled = elementsSelectable && (isSelecting || userSelectionActive); + const container = useRef(null); + const containerBounds = useRef(); + const selectedNodeIds = useRef(new Set()); + const selectedEdgeIds = useRef(new Set()); + const connectionEndedOnPane = useRef(false); + // Used to prevent click events when the user lets go of the selectionKey during a selection + const selectionInProgress = useRef(false); + // Used for auto pan when approaching the edges of the container during selection + const position = useRef({ x: 0, y: 0 }); + const autoPanStarted = useRef(false); + const onClick = (event) => { + // We prevent click events when the user let go of the selectionKey during a selection + // We also prevent click events when a connection is in progress + if (selectionInProgress.current || connectionEndedOnPane.current || store.getState().connection.inProgress) { + selectionInProgress.current = false; + connectionEndedOnPane.current = false; + return; + } + onPaneClick?.(event); + store.getState().resetSelectedElements(); + store.setState({ nodesSelectionActive: false }); + }; + const onContextMenu = (event) => { + if (Array.isArray(panOnDrag) && panOnDrag?.includes(2)) { + event.preventDefault(); + return; + } + onPaneContextMenu?.(event); + }; + const onWheel = onPaneScroll ? (event) => onPaneScroll(event) : undefined; + const onClickCapture = (event) => { + if (selectionInProgress.current) { + event.stopPropagation(); + selectionInProgress.current = false; + } + }; + // We are using capture here in order to prevent other pointer events + // to be able to create a selection above a node or an edge + const onPointerDownCapture = (event) => { + const { domNode, transform } = store.getState(); + containerBounds.current = domNode?.getBoundingClientRect(); + if (!containerBounds.current) + return; + const eventTargetIsContainer = event.target === container.current; + // if a child element has the 'nokey' class, we don't want to swallow the event and don't start a selection + const isNoKeyEvent = !eventTargetIsContainer && !!event.target.closest('.nokey'); + const isSelectionActive = (selectionOnDrag && eventTargetIsContainer) || selectionKeyPressed; + if (isNoKeyEvent || !isSelecting || !isSelectionActive || event.button !== 0 || !event.isPrimary) { + return; + } + event.target?.setPointerCapture?.(event.pointerId); + selectionInProgress.current = false; + const { x, y } = getEventPosition(event.nativeEvent, containerBounds.current); + const userSelectionStartPosition = pointToRendererPoint({ x, y }, transform); + store.setState({ + userSelectionRect: { + width: 0, + height: 0, + startX: userSelectionStartPosition.x, + startY: userSelectionStartPosition.y, + x, + y, + }, + }); + if (!eventTargetIsContainer) { + event.stopPropagation(); + event.preventDefault(); + } + }; + // We commit the user selection rectangle to the store on auto-panning or pointer move during selection. + function commitUserSelectionRect(mouseX, mouseY) { + const { userSelectionRect } = store.getState(); + if (!userSelectionRect) { + return; + } + const { transform, nodeLookup, edgeLookup, connectionLookup, triggerNodeChanges, triggerEdgeChanges, defaultEdgeOptions, } = store.getState(); + const userStartPosition = { x: userSelectionRect.startX, y: userSelectionRect.startY }; + const { x: screenStartX, y: screenStartY } = rendererPointToPoint(userStartPosition, transform); + // This has to be in screen coordinates, not in flow coordinates. + // We store the selection rectangle in userSelectionStartPosition coordinates to be able to + // fix the start position of the selection rectangle when we are auto-panning. + const nextUserSelectRect = { + startX: userStartPosition.x, + startY: userStartPosition.y, + x: mouseX < screenStartX ? mouseX : screenStartX, + y: mouseY < screenStartY ? mouseY : screenStartY, + width: Math.abs(mouseX - screenStartX), + height: Math.abs(mouseY - screenStartY), + }; + const prevSelectedNodeIds = selectedNodeIds.current; + const prevSelectedEdgeIds = selectedEdgeIds.current; + selectedNodeIds.current = new Set(getNodesInside(nodeLookup, nextUserSelectRect, transform, selectionMode === SelectionMode.Partial, true).map((node) => node.id)); + selectedEdgeIds.current = new Set(); + const edgesSelectable = defaultEdgeOptions?.selectable ?? true; + // We look for all edges connected to the selected nodes + for (const nodeId of selectedNodeIds.current) { + const connections = connectionLookup.get(nodeId); + if (!connections) + continue; + for (const { edgeId } of connections.values()) { + const edge = edgeLookup.get(edgeId); + if (edge && (edge.selectable ?? edgesSelectable)) { + selectedEdgeIds.current.add(edgeId); + } + } + } + if (!areSetsEqual(prevSelectedNodeIds, selectedNodeIds.current)) { + const changes = getSelectionChanges(nodeLookup, selectedNodeIds.current, true); + triggerNodeChanges(changes); + } + if (!areSetsEqual(prevSelectedEdgeIds, selectedEdgeIds.current)) { + const changes = getSelectionChanges(edgeLookup, selectedEdgeIds.current); + triggerEdgeChanges(changes); + } + store.setState({ + userSelectionRect: nextUserSelectRect, + userSelectionActive: true, + nodesSelectionActive: false, + }); + } + function autoPan() { + if (!autoPanOnSelection || !containerBounds.current) { + return; + } + const [x, y] = calcAutoPan(position.current, containerBounds.current, autoPanSpeed); + panBy({ x, y }).then((panned) => { + if (!selectionInProgress.current || !panned) { + autoPanId.current = requestAnimationFrame(autoPan); + return; + } + const { x: mx, y: my } = position.current; + commitUserSelectionRect(mx, my); + autoPanId.current = requestAnimationFrame(autoPan); + }); + } + const cleanupAutoPan = () => { + cancelAnimationFrame(autoPanId.current); + autoPanId.current = 0; + autoPanStarted.current = false; + }; + useEffect(() => { + return () => cleanupAutoPan(); + }, []); + const onPointerMove = (event) => { + const { userSelectionRect, transform, resetSelectedElements } = store.getState(); + if (!containerBounds.current || !userSelectionRect) { + return; + } + const { x: mouseX, y: mouseY } = getEventPosition(event.nativeEvent, containerBounds.current); + position.current = { x: mouseX, y: mouseY }; + const screenStart = rendererPointToPoint({ x: userSelectionRect.startX, y: userSelectionRect.startY }, transform); + if (!selectionInProgress.current) { + const requiredDistance = selectionKeyPressed ? 0 : paneClickDistance; + const distance = Math.hypot(mouseX - screenStart.x, mouseY - screenStart.y); + if (distance <= requiredDistance) { + return; + } + resetSelectedElements(); + onSelectionStart?.(event); + } + selectionInProgress.current = true; + if (!autoPanStarted.current) { + autoPan(); + autoPanStarted.current = true; + } + commitUserSelectionRect(mouseX, mouseY); + }; + const onPointerUp = (event) => { + if (!isSelectionEnabled) { + if (event.target === container.current && store.getState().connection.inProgress) { + connectionEndedOnPane.current = true; + } + return; + } + if (event.button !== 0) { + return; + } + event.target?.releasePointerCapture?.(event.pointerId); + /* + * We only want to trigger click functions when in selection mode if + * the user did not move the mouse. + */ + if (!userSelectionActive && event.target === container.current && store.getState().userSelectionRect) { + onClick?.(event); + } + store.setState({ + userSelectionActive: false, + userSelectionRect: null, + }); + if (selectionInProgress.current) { + onSelectionEnd?.(event); + store.setState({ + nodesSelectionActive: selectedNodeIds.current.size > 0, + }); + } + cleanupAutoPan(); + }; + const onPointerCancel = (event) => { + event.target?.releasePointerCapture?.(event.pointerId); + cleanupAutoPan(); + }; + const draggable = panOnDrag === true || (Array.isArray(panOnDrag) && panOnDrag.includes(0)); + return (jsxs("div", { className: cc(['react-flow__pane', { draggable, dragging, selection: isSelecting }]), onClick: isSelectionEnabled ? undefined : wrapHandler(onClick, container), onContextMenu: wrapHandler(onContextMenu, container), onWheel: wrapHandler(onWheel, container), onPointerEnter: isSelectionEnabled ? undefined : onPaneMouseEnter, onPointerMove: isSelectionEnabled ? onPointerMove : onPaneMouseMove, onPointerUp: onPointerUp, onPointerCancel: isSelectionEnabled ? onPointerCancel : undefined, onPointerDownCapture: isSelectionEnabled ? onPointerDownCapture : undefined, onClickCapture: isSelectionEnabled ? onClickCapture : undefined, onPointerLeave: onPaneMouseLeave, ref: container, style: containerStyle, children: [children, jsx(UserSelection, {})] })); +} + +/* + * this handler is called by + * 1. the click handler when node is not draggable or selectNodesOnDrag = false + * or + * 2. the on drag start handler when node is draggable and selectNodesOnDrag = true + */ +function handleNodeClick({ id, store, unselect = false, nodeRef, }) { + const { addSelectedNodes, unselectNodesAndEdges, multiSelectionActive, nodeLookup, onError } = store.getState(); + const node = nodeLookup.get(id); + if (!node) { + onError?.('012', errorMessages['error012'](id)); + return; + } + store.setState({ nodesSelectionActive: false }); + if (!node.selected) { + addSelectedNodes([id]); + } + else if (unselect || (node.selected && multiSelectionActive)) { + unselectNodesAndEdges({ nodes: [node], edges: [] }); + requestAnimationFrame(() => nodeRef?.current?.blur()); + } +} + +/** + * Hook for calling XYDrag helper from @xyflow/system. + * + * @internal + */ +function useDrag({ nodeRef, disabled = false, noDragClassName, handleSelector, nodeId, isSelectable, nodeClickDistance, }) { + const store = useStoreApi(); + const [dragging, setDragging] = useState(false); + const xyDrag = useRef(); + useEffect(() => { + if (disabled) { + return; + } + xyDrag.current = XYDrag({ + getStoreItems: () => store.getState(), + onNodeMouseDown: (id) => { + handleNodeClick({ + id, + store, + nodeRef, + }); + }, + onDragStart: () => { + setDragging(true); + }, + onDragStop: () => { + setDragging(false); + }, + }); + return () => { + xyDrag.current?.destroy(); + xyDrag.current = undefined; + }; + }, [disabled, store, nodeRef]); + useEffect(() => { + if (disabled || !nodeRef.current || !xyDrag.current) { + return; + } + xyDrag.current.update({ + noDragClassName, + handleSelector, + domNode: nodeRef.current, + isSelectable, + nodeId, + nodeClickDistance, + }); + }, [noDragClassName, handleSelector, disabled, isSelectable, nodeRef, nodeId, nodeClickDistance]); + return dragging; +} + +const selectedAndDraggable = (nodesDraggable) => (n) => n.selected && (n.draggable || (nodesDraggable && typeof n.draggable === 'undefined')); +/** + * Hook for updating node positions by passing a direction and factor + * + * @internal + * @returns function for updating node positions + */ +function useMoveSelectedNodes() { + const store = useStoreApi(); + const moveSelectedNodes = useCallback((params) => { + const { nodeExtent, snapToGrid, snapGrid, nodesDraggable, onError, updateNodePositions, nodeLookup, nodeOrigin } = store.getState(); + const nodeUpdates = new Map(); + const isSelected = selectedAndDraggable(nodesDraggable); + /* + * by default a node moves 5px on each key press + * if snap grid is enabled, we use that for the velocity + */ + const xVelo = snapToGrid ? snapGrid[0] : 5; + const yVelo = snapToGrid ? snapGrid[1] : 5; + const xDiff = params.direction.x * xVelo * params.factor; + const yDiff = params.direction.y * yVelo * params.factor; + for (const [, node] of nodeLookup) { + if (!isSelected(node)) { + continue; + } + let nextPosition = { + x: node.internals.positionAbsolute.x + xDiff, + y: node.internals.positionAbsolute.y + yDiff, + }; + if (snapToGrid) { + nextPosition = snapPosition(nextPosition, snapGrid); + } + const { position, positionAbsolute } = calculateNodePosition({ + nodeId: node.id, + nextPosition, + nodeLookup, + nodeExtent, + nodeOrigin, + onError, + }); + node.position = position; + node.internals.positionAbsolute = positionAbsolute; + nodeUpdates.set(node.id, node); + } + updateNodePositions(nodeUpdates); + }, []); + return moveSelectedNodes; +} + +const NodeIdContext = createContext(null); +const Provider = NodeIdContext.Provider; +NodeIdContext.Consumer; +/** + * You can use this hook to get the id of the node it is used inside. It is useful + * if you need the node's id deeper in the render tree but don't want to manually + * drill down the id as a prop. + * + * @public + * @returns The id for a node in the flow. + * + * @example + *```jsx + *import { useNodeId } from '@xyflow/react'; + * + *export default function CustomNode() { + * return ( + *
+ * This node has an id of + * + *
+ * ); + *} + * + *function NodeIdDisplay() { + * const nodeId = useNodeId(); + * + * return {nodeId}; + *} + *``` + */ +const useNodeId = () => { + const nodeId = useContext(NodeIdContext); + return nodeId; +}; + +const selector$f = (s) => ({ + connectOnClick: s.connectOnClick, + noPanClassName: s.noPanClassName, + rfId: s.rfId, +}); +const HandleConfigContext = createContext(null); +/* + * `connectOnClick`, `noPanClassName` and `rfId` are the same for every handle, so they are + * shared through context from a single store subscription. + */ +function HandleConfigProvider({ children }) { + const config = useStore(selector$f, shallow); + return jsx(HandleConfigContext.Provider, { value: config, children: children }); +} +function useHandleConfig() { + const config = useContext(HandleConfigContext); + if (!config) { + throw new Error('useHandleConfig must be used within a HandleConfigProvider'); + } + return config; +} + +/* + * While no connection is in progress every handle has this same state, so we return a + * shared reference rather than allocating + shallow-comparing one per handle on every + * store update. `isPossibleEndHandle` matches what the selector computes when idle. + */ +const idleConnectingState = { + connectingFrom: false, + connectingTo: false, + clickConnecting: false, + isPossibleEndHandle: true, + connectionInProcess: false, + clickConnectionInProcess: false, + valid: false, +}; +const connectingSelector = (nodeId, handleId, type) => (state) => { + const { connectionClickStartHandle: clickHandle, connectionMode, connection } = state; + const { fromHandle, toHandle, isValid } = connection; + if (!fromHandle && !clickHandle) { + return idleConnectingState; + } + const connectingTo = toHandle?.nodeId === nodeId && toHandle?.id === handleId && toHandle?.type === type; + return { + connectingFrom: fromHandle?.nodeId === nodeId && fromHandle?.id === handleId && fromHandle?.type === type, + connectingTo, + clickConnecting: clickHandle?.nodeId === nodeId && clickHandle?.id === handleId && clickHandle?.type === type, + isPossibleEndHandle: connectionMode === ConnectionMode.Strict + ? fromHandle?.type !== type + : nodeId !== fromHandle?.nodeId || handleId !== fromHandle?.id, + connectionInProcess: !!fromHandle, + clickConnectionInProcess: !!clickHandle, + valid: connectingTo && isValid, + }; +}; +function HandleComponent({ type = 'source', position = Position.Top, isValidConnection, isConnectable = true, isConnectableStart = true, isConnectableEnd = true, id, onConnect, children, className, onMouseDown, onTouchStart, ...rest }, ref) { + const handleId = id || null; + const isTarget = type === 'target'; + const store = useStoreApi(); + const nodeId = useNodeId(); + const { connectOnClick, noPanClassName, rfId } = useHandleConfig(); + const { connectingFrom, connectingTo, clickConnecting, isPossibleEndHandle, connectionInProcess, clickConnectionInProcess, valid, } = useStore(connectingSelector(nodeId, handleId, type), shallow); + if (!nodeId) { + store.getState().onError?.('010', errorMessages['error010']()); + } + const onConnectExtended = (params) => { + const { defaultEdgeOptions, onConnect: onConnectAction, hasDefaultEdges } = store.getState(); + const edgeParams = { + ...defaultEdgeOptions, + ...params, + }; + if (hasDefaultEdges) { + const { edges, setEdges, onError } = store.getState(); + setEdges(addEdge(edgeParams, edges, { onError })); + } + onConnectAction?.(edgeParams); + onConnect?.(edgeParams); + }; + const onPointerDown = (event) => { + if (!nodeId) { + return; + } + const isMouseTriggered = isMouseEvent(event.nativeEvent); + if (isConnectableStart && + ((isMouseTriggered && event.button === 0) || !isMouseTriggered)) { + const currentStore = store.getState(); + XYHandle.onPointerDown(event.nativeEvent, { + handleDomNode: event.currentTarget, + autoPanOnConnect: currentStore.autoPanOnConnect, + connectionMode: currentStore.connectionMode, + connectionRadius: currentStore.connectionRadius, + domNode: currentStore.domNode, + nodeLookup: currentStore.nodeLookup, + lib: currentStore.lib, + isTarget, + handleId, + nodeId, + flowId: currentStore.rfId, + panBy: currentStore.panBy, + cancelConnection: currentStore.cancelConnection, + onConnectStart: currentStore.onConnectStart, + onConnectEnd: (...args) => store.getState().onConnectEnd?.(...args), + updateConnection: currentStore.updateConnection, + onConnect: onConnectExtended, + isValidConnection: isValidConnection || ((...args) => store.getState().isValidConnection?.(...args) ?? true), + getTransform: () => store.getState().transform, + getFromHandle: () => store.getState().connection.fromHandle, + autoPanSpeed: currentStore.autoPanSpeed, + dragThreshold: currentStore.connectionDragThreshold, + }); + } + if (isMouseTriggered) { + onMouseDown?.(event); + } + else { + onTouchStart?.(event); + } + }; + const onClick = (event) => { + const { onClickConnectStart, onClickConnectEnd, connectionClickStartHandle, connectionMode, isValidConnection: isValidConnectionStore, lib, rfId: flowId, nodeLookup, connection: connectionState, } = store.getState(); + if (!nodeId || (!connectionClickStartHandle && !isConnectableStart)) { + return; + } + if (!connectionClickStartHandle) { + onClickConnectStart?.(event.nativeEvent, { nodeId, handleId, handleType: type }); + store.setState({ connectionClickStartHandle: { nodeId, type, id: handleId } }); + return; + } + const doc = getHostForElement(event.target); + const isValidConnectionHandler = isValidConnection || isValidConnectionStore; + const { connection, isValid } = XYHandle.isValid(event.nativeEvent, { + handle: { + nodeId, + id: handleId, + type, + }, + connectionMode, + fromNodeId: connectionClickStartHandle.nodeId, + fromHandleId: connectionClickStartHandle.id || null, + fromType: connectionClickStartHandle.type, + isValidConnection: isValidConnectionHandler, + flowId, + doc, + lib, + nodeLookup, + }); + if (isValid && connection) { + onConnectExtended(connection); + } + const connectionClone = structuredClone(connectionState); + delete connectionClone.inProgress; + connectionClone.toPosition = connectionClone.toHandle ? connectionClone.toHandle.position : null; + onClickConnectEnd?.(event, connectionClone); + store.setState({ connectionClickStartHandle: null }); + }; + return (jsx("div", { "data-handleid": handleId, "data-nodeid": nodeId, "data-handlepos": position, "data-id": `${rfId}-${nodeId}-${handleId}-${type}`, className: cc([ + 'react-flow__handle', + `react-flow__handle-${position}`, + 'nodrag', + noPanClassName, + className, + { + source: !isTarget, + target: isTarget, + connectable: isConnectable, + connectablestart: isConnectableStart, + connectableend: isConnectableEnd, + clickconnecting: clickConnecting, + connectingfrom: connectingFrom, + connectingto: connectingTo, + valid, + /* + * shows where you can start a connection from + * and where you can end it while connecting + */ + connectionindicator: isConnectable && + (!connectionInProcess || isPossibleEndHandle) && + (connectionInProcess || clickConnectionInProcess ? isConnectableEnd : isConnectableStart), + }, + ]), onMouseDown: onPointerDown, onTouchStart: onPointerDown, onClick: connectOnClick ? onClick : undefined, ref: ref, ...rest, children: children })); +} +/** + * The `` component is used in your [custom nodes](/learn/customization/custom-nodes) + * to define connection points. + * + *@public + * + *@example + * + *```jsx + *import { Handle, Position } from '@xyflow/react'; + * + *export function CustomNode({ data }) { + * return ( + * <> + *
+ * {data.label} + *
+ * + * + * + * + * ); + *}; + *``` + */ +const Handle = memo(fixedForwardRef(HandleComponent)); + +function InputNode({ data, isConnectable, sourcePosition = Position.Bottom }) { + return (jsxs(Fragment, { children: [data?.label, jsx(Handle, { type: "source", position: sourcePosition, isConnectable: isConnectable })] })); +} + +function DefaultNode({ data, isConnectable, targetPosition = Position.Top, sourcePosition = Position.Bottom, }) { + return (jsxs(Fragment, { children: [jsx(Handle, { type: "target", position: targetPosition, isConnectable: isConnectable }), data?.label, jsx(Handle, { type: "source", position: sourcePosition, isConnectable: isConnectable })] })); +} + +function GroupNode() { + return null; +} + +function OutputNode({ data, isConnectable, targetPosition = Position.Top }) { + return (jsxs(Fragment, { children: [jsx(Handle, { type: "target", position: targetPosition, isConnectable: isConnectable }), data?.label] })); +} + +const arrowKeyDiffs = { + ArrowUp: { x: 0, y: -1 }, + ArrowDown: { x: 0, y: 1 }, + ArrowLeft: { x: -1, y: 0 }, + ArrowRight: { x: 1, y: 0 }, +}; +const builtinNodeTypes = { + input: InputNode, + default: DefaultNode, + output: OutputNode, + group: GroupNode, +}; +function getNodeInlineStyleDimensions(node) { + if (node.internals.handleBounds === undefined) { + return { + width: node.width ?? node.initialWidth ?? node.style?.width, + height: node.height ?? node.initialHeight ?? node.style?.height, + }; + } + return { + width: node.width ?? node.style?.width, + height: node.height ?? node.style?.height, + }; +} + +const selector$e = (s) => { + const { width, height, x, y } = getInternalNodesBounds(s.nodeLookup, { + filter: (node) => !!node.selected, + }); + return { + width: isNumeric(width) ? width : null, + height: isNumeric(height) ? height : null, + userSelectionActive: s.userSelectionActive, + transformString: `translate(${s.transform[0]}px,${s.transform[1]}px) scale(${s.transform[2]}) translate(${x}px,${y}px)`, + }; +}; +function NodesSelection({ onSelectionContextMenu, noPanClassName, disableKeyboardA11y, }) { + const store = useStoreApi(); + const { width, height, transformString, userSelectionActive } = useStore(selector$e, shallow); + const moveSelectedNodes = useMoveSelectedNodes(); + const nodeRef = useRef(null); + useEffect(() => { + if (!disableKeyboardA11y) { + nodeRef.current?.focus({ + preventScroll: true, + }); + } + }, [disableKeyboardA11y]); + const shouldRender = !userSelectionActive && width !== null && height !== null; + useDrag({ + nodeRef, + disabled: !shouldRender, + }); + if (!shouldRender) { + return null; + } + const onContextMenu = onSelectionContextMenu + ? (event) => { + const selectedNodes = store.getState().nodes.filter((n) => n.selected); + onSelectionContextMenu(event, selectedNodes); + } + : undefined; + const onKeyDown = (event) => { + if (Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key)) { + event.preventDefault(); + moveSelectedNodes({ + direction: arrowKeyDiffs[event.key], + factor: event.shiftKey ? 4 : 1, + }); + } + }; + return (jsx("div", { className: cc(['react-flow__nodesselection', 'react-flow__container', noPanClassName]), style: { + transform: transformString, + }, children: jsx("div", { ref: nodeRef, className: "react-flow__nodesselection-rect", onContextMenu: onContextMenu, tabIndex: disableKeyboardA11y ? undefined : -1, onKeyDown: disableKeyboardA11y ? undefined : onKeyDown, style: { + width, + height, + } }) })); +} + +const win = typeof window !== 'undefined' ? window : undefined; +const selector$d = (s) => { + return { nodesSelectionActive: s.nodesSelectionActive, userSelectionActive: s.userSelectionActive }; +}; +function FlowRendererComponent({ children, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, paneClickDistance, deleteKeyCode, selectionKeyCode, selectionOnDrag, selectionMode, onSelectionStart, onSelectionEnd, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, elementsSelectable, zoomOnScroll, zoomOnPinch, panOnScroll: _panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag: _panOnDrag, autoPanOnSelection, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, onSelectionContextMenu, noWheelClassName, noPanClassName, disableKeyboardA11y, onViewportChange, isControlledViewport, }) { + const { nodesSelectionActive, userSelectionActive } = useStore(selector$d, shallow); + const selectionKeyPressed = useKeyPress(selectionKeyCode, { target: win }); + const panActivationKeyPressed = useKeyPress(panActivationKeyCode, { target: win }); + const panOnDrag = panActivationKeyPressed || _panOnDrag; + const panOnScroll = panActivationKeyPressed || _panOnScroll; + const _selectionOnDrag = selectionOnDrag && panOnDrag !== true; + const isSelecting = selectionKeyPressed || userSelectionActive || _selectionOnDrag; + useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode }); + return (jsx(ZoomPane, { 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, onViewportChange: onViewportChange, isControlledViewport: isControlledViewport, paneClickDistance: paneClickDistance, selectionOnDrag: _selectionOnDrag, children: jsxs(Pane, { onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneContextMenu: onPaneContextMenu, onPaneScroll: onPaneScroll, panOnDrag: panOnDrag, autoPanOnSelection: autoPanOnSelection, isSelecting: !!isSelecting, selectionMode: selectionMode, selectionKeyPressed: selectionKeyPressed, paneClickDistance: paneClickDistance, selectionOnDrag: _selectionOnDrag, children: [children, nodesSelectionActive && (jsx(NodesSelection, { onSelectionContextMenu: onSelectionContextMenu, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y }))] }) })); +} +FlowRendererComponent.displayName = 'FlowRenderer'; +const FlowRenderer = memo(FlowRendererComponent); + +const selector$c = (onlyRenderVisible) => (s) => { + return onlyRenderVisible + ? getNodesInside(s.nodeLookup, { x: 0, y: 0, width: s.width, height: s.height }, s.transform, true).map((node) => node.id) + : Array.from(s.nodeLookup.keys()); +}; +/** + * Hook for getting the visible node ids from the store. + * + * @internal + * @param onlyRenderVisible + * @returns array with visible node ids + */ +function useVisibleNodeIds(onlyRenderVisible) { + const nodeIds = useStore(useCallback(selector$c(onlyRenderVisible), [onlyRenderVisible]), shallow); + return nodeIds; +} + +const selector$b = (s) => s.updateNodeInternals; +function useResizeObserver() { + const updateNodeInternals = useStore(selector$b); + const [resizeObserver] = useState(() => { + if (typeof ResizeObserver === 'undefined') { + return null; + } + return new ResizeObserver((entries) => { + const updates = new Map(); + entries.forEach((entry) => { + const id = entry.target.getAttribute('data-id'); + updates.set(id, { + id, + nodeElement: entry.target, + force: true, + }); + }); + updateNodeInternals(updates); + }); + }); + useEffect(() => { + return () => { + resizeObserver?.disconnect(); + }; + }, [resizeObserver]); + return resizeObserver; +} + +/** + * Hook to handle the resize observation + internal updates for the passed node. + * + * @internal + * @returns nodeRef - reference to the node element + */ +function useNodeObserver({ node, nodeType, hasDimensions, resizeObserver, }) { + const store = useStoreApi(); + const nodeRef = useRef(null); + const observedNode = useRef(null); + const prevSourcePosition = useRef(node.sourcePosition); + const prevTargetPosition = useRef(node.targetPosition); + const prevType = useRef(nodeType); + const isInitialized = hasDimensions && !!node.internals.handleBounds; + useEffect(() => { + if (nodeRef.current && !node.hidden && (!isInitialized || observedNode.current !== nodeRef.current)) { + if (observedNode.current) { + resizeObserver?.unobserve(observedNode.current); + } + resizeObserver?.observe(nodeRef.current); + observedNode.current = nodeRef.current; + } + }, [isInitialized, node.hidden]); + useEffect(() => { + return () => { + if (observedNode.current) { + resizeObserver?.unobserve(observedNode.current); + observedNode.current = null; + } + }; + }, []); + useEffect(() => { + if (nodeRef.current) { + /* + * when the user programmatically changes the source or handle position, we need to update the internals + * to make sure the edges are updated correctly + */ + const typeChanged = prevType.current !== nodeType; + const sourcePosChanged = prevSourcePosition.current !== node.sourcePosition; + const targetPosChanged = prevTargetPosition.current !== node.targetPosition; + if (typeChanged || sourcePosChanged || targetPosChanged) { + prevType.current = nodeType; + prevSourcePosition.current = node.sourcePosition; + prevTargetPosition.current = node.targetPosition; + store + .getState() + .updateNodeInternals(new Map([[node.id, { id: node.id, nodeElement: nodeRef.current, force: true }]])); + } + } + }, [node.id, nodeType, node.sourcePosition, node.targetPosition]); + return nodeRef; +} + +function NodeWrapper({ id, onClick, onMouseEnter, onMouseMove, onMouseLeave, onContextMenu, onDoubleClick, nodesDraggable, elementsSelectable, nodesConnectable, nodesFocusable, resizeObserver, noDragClassName, noPanClassName, disableKeyboardA11y, rfId, nodeTypes, nodeClickDistance, onError, }) { + const { node, internals, isParent } = useStore((s) => { + const node = s.nodeLookup.get(id); + const isParent = s.parentLookup.has(id); + return { + node, + internals: node.internals, + isParent, + }; + }, shallow); + let nodeType = node.type || 'default'; + let NodeComponent = nodeTypes?.[nodeType] || builtinNodeTypes[nodeType]; + if (NodeComponent === undefined) { + onError?.('003', errorMessages['error003'](nodeType)); + nodeType = 'default'; + NodeComponent = nodeTypes?.['default'] || builtinNodeTypes.default; + } + const isDraggable = !!(node.draggable || (nodesDraggable && typeof node.draggable === 'undefined')); + const isSelectable = !!(node.selectable || (elementsSelectable && typeof node.selectable === 'undefined')); + const isConnectable = !!(node.connectable || (nodesConnectable && typeof node.connectable === 'undefined')); + const isFocusable = !!(node.focusable || (nodesFocusable && typeof node.focusable === 'undefined')); + const store = useStoreApi(); + const hasDimensions = nodeHasDimensions(node); + const nodeRef = useNodeObserver({ node, nodeType, hasDimensions, resizeObserver }); + const dragging = useDrag({ + nodeRef, + disabled: node.hidden || !isDraggable, + noDragClassName, + handleSelector: node.dragHandle, + nodeId: id, + isSelectable, + nodeClickDistance, + }); + const moveSelectedNodes = useMoveSelectedNodes(); + if (node.hidden) { + return null; + } + const nodeDimensions = getNodeDimensions(node); + const inlineDimensions = getNodeInlineStyleDimensions(node); + const hasPointerEvents = isSelectable || isDraggable || onClick || onMouseEnter || onMouseMove || onMouseLeave; + const onMouseEnterHandler = onMouseEnter + ? (event) => onMouseEnter(event, { ...internals.userNode }) + : undefined; + const onMouseMoveHandler = onMouseMove + ? (event) => onMouseMove(event, { ...internals.userNode }) + : undefined; + const onMouseLeaveHandler = onMouseLeave + ? (event) => onMouseLeave(event, { ...internals.userNode }) + : undefined; + const onContextMenuHandler = onContextMenu + ? (event) => onContextMenu(event, { ...internals.userNode }) + : undefined; + const onDoubleClickHandler = onDoubleClick + ? (event) => onDoubleClick(event, { ...internals.userNode }) + : undefined; + const onSelectNodeHandler = (event) => { + const { selectNodesOnDrag, nodeDragThreshold } = store.getState(); + if (isSelectable && (!selectNodesOnDrag || !isDraggable || nodeDragThreshold > 0)) { + /* + * this handler gets called by XYDrag on drag start when selectNodesOnDrag=true + * here we only need to call it when selectNodesOnDrag=false + */ + handleNodeClick({ + id, + store, + nodeRef, + }); + } + if (onClick) { + onClick(event, { ...internals.userNode }); + } + }; + const onKeyDown = (event) => { + if (isInputDOMNode(event.nativeEvent) || disableKeyboardA11y) { + return; + } + if (elementSelectionKeys.includes(event.key) && isSelectable) { + const unselect = event.key === 'Escape'; + handleNodeClick({ + id, + store, + unselect, + nodeRef, + }); + } + else if (isDraggable && node.selected && Object.prototype.hasOwnProperty.call(arrowKeyDiffs, event.key)) { + // prevent default scrolling behavior on arrow key press when node is moved + event.preventDefault(); + const { ariaLabelConfig } = store.getState(); + store.setState({ + ariaLiveMessage: ariaLabelConfig['node.a11yDescription.ariaLiveMessage']({ + direction: event.key.replace('Arrow', '').toLowerCase(), + x: ~~internals.positionAbsolute.x, + y: ~~internals.positionAbsolute.y, + }), + }); + moveSelectedNodes({ + direction: arrowKeyDiffs[event.key], + factor: event.shiftKey ? 4 : 1, + }); + } + }; + const onFocus = () => { + if (disableKeyboardA11y || !nodeRef.current?.matches(':focus-visible')) { + return; + } + const { transform, width, height, autoPanOnNodeFocus, setCenter } = store.getState(); + if (!autoPanOnNodeFocus) { + return; + } + const withinViewport = getNodesInside(new Map([[id, node]]), { x: 0, y: 0, width, height }, transform, true).length > 0; + if (!withinViewport) { + setCenter(node.position.x + nodeDimensions.width / 2, node.position.y + nodeDimensions.height / 2, { + zoom: transform[2], + }); + } + }; + return (jsx("div", { className: cc([ + 'react-flow__node', + `react-flow__node-${nodeType}`, + { + // this is overwritable by passing `nopan` as a class name + [noPanClassName]: isDraggable, + }, + node.className, + { + selected: node.selected, + selectable: isSelectable, + parent: isParent, + draggable: isDraggable, + dragging, + }, + ]), ref: nodeRef, style: { + zIndex: internals.z, + transform: `translate(${internals.positionAbsolute.x}px,${internals.positionAbsolute.y}px)`, + pointerEvents: hasPointerEvents ? 'all' : 'none', + visibility: hasDimensions ? 'visible' : 'hidden', + ...node.style, + ...inlineDimensions, + }, "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, onFocus: isFocusable ? onFocus : undefined, role: node.ariaRole ?? (isFocusable ? 'group' : undefined), "aria-roledescription": "node", "aria-describedby": disableKeyboardA11y ? undefined : `${ARIA_NODE_DESC_KEY}-${rfId}`, "aria-label": node.ariaLabel, ...node.domAttributes, children: jsx(Provider, { value: id, children: jsx(NodeComponent, { id: id, data: node.data, type: nodeType, positionAbsoluteX: internals.positionAbsolute.x, positionAbsoluteY: internals.positionAbsolute.y, selected: node.selected ?? false, selectable: isSelectable, draggable: isDraggable, deletable: node.deletable ?? true, isConnectable: isConnectable, sourcePosition: node.sourcePosition, targetPosition: node.targetPosition, dragging: dragging, dragHandle: node.dragHandle, zIndex: internals.z, parentId: node.parentId, ...nodeDimensions }) }) })); +} +var NodeWrapper$1 = memo(NodeWrapper); + +const selector$a = (s) => ({ + nodesConnectable: s.nodesConnectable, + nodesFocusable: s.nodesFocusable, + elementsSelectable: s.elementsSelectable, + onError: s.onError, +}); +function NodeRendererComponent(props) { + const { nodesConnectable, nodesFocusable, elementsSelectable, onError } = useStore(selector$a, shallow); + const nodeIds = useVisibleNodeIds(props.onlyRenderVisibleElements); + const resizeObserver = useResizeObserver(); + return (jsx("div", { className: "react-flow__nodes", style: containerStyle, children: nodeIds.map((nodeId) => { + return ( + /* + * The split of responsibilities between NodeRenderer and + * NodeComponentWrapper may appear weird. However, it’s designed to + * minimize the cost of updates when individual nodes change. + * + * For example, when you’re dragging a single node, that node gets + * updated multiple times per second. If `NodeRenderer` were to update + * every time, it would have to re-run the `nodes.map()` loop every + * time. This gets pricey with hundreds of nodes, especially if every + * loop cycle does more than just rendering a JSX element! + * + * As a result of this choice, we took the following implementation + * decisions: + * - NodeRenderer subscribes *only* to node IDs – and therefore + * rerender *only* when visible nodes are added or removed. + * - NodeRenderer performs all operations the result of which can be + * shared between nodes (such as creating the `ResizeObserver` + * instance, or subscribing to `selector`). This means extra prop + * drilling into `NodeComponentWrapper`, but it means we need to run + * these operations only once – instead of once per node. + * - Any operations that you’d normally write inside `nodes.map` are + * moved into `NodeComponentWrapper`. This ensures they are + * memorized – so if `NodeRenderer` *has* to rerender, it only + * needs to regenerate the list of nodes, nothing else. + */ + jsx(NodeWrapper$1, { id: nodeId, nodeTypes: props.nodeTypes, nodeExtent: props.nodeExtent, onClick: props.onNodeClick, onMouseEnter: props.onNodeMouseEnter, onMouseMove: props.onNodeMouseMove, onMouseLeave: props.onNodeMouseLeave, onContextMenu: props.onNodeContextMenu, onDoubleClick: props.onNodeDoubleClick, noDragClassName: props.noDragClassName, noPanClassName: props.noPanClassName, rfId: props.rfId, disableKeyboardA11y: props.disableKeyboardA11y, resizeObserver: resizeObserver, nodesDraggable: props.nodesDraggable ?? true, nodesConnectable: nodesConnectable, nodesFocusable: nodesFocusable, elementsSelectable: elementsSelectable, nodeClickDistance: props.nodeClickDistance, onError: onError }, nodeId)); + }) })); +} +NodeRendererComponent.displayName = 'NodeRenderer'; +const NodeRenderer = memo(NodeRendererComponent); + +/** + * Hook for getting the visible edge ids from the store. + * + * @internal + * @param onlyRenderVisible + * @returns array with visible edge ids + */ +function useVisibleEdgeIds(onlyRenderVisible) { + const edgeIds = useStore(useCallback((s) => { + if (!onlyRenderVisible) { + return s.edges.map((edge) => edge.id); + } + const visibleEdgeIds = []; + if (s.width && s.height) { + for (const edge of s.edges) { + const sourceNode = s.nodeLookup.get(edge.source); + const targetNode = s.nodeLookup.get(edge.target); + if (sourceNode && + targetNode && + isEdgeVisible({ + sourceNode, + targetNode, + width: s.width, + height: s.height, + transform: s.transform, + })) { + visibleEdgeIds.push(edge.id); + } + } + } + return visibleEdgeIds; + }, [onlyRenderVisible]), shallow); + return edgeIds; +} + +const ArrowSymbol = ({ color = 'none', strokeWidth = 1 }) => { + const style = { + strokeWidth, + ...(color && { stroke: color }), + }; + return (jsx("polyline", { className: "arrow", style: style, strokeLinecap: "round", fill: "none", strokeLinejoin: "round", points: "-5,-4 0,0 -5,4" })); +}; +const ArrowClosedSymbol = ({ color = 'none', strokeWidth = 1 }) => { + const style = { + strokeWidth, + ...(color && { stroke: color, fill: color }), + }; + return (jsx("polyline", { className: "arrowclosed", style: style, strokeLinecap: "round", strokeLinejoin: "round", points: "-5,-4 0,0 -5,4 -5,-4" })); +}; +const MarkerSymbols = { + [MarkerType.Arrow]: ArrowSymbol, + [MarkerType.ArrowClosed]: ArrowClosedSymbol, +}; +function useMarkerSymbol(type) { + const store = useStoreApi(); + const symbol = useMemo(() => { + const symbolExists = Object.prototype.hasOwnProperty.call(MarkerSymbols, type); + if (!symbolExists) { + store.getState().onError?.('009', errorMessages['error009'](type)); + return null; + } + return MarkerSymbols[type]; + }, [type]); + return symbol; +} + +const Marker = ({ id, type, color, width = 12.5, height = 12.5, markerUnits = 'strokeWidth', strokeWidth, orient = 'auto-start-reverse', }) => { + const Symbol = useMarkerSymbol(type); + if (!Symbol) { + return null; + } + return (jsx("marker", { className: "react-flow__arrowhead", id: id, markerWidth: `${width}`, markerHeight: `${height}`, viewBox: "-10 -10 20 20", markerUnits: markerUnits, orient: orient, refX: "0", refY: "0", children: jsx(Symbol, { color: color, strokeWidth: strokeWidth }) })); +}; +/* + * when you have multiple flows on a page and you hide the first one, the other ones have no markers anymore + * when they do have markers with the same ids. To prevent this the user can pass a unique id to the react flow wrapper + * that we can then use for creating our unique marker ids + */ +const MarkerDefinitions = ({ defaultColor, rfId }) => { + const edges = useStore((s) => s.edges); + const defaultEdgeOptions = useStore((s) => s.defaultEdgeOptions); + const markers = useMemo(() => { + const markers = createMarkerIds(edges, { + id: rfId, + defaultColor, + defaultMarkerStart: defaultEdgeOptions?.markerStart, + defaultMarkerEnd: defaultEdgeOptions?.markerEnd, + }); + return markers; + }, [edges, defaultEdgeOptions, rfId, defaultColor]); + if (!markers.length) { + return null; + } + return (jsx("svg", { className: "react-flow__marker", "aria-hidden": "true", children: jsx("defs", { children: markers.map((marker) => (jsx(Marker, { id: marker.id, type: marker.type, color: marker.color, width: marker.width, height: marker.height, markerUnits: marker.markerUnits, strokeWidth: marker.strokeWidth, orient: marker.orient }, marker.id))) }) })); +}; +MarkerDefinitions.displayName = 'MarkerDefinitions'; +var MarkerDefinitions$1 = memo(MarkerDefinitions); + +function EdgeTextComponent({ x, y, label, labelStyle, labelShowBg = true, labelBgStyle, labelBgPadding = [2, 4], labelBgBorderRadius = 2, children, className, ...rest }) { + const [edgeTextBbox, setEdgeTextBbox] = useState({ x: 1, y: 0, width: 0, height: 0 }); + const edgeTextClasses = cc(['react-flow__edge-textwrapper', className]); + const edgeTextRef = useRef(null); + useEffect(() => { + if (edgeTextRef.current) { + const textBbox = edgeTextRef.current.getBBox(); + setEdgeTextBbox({ + x: textBbox.x, + y: textBbox.y, + width: textBbox.width, + height: textBbox.height, + }); + } + }, [label]); + if (!label) { + return null; + } + return (jsxs("g", { transform: `translate(${x - edgeTextBbox.width / 2} ${y - edgeTextBbox.height / 2})`, className: edgeTextClasses, visibility: edgeTextBbox.width ? 'visible' : 'hidden', ...rest, children: [labelShowBg && (jsx("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 })), jsx("text", { className: "react-flow__edge-text", y: edgeTextBbox.height / 2, dy: "0.3em", ref: edgeTextRef, style: labelStyle, children: label }), children] })); +} +EdgeTextComponent.displayName = 'EdgeText'; +/** + * You can use the `` component as a helper component to display text + * within your custom edges. + * + * @public + * + * @example + * ```jsx + * import { EdgeText } from '@xyflow/react'; + * + * export function CustomEdgeLabel({ label }) { + * return ( + * + * ); + * } + *``` + */ +const EdgeText = memo(EdgeTextComponent); + +/** + * The `` component gets used internally for all the edges. It can be + * used inside a custom edge and handles the invisible helper edge and the edge label + * for you. + * + * @public + * @example + * ```jsx + *import { BaseEdge } from '@xyflow/react'; + * + *export function CustomEdge({ sourceX, sourceY, targetX, targetY, ...props }) { + * const [edgePath] = getStraightPath({ + * sourceX, + * sourceY, + * targetX, + * targetY, + * }); + * + * return ; + *} + *``` + * + * @remarks If you want to use an edge marker with the [``](/api-reference/components/base-edge) component, + * you can pass the `markerStart` or `markerEnd` props passed to your custom edge + * through to the [``](/api-reference/components/base-edge) component. + * You can see all the props passed to a custom edge by looking at the [`EdgeProps`](/api-reference/types/edge-props) type. + */ +function BaseEdge({ path, labelX, labelY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, interactionWidth = 20, ...props }) { + return (jsxs(Fragment, { children: [jsx("path", { ...props, d: path, fill: "none", className: cc(['react-flow__edge-path', props.className]) }), interactionWidth ? (jsx("path", { d: path, fill: "none", strokeOpacity: 0, strokeWidth: interactionWidth, className: "react-flow__edge-interaction" })) : null, label && isNumeric(labelX) && isNumeric(labelY) ? (jsx(EdgeText, { x: labelX, y: labelY, label: label, labelStyle: labelStyle, labelShowBg: labelShowBg, labelBgStyle: labelBgStyle, labelBgPadding: labelBgPadding, labelBgBorderRadius: labelBgBorderRadius })) : null] })); +} + +function getControl({ pos, x1, y1, x2, y2 }) { + if (pos === Position.Left || pos === Position.Right) { + return [0.5 * (x1 + x2), y1]; + } + return [x1, 0.5 * (y1 + y2)]; +} +/** + * The `getSimpleBezierPath` util returns everything you need to render a simple + * bezier edge between two nodes. + * @public + * @returns + * - `path`: the path to use in an SVG `` element. + * - `labelX`: the `x` position you can use to render a label for this edge. + * - `labelY`: the `y` position you can use to render a label for this edge. + * - `offsetX`: the absolute difference between the source `x` position and the `x` position of the + * middle of this path. + * - `offsetY`: the absolute difference between the source `y` position and the `y` position of the + * middle of this path. + */ +function getSimpleBezierPath({ sourceX, sourceY, sourcePosition = Position.Bottom, targetX, targetY, targetPosition = Position.Top, }) { + const [sourceControlX, sourceControlY] = getControl({ + pos: sourcePosition, + x1: sourceX, + y1: sourceY, + x2: targetX, + y2: targetY, + }); + const [targetControlX, targetControlY] = getControl({ + pos: targetPosition, + x1: targetX, + y1: targetY, + x2: sourceX, + y2: sourceY, + }); + const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({ + sourceX, + sourceY, + targetX, + targetY, + sourceControlX, + sourceControlY, + targetControlX, + targetControlY, + }); + return [ + `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`, + labelX, + labelY, + offsetX, + offsetY, + ]; +} +function createSimpleBezierEdge(params) { + // eslint-disable-next-line react/display-name + return memo(({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }) => { + const [path, labelX, labelY] = getSimpleBezierPath({ + sourceX, + sourceY, + sourcePosition, + targetX, + targetY, + targetPosition, + }); + const _id = params.isInternal ? undefined : id; + return (jsx(BaseEdge, { id: _id, 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 })); + }); +} +const SimpleBezierEdge = createSimpleBezierEdge({ isInternal: false }); +const SimpleBezierEdgeInternal = createSimpleBezierEdge({ isInternal: true }); +SimpleBezierEdge.displayName = 'SimpleBezierEdge'; +SimpleBezierEdgeInternal.displayName = 'SimpleBezierEdgeInternal'; + +function createSmoothStepEdge(params) { + // eslint-disable-next-line react/display-name + return memo(({ id, sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, sourcePosition = Position.Bottom, targetPosition = Position.Top, markerEnd, markerStart, pathOptions, interactionWidth, }) => { + const [path, labelX, labelY] = getSmoothStepPath({ + sourceX, + sourceY, + sourcePosition, + targetX, + targetY, + targetPosition, + borderRadius: pathOptions?.borderRadius, + offset: pathOptions?.offset, + stepPosition: pathOptions?.stepPosition, + }); + const _id = params.isInternal ? undefined : id; + return (jsx(BaseEdge, { id: _id, 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 })); + }); +} +/** + * Component that can be used inside a custom edge to render a smooth step edge. + * + * @public + * @example + * + * ```tsx + * import { SmoothStepEdge } from '@xyflow/react'; + * + * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) { + * return ( + * + * ); + * } + * ``` + */ +const SmoothStepEdge = createSmoothStepEdge({ isInternal: false }); +/** + * @internal + */ +const SmoothStepEdgeInternal = createSmoothStepEdge({ isInternal: true }); +SmoothStepEdge.displayName = 'SmoothStepEdge'; +SmoothStepEdgeInternal.displayName = 'SmoothStepEdgeInternal'; + +function createStepEdge(params) { + // eslint-disable-next-line react/display-name + return memo(({ id, ...props }) => { + const _id = params.isInternal ? undefined : id; + return (jsx(SmoothStepEdge, { ...props, id: _id, pathOptions: useMemo(() => ({ borderRadius: 0, offset: props.pathOptions?.offset }), [props.pathOptions?.offset]) })); + }); +} +/** + * Component that can be used inside a custom edge to render a step edge. + * + * @public + * @example + * + * ```tsx + * import { StepEdge } from '@xyflow/react'; + * + * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) { + * return ( + * + * ); + * } + * ``` + */ +const StepEdge = createStepEdge({ isInternal: false }); +/** + * @internal + */ +const StepEdgeInternal = createStepEdge({ isInternal: true }); +StepEdge.displayName = 'StepEdge'; +StepEdgeInternal.displayName = 'StepEdgeInternal'; + +function createStraightEdge(params) { + // eslint-disable-next-line react/display-name + return memo(({ id, sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }) => { + const [path, labelX, labelY] = getStraightPath({ sourceX, sourceY, targetX, targetY }); + const _id = params.isInternal ? undefined : id; + return (jsx(BaseEdge, { id: _id, 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 })); + }); +} +/** + * Component that can be used inside a custom edge to render a straight line. + * + * @public + * @example + * + * ```tsx + * import { StraightEdge } from '@xyflow/react'; + * + * function CustomEdge({ sourceX, sourceY, targetX, targetY }) { + * return ( + * + * ); + * } + * ``` + */ +const StraightEdge = createStraightEdge({ isInternal: false }); +/** + * @internal + */ +const StraightEdgeInternal = createStraightEdge({ isInternal: true }); +StraightEdge.displayName = 'StraightEdge'; +StraightEdgeInternal.displayName = 'StraightEdgeInternal'; + +function createBezierEdge(params) { + // eslint-disable-next-line react/display-name + return memo(({ id, sourceX, sourceY, targetX, targetY, sourcePosition = Position.Bottom, targetPosition = Position.Top, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, pathOptions, interactionWidth, }) => { + const [path, labelX, labelY] = getBezierPath({ + sourceX, + sourceY, + sourcePosition, + targetX, + targetY, + targetPosition, + curvature: pathOptions?.curvature, + }); + const _id = params.isInternal ? undefined : id; + return (jsx(BaseEdge, { id: _id, 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 })); + }); +} +/** + * Component that can be used inside a custom edge to render a bezier curve. + * + * @public + * @example + * + * ```tsx + * import { BezierEdge } from '@xyflow/react'; + * + * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) { + * return ( + * + * ); + * } + * ``` + */ +const BezierEdge = createBezierEdge({ isInternal: false }); +/** + * @internal + */ +const BezierEdgeInternal = createBezierEdge({ isInternal: true }); +BezierEdge.displayName = 'BezierEdge'; +BezierEdgeInternal.displayName = 'BezierEdgeInternal'; + +const builtinEdgeTypes = { + default: BezierEdgeInternal, + straight: StraightEdgeInternal, + step: StepEdgeInternal, + smoothstep: SmoothStepEdgeInternal, + simplebezier: SimpleBezierEdgeInternal, +}; +const nullPosition = { + sourceX: null, + sourceY: null, + targetX: null, + targetY: null, + sourcePosition: null, + targetPosition: null, + zIndex: undefined, +}; + +const shiftX = (x, shift, position) => { + if (position === Position.Left) + return x - shift; + if (position === Position.Right) + return x + shift; + return x; +}; +const shiftY = (y, shift, position) => { + if (position === Position.Top) + return y - shift; + if (position === Position.Bottom) + return y + shift; + return y; +}; +const EdgeUpdaterClassName = 'react-flow__edgeupdater'; +/** + * @internal + */ +function EdgeAnchor({ position, centerX, centerY, radius = 10, onMouseDown, onMouseEnter, onMouseOut, type, }) { + return (jsx("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" })); +} + +function EdgeUpdateAnchors({ isReconnectable, reconnectRadius, edge, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, onReconnect, onReconnectStart, onReconnectEnd, setReconnecting, setUpdateHover, }) { + const store = useStoreApi(); + const handleEdgeUpdater = (event, oppositeHandle) => { + // avoid triggering edge updater if mouse btn is not left + if (event.button !== 0) { + return; + } + const { autoPanOnConnect, domNode, connectionMode, connectionRadius, lib, onConnectStart, cancelConnection, nodeLookup, rfId: flowId, panBy, updateConnection, } = store.getState(); + const isTarget = oppositeHandle.type === 'target'; + const _onReconnectEnd = (evt, connectionState) => { + setReconnecting(false); + onReconnectEnd?.(evt, edge, oppositeHandle.type, connectionState); + }; + const onConnectEdge = (connection) => onReconnect?.(edge, connection); + const _onConnectStart = (_event, params) => { + setReconnecting(true); + onReconnectStart?.(event, edge, oppositeHandle.type); + onConnectStart?.(_event, params); + }; + XYHandle.onPointerDown(event.nativeEvent, { + autoPanOnConnect, + connectionMode, + connectionRadius, + domNode, + handleId: oppositeHandle.id, + nodeId: oppositeHandle.nodeId, + nodeLookup, + isTarget, + edgeUpdaterType: oppositeHandle.type, + lib, + flowId, + cancelConnection, + panBy, + isValidConnection: (...args) => store.getState().isValidConnection?.(...args) ?? true, + onConnect: onConnectEdge, + onConnectStart: _onConnectStart, + onConnectEnd: (...args) => store.getState().onConnectEnd?.(...args), + onReconnectEnd: _onReconnectEnd, + updateConnection, + getTransform: () => store.getState().transform, + getFromHandle: () => store.getState().connection.fromHandle, + dragThreshold: store.getState().connectionDragThreshold, + handleDomNode: event.currentTarget, + }); + }; + const onReconnectSourceMouseDown = (event) => handleEdgeUpdater(event, { nodeId: edge.target, id: edge.targetHandle ?? null, type: 'target' }); + const onReconnectTargetMouseDown = (event) => handleEdgeUpdater(event, { nodeId: edge.source, id: edge.sourceHandle ?? null, type: 'source' }); + const onReconnectMouseEnter = () => setUpdateHover(true); + const onReconnectMouseOut = () => setUpdateHover(false); + return (jsxs(Fragment, { children: [(isReconnectable === true || isReconnectable === 'source') && (jsx(EdgeAnchor, { position: sourcePosition, centerX: sourceX, centerY: sourceY, radius: reconnectRadius, onMouseDown: onReconnectSourceMouseDown, onMouseEnter: onReconnectMouseEnter, onMouseOut: onReconnectMouseOut, type: "source" })), (isReconnectable === true || isReconnectable === 'target') && (jsx(EdgeAnchor, { position: targetPosition, centerX: targetX, centerY: targetY, radius: reconnectRadius, onMouseDown: onReconnectTargetMouseDown, onMouseEnter: onReconnectMouseEnter, onMouseOut: onReconnectMouseOut, type: "target" }))] })); +} + +function EdgeWrapper({ id, edgesFocusable, edgesReconnectable, elementsSelectable, onClick, onDoubleClick, onContextMenu, onMouseEnter, onMouseMove, onMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, rfId, edgeTypes, noPanClassName, onError, disableKeyboardA11y, }) { + let edge = useStore((s) => s.edgeLookup.get(id)); + const defaultEdgeOptions = useStore((s) => s.defaultEdgeOptions); + edge = defaultEdgeOptions ? { ...defaultEdgeOptions, ...edge } : edge; + let edgeType = edge.type || 'default'; + let EdgeComponent = edgeTypes?.[edgeType] || builtinEdgeTypes[edgeType]; + if (EdgeComponent === undefined) { + onError?.('011', errorMessages['error011'](edgeType)); + edgeType = 'default'; + EdgeComponent = edgeTypes?.['default'] || builtinEdgeTypes.default; + } + const isFocusable = !!(edge.focusable || (edgesFocusable && typeof edge.focusable === 'undefined')); + const isReconnectable = typeof onReconnect !== 'undefined' && + (edge.reconnectable || (edgesReconnectable && typeof edge.reconnectable === 'undefined')); + const isSelectable = !!(edge.selectable || (elementsSelectable && typeof edge.selectable === 'undefined')); + const edgeRef = useRef(null); + const [updateHover, setUpdateHover] = useState(false); + const [reconnecting, setReconnecting] = useState(false); + const store = useStoreApi(); + const { zIndex = edge.zIndex, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, } = useStore(useCallback((store) => { + const sourceNode = store.nodeLookup.get(edge.source); + const targetNode = store.nodeLookup.get(edge.target); + if (!sourceNode || !targetNode) { + return nullPosition; + } + const edgePosition = getEdgePosition({ + id, + sourceNode, + targetNode, + sourceHandle: edge.sourceHandle || null, + targetHandle: edge.targetHandle || null, + connectionMode: store.connectionMode, + onError, + }); + const zIndex = getElevatedEdgeZIndex({ + selected: edge.selected, + zIndex: edge.zIndex, + sourceNode, + targetNode, + elevateOnSelect: store.elevateEdgesOnSelect, + zIndexMode: store.zIndexMode, + }); + return { + ...(edgePosition || nullPosition), + zIndex, + }; + }, [edge.source, edge.target, edge.sourceHandle, edge.targetHandle, edge.selected, edge.zIndex]), shallow); + const markerStartUrl = useMemo(() => (edge.markerStart ? `url('#${getMarkerId(edge.markerStart, rfId)}')` : undefined), [edge.markerStart, rfId]); + const markerEndUrl = useMemo(() => (edge.markerEnd ? `url('#${getMarkerId(edge.markerEnd, rfId)}')` : undefined), [edge.markerEnd, rfId]); + if (edge.hidden || sourceX === null || sourceY === null || targetX === null || targetY === null) { + return null; + } + const onEdgeClick = (event) => { + const { addSelectedEdges, unselectNodesAndEdges, multiSelectionActive } = store.getState(); + if (isSelectable) { + store.setState({ nodesSelectionActive: false }); + if (edge.selected && multiSelectionActive) { + unselectNodesAndEdges({ nodes: [], edges: [edge] }); + edgeRef.current?.blur(); + } + else { + addSelectedEdges([id]); + } + } + if (onClick) { + onClick(event, edge); + } + }; + const onEdgeDoubleClick = onDoubleClick + ? (event) => { + onDoubleClick(event, { ...edge }); + } + : undefined; + const onEdgeContextMenu = onContextMenu + ? (event) => { + onContextMenu(event, { ...edge }); + } + : undefined; + const onEdgeMouseEnter = onMouseEnter + ? (event) => { + onMouseEnter(event, { ...edge }); + } + : undefined; + const onEdgeMouseMove = onMouseMove + ? (event) => { + onMouseMove(event, { ...edge }); + } + : undefined; + const onEdgeMouseLeave = onMouseLeave + ? (event) => { + onMouseLeave(event, { ...edge }); + } + : undefined; + const onKeyDown = (event) => { + if (!disableKeyboardA11y && elementSelectionKeys.includes(event.key) && isSelectable) { + const { unselectNodesAndEdges, addSelectedEdges } = store.getState(); + const unselect = event.key === 'Escape'; + if (unselect) { + edgeRef.current?.blur(); + unselectNodesAndEdges({ edges: [edge] }); + } + else { + addSelectedEdges([id]); + } + } + }; + return (jsx("svg", { style: { zIndex }, children: jsxs("g", { className: cc([ + 'react-flow__edge', + `react-flow__edge-${edgeType}`, + edge.className, + noPanClassName, + { + selected: edge.selected, + animated: edge.animated, + inactive: !isSelectable && !onClick, + updating: updateHover, + selectable: isSelectable, + }, + ]), onClick: onEdgeClick, onDoubleClick: onEdgeDoubleClick, onContextMenu: onEdgeContextMenu, onMouseEnter: onEdgeMouseEnter, onMouseMove: onEdgeMouseMove, onMouseLeave: onEdgeMouseLeave, onKeyDown: isFocusable ? onKeyDown : undefined, tabIndex: isFocusable ? 0 : undefined, role: edge.ariaRole ?? (isFocusable ? 'group' : 'img'), "aria-roledescription": "edge", "data-id": id, "data-testid": `rf__edge-${id}`, "aria-label": edge.ariaLabel === null ? undefined : edge.ariaLabel || `Edge from ${edge.source} to ${edge.target}`, "aria-describedby": isFocusable ? `${ARIA_EDGE_DESC_KEY}-${rfId}` : undefined, ref: edgeRef, ...edge.domAttributes, children: [!reconnecting && (jsx(EdgeComponent, { id: id, source: edge.source, target: edge.target, type: edge.type, selected: edge.selected, animated: edge.animated, selectable: isSelectable, deletable: edge.deletable ?? true, label: edge.label, labelStyle: edge.labelStyle, labelShowBg: edge.labelShowBg, labelBgStyle: edge.labelBgStyle, labelBgPadding: edge.labelBgPadding, labelBgBorderRadius: edge.labelBgBorderRadius, sourceX: sourceX, sourceY: sourceY, targetX: targetX, targetY: targetY, sourcePosition: sourcePosition, targetPosition: targetPosition, data: edge.data, style: edge.style, sourceHandleId: edge.sourceHandle, targetHandleId: edge.targetHandle, markerStart: markerStartUrl, markerEnd: markerEndUrl, pathOptions: 'pathOptions' in edge ? edge.pathOptions : undefined, interactionWidth: edge.interactionWidth })), isReconnectable && (jsx(EdgeUpdateAnchors, { edge: edge, isReconnectable: isReconnectable, reconnectRadius: reconnectRadius, onReconnect: onReconnect, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, sourceX: sourceX, sourceY: sourceY, targetX: targetX, targetY: targetY, sourcePosition: sourcePosition, targetPosition: targetPosition, setUpdateHover: setUpdateHover, setReconnecting: setReconnecting }))] }) })); +} +var EdgeWrapper$1 = memo(EdgeWrapper); + +const selector$9 = (s) => ({ + edgesFocusable: s.edgesFocusable, + edgesReconnectable: s.edgesReconnectable, + elementsSelectable: s.elementsSelectable, + connectionMode: s.connectionMode, + onError: s.onError, +}); +function EdgeRendererComponent({ defaultMarkerColor, onlyRenderVisibleElements, rfId, edgeTypes, noPanClassName, onReconnect, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, onEdgeClick, reconnectRadius, onEdgeDoubleClick, onReconnectStart, onReconnectEnd, disableKeyboardA11y, }) { + const { edgesFocusable, edgesReconnectable, elementsSelectable, onError } = useStore(selector$9, shallow); + const edgeIds = useVisibleEdgeIds(onlyRenderVisibleElements); + return (jsxs("div", { className: "react-flow__edges", children: [jsx(MarkerDefinitions$1, { defaultColor: defaultMarkerColor, rfId: rfId }), edgeIds.map((id) => { + return (jsx(EdgeWrapper$1, { id: id, edgesFocusable: edgesFocusable, edgesReconnectable: edgesReconnectable, elementsSelectable: elementsSelectable, noPanClassName: noPanClassName, onReconnect: onReconnect, onContextMenu: onEdgeContextMenu, onMouseEnter: onEdgeMouseEnter, onMouseMove: onEdgeMouseMove, onMouseLeave: onEdgeMouseLeave, onClick: onEdgeClick, reconnectRadius: reconnectRadius, onDoubleClick: onEdgeDoubleClick, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, rfId: rfId, onError: onError, edgeTypes: edgeTypes, disableKeyboardA11y: disableKeyboardA11y }, id)); + })] })); +} +EdgeRendererComponent.displayName = 'EdgeRenderer'; +const EdgeRenderer = memo(EdgeRendererComponent); + +const toTransformString = (transform) => `translate(${transform[0]}px,${transform[1]}px) scale(${transform[2]})`; +function Viewport({ children }) { + const store = useStoreApi(); + const viewportRef = useRef(null); + // seed the transform for first paint and SSR without subscribing, so we don't re-render on pan/zoom + const [initialTransform] = useState(() => store.getState().transform); + // transform changes every pan/zoom frame, so write it to the DOM directly to keep React out of the hot path + useIsomorphicLayoutEffect(() => { + let prevTransform = null; + const applyTransform = () => { + const transform = store.getState().transform; + // store.subscribe fires on every update, so only touch the DOM when x, y or zoom actually changed + if (prevTransform && + transform[0] === prevTransform[0] && + transform[1] === prevTransform[1] && + transform[2] === prevTransform[2]) { + return; + } + prevTransform = transform; + if (viewportRef.current) { + viewportRef.current.style.transform = toTransformString(transform); + } + }; + applyTransform(); + return store.subscribe(applyTransform); + }, [store]); + return (jsx("div", { ref: viewportRef, className: "react-flow__viewport xyflow__viewport react-flow__container", style: { transform: toTransformString(initialTransform) }, children: children })); +} + +/** + * Hook for calling onInit handler. + * + * @internal + */ +function useOnInitHandler(onInit) { + const rfInstance = useReactFlow(); + const isInitialized = useRef(false); + useEffect(() => { + if (!isInitialized.current && rfInstance.viewportInitialized && onInit) { + setTimeout(() => onInit(rfInstance), 1); + isInitialized.current = true; + } + }, [onInit, rfInstance.viewportInitialized]); +} + +const selector$8 = (state) => state.panZoom?.syncViewport; +/** + * Hook for syncing the viewport with the panzoom instance. + * + * @internal + * @param viewport + */ +function useViewportSync(viewport) { + const syncViewport = useStore(selector$8); + const store = useStoreApi(); + useEffect(() => { + if (viewport) { + syncViewport?.(viewport); + store.setState({ transform: [viewport.x, viewport.y, viewport.zoom] }); + } + }, [viewport, syncViewport]); + return null; +} + +function storeSelector$1(s) { + return s.connection.inProgress + ? { ...s.connection, to: pointToRendererPoint(s.connection.to, s.transform) } + : { ...s.connection }; +} +function getSelector(connectionSelector) { + if (connectionSelector) { + const combinedSelector = (s) => { + const connection = storeSelector$1(s); + return connectionSelector(connection); + }; + return combinedSelector; + } + return storeSelector$1; +} +/** + * The `useConnection` hook returns the current connection when there is an active + * connection interaction. If no connection interaction is active, it returns null + * for every property. A typical use case for this hook is to colorize handles + * based on a certain condition (e.g. if the connection is valid or not). + * + * @public + * @param connectionSelector - An optional selector function used to extract a slice of the + * `ConnectionState` data. Using a selector can prevent component re-renders where data you don't + * otherwise care about might change. If a selector is not provided, the entire `ConnectionState` + * object is returned unchanged. + * @example + * + * ```tsx + *import { useConnection } from '@xyflow/react'; + * + *function App() { + * const connection = useConnection(); + * + * return ( + *
{connection ? `Someone is trying to make a connection from ${connection.fromNode} to this one.` : 'There are currently no incoming connections!'} + * + *
+ * ); + * } + * ``` + * + * @returns ConnectionState + */ +function useConnection(connectionSelector) { + const combinedSelector = getSelector(connectionSelector); + return useStore(combinedSelector, shallow); +} + +const selector$7 = (s) => ({ + nodesConnectable: s.nodesConnectable, + isValid: s.connection.isValid, + inProgress: s.connection.inProgress, + width: s.width, + height: s.height, +}); +function ConnectionLineWrapper({ containerStyle, style, type, component, }) { + const { nodesConnectable, width, height, isValid, inProgress } = useStore(selector$7, shallow); + const renderConnection = !!(width && nodesConnectable && inProgress); + if (!renderConnection) { + return null; + } + return (jsx("svg", { style: containerStyle, width: width, height: height, className: "react-flow__connectionline react-flow__container", children: jsx("g", { className: cc(['react-flow__connection', getConnectionStatus(isValid)]), children: jsx(ConnectionLine, { style: style, type: type, CustomComponent: component, isValid: isValid }) }) })); +} +const ConnectionLine = ({ style, type = ConnectionLineType.Bezier, CustomComponent, isValid, }) => { + const { inProgress, from, fromNode, fromHandle, fromPosition, to, toNode, toHandle, toPosition, pointer } = useConnection(); + if (!inProgress) { + return; + } + if (CustomComponent) { + return (jsx(CustomComponent, { connectionLineType: type, connectionLineStyle: style, fromNode: fromNode, fromHandle: fromHandle, fromX: from.x, fromY: from.y, toX: to.x, toY: to.y, fromPosition: fromPosition, toPosition: toPosition, connectionStatus: getConnectionStatus(isValid), toNode: toNode, toHandle: toHandle, pointer: pointer })); + } + let path = ''; + const pathParams = { + sourceX: from.x, + sourceY: from.y, + sourcePosition: fromPosition, + targetX: to.x, + targetY: to.y, + targetPosition: toPosition, + }; + switch (type) { + case ConnectionLineType.Bezier: + [path] = getBezierPath(pathParams); + break; + case ConnectionLineType.SimpleBezier: + [path] = getSimpleBezierPath(pathParams); + break; + case ConnectionLineType.Step: + [path] = getSmoothStepPath({ + ...pathParams, + borderRadius: 0, + }); + break; + case ConnectionLineType.SmoothStep: + [path] = getSmoothStepPath(pathParams); + break; + default: + [path] = getStraightPath(pathParams); + } + return jsx("path", { d: path, fill: "none", className: "react-flow__connection-path", style: style }); +}; +ConnectionLine.displayName = 'ConnectionLine'; + +const emptyTypes = {}; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function useNodeOrEdgeTypesWarning(nodeOrEdgeTypes = emptyTypes) { + const typesRef = useRef(nodeOrEdgeTypes); + const store = useStoreApi(); + useEffect(() => { + if (process.env.NODE_ENV === 'development') { + const usedKeys = new Set([...Object.keys(typesRef.current), ...Object.keys(nodeOrEdgeTypes)]); + for (const key of usedKeys) { + if (typesRef.current[key] !== nodeOrEdgeTypes[key]) { + store.getState().onError?.('002', errorMessages['error002']()); + break; + } + } + typesRef.current = nodeOrEdgeTypes; + } + }, [nodeOrEdgeTypes]); +} + +function useStylesLoadedWarning() { + const store = useStoreApi(); + const checked = useRef(false); + useEffect(() => { + if (process.env.NODE_ENV === 'development') { + if (!checked.current) { + const pane = document.querySelector('.react-flow__pane'); + if (pane && !(window.getComputedStyle(pane).zIndex === '1')) { + store.getState().onError?.('013', errorMessages['error013']('react')); + } + checked.current = true; + } + } + }, []); +} + +function GraphViewComponent({ nodeTypes, edgeTypes, onInit, onNodeClick, onEdgeClick, onNodeDoubleClick, onEdgeDoubleClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onSelectionContextMenu, onSelectionStart, onSelectionEnd, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, deleteKeyCode, onlyRenderVisibleElements, elementsSelectable, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, defaultMarkerColor, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag, autoPanOnSelection, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance, nodeClickDistance, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, noDragClassName, noWheelClassName, noPanClassName, disableKeyboardA11y, nodeExtent, rfId, viewport, onViewportChange, nodesDraggable, }) { + useNodeOrEdgeTypesWarning(nodeTypes); + useNodeOrEdgeTypesWarning(edgeTypes); + useStylesLoadedWarning(); + useOnInitHandler(onInit); + useViewportSync(viewport); + return (jsx(FlowRenderer, { onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneContextMenu: onPaneContextMenu, onPaneScroll: onPaneScroll, paneClickDistance: paneClickDistance, deleteKeyCode: deleteKeyCode, selectionKeyCode: selectionKeyCode, selectionOnDrag: selectionOnDrag, selectionMode: selectionMode, onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, multiSelectionKeyCode: multiSelectionKeyCode, panActivationKeyCode: panActivationKeyCode, zoomActivationKeyCode: zoomActivationKeyCode, elementsSelectable: elementsSelectable, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, zoomOnDoubleClick: zoomOnDoubleClick, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, panOnDrag: panOnDrag, autoPanOnSelection: autoPanOnSelection, defaultViewport: defaultViewport, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, onSelectionContextMenu: onSelectionContextMenu, preventScrolling: preventScrolling, noDragClassName: noDragClassName, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y, onViewportChange: onViewportChange, isControlledViewport: !!viewport, children: jsxs(Viewport, { children: [jsx(EdgeRenderer, { edgeTypes: edgeTypes, onEdgeClick: onEdgeClick, onEdgeDoubleClick: onEdgeDoubleClick, onReconnect: onReconnect, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, onlyRenderVisibleElements: onlyRenderVisibleElements, onEdgeContextMenu: onEdgeContextMenu, onEdgeMouseEnter: onEdgeMouseEnter, onEdgeMouseMove: onEdgeMouseMove, onEdgeMouseLeave: onEdgeMouseLeave, reconnectRadius: reconnectRadius, defaultMarkerColor: defaultMarkerColor, noPanClassName: noPanClassName, disableKeyboardA11y: disableKeyboardA11y, rfId: rfId }), jsx(ConnectionLineWrapper, { style: connectionLineStyle, type: connectionLineType, component: connectionLineComponent, containerStyle: connectionLineContainerStyle }), jsx("div", { className: "react-flow__edgelabel-renderer" }), jsx(NodeRenderer, { nodeTypes: nodeTypes, onNodeClick: onNodeClick, onNodeDoubleClick: onNodeDoubleClick, onNodeMouseEnter: onNodeMouseEnter, onNodeMouseMove: onNodeMouseMove, onNodeMouseLeave: onNodeMouseLeave, onNodeContextMenu: onNodeContextMenu, nodeClickDistance: nodeClickDistance, onlyRenderVisibleElements: onlyRenderVisibleElements, noPanClassName: noPanClassName, noDragClassName: noDragClassName, disableKeyboardA11y: disableKeyboardA11y, nodeExtent: nodeExtent, rfId: rfId, nodesDraggable: nodesDraggable }), jsx("div", { className: "react-flow__viewport-portal" })] }) })); +} +GraphViewComponent.displayName = 'GraphView'; +const GraphView = memo(GraphViewComponent); + +const devWarn = createDevWarn('React Flow', 'https://reactflow.dev/'); +const getInitialState = ({ nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom = 0.5, maxZoom = 2, nodeOrigin, nodeExtent, zIndexMode = 'basic', } = {}) => { + const nodeLookup = new Map(); + const parentLookup = new Map(); + const connectionLookup = new Map(); + const edgeLookup = new Map(); + const storeEdges = defaultEdges ?? edges ?? []; + const storeNodes = defaultNodes ?? nodes ?? []; + const storeNodeOrigin = nodeOrigin ?? [0, 0]; + const storeNodeExtent = nodeExtent ?? infiniteExtent; + updateConnectionLookup(connectionLookup, edgeLookup, storeEdges); + const { nodesInitialized } = adoptUserNodes(storeNodes, nodeLookup, parentLookup, { + nodeOrigin: storeNodeOrigin, + nodeExtent: storeNodeExtent, + zIndexMode, + }); + let transform = [0, 0, 1]; + if (fitView && width && height) { + const bounds = getInternalNodesBounds(nodeLookup, { + filter: (node) => !!((node.width || node.initialWidth) && (node.height || node.initialHeight)), + }); + const { x, y, zoom } = getViewportForBounds(bounds, width, height, minZoom, maxZoom, fitViewOptions?.padding ?? 0.1); + transform = [x, y, zoom]; + } + return { + rfId: '1', + width: width ?? 0, + height: height ?? 0, + transform, + nodes: storeNodes, + nodesInitialized, + nodeLookup, + parentLookup, + edges: storeEdges, + edgeLookup, + connectionLookup, + onNodesChange: null, + onEdgesChange: null, + hasDefaultNodes: defaultNodes !== undefined, + hasDefaultEdges: defaultEdges !== undefined, + panZoom: null, + minZoom, + maxZoom, + translateExtent: infiniteExtent, + nodeExtent: storeNodeExtent, + nodesSelectionActive: false, + userSelectionActive: false, + userSelectionRect: null, + connectionMode: ConnectionMode.Strict, + domNode: null, + paneDragging: false, + noPanClassName: 'nopan', + nodeOrigin: storeNodeOrigin, + nodeDragThreshold: 1, + connectionDragThreshold: 1, + snapGrid: [15, 15], + snapToGrid: false, + nodesDraggable: true, + nodesConnectable: true, + nodesFocusable: true, + edgesFocusable: true, + edgesReconnectable: true, + elementsSelectable: true, + elevateNodesOnSelect: true, + elevateEdgesOnSelect: true, + selectNodesOnDrag: true, + multiSelectionActive: false, + fitViewQueued: fitView ?? false, + fitViewOptions, + fitViewResolver: null, + connection: { ...initialConnection }, + connectionClickStartHandle: null, + connectOnClick: true, + ariaLiveMessage: '', + autoPanOnConnect: true, + autoPanOnNodeDrag: true, + autoPanOnNodeFocus: true, + autoPanSpeed: 15, + connectionRadius: 20, + onError: devWarn, + isValidConnection: undefined, + onSelectionChangeHandlers: [], + lib: 'react', + debug: false, + ariaLabelConfig: defaultAriaLabelConfig, + zIndexMode, + onNodesChangeMiddlewareMap: new Map(), + onEdgesChangeMiddlewareMap: new Map(), + }; +}; + +const createStore = ({ nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom, maxZoom, nodeOrigin, nodeExtent, zIndexMode, }) => createWithEqualityFn((set, get) => { + async function resolveFitView() { + const { nodeLookup, panZoom, fitViewOptions, fitViewResolver, width, height, minZoom, maxZoom } = get(); + if (!panZoom) { + return; + } + await fitViewport({ + nodes: nodeLookup, + width, + height, + panZoom, + minZoom, + maxZoom, + }, fitViewOptions); + fitViewResolver?.resolve(true); + /** + * wait for the fitViewport to resolve before deleting the resolver, + * we want to reuse the old resolver if the user calls fitView again in the mean time + */ + set({ fitViewResolver: null }); + } + return { + ...getInitialState({ + nodes, + edges, + width, + height, + fitView, + fitViewOptions, + minZoom, + maxZoom, + nodeOrigin, + nodeExtent, + defaultNodes, + defaultEdges, + zIndexMode, + }), + setNodes: (nodes) => { + const { nodeLookup, parentLookup, nodeOrigin, elevateNodesOnSelect, fitViewQueued, zIndexMode, nodesSelectionActive, } = get(); + /* + * setNodes() is called exclusively in response to user actions: + * - either when the `` prop is updated in the controlled ReactFlow setup, + * - or when the user calls something like `reactFlowInstance.setNodes()` in an uncontrolled ReactFlow setup. + * + * When this happens, we take the note objects passed by the user and extend them with fields + * relevant for internal React Flow operations. + */ + const { nodesInitialized, hasSelectedNodes } = adoptUserNodes(nodes, nodeLookup, parentLookup, { + nodeOrigin, + nodeExtent, + elevateNodesOnSelect, + checkEquality: true, + zIndexMode, + }); + const nextNodesSelectionActive = nodesSelectionActive && hasSelectedNodes; + if (fitViewQueued && nodesInitialized) { + resolveFitView(); + set({ + nodes, + nodesInitialized, + fitViewQueued: false, + fitViewOptions: undefined, + nodesSelectionActive: nextNodesSelectionActive + }); + } + else { + set({ nodes, nodesInitialized, nodesSelectionActive: nextNodesSelectionActive }); + } + }, + setEdges: (edges) => { + const { connectionLookup, edgeLookup } = get(); + updateConnectionLookup(connectionLookup, edgeLookup, edges); + set({ edges }); + }, + setDefaultNodesAndEdges: (nodes, edges) => { + if (nodes) { + const { setNodes } = get(); + setNodes(nodes); + set({ hasDefaultNodes: true }); + } + if (edges) { + const { setEdges } = get(); + setEdges(edges); + set({ hasDefaultEdges: true }); + } + }, + /* + * Every node gets registered at a ResizeObserver. Whenever a node + * changes its dimensions, this function is called to measure the + * new dimensions and update the nodes. + */ + updateNodeInternals: (updates) => { + const { triggerNodeChanges, nodeLookup, parentLookup, domNode, nodeOrigin, nodeExtent, debug, fitViewQueued, zIndexMode, } = get(); + const { changes, updatedInternals } = updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOrigin, nodeExtent, zIndexMode); + if (!updatedInternals) { + return; + } + updateAbsolutePositions(nodeLookup, parentLookup, { nodeOrigin, nodeExtent, zIndexMode }); + if (fitViewQueued) { + resolveFitView(); + set({ fitViewQueued: false, fitViewOptions: undefined }); + } + else { + // we always want to trigger useStore calls whenever updateNodeInternals is called + set({}); + } + if (changes?.length > 0) { + if (debug) { + console.log('React Flow: trigger node changes', changes); + } + triggerNodeChanges?.(changes); + } + }, + updateNodePositions: (nodeDragItems, dragging = false) => { + const parentExpandChildren = []; + let changes = []; + const { nodeLookup, triggerNodeChanges, connection, updateConnection, onNodesChangeMiddlewareMap } = get(); + for (const [id, dragItem] of nodeDragItems) { + // we are using the nodelookup to be sure to use the current expandParent and parentId value + const node = nodeLookup.get(id); + const expandParent = !!(node?.expandParent && node?.parentId && dragItem?.position); + const change = { + id, + type: 'position', + position: expandParent + ? { + x: Math.max(0, dragItem.position.x), + y: Math.max(0, dragItem.position.y), + } + : dragItem.position, + dragging, + }; + if (node && connection.inProgress && connection.fromNode.id === node.id) { + const updatedFrom = getHandlePosition(node, connection.fromHandle, Position.Left, true); + updateConnection({ ...connection, from: updatedFrom }); + } + if (expandParent && node.parentId) { + parentExpandChildren.push({ + id, + parentId: node.parentId, + rect: { + ...dragItem.internals.positionAbsolute, + width: dragItem.measured.width ?? 0, + height: dragItem.measured.height ?? 0, + }, + }); + } + changes.push(change); + } + if (parentExpandChildren.length > 0) { + const { parentLookup, nodeOrigin } = get(); + const parentExpandChanges = handleExpandParent(parentExpandChildren, nodeLookup, parentLookup, nodeOrigin); + changes.push(...parentExpandChanges); + } + for (const middleware of onNodesChangeMiddlewareMap.values()) { + changes = middleware(changes); + } + triggerNodeChanges(changes); + }, + triggerNodeChanges: (changes) => { + const { onNodesChange, setNodes, nodes, hasDefaultNodes, debug } = get(); + if (changes?.length) { + if (hasDefaultNodes) { + const updatedNodes = applyNodeChanges(changes, nodes); + setNodes(updatedNodes); + } + if (debug) { + console.log('React Flow: trigger node changes', changes); + } + onNodesChange?.(changes); + } + }, + triggerEdgeChanges: (changes) => { + const { onEdgesChange, setEdges, edges, hasDefaultEdges, debug } = get(); + if (changes?.length) { + if (hasDefaultEdges) { + const updatedEdges = applyEdgeChanges(changes, edges); + setEdges(updatedEdges); + } + if (debug) { + console.log('React Flow: trigger edge changes', changes); + } + onEdgesChange?.(changes); + } + }, + addSelectedNodes: (selectedNodeIds) => { + const { multiSelectionActive, edgeLookup, nodeLookup, triggerNodeChanges, triggerEdgeChanges } = get(); + if (multiSelectionActive) { + const nodeChanges = selectedNodeIds.map((nodeId) => createSelectionChange(nodeId, true)); + triggerNodeChanges(nodeChanges); + return; + } + triggerNodeChanges(getSelectionChanges(nodeLookup, new Set([...selectedNodeIds]), true)); + triggerEdgeChanges(getSelectionChanges(edgeLookup)); + }, + addSelectedEdges: (selectedEdgeIds) => { + const { multiSelectionActive, edgeLookup, nodeLookup, triggerNodeChanges, triggerEdgeChanges } = get(); + if (multiSelectionActive) { + const changedEdges = selectedEdgeIds.map((edgeId) => createSelectionChange(edgeId, true)); + triggerEdgeChanges(changedEdges); + return; + } + triggerEdgeChanges(getSelectionChanges(edgeLookup, new Set([...selectedEdgeIds]))); + triggerNodeChanges(getSelectionChanges(nodeLookup, new Set(), true)); + }, + unselectNodesAndEdges: ({ nodes, edges } = {}) => { + const { edges: storeEdges, nodes: storeNodes, nodeLookup, triggerNodeChanges, triggerEdgeChanges } = get(); + const nodesToUnselect = nodes ? nodes : storeNodes; + const edgesToUnselect = edges ? edges : storeEdges; + const nodeChanges = []; + for (const node of nodesToUnselect) { + if (!node.selected) { + continue; // skip changing nodes that are not selected + } + const internalNode = nodeLookup.get(node.id); + if (internalNode) { + /* + * we need to unselect the internal node that was selected previously before we + * send the change to the user to prevent it to be selected while dragging the new node + */ + internalNode.selected = false; + } + nodeChanges.push(createSelectionChange(node.id, false)); + } + const edgeChanges = []; + for (const edge of edgesToUnselect) { + if (!edge.selected) { + continue; // skip changing edges that are not selected + } + edgeChanges.push(createSelectionChange(edge.id, false)); + } + triggerNodeChanges(nodeChanges); + triggerEdgeChanges(edgeChanges); + }, + setMinZoom: (minZoom) => { + const { panZoom, maxZoom } = get(); + panZoom?.setScaleExtent([minZoom, maxZoom]); + set({ minZoom }); + }, + setMaxZoom: (maxZoom) => { + const { panZoom, minZoom } = get(); + panZoom?.setScaleExtent([minZoom, maxZoom]); + set({ maxZoom }); + }, + setTranslateExtent: (translateExtent) => { + get().panZoom?.setTranslateExtent(translateExtent); + set({ translateExtent }); + }, + resetSelectedElements: () => { + const { edges, nodes, triggerNodeChanges, triggerEdgeChanges, elementsSelectable } = get(); + if (!elementsSelectable) { + return; + } + const nodeChanges = nodes.reduce((res, node) => (node.selected ? [...res, createSelectionChange(node.id, false)] : res), []); + const edgeChanges = edges.reduce((res, edge) => (edge.selected ? [...res, createSelectionChange(edge.id, false)] : res), []); + triggerNodeChanges(nodeChanges); + triggerEdgeChanges(edgeChanges); + }, + setNodeExtent: (nextNodeExtent) => { + const { nodes, nodeLookup, parentLookup, nodeOrigin, elevateNodesOnSelect, nodeExtent, zIndexMode } = get(); + if (nextNodeExtent[0][0] === nodeExtent[0][0] && + nextNodeExtent[0][1] === nodeExtent[0][1] && + nextNodeExtent[1][0] === nodeExtent[1][0] && + nextNodeExtent[1][1] === nodeExtent[1][1]) { + return; + } + adoptUserNodes(nodes, nodeLookup, parentLookup, { + nodeOrigin, + nodeExtent: nextNodeExtent, + elevateNodesOnSelect, + checkEquality: false, + zIndexMode, + }); + set({ nodeExtent: nextNodeExtent }); + }, + panBy: (delta) => { + const { transform, width, height, panZoom, translateExtent } = get(); + return panBy({ delta, panZoom, transform, translateExtent, width, height }); + }, + setCenter: async (x, y, options) => { + const { width, height, maxZoom, panZoom } = get(); + if (!panZoom) { + return false; + } + const nextZoom = typeof options?.zoom !== 'undefined' ? options.zoom : maxZoom; + await panZoom.setViewport({ + x: width / 2 - x * nextZoom, + y: height / 2 - y * nextZoom, + zoom: nextZoom, + }, { duration: options?.duration, ease: options?.ease, interpolate: options?.interpolate }); + return true; + }, + cancelConnection: () => { + set({ + connection: { ...initialConnection }, + }); + }, + updateConnection: (connection) => { + set({ connection }); + }, + reset: () => set({ ...getInitialState() }), + }; +}, Object.is); + +/** + * The `` component is a [context provider](https://react.dev/learn/passing-data-deeply-with-context#) + * that makes it possible to access a flow's internal state outside of the + * [``](/api-reference/react-flow) component. Many of the hooks we + * provide rely on this component to work. + * @public + * + * @example + * ```tsx + *import { ReactFlow, ReactFlowProvider, useNodes } from '@xyflow/react' + * + *export default function Flow() { + * return ( + * + * + * + * + * ); + *} + * + *function Sidebar() { + * // This hook will only work if the component it's used in is a child of a + * // . + * const nodes = useNodes() + * + * return ; + *} + *``` + * + * @remarks If you're using a router and want your flow's state to persist across routes, + * it's vital that you place the `` component _outside_ of + * your router. If you have multiple flows on the same page you will need to use a separate + * `` for each flow. + */ +function ReactFlowProvider({ initialNodes: nodes, initialEdges: edges, defaultNodes, defaultEdges, initialWidth: width, initialHeight: height, initialMinZoom: minZoom, initialMaxZoom: maxZoom, initialFitViewOptions: fitViewOptions, fitView, nodeOrigin, nodeExtent, zIndexMode, children, }) { + const [store] = useState(() => createStore({ + nodes, + edges, + defaultNodes, + defaultEdges, + width, + height, + fitView, + minZoom, + maxZoom, + fitViewOptions, + nodeOrigin, + nodeExtent, + zIndexMode, + })); + return (jsx(Provider$1, { value: store, children: jsx(BatchProvider, { children: jsx(HandleConfigProvider, { children: children }) }) })); +} + +function Wrapper({ children, nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom, maxZoom, nodeOrigin, nodeExtent, zIndexMode, }) { + const isWrapped = useContext(StoreContext); + if (isWrapped) { + /* + * we need to wrap it with a fragment because it's not allowed for children to be a ReactNode + * https://github.com/DefinitelyTyped/DefinitelyTyped/issues/18051 + */ + return jsx(Fragment, { children: children }); + } + return (jsx(ReactFlowProvider, { initialNodes: nodes, initialEdges: edges, defaultNodes: defaultNodes, defaultEdges: defaultEdges, initialWidth: width, initialHeight: height, fitView: fitView, initialFitViewOptions: fitViewOptions, initialMinZoom: minZoom, initialMaxZoom: maxZoom, nodeOrigin: nodeOrigin, nodeExtent: nodeExtent, zIndexMode: zIndexMode, children: children })); +} + +const wrapperStyle = { + width: '100%', + height: '100%', + overflow: 'hidden', + position: 'relative', + zIndex: 0, +}; +function ReactFlow({ nodes, edges, defaultNodes, defaultEdges, className, nodeTypes, edgeTypes, onNodeClick, onEdgeClick, onInit, onMove, onMoveStart, onMoveEnd, onConnect, onConnectStart, onConnectEnd, onClickConnectStart, onClickConnectEnd, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onNodeDoubleClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onNodesDelete, onEdgesDelete, onDelete, onSelectionChange, onSelectionDragStart, onSelectionDrag, onSelectionDragStop, onSelectionContextMenu, onSelectionStart, onSelectionEnd, onBeforeDelete, connectionMode, connectionLineType = ConnectionLineType.Bezier, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, deleteKeyCode = 'Backspace', selectionKeyCode = 'Shift', selectionOnDrag = false, selectionMode = SelectionMode.Full, panActivationKeyCode = 'Space', multiSelectionKeyCode = isMacOs() ? 'Meta' : 'Control', zoomActivationKeyCode = isMacOs() ? 'Meta' : 'Control', snapToGrid, snapGrid, onlyRenderVisibleElements = false, selectNodesOnDrag, nodesDraggable, autoPanOnNodeFocus, nodesConnectable, nodesFocusable, nodeOrigin = defaultNodeOrigin, edgesFocusable, edgesReconnectable, elementsSelectable = true, defaultViewport: defaultViewport$1 = defaultViewport, minZoom = 0.5, maxZoom = 2, translateExtent = infiniteExtent, preventScrolling = true, nodeExtent, defaultMarkerColor = '#b1b1b7', zoomOnScroll = true, zoomOnPinch = true, panOnScroll = false, panOnScrollSpeed = 0.5, panOnScrollMode = PanOnScrollMode.Free, zoomOnDoubleClick = true, panOnDrag = true, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance = 1, nodeClickDistance = 0, children, onReconnect, onReconnectStart, onReconnectEnd, onEdgeContextMenu, onEdgeDoubleClick, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius = 10, onNodesChange, onEdgesChange, noDragClassName = 'nodrag', noWheelClassName = 'nowheel', noPanClassName = 'nopan', fitView, fitViewOptions, connectOnClick, attributionPosition, proOptions, defaultEdgeOptions, elevateNodesOnSelect = true, elevateEdgesOnSelect = false, disableKeyboardA11y = false, autoPanOnConnect, autoPanOnNodeDrag, autoPanOnSelection = true, autoPanSpeed, connectionRadius, isValidConnection, onError, style, id, nodeDragThreshold, connectionDragThreshold, viewport, onViewportChange, width, height, colorMode = 'light', debug, onScroll, ariaLabelConfig, zIndexMode = 'basic', ...rest }, ref) { + const rfId = id || '1'; + const colorModeClassName = useColorModeClass(colorMode); + // Undo scroll events, preventing viewport from shifting when nodes outside of it are focused + const wrapperOnScroll = useCallback((e) => { + e.currentTarget.scrollTo({ top: 0, left: 0, behavior: 'instant' }); + onScroll?.(e); + }, [onScroll]); + return (jsx("div", { "data-testid": "rf__wrapper", ...rest, onScroll: wrapperOnScroll, style: { ...style, ...wrapperStyle }, ref: ref, className: cc(['react-flow', className, colorModeClassName]), id: id, role: "application", children: jsxs(Wrapper, { nodes: nodes, edges: edges, width: width, height: height, fitView: fitView, fitViewOptions: fitViewOptions, minZoom: minZoom, maxZoom: maxZoom, nodeOrigin: nodeOrigin, nodeExtent: nodeExtent, zIndexMode: zIndexMode, children: [jsx(StoreUpdater, { nodes: nodes, edges: edges, defaultNodes: defaultNodes, defaultEdges: defaultEdges, onConnect: onConnect, onConnectStart: onConnectStart, onConnectEnd: onConnectEnd, onClickConnectStart: onClickConnectStart, onClickConnectEnd: onClickConnectEnd, nodesDraggable: nodesDraggable, autoPanOnNodeFocus: autoPanOnNodeFocus, nodesConnectable: nodesConnectable, nodesFocusable: nodesFocusable, edgesFocusable: edgesFocusable, edgesReconnectable: edgesReconnectable, elementsSelectable: elementsSelectable, elevateNodesOnSelect: elevateNodesOnSelect, elevateEdgesOnSelect: elevateEdgesOnSelect, 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, onDelete: onDelete, onNodeDragStart: onNodeDragStart, onNodeDrag: onNodeDrag, onNodeDragStop: onNodeDragStop, onSelectionDrag: onSelectionDrag, onSelectionDragStart: onSelectionDragStart, onSelectionDragStop: onSelectionDragStop, onMove: onMove, onMoveStart: onMoveStart, onMoveEnd: onMoveEnd, noPanClassName: noPanClassName, nodeOrigin: nodeOrigin, rfId: rfId, autoPanOnConnect: autoPanOnConnect, autoPanOnNodeDrag: autoPanOnNodeDrag, autoPanSpeed: autoPanSpeed, onError: onError, connectionRadius: connectionRadius, isValidConnection: isValidConnection, selectNodesOnDrag: selectNodesOnDrag, nodeDragThreshold: nodeDragThreshold, connectionDragThreshold: connectionDragThreshold, onBeforeDelete: onBeforeDelete, debug: debug, ariaLabelConfig: ariaLabelConfig, zIndexMode: zIndexMode }), jsx(GraphView, { onInit: onInit, 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, defaultViewport: defaultViewport$1, translateExtent: translateExtent, minZoom: minZoom, maxZoom: maxZoom, preventScrolling: preventScrolling, zoomOnScroll: zoomOnScroll, zoomOnPinch: zoomOnPinch, zoomOnDoubleClick: zoomOnDoubleClick, panOnScroll: panOnScroll, panOnScrollSpeed: panOnScrollSpeed, panOnScrollMode: panOnScrollMode, panOnDrag: panOnDrag, autoPanOnSelection: autoPanOnSelection, onPaneClick: onPaneClick, onPaneMouseEnter: onPaneMouseEnter, onPaneMouseMove: onPaneMouseMove, onPaneMouseLeave: onPaneMouseLeave, onPaneScroll: onPaneScroll, onPaneContextMenu: onPaneContextMenu, paneClickDistance: paneClickDistance, nodeClickDistance: nodeClickDistance, onSelectionContextMenu: onSelectionContextMenu, onSelectionStart: onSelectionStart, onSelectionEnd: onSelectionEnd, onReconnect: onReconnect, onReconnectStart: onReconnectStart, onReconnectEnd: onReconnectEnd, onEdgeContextMenu: onEdgeContextMenu, onEdgeDoubleClick: onEdgeDoubleClick, onEdgeMouseEnter: onEdgeMouseEnter, onEdgeMouseMove: onEdgeMouseMove, onEdgeMouseLeave: onEdgeMouseLeave, reconnectRadius: reconnectRadius, defaultMarkerColor: defaultMarkerColor, noDragClassName: noDragClassName, noWheelClassName: noWheelClassName, noPanClassName: noPanClassName, rfId: rfId, disableKeyboardA11y: disableKeyboardA11y, nodeExtent: nodeExtent, viewport: viewport, onViewportChange: onViewportChange, nodesDraggable: nodesDraggable }), jsx(SelectionListener, { onSelectionChange: onSelectionChange }), children, jsx(Attribution, { proOptions: proOptions, position: attributionPosition }), jsx(A11yDescriptions, { rfId: rfId, disableKeyboardA11y: disableKeyboardA11y })] }) })); +} +/** + * The `` component is the heart of your React Flow application. + * It renders your nodes and edges and handles user interaction + * + * @public + * + * @example + * ```tsx + *import { ReactFlow } from '@xyflow/react' + * + *export default function Flow() { + * return (); + *} + *``` + */ +var index = fixedForwardRef(ReactFlow); + +const selector$6 = (s) => s.domNode?.querySelector('.react-flow__edgelabel-renderer'); +/** + * Edges are SVG-based. If you want to render more complex labels you can use the + * `` component to access a div based renderer. This component + * is a portal that renders the label in a `
` that is positioned on top of + * the edges. You can see an example usage of the component in the + * [edge label renderer example](/examples/edges/edge-label-renderer). + * @public + * + * @example + * ```jsx + * import React from 'react'; + * import { getBezierPath, EdgeLabelRenderer, BaseEdge } from '@xyflow/react'; + * + * export function CustomEdge({ id, data, ...props }) { + * const [edgePath, labelX, labelY] = getBezierPath(props); + * + * return ( + * <> + * + * + *
+ * {data.label} + *
+ *
+ * + * ); + * }; + * ``` + * + * @remarks The `` has no pointer events by default. If you want to + * add mouse interactions you need to set the style `pointerEvents: all` and add + * the `nopan` class on the label or the element you want to interact with. + */ +function EdgeLabelRenderer({ children }) { + const edgeLabelRenderer = useStore(selector$6); + if (!edgeLabelRenderer) { + return null; + } + return createPortal(children, edgeLabelRenderer); +} + +const selector$5 = (s) => s.domNode?.querySelector('.react-flow__viewport-portal'); +/** + * The `` component can be used to add components to the same viewport + * of the flow where nodes and edges are rendered. This is useful when you want to render + * your own components that are adhere to the same coordinate system as the nodes & edges + * and are also affected by zooming and panning + * @public + * @example + * + * ```jsx + *import React from 'react'; + *import { ViewportPortal } from '@xyflow/react'; + * + *export default function () { + * return ( + * + *
+ * This div is positioned at [100, 100] on the flow. + *
+ *
+ * ); + *} + *``` + */ +function ViewportPortal({ children }) { + const viewPortalDiv = useStore(selector$5); + if (!viewPortalDiv) { + return null; + } + return createPortal(children, viewPortalDiv); +} + +/** + * When you programmatically add or remove handles to a node or update a node's + * handle position, you need to let React Flow know about it using this hook. This + * will update the internal dimensions of the node and properly reposition handles + * on the canvas if necessary. + * + * @public + * @returns Use this function to tell React Flow to update the internal state of one or more nodes + * that you have changed programmatically. + * + * @example + * ```jsx + *import { useCallback, useState } from 'react'; + *import { Handle, useUpdateNodeInternals } from '@xyflow/react'; + * + *export default function RandomHandleNode({ id }) { + * const updateNodeInternals = useUpdateNodeInternals(); + * const [handleCount, setHandleCount] = useState(0); + * const randomizeHandleCount = useCallback(() => { + * setHandleCount(Math.floor(Math.random() * 10)); + * updateNodeInternals(id); + * }, [id, updateNodeInternals]); + * + * return ( + * <> + * {Array.from({ length: handleCount }).map((_, index) => ( + * + * ))} + * + *
+ * + *

There are {handleCount} handles on this node.

+ *
+ * + * ); + *} + *``` + * @remarks This hook can only be used in a component that is a child of a + *{@link ReactFlowProvider} or a {@link ReactFlow} component. + */ +function useUpdateNodeInternals() { + const store = useStoreApi(); + return useCallback((id) => { + const { domNode, updateNodeInternals } = store.getState(); + const updateIds = Array.isArray(id) ? id : [id]; + const updates = new Map(); + updateIds.forEach((updateId) => { + const nodeElement = domNode?.querySelector(`.react-flow__node[data-id="${updateId}"]`); + if (nodeElement) { + updates.set(updateId, { id: updateId, nodeElement, force: true }); + } + }); + requestAnimationFrame(() => updateNodeInternals(updates, { triggerFitView: false })); + }, []); +} + +const nodesSelector = (state) => state.nodes; +/** + * This hook returns an array of the current nodes. Components that use this hook + * will re-render **whenever any node changes**, including when a node is selected + * or moved. + * + * @public + * @returns An array of all nodes currently in the flow. + * + * @example + * ```jsx + *import { useNodes } from '@xyflow/react'; + * + *export default function() { + * const nodes = useNodes(); + * + * return
There are currently {nodes.length} nodes!
; + *} + *``` + */ +function useNodes() { + const nodes = useStore(nodesSelector, shallow); + return nodes; +} + +const edgesSelector = (state) => state.edges; +/** + * This hook returns an array of the current edges. Components that use this hook + * will re-render **whenever any edge changes**. + * + * @public + * @returns An array of all edges currently in the flow. + * + * @example + * ```tsx + *import { useEdges } from '@xyflow/react'; + * + *export default function () { + * const edges = useEdges(); + * + * return
There are currently {edges.length} edges!
; + *} + *``` + */ +function useEdges() { + const edges = useStore(edgesSelector, shallow); + return edges; +} + +const viewportSelector = (state) => ({ + x: state.transform[0], + y: state.transform[1], + zoom: state.transform[2], +}); +/** + * The `useViewport` hook is a convenient way to read the current state of the + * {@link Viewport} in a component. Components that use this hook + * will re-render **whenever the viewport changes**. + * + * @public + * @returns The current viewport. + * + * @example + * + *```jsx + *import { useViewport } from '@xyflow/react'; + * + *export default function ViewportDisplay() { + * const { x, y, zoom } = useViewport(); + * + * return ( + *
+ *

+ * The viewport is currently at ({x}, {y}) and zoomed to {zoom}. + *

+ *
+ * ); + *} + *``` + * + * @remarks This hook can only be used in a component that is a child of a + *{@link ReactFlowProvider} or a {@link ReactFlow} component. + */ +function useViewport() { + const viewport = useStore(viewportSelector, shallow); + return viewport; +} + +/** + * This hook makes it easy to prototype a controlled flow where you manage the + * state of nodes and edges outside the `ReactFlowInstance`. You can think of it + * like React's `useState` hook with an additional helper callback. + * + * @public + * @returns + * - `nodes`: The current array of nodes. You might pass this directly to the `nodes` prop of your + * `` component, or you may want to manipulate it first to perform some layouting, + * for example. + * - `setNodes`: A function that you can use to update the nodes. You can pass it a new array of + * nodes or a callback that receives the current array of nodes and returns a new array of nodes. + * This is the same as the second element of the tuple returned by React's `useState` hook. + * - `onNodesChange`: A handy callback that can take an array of `NodeChanges` and update the nodes + * state accordingly. You'll typically pass this directly to the `onNodesChange` prop of your + * `` component. + * @example + * + *```tsx + *import { ReactFlow, useNodesState, useEdgesState } from '@xyflow/react'; + * + *const initialNodes = []; + *const initialEdges = []; + * + *export default function () { + * const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes); + * const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges); + * + * return ( + * + * ); + *} + *``` + * + * @remarks This hook was created to make prototyping easier and our documentation + * examples clearer. Although it is OK to use this hook in production, in + * practice you may want to use a more sophisticated state management solution + * like Zustand {@link https://reactflow.dev/docs/guides/state-management/} instead. + * + */ +function useNodesState(initialNodes) { + const [nodes, setNodes] = useState(initialNodes); + const onNodesChange = useCallback((changes) => setNodes((nds) => applyNodeChanges(changes, nds)), []); + return [nodes, setNodes, onNodesChange]; +} +/** + * This hook makes it easy to prototype a controlled flow where you manage the + * state of nodes and edges outside the `ReactFlowInstance`. You can think of it + * like React's `useState` hook with an additional helper callback. + * + * @public + * @returns + * - `edges`: The current array of edges. You might pass this directly to the `edges` prop of your + * `` component, or you may want to manipulate it first to perform some layouting, + * for example. + * + * - `setEdges`: A function that you can use to update the edges. You can pass it a new array of + * edges or a callback that receives the current array of edges and returns a new array of edges. + * This is the same as the second element of the tuple returned by React's `useState` hook. + * + * - `onEdgesChange`: A handy callback that can take an array of `EdgeChanges` and update the edges + * state accordingly. You'll typically pass this directly to the `onEdgesChange` prop of your + * `` component. + * @example + * + *```tsx + *import { ReactFlow, useNodesState, useEdgesState } from '@xyflow/react'; + * + *const initialNodes = []; + *const initialEdges = []; + * + *export default function () { + * const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes); + * const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges); + * + * return ( + * + * ); + *} + *``` + * + * @remarks This hook was created to make prototyping easier and our documentation + * examples clearer. Although it is OK to use this hook in production, in + * practice you may want to use a more sophisticated state management solution + * like Zustand {@link https://reactflow.dev/docs/guides/state-management/} instead. + * + */ +function useEdgesState(initialEdges) { + const [edges, setEdges] = useState(initialEdges); + const onEdgesChange = useCallback((changes) => setEdges((eds) => applyEdgeChanges(changes, eds)), []); + return [edges, setEdges, onEdgesChange]; +} + +/** + * The `useOnViewportChange` hook lets you listen for changes to the viewport such + * as panning and zooming. You can provide a callback for each phase of a viewport + * change: `onStart`, `onChange`, and `onEnd`. + * + * @public + * @example + * ```jsx + *import { useCallback } from 'react'; + *import { useOnViewportChange } from '@xyflow/react'; + * + *function ViewportChangeLogger() { + * useOnViewportChange({ + * onStart: (viewport: Viewport) => console.log('start', viewport), + * onChange: (viewport: Viewport) => console.log('change', viewport), + * onEnd: (viewport: Viewport) => console.log('end', viewport), + * }); + * + * return null; + *} + *``` + */ +function useOnViewportChange({ onStart, onChange, onEnd }) { + const store = useStoreApi(); + useEffect(() => { + store.setState({ onViewportChangeStart: onStart }); + }, [onStart]); + useEffect(() => { + store.setState({ onViewportChange: onChange }); + }, [onChange]); + useEffect(() => { + store.setState({ onViewportChangeEnd: onEnd }); + }, [onEnd]); +} + +/** + * This hook lets you listen for changes to both node and edge selection. As the + *name implies, the callback you provide will be called whenever the selection of + *_either_ nodes or edges changes. + * + * @public + * @example + * ```jsx + *import { useState } from 'react'; + *import { ReactFlow, useOnSelectionChange } from '@xyflow/react'; + * + *function SelectionDisplay() { + * const [selectedNodes, setSelectedNodes] = useState([]); + * const [selectedEdges, setSelectedEdges] = useState([]); + * + * // the passed handler has to be memoized, otherwise the hook will not work correctly + * const onChange = useCallback(({ nodes, edges }) => { + * setSelectedNodes(nodes.map((node) => node.id)); + * setSelectedEdges(edges.map((edge) => edge.id)); + * }, []); + * + * useOnSelectionChange({ + * onChange, + * }); + * + * return ( + *
+ *

Selected nodes: {selectedNodes.join(', ')}

+ *

Selected edges: {selectedEdges.join(', ')}

+ *
+ * ); + *} + *``` + * + * @remarks You need to memoize the passed `onChange` handler, otherwise the hook will not work correctly. + */ +function useOnSelectionChange({ onChange, }) { + const store = useStoreApi(); + useEffect(() => { + const nextOnSelectionChangeHandlers = [...store.getState().onSelectionChangeHandlers, onChange]; + store.setState({ onSelectionChangeHandlers: nextOnSelectionChangeHandlers }); + return () => { + const nextHandlers = store.getState().onSelectionChangeHandlers.filter((fn) => fn !== onChange); + store.setState({ onSelectionChangeHandlers: nextHandlers }); + }; + }, [onChange]); +} + +const selector$4 = (options) => (s) => { + if (!options.includeHiddenNodes) { + return s.nodesInitialized; + } + if (s.nodeLookup.size === 0) { + return false; + } + for (const [, { internals }] of s.nodeLookup) { + if (internals.handleBounds === undefined || !nodeHasDimensions(internals.userNode)) { + return false; + } + } + return true; +}; +/** + * This hook tells you whether all the nodes in a flow have been measured and given + *a width and height. When you add a node to the flow, this hook will return + *`false` and then `true` again once the node has been measured. + * + * @public + * @returns Whether or not the nodes have been initialized by the `` component and + * given a width and height. + * + * @example + * ```jsx + *import { useReactFlow, useNodesInitialized } from '@xyflow/react'; + *import { useEffect, useState } from 'react'; + * + *const options = { + * includeHiddenNodes: false, + *}; + * + *export default function useLayout() { + * const { getNodes } = useReactFlow(); + * const nodesInitialized = useNodesInitialized(options); + * const [layoutedNodes, setLayoutedNodes] = useState(getNodes()); + * + * useEffect(() => { + * if (nodesInitialized) { + * setLayoutedNodes(yourLayoutingFunction(getNodes())); + * } + * }, [nodesInitialized]); + * + * return layoutedNodes; + *} + *``` + */ +function useNodesInitialized(options = { + includeHiddenNodes: false, +}) { + const initialized = useStore(selector$4(options)); + return initialized; +} + +/** + * Hook to check if a is connected to another and get the connections. + * + * @public + * @deprecated Use `useNodeConnections` instead. + * @returns An array with handle connections. + */ +function useHandleConnections({ type, id, nodeId, onConnect, onDisconnect, }) { + console.warn('[DEPRECATED] `useHandleConnections` is deprecated. Instead use `useNodeConnections` https://reactflow.dev/api-reference/hooks/useNodeConnections'); + const _nodeId = useNodeId(); + const currentNodeId = nodeId ?? _nodeId; + const prevConnections = useRef(null); + const connections = useStore((state) => state.connectionLookup.get(`${currentNodeId}-${type}${id ? `-${id}` : ''}`), areConnectionMapsEqual); + useEffect(() => { + // @todo discuss if onConnect/onDisconnect should be called when the component mounts/unmounts + if (prevConnections.current && prevConnections.current !== connections) { + const _connections = connections ?? new Map(); + handleConnectionChange(prevConnections.current, _connections, onDisconnect); + handleConnectionChange(_connections, prevConnections.current, onConnect); + } + prevConnections.current = connections ?? new Map(); + }, [connections, onConnect, onDisconnect]); + return useMemo(() => Array.from(connections?.values() ?? []), [connections]); +} + +const error014 = errorMessages['error014'](); +/** + * This hook returns an array of connections on a specific node, handle type ('source', 'target') or handle ID. + * + * @public + * @returns An array with connections. + * + * @example + * ```jsx + *import { useNodeConnections } from '@xyflow/react'; + * + *export default function () { + * const connections = useNodeConnections({ + * handleType: 'target', + * handleId: 'my-handle', + * }); + * + * return ( + *
There are currently {connections.length} incoming connections!
+ * ); + *} + *``` + */ +function useNodeConnections({ id, handleType, handleId, onConnect, onDisconnect, } = {}) { + const nodeId = useNodeId(); + const currentNodeId = id ?? nodeId; + if (!currentNodeId) { + throw new Error(error014); + } + const prevConnections = useRef(null); + const connections = useStore((state) => state.connectionLookup.get(`${currentNodeId}${handleType ? (handleId ? `-${handleType}-${handleId}` : `-${handleType}`) : ''}`), areConnectionMapsEqual); + useEffect(() => { + // @todo discuss if onConnect/onDisconnect should be called when the component mounts/unmounts + if (prevConnections.current && prevConnections.current !== connections) { + const _connections = connections ?? new Map(); + handleConnectionChange(prevConnections.current, _connections, onDisconnect); + handleConnectionChange(_connections, prevConnections.current, onConnect); + } + prevConnections.current = connections ?? new Map(); + }, [connections, onConnect, onDisconnect]); + return useMemo(() => Array.from(connections?.values() ?? []), [connections]); +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function useNodesData(nodeIds) { + const nodesData = useStore(useCallback((s) => { + const data = []; + const isArrayOfIds = Array.isArray(nodeIds); + const _nodeIds = isArrayOfIds ? nodeIds : [nodeIds]; + for (const nodeId of _nodeIds) { + const node = s.nodeLookup.get(nodeId); + if (node) { + data.push({ + id: node.id, + type: node.type, + data: node.data, + }); + } + } + return isArrayOfIds ? data : data[0] ?? null; + }, [nodeIds]), shallowNodeData); + return nodesData; +} + +/** + * This hook returns the internal representation of a specific node. + * Components that use this hook will re-render **whenever the node changes**, + * including when a node is selected or moved. + * + * @public + * @param id - The ID of a node you want to observe. + * @returns The `InternalNode` object for the node with the given ID. + * + * @example + * ```tsx + *import { useInternalNode } from '@xyflow/react'; + * + *export default function () { + * const internalNode = useInternalNode('node-1'); + * const absolutePosition = internalNode.internals.positionAbsolute; + * + * return ( + *
+ * The absolute position of the node is at: + *

x: {absolutePosition.x}

+ *

y: {absolutePosition.y}

+ *
+ * ); + *} + *``` + */ +function useInternalNode(id) { + const node = useStore(useCallback((s) => s.nodeLookup.get(id), [id]), shallow); + return node; +} + +/** + * Registers a middleware function to transform node changes. + * + * @public + * @param fn - Middleware function. Should be memoized with useCallback to avoid re-registration. + */ +function experimental_useOnNodesChangeMiddleware(fn) { + const store = useStoreApi(); + const [symbol] = useState(() => Symbol()); + useEffect(() => { + const { onNodesChangeMiddlewareMap } = store.getState(); + onNodesChangeMiddlewareMap.set(symbol, fn); + }, [fn]); + useEffect(() => { + const { onNodesChangeMiddlewareMap } = store.getState(); + return () => { + onNodesChangeMiddlewareMap.delete(symbol); + }; + }, []); +} + +/** + * Registers a middleware function to transform edge changes. + * + * @public + * @param fn - Middleware function. Should be memoized with useCallback to avoid re-registration. + */ +function experimental_useOnEdgesChangeMiddleware(fn) { + const store = useStoreApi(); + const [symbol] = useState(() => Symbol()); + useEffect(() => { + const { onEdgesChangeMiddlewareMap } = store.getState(); + onEdgesChangeMiddlewareMap.set(symbol, fn); + }, [fn]); + useEffect(() => { + const { onEdgesChangeMiddlewareMap } = store.getState(); + return () => { + onEdgesChangeMiddlewareMap.delete(symbol); + }; + }, []); +} + +function LinePattern({ dimensions, lineWidth, variant, className }) { + return (jsx("path", { strokeWidth: lineWidth, d: `M${dimensions[0] / 2} 0 V${dimensions[1]} M0 ${dimensions[1] / 2} H${dimensions[0]}`, className: cc(['react-flow__background-pattern', variant, className]) })); +} +function DotPattern({ radius, className }) { + return (jsx("circle", { cx: radius, cy: radius, r: radius, className: cc(['react-flow__background-pattern', 'dots', className]) })); +} + +/** + * The three variants are exported as an enum for convenience. You can either import + * the enum and use it like `BackgroundVariant.Lines` or you can use the raw string + * value directly. + * @public + */ +var BackgroundVariant; +(function (BackgroundVariant) { + BackgroundVariant["Lines"] = "lines"; + BackgroundVariant["Dots"] = "dots"; + BackgroundVariant["Cross"] = "cross"; +})(BackgroundVariant || (BackgroundVariant = {})); + +const defaultSize = { + [BackgroundVariant.Dots]: 1, + [BackgroundVariant.Lines]: 1, + [BackgroundVariant.Cross]: 6, +}; +const selector$3 = (s) => ({ transform: s.transform, patternId: `pattern-${s.rfId}` }); +function BackgroundComponent({ id, variant = BackgroundVariant.Dots, +// only used for dots and cross +gap = 20, +// only used for lines and cross +size, lineWidth = 1, offset = 0, color, bgColor, style, className, patternClassName, }) { + const ref = useRef(null); + const { transform, patternId } = useStore(selector$3, shallow); + const patternSize = size || defaultSize[variant]; + const isDots = variant === BackgroundVariant.Dots; + const isCross = variant === BackgroundVariant.Cross; + const gapXY = Array.isArray(gap) ? gap : [gap, gap]; + const scaledGap = [gapXY[0] * transform[2] || 1, gapXY[1] * transform[2] || 1]; + const scaledSize = patternSize * transform[2]; + const offsetXY = Array.isArray(offset) ? offset : [offset, offset]; + const patternDimensions = isCross ? [scaledSize, scaledSize] : scaledGap; + const scaledOffset = [ + offsetXY[0] * transform[2] || 1 + patternDimensions[0] / 2, + offsetXY[1] * transform[2] || 1 + patternDimensions[1] / 2, + ]; + const _patternId = `${patternId}${id ? id : ''}`; + return (jsxs("svg", { className: cc(['react-flow__background', className]), style: { + ...style, + ...containerStyle, + '--xy-background-color-props': bgColor, + '--xy-background-pattern-color-props': color, + }, ref: ref, "data-testid": "rf__background", children: [jsx("pattern", { id: _patternId, x: transform[0] % scaledGap[0], y: transform[1] % scaledGap[1], width: scaledGap[0], height: scaledGap[1], patternUnits: "userSpaceOnUse", patternTransform: `translate(-${scaledOffset[0]},-${scaledOffset[1]})`, children: isDots ? (jsx(DotPattern, { radius: scaledSize / 2, className: patternClassName })) : (jsx(LinePattern, { dimensions: patternDimensions, lineWidth: lineWidth, variant: variant, className: patternClassName })) }), jsx("rect", { x: "0", y: "0", width: "100%", height: "100%", fill: `url(#${_patternId})` })] })); +} +BackgroundComponent.displayName = 'Background'; +/** + * The `` component makes it convenient to render different types of backgrounds common in node-based UIs. It comes with three variants: lines, dots and cross. + * + * @example + * + * A simple example of how to use the Background component. + * + * ```tsx + * import { useState } from 'react'; + * import { ReactFlow, Background, BackgroundVariant } from '@xyflow/react'; + * + * export default function Flow() { + * return ( + * + * + * + * ); + * } + * ``` + * + * @example + * + * In this example you can see how to combine multiple backgrounds + * + * ```tsx + * import { ReactFlow, Background, BackgroundVariant } from '@xyflow/react'; + * import '@xyflow/react/dist/style.css'; + * + * export default function Flow() { + * return ( + * + * + * + * + * ); + * } + * ``` + * + * @remarks + * + * When combining multiple components it’s important to give each of them a unique id prop! + * + */ +const Background = memo(BackgroundComponent); + +function PlusIcon() { + return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 32", children: jsx("path", { d: "M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z" }) })); +} + +function MinusIcon() { + return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 5", children: jsx("path", { d: "M0 0h32v4.2H0z" }) })); +} + +function FitViewIcon() { + return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 30", children: jsx("path", { d: "M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z" }) })); +} + +function LockIcon() { + return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 25 32", children: jsx("path", { d: "M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z" }) })); +} + +function UnlockIcon() { + return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 25 32", children: jsx("path", { d: "M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z" }) })); +} + +/** + * You can add buttons to the control panel by using the `` component + * and pass it as a child to the [``](/api-reference/components/controls) component. + * + * @public + * @example + *```jsx + *import { MagicWand } from '@radix-ui/react-icons' + *import { ReactFlow, Controls, ControlButton } from '@xyflow/react' + * + *export default function Flow() { + * return ( + * + * + * alert('Something magical just happened. ✨')}> + * + * + * + * + * ) + *} + *``` + */ +function ControlButton({ children, className, ...rest }) { + return (jsx("button", { type: "button", className: cc(['react-flow__controls-button', className]), ...rest, children: children })); +} + +const selector$2 = (s) => ({ + isInteractive: s.nodesDraggable || s.nodesConnectable || s.elementsSelectable, + minZoomReached: s.transform[2] <= s.minZoom, + maxZoomReached: s.transform[2] >= s.maxZoom, + ariaLabelConfig: s.ariaLabelConfig, +}); +function ControlsComponent({ style, showZoom = true, showFitView = true, showInteractive = true, fitViewOptions, onZoomIn, onZoomOut, onFitView, onInteractiveChange, className, children, position = 'bottom-left', orientation = 'vertical', 'aria-label': ariaLabel, }) { + const store = useStoreApi(); + const { isInteractive, minZoomReached, maxZoomReached, ariaLabelConfig } = useStore(selector$2, shallow); + const { zoomIn, zoomOut, fitView } = useReactFlow(); + const onZoomInHandler = () => { + zoomIn(); + onZoomIn?.(); + }; + const onZoomOutHandler = () => { + zoomOut(); + onZoomOut?.(); + }; + const onFitViewHandler = () => { + fitView(fitViewOptions); + onFitView?.(); + }; + const onToggleInteractivity = () => { + store.setState({ + nodesDraggable: !isInteractive, + nodesConnectable: !isInteractive, + elementsSelectable: !isInteractive, + }); + onInteractiveChange?.(!isInteractive); + }; + const orientationClass = orientation === 'horizontal' ? 'horizontal' : 'vertical'; + return (jsxs(Panel, { className: cc(['react-flow__controls', orientationClass, className]), position: position, style: style, "data-testid": "rf__controls", "aria-label": ariaLabel ?? ariaLabelConfig['controls.ariaLabel'], children: [showZoom && (jsxs(Fragment, { children: [jsx(ControlButton, { onClick: onZoomInHandler, className: "react-flow__controls-zoomin", title: ariaLabelConfig['controls.zoomIn.ariaLabel'], "aria-label": ariaLabelConfig['controls.zoomIn.ariaLabel'], disabled: maxZoomReached, children: jsx(PlusIcon, {}) }), jsx(ControlButton, { onClick: onZoomOutHandler, className: "react-flow__controls-zoomout", title: ariaLabelConfig['controls.zoomOut.ariaLabel'], "aria-label": ariaLabelConfig['controls.zoomOut.ariaLabel'], disabled: minZoomReached, children: jsx(MinusIcon, {}) })] })), showFitView && (jsx(ControlButton, { className: "react-flow__controls-fitview", onClick: onFitViewHandler, title: ariaLabelConfig['controls.fitView.ariaLabel'], "aria-label": ariaLabelConfig['controls.fitView.ariaLabel'], children: jsx(FitViewIcon, {}) })), showInteractive && (jsx(ControlButton, { className: "react-flow__controls-interactive", onClick: onToggleInteractivity, title: ariaLabelConfig['controls.interactive.ariaLabel'], "aria-label": ariaLabelConfig['controls.interactive.ariaLabel'], children: isInteractive ? jsx(UnlockIcon, {}) : jsx(LockIcon, {}) })), children] })); +} +ControlsComponent.displayName = 'Controls'; +/** + * The `` component renders a small panel that contains convenient + * buttons to zoom in, zoom out, fit the view, and lock the viewport. + * + * @public + * @example + *```tsx + *import { ReactFlow, Controls } from '@xyflow/react' + * + *export default function Flow() { + * return ( + * + * + * + * ) + *} + *``` + * + * @remarks To extend or customise the controls, you can use the [``](/api-reference/components/control-button) component + * + */ +const Controls = memo(ControlsComponent); + +function MiniMapNodeComponent({ id, x, y, width, height, style, color, strokeColor, strokeWidth, className, borderRadius, shapeRendering, selected, onClick, }) { + const { background, backgroundColor } = style || {}; + const fill = (color || background || backgroundColor); + return (jsx("rect", { className: cc(['react-flow__minimap-node', { selected }, className]), x: x, y: y, rx: borderRadius, ry: borderRadius, width: width, height: height, style: { + fill, + stroke: strokeColor, + strokeWidth, + }, shapeRendering: shapeRendering, onClick: onClick ? (event) => onClick(event, id) : undefined })); +} +const MiniMapNode = memo(MiniMapNodeComponent); + +const selectorNodeIds = (s) => s.nodes.map((node) => node.id); +const getAttrFunction = (func) => func instanceof Function ? func : () => func; +function MiniMapNodes({ nodeStrokeColor, nodeColor, nodeClassName = '', nodeBorderRadius = 5, nodeStrokeWidth, +/* + * We need to rename the prop to be `CapitalCase` so that JSX will render it as + * a component properly. + */ +nodeComponent: NodeComponent = MiniMapNode, onClick, }) { + const nodeIds = useStore(selectorNodeIds, shallow); + const nodeColorFunc = getAttrFunction(nodeColor); + const nodeStrokeColorFunc = getAttrFunction(nodeStrokeColor); + const nodeClassNameFunc = getAttrFunction(nodeClassName); + const shapeRendering = typeof window === 'undefined' || !!window.chrome ? 'crispEdges' : 'geometricPrecision'; + return (jsx(Fragment, { children: nodeIds.map((nodeId) => ( + /* + * The split of responsibilities between MiniMapNodes and + * NodeComponentWrapper may appear weird. However, it’s designed to + * minimize the cost of updates when individual nodes change. + * + * For more details, see a similar commit in `NodeRenderer/index.tsx`. + */ + jsx(NodeComponentWrapper, { id: nodeId, nodeColorFunc: nodeColorFunc, nodeStrokeColorFunc: nodeStrokeColorFunc, nodeClassNameFunc: nodeClassNameFunc, nodeBorderRadius: nodeBorderRadius, nodeStrokeWidth: nodeStrokeWidth, NodeComponent: NodeComponent, onClick: onClick, shapeRendering: shapeRendering }, nodeId))) })); +} +function NodeComponentWrapperInner({ id, nodeColorFunc, nodeStrokeColorFunc, nodeClassNameFunc, nodeBorderRadius, nodeStrokeWidth, shapeRendering, NodeComponent, onClick, }) { + const { node, x, y, width, height } = useStore((s) => { + const node = s.nodeLookup.get(id); + if (!node) { + return { node: undefined, x: 0, y: 0, width: 0, height: 0 }; + } + const userNode = node.internals.userNode; + const { x, y } = node.internals.positionAbsolute; + const { width, height } = getNodeDimensions(userNode); + return { + node: userNode, + x, + y, + width, + height, + }; + }, shallow); + if (!node || node.hidden || !nodeHasDimensions(node)) { + return null; + } + return (jsx(NodeComponent, { x: x, y: y, width: width, height: height, style: node.style, selected: !!node.selected, className: nodeClassNameFunc(node), color: nodeColorFunc(node), borderRadius: nodeBorderRadius, strokeColor: nodeStrokeColorFunc(node), strokeWidth: nodeStrokeWidth, shapeRendering: shapeRendering, onClick: onClick, id: node.id })); +} +const NodeComponentWrapper = memo(NodeComponentWrapperInner); +var MiniMapNodes$1 = memo(MiniMapNodes); + +const defaultWidth = 200; +const defaultHeight = 150; +const filterHidden = (node) => !node.hidden; +const selector$1 = (s) => { + const viewBB = { + x: -s.transform[0] / s.transform[2], + y: -s.transform[1] / s.transform[2], + width: s.width / s.transform[2], + height: s.height / s.transform[2], + }; + return { + viewBB, + boundingRect: s.nodeLookup.size > 0 + ? getBoundsOfRects(getInternalNodesBounds(s.nodeLookup, { filter: filterHidden }), viewBB) + : viewBB, + rfId: s.rfId, + panZoom: s.panZoom, + translateExtent: s.translateExtent, + flowWidth: s.width, + flowHeight: s.height, + ariaLabelConfig: s.ariaLabelConfig, + }; +}; +const rectEqual = (a, b) => a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height; +// the selector builds new viewBB/boundingRect objects every call, so the default shallow equality always +// treats them as changed; comparing the rects by value lets the minimap skip re-renders when nothing moved +const areEqual = (a, b) => rectEqual(a.viewBB, b.viewBB) && + rectEqual(a.boundingRect, b.boundingRect) && + a.rfId === b.rfId && + a.panZoom === b.panZoom && + a.translateExtent === b.translateExtent && + a.flowWidth === b.flowWidth && + a.flowHeight === b.flowHeight && + a.ariaLabelConfig === b.ariaLabelConfig; +const ARIA_LABEL_KEY = 'react-flow__minimap-desc'; +function MiniMapComponent({ style, className, nodeStrokeColor, nodeColor, nodeClassName = '', nodeBorderRadius = 5, nodeStrokeWidth, +/* + * We need to rename the prop to be `CapitalCase` so that JSX will render it as + * a component properly. + */ +nodeComponent, bgColor, maskColor, maskStrokeColor, maskStrokeWidth, position = 'bottom-right', onClick, onNodeClick, pannable = false, zoomable = false, ariaLabel, inversePan, zoomStep = 1, offsetScale = 5, }) { + const store = useStoreApi(); + const svg = useRef(null); + const { boundingRect, viewBB, rfId, panZoom, translateExtent, flowWidth, flowHeight, ariaLabelConfig } = useStore(selector$1, areEqual); + const elementWidth = style?.width ?? defaultWidth; + const elementHeight = style?.height ?? defaultHeight; + const scaledWidth = boundingRect.width / elementWidth; + const scaledHeight = boundingRect.height / elementHeight; + const viewScale = Math.max(scaledWidth, scaledHeight); + const viewWidth = viewScale * elementWidth; + const viewHeight = viewScale * elementHeight; + const offset = offsetScale * viewScale; + const x = boundingRect.x - (viewWidth - boundingRect.width) / 2 - offset; + const y = boundingRect.y - (viewHeight - boundingRect.height) / 2 - offset; + const width = viewWidth + offset * 2; + const height = viewHeight + offset * 2; + const labelledBy = `${ARIA_LABEL_KEY}-${rfId}`; + const viewScaleRef = useRef(0); + const minimapInstance = useRef(); + viewScaleRef.current = viewScale; + useEffect(() => { + if (svg.current && panZoom) { + minimapInstance.current = XYMinimap({ + domNode: svg.current, + panZoom, + getTransform: () => store.getState().transform, + getViewScale: () => viewScaleRef.current, + }); + return () => { + minimapInstance.current?.destroy(); + }; + } + }, [panZoom]); + useEffect(() => { + minimapInstance.current?.update({ + translateExtent, + width: flowWidth, + height: flowHeight, + inversePan, + pannable, + zoomStep, + zoomable, + }); + }, [pannable, zoomable, inversePan, zoomStep, translateExtent, flowWidth, flowHeight]); + const onSvgClick = onClick + ? (event) => { + const [x, y] = minimapInstance.current?.pointer(event) || [0, 0]; + onClick(event, { x, y }); + } + : undefined; + const onSvgNodeClick = onNodeClick + ? useCallback((event, nodeId) => { + const node = store.getState().nodeLookup.get(nodeId).internals.userNode; + onNodeClick(event, node); + }, []) + : undefined; + const _ariaLabel = ariaLabel ?? ariaLabelConfig['minimap.ariaLabel']; + return (jsx(Panel, { position: position, style: { + ...style, + '--xy-minimap-background-color-props': typeof bgColor === 'string' ? bgColor : undefined, + '--xy-minimap-mask-background-color-props': typeof maskColor === 'string' ? maskColor : undefined, + '--xy-minimap-mask-stroke-color-props': typeof maskStrokeColor === 'string' ? maskStrokeColor : undefined, + '--xy-minimap-mask-stroke-width-props': typeof maskStrokeWidth === 'number' ? maskStrokeWidth * viewScale : undefined, + '--xy-minimap-node-background-color-props': typeof nodeColor === 'string' ? nodeColor : undefined, + '--xy-minimap-node-stroke-color-props': typeof nodeStrokeColor === 'string' ? nodeStrokeColor : undefined, + '--xy-minimap-node-stroke-width-props': typeof nodeStrokeWidth === 'number' ? nodeStrokeWidth : undefined, + }, className: cc(['react-flow__minimap', className]), "data-testid": "rf__minimap", children: jsxs("svg", { width: elementWidth, height: elementHeight, viewBox: `${x} ${y} ${width} ${height}`, className: "react-flow__minimap-svg", role: "img", "aria-labelledby": labelledBy, ref: svg, onClick: onSvgClick, children: [_ariaLabel && jsx("title", { id: labelledBy, children: _ariaLabel }), jsx(MiniMapNodes$1, { onClick: onSvgNodeClick, nodeColor: nodeColor, nodeStrokeColor: nodeStrokeColor, nodeBorderRadius: nodeBorderRadius, nodeClassName: nodeClassName, nodeStrokeWidth: nodeStrokeWidth, nodeComponent: nodeComponent }), jsx("path", { className: "react-flow__minimap-mask", d: `M${x - offset},${y - offset}h${width + offset * 2}v${height + offset * 2}h${-width - offset * 2}z + M${viewBB.x},${viewBB.y}h${viewBB.width}v${viewBB.height}h${-viewBB.width}z`, fillRule: "evenodd", pointerEvents: "none" })] }) })); +} +MiniMapComponent.displayName = 'MiniMap'; +/** + * The `` component can be used to render an overview of your flow. It + * renders each node as an SVG element and visualizes where the current viewport is + * in relation to the rest of the flow. + * + * @public + * @example + * + * ```jsx + *import { ReactFlow, MiniMap } from '@xyflow/react'; + * + *export default function Flow() { + * return ( + * + * + * + * ); + *} + *``` + */ +const MiniMap = memo(MiniMapComponent); + +const scaleSelector = (calculateScale) => (store) => calculateScale ? `${Math.max(1 / store.transform[2], 1)}` : undefined; +const defaultPositions = { + [ResizeControlVariant.Line]: 'right', + [ResizeControlVariant.Handle]: 'bottom-right', +}; +function ResizeControl({ nodeId, position, variant = ResizeControlVariant.Handle, className, style = undefined, children, color, minWidth = 10, minHeight = 10, maxWidth = Number.MAX_VALUE, maxHeight = Number.MAX_VALUE, keepAspectRatio = false, resizeDirection, autoScale = true, shouldResize, onResizeStart, onResize, onResizeEnd, }) { + const contextNodeId = useNodeId(); + const id = typeof nodeId === 'string' ? nodeId : contextNodeId; + const store = useStoreApi(); + const resizeControlRef = useRef(null); + const isHandleControl = variant === ResizeControlVariant.Handle; + const scale = useStore(useCallback(scaleSelector(isHandleControl && autoScale), [isHandleControl, autoScale]), shallow); + const resizer = useRef(null); + const controlPosition = position ?? defaultPositions[variant]; + useEffect(() => { + if (!resizeControlRef.current || !id) { + return; + } + if (!resizer.current) { + resizer.current = XYResizer({ + domNode: resizeControlRef.current, + nodeId: id, + getStoreItems: () => { + const { nodeLookup, transform, snapGrid, snapToGrid, nodeOrigin, domNode } = store.getState(); + return { + nodeLookup, + transform, + snapGrid, + snapToGrid, + nodeOrigin, + paneDomNode: domNode, + }; + }, + onChange: (change, childChanges) => { + const { triggerNodeChanges, nodeLookup, parentLookup, nodeOrigin } = store.getState(); + const changes = []; + const nextPosition = { x: change.x, y: change.y }; + const node = nodeLookup.get(id); + if (node && node.expandParent && node.parentId) { + const origin = node.origin ?? nodeOrigin; + const width = change.width ?? node.measured.width ?? 0; + const height = change.height ?? node.measured.height ?? 0; + const child = { + id: node.id, + parentId: node.parentId, + rect: { + width, + height, + ...evaluateAbsolutePosition({ + x: change.x ?? node.position.x, + y: change.y ?? node.position.y, + }, { width, height }, node.parentId, nodeLookup, origin), + }, + }; + const parentExpandChanges = handleExpandParent([child], nodeLookup, parentLookup, nodeOrigin); + changes.push(...parentExpandChanges); + /* + * when the parent was expanded by the child node, its position will be clamped at + * 0,0 when node origin is 0,0 and to width, height if it's 1,1 + */ + nextPosition.x = change.x ? Math.max(origin[0] * width, change.x) : undefined; + nextPosition.y = change.y ? Math.max(origin[1] * height, change.y) : undefined; + } + if (nextPosition.x !== undefined && nextPosition.y !== undefined) { + const positionChange = { + id, + type: 'position', + position: { ...nextPosition }, + }; + changes.push(positionChange); + } + if (change.width !== undefined && change.height !== undefined) { + const setAttributes = !resizeDirection ? true : resizeDirection === 'horizontal' ? 'width' : 'height'; + const dimensionChange = { + id, + type: 'dimensions', + resizing: true, + setAttributes, + dimensions: { + width: change.width, + height: change.height, + }, + }; + changes.push(dimensionChange); + } + for (const childChange of childChanges) { + const positionChange = { + ...childChange, + type: 'position', + }; + changes.push(positionChange); + } + triggerNodeChanges(changes); + }, + onEnd: ({ width, height }) => { + const dimensionChange = { + id: id, + type: 'dimensions', + resizing: false, + dimensions: { + width, + height, + }, + }; + store.getState().triggerNodeChanges([dimensionChange]); + }, + }); + } + resizer.current.update({ + controlPosition, + boundaries: { + minWidth, + minHeight, + maxWidth, + maxHeight, + }, + keepAspectRatio, + resizeDirection, + onResizeStart, + onResize, + onResizeEnd, + shouldResize, + }); + return () => { + resizer.current?.destroy(); + }; + }, [ + controlPosition, + minWidth, + minHeight, + maxWidth, + maxHeight, + keepAspectRatio, + onResizeStart, + onResize, + onResizeEnd, + shouldResize, + ]); + const positionClassNames = controlPosition.split('-'); + return (jsx("div", { className: cc(['react-flow__resize-control', 'nodrag', ...positionClassNames, variant, className]), ref: resizeControlRef, style: { + ...style, + scale, + ...(color && { [isHandleControl ? 'backgroundColor' : 'borderColor']: color }), + }, children: children })); +} +/** + * To create your own resizing UI, you can use the `NodeResizeControl` component where you can pass children (such as icons). + * @public + * + */ +const NodeResizeControl = memo(ResizeControl); + +/** + * The `` component can be used to add a resize functionality to your + * nodes. It renders draggable controls around the node to resize in all directions. + * @public + * + * @example + *```jsx + *import { memo } from 'react'; + *import { Handle, Position, NodeResizer } from '@xyflow/react'; + * + *function ResizableNode({ data }) { + * return ( + * <> + * + * + *
{data.label}
+ * + * + * ); + *}; + * + *export default memo(ResizableNode); + *``` + */ +function NodeResizer({ nodeId, isVisible = true, handleClassName, handleStyle, lineClassName, lineStyle, color, minWidth = 10, minHeight = 10, maxWidth = Number.MAX_VALUE, maxHeight = Number.MAX_VALUE, keepAspectRatio = false, autoScale = true, shouldResize, onResizeStart, onResize, onResizeEnd, }) { + if (!isVisible) { + return null; + } + return (jsxs(Fragment, { children: [XY_RESIZER_LINE_POSITIONS.map((position) => (jsx(NodeResizeControl, { className: lineClassName, style: lineStyle, nodeId: nodeId, position: position, variant: ResizeControlVariant.Line, color: color, minWidth: minWidth, minHeight: minHeight, maxWidth: maxWidth, maxHeight: maxHeight, onResizeStart: onResizeStart, keepAspectRatio: keepAspectRatio, autoScale: autoScale, shouldResize: shouldResize, onResize: onResize, onResizeEnd: onResizeEnd }, position))), XY_RESIZER_HANDLE_POSITIONS.map((position) => (jsx(NodeResizeControl, { className: handleClassName, style: handleStyle, nodeId: nodeId, position: position, color: color, minWidth: minWidth, minHeight: minHeight, maxWidth: maxWidth, maxHeight: maxHeight, onResizeStart: onResizeStart, keepAspectRatio: keepAspectRatio, autoScale: autoScale, shouldResize: shouldResize, onResize: onResize, onResizeEnd: onResizeEnd }, position)))] })); +} + +const selector = (state) => state.domNode?.querySelector('.react-flow__renderer'); +function NodeToolbarPortal({ children }) { + const wrapperRef = useStore(selector); + if (!wrapperRef) { + return null; + } + return createPortal(children, wrapperRef); +} + +const nodeEqualityFn = (a, b) => a?.internals.positionAbsolute.x !== b?.internals.positionAbsolute.x || + a?.internals.positionAbsolute.y !== b?.internals.positionAbsolute.y || + a?.measured.width !== b?.measured.width || + a?.measured.height !== b?.measured.height || + a?.selected !== b?.selected || + a?.internals.z !== b?.internals.z; +const nodesEqualityFn = (a, b) => { + if (a.size !== b.size) { + return false; + } + for (const [key, node] of a) { + if (nodeEqualityFn(node, b.get(key))) { + return false; + } + } + return true; +}; +const storeSelector = (state) => ({ + x: state.transform[0], + y: state.transform[1], + zoom: state.transform[2], + selectedNodesCount: state.nodes.filter((node) => node.selected).length, +}); +/** + * This component can render a toolbar or tooltip to one side of a custom node. This + * toolbar doesn't scale with the viewport so that the content is always visible. + * + * @public + * @example + * ```jsx + *import { memo } from 'react'; + *import { Handle, Position, NodeToolbar } from '@xyflow/react'; + * + *function CustomNode({ data }) { + * return ( + * <> + * + * + * + * + * + * + *
+ * {data.label} + *
+ * + * + * + * + * ); + *}; + * + *export default memo(CustomNode); + *``` + * @remarks By default, the toolbar is only visible when a node is selected. If multiple + * nodes are selected it will not be visible to prevent overlapping toolbars or + * clutter. You can override this behavior by setting the `isVisible` prop to `true`. + */ +function NodeToolbar({ nodeId, children, className, style, isVisible, position = Position.Top, offset = 10, align = 'center', ...rest }) { + const contextNodeId = useNodeId(); + const nodesSelector = useCallback((state) => { + const nodeIds = Array.isArray(nodeId) ? nodeId : [nodeId || contextNodeId || '']; + const internalNodes = nodeIds.reduce((res, id) => { + const node = state.nodeLookup.get(id); + if (node) { + res.set(node.id, node); + } + return res; + }, new Map()); + return internalNodes; + }, [nodeId, contextNodeId]); + const nodes = useStore(nodesSelector, nodesEqualityFn); + const { x, y, zoom, selectedNodesCount } = useStore(storeSelector, shallow); + // if isVisible is not set, we show the toolbar only if its node is selected and no other node is selected + const isActive = typeof isVisible === 'boolean' + ? isVisible + : nodes.size === 1 && nodes.values().next().value?.selected && selectedNodesCount === 1; + if (!isActive || !nodes.size) { + return null; + } + const nodeRect = getInternalNodesBounds(nodes); + const nodesArray = Array.from(nodes.values()); + const zIndex = Math.max(...nodesArray.map((node) => node.internals.z + 1)); + const wrapperStyle = { + position: 'absolute', + transform: getNodeToolbarTransform(nodeRect, { x, y, zoom }, position, offset, align), + zIndex, + ...style, + }; + return (jsx(NodeToolbarPortal, { children: jsx("div", { style: wrapperStyle, className: cc(['react-flow__node-toolbar', className]), ...rest, "data-id": nodesArray.reduce((acc, node) => `${acc}${node.id} `, '').trim(), children: children }) })); +} + +const zoomSelector = (state) => state.transform[2]; +/** + * This component can render a toolbar or tooltip to one side of a custom edge. This + * toolbar doesn't scale with the viewport so that the content stays the same size. + * + * @public + * @example + * ```jsx + * import { EdgeToolbar, BaseEdge, getBezierPath, type EdgeProps } from "@xyflow/react"; + * + * export function CustomEdge({ id, data, ...props }: EdgeProps) { + * const [edgePath, centerX, centerY] = getBezierPath(props); + * + * return ( + * <> + * + * + * + * + * + * ); + * } + * ``` + */ +function EdgeToolbar({ edgeId, x, y, children, className, style, isVisible, alignX = 'center', alignY = 'center', ...rest }) { + const edgeSelector = useCallback((state) => state.edgeLookup.get(edgeId), [edgeId]); + const edge = useStore(edgeSelector, shallow); + const isActive = typeof isVisible === 'boolean' ? isVisible : edge?.selected; + const zoom = useStore(zoomSelector); + if (!isActive) { + return null; + } + const zIndex = (edge?.zIndex ?? 0) + 1; + const transform = getEdgeToolbarTransform(x, y, zoom, alignX, alignY); + return (jsx(EdgeLabelRenderer, { children: jsx("div", { style: { + position: 'absolute', + transform, + zIndex, + pointerEvents: 'all', + transformOrigin: '0 0', + ...style, + }, className: cc(['react-flow__edge-toolbar', className]), "data-id": edge?.id ?? '', ...rest, children: children }) })); +} + +export { Background, BackgroundVariant, BaseEdge, BezierEdge, ControlButton, Controls, EdgeLabelRenderer, EdgeText, EdgeToolbar, Handle, MiniMap, MiniMapNode, NodeResizeControl, NodeResizer, NodeToolbar, Panel, index as ReactFlow, ReactFlowProvider, SimpleBezierEdge, SmoothStepEdge, StepEdge, StraightEdge, ViewportPortal, addEdge, applyEdgeChanges, applyNodeChanges, experimental_useOnEdgesChangeMiddleware, experimental_useOnNodesChangeMiddleware, getSimpleBezierPath, isEdge, isNode, reconnectEdge, useConnection, useEdges, useEdgesState, useHandleConnections, useInternalNode, useKeyPress, useNodeConnections, useNodeId, useNodes, useNodesData, useNodesInitialized, useNodesState, useOnSelectionChange, useOnViewportChange, useReactFlow, useStore, useStoreApi, useUpdateNodeInternals, useViewport }; diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/store/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/store/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..ffc765d85f92386b2b64cee0d729d6a7fdb86001 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/store/index.d.ts @@ -0,0 +1,19 @@ +import { NodeOrigin, CoordinateExtent, ZIndexMode } from '@xyflow/system'; +import type { ReactFlowState, Node, Edge, FitViewOptions } from '../types'; +declare const createStore: ({ nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom, maxZoom, nodeOrigin, nodeExtent, zIndexMode, }: { + nodes?: Node[]; + edges?: Edge[]; + defaultNodes?: Node[]; + defaultEdges?: Edge[]; + width?: number; + height?: number; + fitView?: boolean; + fitViewOptions?: FitViewOptions; + minZoom?: number; + maxZoom?: number; + nodeOrigin?: NodeOrigin; + nodeExtent?: CoordinateExtent; + zIndexMode?: ZIndexMode; +}) => import("zustand/traditional").UseBoundStoreWithEqualityFn>; +export { createStore }; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/store/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/store/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..7137fdd4abd0f828d85aa407f0c844f6cc289b77 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/store/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AACA,OAAO,EAYL,UAAU,EACV,gBAAgB,EAIhB,UAAU,EACX,MAAM,gBAAgB,CAAC;AAIxB,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAA+B,cAAc,EAAE,MAAM,UAAU,CAAC;AAExG,QAAA,MAAM,WAAW,GAAI,6IAclB;IACD,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,0GA8Yc,CAAC;AAEhB,OAAO,EAAE,WAAW,EAAE,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/store/initialState.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/store/initialState.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..8b56d4e3899dff8f4757c67794810786d3f052e5 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/store/initialState.d.ts @@ -0,0 +1,19 @@ +import { NodeOrigin, CoordinateExtent, ZIndexMode } from '@xyflow/system'; +import type { Edge, FitViewOptions, Node, ReactFlowStore } from '../types'; +declare const getInitialState: ({ nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom, maxZoom, nodeOrigin, nodeExtent, zIndexMode, }?: { + nodes?: Node[]; + edges?: Edge[]; + defaultNodes?: Node[]; + defaultEdges?: Edge[]; + width?: number; + height?: number; + fitView?: boolean; + fitViewOptions?: FitViewOptions; + minZoom?: number; + maxZoom?: number; + nodeOrigin?: NodeOrigin; + nodeExtent?: CoordinateExtent; + zIndexMode?: ZIndexMode; +}) => ReactFlowStore; +export default getInitialState; +//# sourceMappingURL=initialState.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/store/initialState.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/store/initialState.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..f2edcbe696b50008544b3b6b1e45cc085076ffb9 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/store/initialState.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"initialState.d.ts","sourceRoot":"","sources":["../../src/store/initialState.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,UAAU,EAEV,gBAAgB,EAEhB,UAAU,EACX,MAAM,gBAAgB,CAAC;AAIxB,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAgB,IAAI,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEzF,QAAA,MAAM,eAAe,GAAI,8IActB;IACD,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,UAAU,CAAC,EAAE,UAAU,CAAC;CACpB,KAAG,cA8GR,CAAC;AAEF,eAAe,eAAe,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/styles/utils.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/styles/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..014d1405e9e44e93552f538511a0dbc15e2e31b4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/styles/utils.d.ts @@ -0,0 +1,3 @@ +import type { CSSProperties } from 'react'; +export declare const containerStyle: CSSProperties; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/styles/utils.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/styles/utils.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..b6dc952fb1aa78325ec3d543d8cbd947f3abeff8 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/styles/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/styles/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,eAAO,MAAM,cAAc,EAAE,aAM5B,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/component-props.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/component-props.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..cd835e89b10d6de1f20ba952bd4336d2a4e3d46f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/component-props.d.ts @@ -0,0 +1,655 @@ +import type { CSSProperties, HTMLAttributes, MouseEvent as ReactMouseEvent, WheelEvent } from 'react'; +import type { ConnectionMode, ConnectionLineType, OnConnect, OnConnectStart, OnConnectEnd, CoordinateExtent, KeyCode, PanOnScrollMode, ProOptions, PanelPosition, OnMove, OnMoveStart, OnMoveEnd, Viewport, NodeOrigin, HandleType, SelectionMode, OnError, ColorMode, SnapGrid, OnReconnect, AriaLabelConfig, FinalConnectionState, ZIndexMode } from '@xyflow/system'; +import type { OnSelectionChangeFunc, NodeTypes, EdgeTypes, Node, Edge, ConnectionLineComponent, OnInit, DefaultEdgeOptions, FitViewOptions, OnNodesDelete, OnEdgesDelete, OnDelete, OnNodesChange, OnEdgesChange, NodeMouseHandler, SelectionDragHandler, EdgeMouseHandler, OnNodeDrag, OnBeforeDelete, IsValidConnection } from '.'; +/** + * ReactFlow component props. + * @public + */ +export interface ReactFlowProps extends Omit, 'onError'> { + /** + * An array of nodes to render in a controlled flow. + * @default [] + * @example + * const nodes = [ + * { + * id: 'node-1', + * type: 'input', + * data: { label: 'Node 1' }, + * position: { x: 250, y: 50 } + * } + * ]; + */ + nodes?: NodeType[]; + /** + * An array of edges to render in a controlled flow. + * @default [] + * @example + * const edges = [ + * { + * id: 'edge-1-2', + * source: 'node-1', + * target: 'node-2', + * } + * ]; + */ + edges?: EdgeType[]; + /** The initial nodes to render in an uncontrolled flow. */ + defaultNodes?: NodeType[]; + /** The initial edges to render in an uncontrolled flow. */ + defaultEdges?: EdgeType[]; + /** + * Defaults to be applied to all new edges that are added to the flow. + * Properties on a new edge will override these defaults if they exist. + * @example + * const defaultEdgeOptions = { + * type: 'customEdgeType', + * animated: true + * } + */ + defaultEdgeOptions?: DefaultEdgeOptions; + /** This event handler is called when a user clicks on a node. */ + onNodeClick?: NodeMouseHandler; + /** This event handler is called when a user double-clicks on a node. */ + onNodeDoubleClick?: NodeMouseHandler; + /** This event handler is called when mouse of a user enters a node. */ + onNodeMouseEnter?: NodeMouseHandler; + /** This event handler is called when mouse of a user moves over a node. */ + onNodeMouseMove?: NodeMouseHandler; + /** This event handler is called when mouse of a user leaves a node. */ + onNodeMouseLeave?: NodeMouseHandler; + /** This event handler is called when a user right-clicks on a node. */ + onNodeContextMenu?: NodeMouseHandler; + /** This event handler is called when a user starts to drag a node. */ + onNodeDragStart?: OnNodeDrag; + /** This event handler is called when a user drags a node. */ + onNodeDrag?: OnNodeDrag; + /** This event handler is called when a user stops dragging a node. */ + onNodeDragStop?: OnNodeDrag; + /** This event handler is called when a user clicks on an edge. */ + onEdgeClick?: (event: ReactMouseEvent, edge: EdgeType) => void; + /** This event handler is called when a user right-clicks on an edge. */ + onEdgeContextMenu?: EdgeMouseHandler; + /** This event handler is called when mouse of a user enters an edge. */ + onEdgeMouseEnter?: EdgeMouseHandler; + /** This event handler is called when mouse of a user moves over an edge. */ + onEdgeMouseMove?: EdgeMouseHandler; + /** This event handler is called when mouse of a user leaves an edge. */ + onEdgeMouseLeave?: EdgeMouseHandler; + /** This event handler is called when a user double-clicks on an edge. */ + onEdgeDoubleClick?: EdgeMouseHandler; + /** + * This handler is called when the source or target of a reconnectable edge is dragged from the + * current node. It will fire even if the edge's source or target do not end up changing. + * You can use the `reconnectEdge` utility to convert the connection to a new edge. + */ + onReconnect?: OnReconnect; + /** + * This event fires when the user begins dragging the source or target of an editable edge. + */ + onReconnectStart?: (event: ReactMouseEvent, edge: EdgeType, handleType: HandleType) => void; + /** + * This event fires when the user releases the source or target of an editable edge. It is called + * even if an edge update does not occur. + */ + onReconnectEnd?: (event: MouseEvent | TouchEvent, edge: EdgeType, handleType: HandleType, connectionState: FinalConnectionState) => void; + /** + * Use this event handler to add interactivity to a controlled flow. + * It is called on node drag, select, and move. + * @example // Use NodesState hook to create edges and get onNodesChange handler + * import ReactFlow, { useNodesState } from '@xyflow/react'; + * const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes); + * + * return () + * @example // Use helper function to update node + * import ReactFlow, { applyNodeChanges } from '@xyflow/react'; + * + * const onNodeChange = useCallback( + * (changes) => setNode((nds) => applyNodeChanges(changes, nds)), + * [], + * ); + * + * return () + */ + onNodesChange?: OnNodesChange; + /** + * Use this event handler to add interactivity to a controlled flow. It is called on edge select + * and remove. + * @example // Use EdgesState hook to create edges and get onEdgesChange handler + * import ReactFlow, { useEdgesState } from '@xyflow/react'; + * const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges); + * + * return () + * @example // Use helper function to update edge + * import ReactFlow, { applyEdgeChanges } from '@xyflow/react'; + * + * const onEdgesChange = useCallback( + * (changes) => setEdges((eds) => applyEdgeChanges(changes, eds)), + * [], + * ); + * + * return () + */ + onEdgesChange?: OnEdgesChange; + /** This event handler gets called when a node is deleted. */ + onNodesDelete?: OnNodesDelete; + /** This event handler gets called when an edge is deleted. */ + onEdgesDelete?: OnEdgesDelete; + /** This event handler gets called when a node or edge is deleted. */ + onDelete?: OnDelete; + /** This event handler gets called when a user starts to drag a selection box. */ + onSelectionDragStart?: SelectionDragHandler; + /** This event handler gets called when a user drags a selection box. */ + onSelectionDrag?: SelectionDragHandler; + /** This event handler gets called when a user stops dragging a selection box. */ + onSelectionDragStop?: SelectionDragHandler; + onSelectionStart?: (event: ReactMouseEvent) => void; + onSelectionEnd?: (event: ReactMouseEvent) => void; + /** + * This event handler is called when a user right-clicks on a node selection. + */ + onSelectionContextMenu?: (event: ReactMouseEvent, nodes: NodeType[]) => void; + /** + * When a connection line is completed and two nodes are connected by the user, this event fires with the new connection. + * You can use the `addEdge` utility to convert the connection to a complete edge. + * @example // Use helper function to update edges onConnect + * import ReactFlow, { addEdge } from '@xyflow/react'; + * + * const onConnect = useCallback( + * (params) => setEdges((eds) => addEdge(params, eds)), + * [], + * ); + * + * return () + */ + onConnect?: OnConnect; + /** This event handler gets called when a user starts to drag a connection line. */ + onConnectStart?: OnConnectStart; + /** + * This callback will fire regardless of whether a valid connection could be made or not. You can + * use the second `connectionState` parameter to have different behavior when a connection was + * unsuccessful. + */ + onConnectEnd?: OnConnectEnd; + onClickConnectStart?: OnConnectStart; + onClickConnectEnd?: OnConnectEnd; + /** + * The `onInit` callback is called when the viewport is initialized. At this point you can use the + * instance to call methods like `fitView` or `zoomTo`. + */ + onInit?: OnInit; + /** This event handler is called while the user is either panning or zooming the viewport. */ + onMove?: OnMove; + /** This event handler is called when the user begins to pan or zoom the viewport. */ + onMoveStart?: OnMoveStart; + /** + * This event handler is called when panning or zooming viewport movement stops. + * If the movement is not user-initiated, the event parameter will be `null`. + */ + onMoveEnd?: OnMoveEnd; + /** This event handler gets called when a user changes group of selected elements in the flow. */ + onSelectionChange?: OnSelectionChangeFunc; + /** This event handler gets called when user scroll inside the pane. */ + onPaneScroll?: (event?: WheelEvent) => void; + /** This event handler gets called when user clicks inside the pane. */ + onPaneClick?: (event: ReactMouseEvent) => void; + /** This event handler gets called when user right clicks inside the pane. */ + onPaneContextMenu?: (event: ReactMouseEvent | MouseEvent) => void; + /** This event handler gets called when mouse enters the pane. */ + onPaneMouseEnter?: (event: ReactMouseEvent) => void; + /** This event handler gets called when mouse moves over the pane. */ + onPaneMouseMove?: (event: ReactMouseEvent) => void; + /** This event handler gets called when mouse leaves the pane. */ + onPaneMouseLeave?: (event: ReactMouseEvent) => void; + /** + * Distance that the mouse can move between mousedown/up that will trigger a click. + * @default 0 + */ + paneClickDistance?: number; + /** + * Distance that the mouse can move between mousedown/up that will trigger a click. + * @default 0 + */ + nodeClickDistance?: number; + /** + * This handler is called before nodes or edges are deleted, allowing the deletion to be aborted + * by returning `false` or modified by returning updated nodes and edges. + */ + onBeforeDelete?: OnBeforeDelete; + /** + * Custom node types to be available in a flow. + * React Flow matches a node's type to a component in the `nodeTypes` object. + * @default { + * input: InputNode, + * default: DefaultNode, + * output: OutputNode, + * group: GroupNode + * } + * @example + * import CustomNode from './CustomNode'; + * + * const nodeTypes = { nameOfNodeType: CustomNode }; + */ + nodeTypes?: NodeTypes; + /** + * Custom edge types to be available in a flow. + * React Flow matches an edge's type to a component in the `edgeTypes` object. + * @default { + * default: BezierEdge, + * straight: StraightEdge, + * step: StepEdge, + * smoothstep: SmoothStepEdge, + * simplebezier: SimpleBezier + * } + * @example + * import CustomEdge from './CustomEdge'; + * + * const edgeTypes = { nameOfEdgeType: CustomEdge }; + */ + edgeTypes?: EdgeTypes; + /** + * The type of edge path to use for connection lines. + * Although created edges can be of any type, React Flow needs to know what type of path to render for the connection line before the edge is created! + * @default ConnectionLineType.Bezier + */ + connectionLineType?: ConnectionLineType; + /** Styles to be applied to the connection line. */ + connectionLineStyle?: CSSProperties; + /** React Component to be used as a connection line. */ + connectionLineComponent?: ConnectionLineComponent; + /** Styles to be applied to the container of the connection line. */ + connectionLineContainerStyle?: CSSProperties; + /** + * A loose connection mode will allow you to connect handles with differing types, including + * source-to-source connections. However, it does not support target-to-target connections. Strict + * mode allows only connections between source handles and target handles. + * @default 'strict' + */ + connectionMode?: ConnectionMode; + /** + * If set, pressing the key or chord will delete any selected nodes and edges. Passing an array + * represents multiple keys that can be pressed. + + * For example, `["Delete", "Backspace"]` will delete selected elements when either key is pressed. + * @default 'Backspace' + */ + deleteKeyCode?: KeyCode | null; + /** + * If set, holding this key will let you click and drag to draw a selection box around multiple + * nodes and edges. Passing an array represents multiple keys that can be pressed. + * + * For example, `["Shift", "Meta"]` will allow you to draw a selection box when either key is + * pressed. + * @default 'Shift' + */ + selectionKeyCode?: KeyCode | null; + /** + * Select multiple elements with a selection box, without pressing down `selectionKey`. + * @default false + */ + selectionOnDrag?: boolean; + /** + * When set to `"partial"`, when the user creates a selection box by click and dragging nodes that + * are only partially in the box are still selected. + * @default 'full' + */ + selectionMode?: SelectionMode; + /** + * If a key is set, you can pan the viewport while that key is held down even if `panOnScroll` + * is set to `false`. + * + * By setting this prop to `null` you can disable this functionality. + * @default 'Space' + */ + panActivationKeyCode?: KeyCode | null; + /** + * Pressing down this key you can select multiple elements by clicking. + * @default "Meta" for macOS, "Control" for other systems + */ + multiSelectionKeyCode?: KeyCode | null; + /** + * If a key is set, you can zoom the viewport while that key is held down even if `panOnScroll` + * is set to `false`. + * + * By setting this prop to `null` you can disable this functionality. + * @default "Meta" for macOS, "Control" for other systems + * + */ + zoomActivationKeyCode?: KeyCode | null; + /** When enabled, nodes will snap to the grid when dragged. */ + snapToGrid?: boolean; + /** + * If `snapToGrid` is enabled, this prop configures the grid that nodes will snap to. + * @example [20, 20] + */ + snapGrid?: SnapGrid; + /** + * You can enable this optimisation to instruct React Flow to only render nodes and edges that would be visible in the viewport. + * + * This might improve performance when you have a large number of nodes and edges but also adds an overhead. + * @default false + */ + onlyRenderVisibleElements?: boolean; + /** + * Controls whether all nodes should be draggable or not. Individual nodes can override this + * setting by setting their `draggable` prop. If you want to use the mouse handlers on + * non-draggable nodes, you need to add the `"nopan"` class to those nodes. + * @default true + */ + nodesDraggable?: boolean; + /** + * When `true`, the viewport will pan when a node is focused. + * @default true + */ + autoPanOnNodeFocus?: boolean; + /** + * Controls whether all nodes should be connectable or not. Individual nodes can override this + * setting by setting their `connectable` prop. + * @default true + */ + nodesConnectable?: boolean; + /** + * When `true`, focus between nodes can be cycled with the `Tab` key and selected with the `Enter` + * key. This option can be overridden by individual nodes by setting their `focusable` prop. + * @default true + */ + nodesFocusable?: boolean; + /** + * The origin of the node to use when placing it in the flow or looking up its `x` and `y` + * position. An origin of `[0, 0]` means that a node's top left corner will be placed at the `x` + * and `y` position. + * @default [0, 0] + * @example + * [0, 0] // default, top left + * [0.5, 0.5] // center + * [1, 1] // bottom right + */ + nodeOrigin?: NodeOrigin; + /** + * When `true`, focus between edges can be cycled with the `Tab` key and selected with the `Enter` + * key. This option can be overridden by individual edges by setting their `focusable` prop. + * @default true + */ + edgesFocusable?: boolean; + /** + * Whether edges can be updated once they are created. When both this prop is `true` and an + * `onReconnect` handler is provided, the user can drag an existing edge to a new source or + * target. Individual edges can override this value with their reconnectable property. + * @default true + */ + edgesReconnectable?: boolean; + /** + * When `true`, elements (nodes and edges) can be selected by clicking on them. This option can be + * overridden by individual elements by setting their `selectable` prop. + * @default true + */ + elementsSelectable?: boolean; + /** + * If `true`, nodes get selected on drag. + * @default true + */ + selectNodesOnDrag?: boolean; + /** + * Enabling this prop allows users to pan the viewport by clicking and dragging. + * You can also set this prop to an array of numbers to limit which mouse buttons can activate panning. + * @default true + * @example [0, 2] // allows panning with the left and right mouse buttons + * [0, 1, 2, 3, 4] // allows panning with all mouse buttons + */ + panOnDrag?: boolean | number[]; + /** + * Minimum zoom level. + * @default 0.5 + */ + minZoom?: number; + /** + * Maximum zoom level. + * @default 2 + */ + maxZoom?: number; + /** + * When you pass a `viewport` prop, it's controlled, and you also need to pass `onViewportChange` + * to handle internal changes. + */ + viewport?: Viewport; + /** + * Sets the initial position and zoom of the viewport. If a default viewport is provided but + * `fitView` is enabled, the default viewport will be ignored. + * @default { x: 0, y: 0, zoom: 1 } + * @example + * const initialViewport = { + * zoom: 0.5, + * position: { x: 0, y: 0 } + * }; + */ + defaultViewport?: Viewport; + /** + * Used when working with a controlled viewport for updating the user viewport state. + */ + onViewportChange?: (viewport: Viewport) => void; + /** + * By default, the viewport extends infinitely. You can use this prop to set a boundary. + * The first pair of coordinates is the top left boundary and the second pair is the bottom right. + * @default [[-∞, -∞], [+∞, +∞]] + * @example [[-1000, -10000], [1000, 1000]] + */ + translateExtent?: CoordinateExtent; + /** + * Disabling this prop will allow the user to scroll the page even when their pointer is over the flow. + * @default true + */ + preventScrolling?: boolean; + /** + * By default, nodes can be placed on an infinite flow. You can use this prop to set a boundary. + * The first pair of coordinates is the top left boundary and the second pair is the bottom right. + * @example [[-1000, -10000], [1000, 1000]] + */ + nodeExtent?: CoordinateExtent; + /** + * Color of edge markers. + * You can pass `null` to use the CSS variable `--xy-edge-stroke` for the marker color. + * @default '#b1b1b7' + */ + defaultMarkerColor?: string | null; + /** + * Controls if the viewport should zoom by scrolling inside the container. + * @default true + */ + zoomOnScroll?: boolean; + /** + * Controls if the viewport should zoom by pinching on a touch screen. + * @default true + */ + zoomOnPinch?: boolean; + /** + * Controls if the viewport should pan by scrolling inside the container. + * Can be limited to a specific direction with `panOnScrollMode`. + * @default false + */ + panOnScroll?: boolean; + /** + * Controls how fast viewport should be panned on scroll. + * Use together with `panOnScroll` prop. + * @default 0.5 + */ + panOnScrollSpeed?: number; + /** + * This prop is used to limit the direction of panning when `panOnScroll` is enabled. + * The `"free"` option allows panning in any direction. + * @default "free" + * @example "horizontal" | "vertical" + */ + panOnScrollMode?: PanOnScrollMode; + /** + * Controls if the viewport should zoom by double-clicking somewhere on the flow. + * @default true + */ + zoomOnDoubleClick?: boolean; + /** + * The radius around an edge connection that can trigger an edge reconnection. + * @default 10 + */ + reconnectRadius?: number; + /** + * If a node is draggable, clicking and dragging that node will move it around the canvas. Adding + * the `"nodrag"` class prevents this behavior and this prop allows you to change the name of that + * class. + * @default "nodrag" + */ + noDragClassName?: string; + /** + * Typically, scrolling the mouse wheel when the mouse is over the canvas will zoom the viewport. + * Adding the `"nowheel"` class to an element in the canvas will prevent this behavior and this prop + * allows you to change the name of that class. + * @default "nowheel" + */ + noWheelClassName?: string; + /** + * If an element in the canvas does not stop mouse events from propagating, clicking and dragging + * that element will pan the viewport. Adding the `"nopan"` class prevents this behavior and this + * prop allows you to change the name of that class. + * @default "nopan" + */ + noPanClassName?: string; + /** When `true`, the flow will be zoomed and panned to fit all the nodes initially provided. */ + fitView?: boolean; + /** + * When you typically call `fitView` on a `ReactFlowInstance`, you can provide an object of + * options to customize its behavior. This prop lets you do the same for the initial `fitView` + * call. + * @example + * const fitViewOptions = { + * padding: 0.1, + * includeHiddenNodes: false, + * minZoom: 0.1, + * maxZoom: 1, + * duration: 200, + * nodes: [{id: 'node-1'}, {id: 'node-2'}], // nodes to fit + * }; + */ + fitViewOptions?: FitViewOptions; + /** + * The `connectOnClick` option lets you click or tap on a source handle to start a connection + * and then click on a target handle to complete the connection. + * + * If you set this option to `false`, users will need to drag the connection line to the target + * handle to create a connection. + * @default true + */ + connectOnClick?: boolean; + /** + * By default, React Flow will render a small attribution in the bottom right corner of the flow. + * + * You can use this prop to change its position in case you want to place something else there. + * @default 'bottom-right' + * @example 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right' + */ + attributionPosition?: PanelPosition; + /** + * By default, we render a small attribution in the corner of your flows that links back to the project. + * + * Anyone is free to remove this attribution whether they're a Pro subscriber or not + * but we ask that you take a quick look at our {@link https://reactflow.dev/learn/troubleshooting/remove-attribution | removing attribution guide} + * before doing so. + */ + proOptions?: ProOptions; + /** + * Enabling this option will raise the z-index of nodes when they are selected. + * @default true + */ + elevateNodesOnSelect?: boolean; + /** + * Enabling this option will raise the z-index of edges when they are selected. + * @default false + */ + elevateEdgesOnSelect?: boolean; + /** + * You can use this prop to disable keyboard accessibility features such as selecting nodes or + * moving selected nodes with the arrow keys. + * @default false + */ + disableKeyboardA11y?: boolean; + /** + * When `true`, the viewport will pan automatically when the cursor moves to the edge of the + * viewport while dragging a node. + * @default true + */ + autoPanOnNodeDrag?: boolean; + /** + * When `true`, the viewport will pan automatically when the cursor moves to the edge of the + * viewport while creating a connection. + * @default true + */ + autoPanOnConnect?: boolean; + /** + * When `true`, the viewport will pan automatically when the cursor moves to the edge of the + * viewport while creating a selection box. + * @default true + */ + autoPanOnSelection?: boolean; + /** + * The speed at which the viewport pans while dragging a node or a selection box. + * @default 15 + */ + autoPanSpeed?: number; + /** + * The radius around a handle where you drop a connection line to create a new edge. + * @default 20 + */ + connectionRadius?: number; + /** + * Occasionally something may happen that causes React Flow to throw an error. + * + * Instead of exploding your application, we log a message to the console and then call this event handler. + * You might use it for additional logging or to show a message to the user. + */ + onError?: OnError; + /** + * This callback can be used to validate a new connection + * + * If you return `false`, the edge will not be added to your flow. + * If you have custom connection logic its preferred to use this callback over the + * `isValidConnection` prop on the handle component for performance reasons. + */ + isValidConnection?: IsValidConnection; + /** + * With a threshold greater than zero you can delay node drag events. + * If threshold equals 1, you need to drag the node 1 pixel before a drag event is fired. + * 1 is the default value, so that clicks don't trigger drag events. + * @default 1 + */ + nodeDragThreshold?: number; + /** + * The threshold in pixels that the mouse must move before a connection line starts to drag. + * This is useful to prevent accidental connections when clicking on a handle. + * @default 1 + */ + connectionDragThreshold?: number; + /** Sets a fixed width for the flow. */ + width?: number; + /** Sets a fixed height for the flow. */ + height?: number; + /** + * Controls color scheme used for styling the flow. + * @default 'light' + * @example 'system' | 'light' | 'dark' + */ + colorMode?: ColorMode; + /** + * If set `true`, some debug information will be logged to the console like which events are fired. + * @default false + */ + debug?: boolean; + /** + * Configuration for customizable labels, descriptions, and UI text. Provided keys will override the corresponding defaults. + * Allows localization, customization of ARIA descriptions, control labels, minimap labels, and other UI strings. + */ + ariaLabelConfig?: Partial; + /** + * Used to define how z-indexing is calculated for nodes and edges. + * 'auto' is for selections and sub flows, 'basic' for selections only, and 'manual' for no auto z-indexing. + * + * @default 'basic' + */ + zIndexMode?: ZIndexMode; +} +//# sourceMappingURL=component-props.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/component-props.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/component-props.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..8e521ba3d55b373310b2930364cd1f6bf115270c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/component-props.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"component-props.d.ts","sourceRoot":"","sources":["../../src/types/component-props.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,IAAI,eAAe,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACtG,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,eAAe,EACf,UAAU,EACV,aAAa,EACb,MAAM,EACN,WAAW,EACX,SAAS,EACT,QAAQ,EACR,UAAU,EACV,UAAU,EACV,aAAa,EACb,OAAO,EACP,SAAS,EACT,QAAQ,EACR,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,UAAU,EACX,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EACV,qBAAqB,EACrB,SAAS,EACT,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,uBAAuB,EACvB,MAAM,EACN,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,aAAa,EACb,QAAQ,EACR,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,GAAG,CAAC;AAEX;;;GAGG;AACH,MAAM,WAAW,cAAc,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,CACxF,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;IACvD;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC1B,2DAA2D;IAC3D,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC1B;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,iEAAiE;IACjE,WAAW,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACzC,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC/C,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC9C,2EAA2E;IAC3E,eAAe,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC7C,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC9C,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC/C,sEAAsE;IACtE,eAAe,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvC,6DAA6D;IAC7D,UAAU,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,sEAAsE;IACtE,cAAc,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IACtC,kEAAkE;IAClE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC/D,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC/C,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC9C,4EAA4E;IAC5E,eAAe,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC7C,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC9C,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC/C;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAC5F;;;OAGG;IACH,cAAc,CAAC,EAAE,CACf,KAAK,EAAE,UAAU,GAAG,UAAU,EAC9B,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,oBAAoB,KAClC,IAAI,CAAC;IACV;;;;;;;;;;;;;;;;;OAiBG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC;;;;;;;;;;;;;;;;;OAiBG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,6DAA6D;IAC7D,aAAa,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,8DAA8D;IAC9D,aAAa,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxC,iFAAiF;IACjF,oBAAoB,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACtD,wEAAwE;IACxE,eAAe,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACjD,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACrD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAClD;;OAEG;IACH,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IAC7E;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,mFAAmF;IACnF,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;;OAIG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,mBAAmB,CAAC,EAAE,cAAc,CAAC;IACrC,iBAAiB,CAAC,EAAE,YAAY,CAAC;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpC,6FAA6F;IAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,iGAAiG;IACjG,iBAAiB,CAAC,EAAE,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9D,uEAAuE;IACvE,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAC5C,uEAAuE;IACvE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC/C,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,KAAK,IAAI,CAAC;IAClE,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD,qEAAqE;IACrE,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACpD;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpD;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,mDAAmD;IACnD,mBAAmB,CAAC,EAAE,aAAa,CAAC;IACpC,uDAAuD;IACvD,uBAAuB,CAAC,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC5D,oEAAoE;IACpE,4BAA4B,CAAC,EAAE,aAAa,CAAC;IAC7C;;;;;OAKG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACtC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACvC;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACvC,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;IAC/B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAChD;;;;;OAKG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,aAAa,CAAC;IACpC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAChD;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3C;;;;;OAKG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/edges.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/edges.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..3b182bce221d40f5c677152a0ce620c876cc63cd --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/edges.d.ts @@ -0,0 +1,217 @@ +import type { CSSProperties, SVGAttributes, ReactNode, MouseEvent as ReactMouseEvent, ComponentType, AriaRole } from 'react'; +import type { EdgeBase, BezierPathOptions, Position, SmoothStepPathOptions, DefaultEdgeOptionsBase, HandleType, ConnectionLineType, Handle, EdgePosition, StepPathOptions, OnError, OnReconnect, FinalConnectionState, XYPosition } from '@xyflow/system'; +import { EdgeTypes, InternalNode, Node } from '.'; +/** + * @inline + */ +export type EdgeLabelOptions = { + /** + * The label or custom element to render along the edge. This is commonly a text label or some + * custom controls. + */ + label?: ReactNode; + /** + * Custom styles to apply to the label. + */ + labelStyle?: CSSProperties; + labelShowBg?: boolean; + labelBgStyle?: CSSProperties; + labelBgPadding?: [number, number]; + labelBgBorderRadius?: number; +}; +/** + * An `Edge` is the complete description with everything React Flow needs + * to know in order to render it. + * @public + */ +export type Edge = Record, EdgeType extends string | undefined = string | undefined> = EdgeBase & EdgeLabelOptions & { + style?: CSSProperties; + className?: string; + /** + * Determines whether the edge can be updated by dragging the source or target to a new node. + * This property will override the default set by the `edgesReconnectable` prop on the + * `` component. + */ + reconnectable?: boolean | HandleType; + focusable?: boolean; + /** + * The ARIA role attribute for the edge, used for accessibility. + * @default "group" + */ + ariaRole?: AriaRole; + /** + * General escape hatch for adding custom attributes to the edge's DOM element. + */ + domAttributes?: Omit, 'id' | 'style' | 'className' | 'role' | 'aria-label' | 'dangerouslySetInnerHTML'>; +}; +type SmoothStepEdge = Record> = Edge & { + pathOptions?: SmoothStepPathOptions; +}; +type BezierEdge = Record> = Edge & { + pathOptions?: BezierPathOptions; +}; +type StepEdge = Record> = Edge & { + pathOptions?: StepPathOptions; +}; +type StraightEdge = Record> = Edge; +export type BuiltInEdge = SmoothStepEdge | BezierEdge | StepEdge | StraightEdge; +export type EdgeMouseHandler = (event: ReactMouseEvent, edge: EdgeType) => void; +export type EdgeWrapperProps = { + id: string; + edgesFocusable: boolean; + edgesReconnectable: boolean; + elementsSelectable: boolean; + noPanClassName: string; + onClick?: EdgeMouseHandler; + onDoubleClick?: EdgeMouseHandler; + onReconnect?: OnReconnect; + onContextMenu?: EdgeMouseHandler; + onMouseEnter?: EdgeMouseHandler; + onMouseMove?: EdgeMouseHandler; + onMouseLeave?: EdgeMouseHandler; + reconnectRadius?: number; + onReconnectStart?: (event: ReactMouseEvent, edge: EdgeType, handleType: HandleType) => void; + onReconnectEnd?: (event: MouseEvent | TouchEvent, edge: EdgeType, handleType: HandleType, connectionState: FinalConnectionState) => void; + rfId?: string; + edgeTypes?: EdgeTypes; + onError?: OnError; + disableKeyboardA11y?: boolean; +}; +/** + * Many properties on an [`Edge`](/api-reference/types/edge) are optional. When a new edge is created, + * the properties that are not provided will be filled in with the default values + * passed to the `defaultEdgeOptions` prop of the [``](/api-reference/react-flow#defaultedgeoptions) component. + */ +export type DefaultEdgeOptions = DefaultEdgeOptionsBase; +export type EdgeTextProps = Omit, 'x' | 'y'> & EdgeLabelOptions & { + /** The x position where the label should be rendered. */ + x: number; + /** The y position where the label should be rendered. */ + y: number; +}; +/** + * When you implement a custom edge it is wrapped in a component that enables some + * basic functionality. The `EdgeProps` type is the props that are passed to this. + * @public + * @expand + */ +export type EdgeProps = Pick & EdgePosition & EdgeLabelOptions & { + sourceHandleId?: string | null; + targetHandleId?: string | null; + markerStart?: string; + markerEnd?: string; + pathOptions?: any; + interactionWidth?: number; +}; +/** + * BaseEdge component props + * @public + * @expand + */ +export type BaseEdgeProps = Omit, 'd' | 'path' | 'markerStart' | 'markerEnd'> & EdgeLabelOptions & { + /** + * The width of the invisible area around the edge that the user can interact with. This is + * useful for making the edge easier to click or hover over. + * @default 20 + */ + interactionWidth?: number; + /** The x position of edge label */ + labelX?: number; + /** The y position of edge label */ + labelY?: number; + /** + * The SVG path string that defines the edge. This should look something like + * `'M 0 0 L 100 100'` for a simple line. The utility functions like `getSimpleBezierEdge` can + * be used to generate this string for you. + */ + path: string; + /** + * The id of the SVG marker to use at the start of the edge. This should be defined in a + * `` element in a separate SVG document or element. Use the format "url(#markerId)" where markerId is the id of your marker definition. + */ + markerStart?: string; + /** + * The id of the SVG marker to use at the end of the edge. This should be defined in a `` + * element in a separate SVG document or element. Use the format "url(#markerId)" where markerId is the id of your marker definition. + */ + markerEnd?: string; +}; +/** + * Helper type for edge components that get exported by the library + * @public + * @expand + */ +export type EdgeComponentProps = EdgePosition & EdgeLabelOptions & { + id?: EdgeProps['id']; + markerStart?: EdgeProps['markerStart']; + markerEnd?: EdgeProps['markerEnd']; + interactionWidth?: EdgeProps['interactionWidth']; + style?: EdgeProps['style']; + sourceHandleId?: EdgeProps['sourceHandleId']; + targetHandleId?: EdgeProps['targetHandleId']; +}; +export type EdgeComponentWithPathOptions = EdgeComponentProps & { + pathOptions?: PathOptions; +}; +/** + * BezierEdge component props + * @public + * @expand + */ +export type BezierEdgeProps = EdgeComponentWithPathOptions; +/** + * SmoothStepEdge component props + * @public + * @expand + */ +export type SmoothStepEdgeProps = EdgeComponentWithPathOptions; +/** + * StepEdge component props + * @public + * @expand + */ +export type StepEdgeProps = EdgeComponentWithPathOptions; +/** + * StraightEdge component props + * @public + * @expand + */ +export type StraightEdgeProps = Omit; +/** + * SimpleBezier component props + * @public + * @expand + */ +export type SimpleBezierEdgeProps = EdgeComponentProps; +/** + * If you want to render a custom component for connection lines, you can set the + * `connectionLineComponent` prop on the [``](/api-reference/react-flow#connection-connectionLineComponent) + * component. The `ConnectionLineComponentProps` are passed to your custom component. + * + * @public + */ +export type ConnectionLineComponentProps = { + connectionLineStyle?: CSSProperties; + connectionLineType: ConnectionLineType; + /** The node the connection line originates from. */ + fromNode: InternalNode; + /** The handle on the `fromNode` that the connection line originates from. */ + fromHandle: Handle; + fromX: number; + fromY: number; + toX: number; + toY: number; + fromPosition: Position; + toPosition: Position; + /** + * If there is an `isValidConnection` callback, this prop will be set to `"valid"` or `"invalid"` + * based on the return value of that callback. Otherwise, it will be `null`. + */ + connectionStatus: 'valid' | 'invalid' | null; + toNode: InternalNode | null; + toHandle: Handle | null; + pointer: XYPosition; +}; +export type ConnectionLineComponent = ComponentType>; +export {}; +//# sourceMappingURL=edges.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/edges.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/edges.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..121943a50032eb8bfe8dd9381650db06162ad166 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/edges.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"edges.d.ts","sourceRoot":"","sources":["../../src/types/edges.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,SAAS,EACT,UAAU,IAAI,eAAe,EAC7B,aAAa,EACb,QAAQ,EACT,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EACV,QAAQ,EACR,iBAAiB,EACjB,QAAQ,EACR,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,kBAAkB,EAClB,MAAM,EACN,YAAY,EACZ,eAAe,EACf,OAAO,EACP,WAAW,EACX,oBAAoB,EACpB,UAAU,EACX,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,IAAI,CACd,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,QAAQ,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,IACtD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAC9B,gBAAgB,GAAG;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;OAEG;IACH,aAAa,CAAC,EAAE,IAAI,CAClB,aAAa,CAAC,WAAW,CAAC,EAC1B,IAAI,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,yBAAyB,CACjF,CAAC;CACH,CAAC;AAEJ,KAAK,cAAc,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,CAC5F,QAAQ,EACR,YAAY,CACb,GAAG;IACF,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACrC,CAAC;AAEF,KAAK,UAAU,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG;IAChH,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC,CAAC;AAEF,KAAK,QAAQ,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG;IAC3G,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B,CAAC;AAEF,KAAK,YAAY,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAEnH,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,UAAU,GAAG,QAAQ,GAAG,YAAY,CAAC;AAEhF,MAAM,MAAM,gBAAgB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;AAE9G,MAAM,MAAM,gBAAgB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACrC,aAAa,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC3C,WAAW,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,aAAa,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC3C,YAAY,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACzC,YAAY,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAC5F,cAAc,CAAC,EAAE,CACf,KAAK,EAAE,UAAU,GAAG,UAAU,EAC9B,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,oBAAoB,KAClC,IAAI,CAAC;IACV,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAE9D,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,GACpE,gBAAgB,GAAG;IACjB,yDAAyD;IACzD,CAAC,EAAE,MAAM,CAAC;IACV,yDAAyD;IACzD,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEJ;;;;;GAKG;AACH,MAAM,MAAM,SAAS,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,IAAI,CACxD,QAAQ,EACR,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,WAAW,CAC9G,GACC,YAAY,GACZ,gBAAgB,GAAG;IACjB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEJ;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,GAAG,GAAG,MAAM,GAAG,aAAa,GAAG,WAAW,CAAC,GACzG,gBAAgB,GAAG;IACjB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEJ;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAC3C,gBAAgB,GAAG;IACjB,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACrB,WAAW,CAAC,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACnC,gBAAgB,CAAC,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACjD,KAAK,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC3B,cAAc,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC7C,cAAc,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;CAC9C,CAAC;AAEJ,MAAM,MAAM,4BAA4B,CAAC,WAAW,IAAI,kBAAkB,GAAG;IAC3E,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,4BAA4B,CAAC,iBAAiB,CAAC,CAAC;AAE9E;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,4BAA4B,CAAC,qBAAqB,CAAC,CAAC;AAEtF;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,4BAA4B,CAAC,eAAe,CAAC,CAAC;AAE1E;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,EAAE,gBAAgB,GAAG,gBAAgB,CAAC,CAAC;AAE9F;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,kBAAkB,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,MAAM,4BAA4B,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI;IACvE,mBAAmB,CAAC,EAAE,aAAa,CAAC;IACpC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,oDAAoD;IACpD,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IACjC,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,QAAQ,CAAC;IACvB,UAAU,EAAE,QAAQ,CAAC;IACrB;;;OAGG;IACH,gBAAgB,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IAC7C,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IACtC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,uBAAuB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,aAAa,CAC/E,4BAA4B,CAAC,QAAQ,CAAC,CACvC,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/general.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/general.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..c98749143544f93c0205625412e038b58acb036c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/general.d.ts @@ -0,0 +1,179 @@ +import { ComponentType } from 'react'; +import { FitViewParamsBase, FitViewOptionsBase, ZoomInOut, ZoomTo, SetViewport, GetZoom, GetViewport, SetCenter, FitBounds, XYPosition, OnBeforeDeleteBase, Connection, NodeChange, EdgeChange, SnapGrid } from '@xyflow/system'; +import type { Node, Edge, ReactFlowInstance, EdgeProps, NodeProps } from '.'; +/** + * This type can be used to type the `onNodesChange` function with a custom node type. + * + * @public + * + * @example + * + * ```ts + * const onNodesChange: OnNodesChange = useCallback((changes) => { + * setNodes((nodes) => applyNodeChanges(nodes, changes)); + * },[]); + * ``` + */ +export type OnNodesChange = (changes: NodeChange[]) => void; +/** + * This type can be used to type the `onEdgesChange` function with a custom edge type. + * + * @public + * + * @example + * + * ```ts + * const onEdgesChange: OnEdgesChange = useCallback((changes) => { + * setEdges((edges) => applyEdgeChanges(edges, changes)); + * },[]); + * ``` + */ +export type OnEdgesChange = (changes: EdgeChange[]) => void; +export type OnNodesDelete = (nodes: NodeType[]) => void; +export type OnEdgesDelete = (edges: EdgeType[]) => void; +/** + * This type can be used to type the `onDelete` function with a custom node and edge type. + * + * @public + */ +export type OnDelete = (params: { + nodes: NodeType[]; + edges: EdgeType[]; +}) => void; +export type NodeTypes = Record>; +export type EdgeTypes = Record>; +export type UnselectNodesAndEdgesParams = { + nodes?: NodeType[]; + edges?: EdgeType[]; +}; +export type OnSelectionChangeParams = { + nodes: NodeType[]; + edges: EdgeType[]; +}; +export type OnSelectionChangeFunc = (params: OnSelectionChangeParams) => void; +/** + * @inline + */ +export type FitViewParams = FitViewParamsBase; +/** + * When calling [`fitView`](/api-reference/types/react-flow-instance#fitview) these options + * can be used to customize the behaviour. For example, the `duration` option can be used to + * transform the viewport smoothly over a given amount of time. + * + * @public + * @inline + */ +export type FitViewOptions = FitViewOptionsBase; +/** + * @inline + */ +export type FitView = (fitViewOptions?: FitViewOptions) => Promise; +/** + * @inline + */ +export type OnInit = (reactFlowInstance: ReactFlowInstance) => void; +/** + * @inline + */ +export type ViewportHelperFunctions = { + /** + * Zooms viewport in by 1.2. + * + * @param options.duration - optional duration. If set, a transition will be applied + */ + zoomIn: ZoomInOut; + /** + * Zooms viewport out by 1 / 1.2. + * + * @param options.duration - optional duration. If set, a transition will be applied + */ + zoomOut: ZoomInOut; + /** + * Zoom the viewport to a given zoom level. Passing in a `duration` will animate the viewport to + * the new zoom level. + * + * @param zoomLevel - the zoom level to set + * @param options.duration - optional duration. If set, a transition will be applied + */ + zoomTo: ZoomTo; + /** + * Get the current zoom level of the viewport. + * + * @returns current zoom as a number + */ + getZoom: GetZoom; + /** + * Sets the current viewport. + * + * @param viewport - the viewport to set + * @param options.duration - optional duration. If set, a transition will be applied + * @param options.ease - optional ease function. + */ + setViewport: SetViewport; + /** + * Returns the current viewport. + * + * @returns Viewport + */ + getViewport: GetViewport; + /** + * Center the viewport on a given position. Passing in a `duration` will animate the viewport to + * the new position. + * + * @param x - x position + * @param y - y position + * @param options.zoom - optional zoom + * @param options.duration - optional duration. If set, a transition will be applied + * @param options.ease - optional ease function. + */ + setCenter: SetCenter; + /** + * A low-level utility function to fit the viewport to a given rectangle. By passing in a + * `duration`, the viewport will animate from its current position to the new position. The + * `padding` option can be used to add space around the bounds. + * + * @param bounds - the bounds ({ x: number, y: number, width: number, height: number }) to fit the view to + * @param options.padding - optional padding + * @param options.duration - optional duration. If set, a transition will be applied + * @param options.ease - optional ease function. + */ + fitBounds: FitBounds; + /** + * With this function you can translate a screen pixel position to a flow position. It is useful + * for implementing drag and drop from a sidebar for example. + * + * @param clientPosition - the screen / client position. When you are working with events you can use event.clientX and event.clientY + * @param options.snapToGrid - if true, the converted position will be snapped to the grid + * @returns position as { x: number, y: number } + * + * @example + * const flowPosition = screenToFlowPosition({ x: event.clientX, y: event.clientY }) + */ + screenToFlowPosition: (clientPosition: XYPosition, options?: { + snapToGrid?: boolean; + snapGrid?: SnapGrid; + }) => XYPosition; + /** + * Translate a position inside the flow's canvas to a screen pixel position. + * + * @param flowPosition - the screen / client position. When you are working with events you can use event.clientX and event.clientY + * @returns position as { x: number, y: number } + * + * @example + * const clientPosition = flowToScreenPosition({ x: node.position.x, y: node.position.y }) + */ + flowToScreenPosition: (flowPosition: XYPosition) => XYPosition; +}; +export type OnBeforeDelete = OnBeforeDeleteBase; +/** + * This type can be used to type the `isValidConnection` function. + * If the function returns `true`, the connection is valid and can be created. + */ +export type IsValidConnection = (edge: EdgeType | Connection) => boolean; +//# sourceMappingURL=general.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/general.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/general.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..59b140eb1b6c9e96db47fb6e58efbd4f34d2e4d6 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/general.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../src/types/general.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,MAAM,EACN,WAAW,EACX,OAAO,EACP,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAE7E;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC;AAEpG;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC;AAEpG,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;AACtF,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;AAEtF;;;;GAIG;AACH,MAAM,MAAM,QAAQ,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;IAC1F,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB,KAAK,IAAI,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,MAAM,CAC5B,MAAM,EACN,aAAa,CACX,SAAS,GAAG;IAEV,IAAI,EAAE,GAAG,CAAC;IAEV,IAAI,EAAE,GAAG,CAAC;CACX,CACF,CACF,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,CAC5B,MAAM,EACN,aAAa,CACX,SAAS,GAAG;IAEV,IAAI,EAAE,GAAG,CAAC;IAEV,IAAI,EAAE,GAAG,CAAC;CACX,CACF,CACF,CAAC;AAEF,MAAM,MAAM,2BAA2B,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI;IACpG,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,uBAAuB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI;IAChG,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,CAC9F,MAAM,EAAE,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAChD,IAAI,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAEtF;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AAExF;;GAEG;AACH,MAAM,MAAM,OAAO,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpH;;GAEG;AACH,MAAM,MAAM,MAAM,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,CAC/E,iBAAiB,EAAE,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,KACrD,IAAI,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC;;;;OAIG;IACH,MAAM,EAAE,SAAS,CAAC;IAClB;;;;OAIG;IACH,OAAO,EAAE,SAAS,CAAC;IACnB;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;OAMG;IACH,WAAW,EAAE,WAAW,CAAC;IACzB;;;;OAIG;IACH,WAAW,EAAE,WAAW,CAAC;IACzB;;;;;;;;;OASG;IACH,SAAS,EAAE,SAAS,CAAC;IACrB;;;;;;;;;OASG;IACH,SAAS,EAAE,SAAS,CAAC;IACrB;;;;;;;;;;OAUG;IACH,oBAAoB,EAAE,CACpB,cAAc,EAAE,UAAU,EAC1B,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;KAAE,KACpD,UAAU,CAAC;IAChB;;;;;;;;OAQG;IACH,oBAAoB,EAAE,CAAC,YAAY,EAAE,UAAU,KAAK,UAAU,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,kBAAkB,CACzG,QAAQ,EACR,QAAQ,CACT,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iBAAiB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,KAAK,OAAO,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..93a5f0a47682266c65d8bca355d3de3495e005f7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/index.d.ts @@ -0,0 +1,7 @@ +export * from './nodes'; +export * from './edges'; +export * from './component-props'; +export * from './general'; +export * from './store'; +export * from './instance'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..245cc1971a7f5f07f50d2859f6444b2e6a7c0f79 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/instance.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/instance.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..3252224388adcb43fa7e930693c4e296c6303007 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/instance.d.ts @@ -0,0 +1,242 @@ +import type { HandleConnection, HandleType, NodeConnection, Rect, Viewport } from '@xyflow/system'; +import type { Node, Edge, ViewportHelperFunctions, InternalNode, FitView } from '.'; +export type ReactFlowJsonObject = { + nodes: NodeType[]; + edges: EdgeType[]; + viewport: Viewport; +}; +export type DeleteElementsOptions = { + nodes?: (Node | { + id: Node['id']; + })[]; + edges?: (Edge | { + id: Edge['id']; + })[]; +}; +/** + * @inline + */ +export type GeneralHelpers = { + /** + * Returns nodes. + * + * @returns nodes array + */ + getNodes: () => NodeType[]; + /** + * Set your nodes array to something else by either overwriting it with a new array or by passing + * in a function to update the existing array. If using a function, it is important to make sure a + * new array is returned instead of mutating the existing array. Calling this function will + * trigger the `onNodesChange` handler in a controlled flow. + * + * @param payload - the nodes to set or a function that receives the current nodes and returns the new nodes + */ + setNodes: (payload: NodeType[] | ((nodes: NodeType[]) => NodeType[])) => void; + /** + * Add one or many nodes to your existing nodes array. Calling this function will trigger the + * `onNodesChange` handler in a controlled flow. + * + * @param payload - the nodes to add + */ + addNodes: (payload: NodeType[] | NodeType) => void; + /** + * Returns a node by id. + * + * @param id - the node id + * @returns the node or undefined if no node was found + */ + getNode: (id: string) => NodeType | undefined; + /** + * Returns an internal node by id. + * + * @param id - the node id + * @returns the internal node or undefined if no node was found + */ + getInternalNode: (id: string) => InternalNode | undefined; + /** + * Returns edges. + * + * @returns edges array + */ + getEdges: () => EdgeType[]; + /** + * Set your edges array to something else by either overwriting it with a new array or by passing + * in a function to update the existing array. If using a function, it is important to make sure a + * new array is returned instead of mutating the existing array. Calling this function will + * trigger the `onEdgesChange` handler in a controlled flow. + * + * @param payload - the edges to set or a function that receives the current edges and returns the new edges + */ + setEdges: (payload: EdgeType[] | ((edges: EdgeType[]) => EdgeType[])) => void; + /** + * Add one or many edges to your existing edges array. Calling this function will trigger the + * `onEdgesChange` handler in a controlled flow. + * + * @param payload - the edges to add + */ + addEdges: (payload: EdgeType[] | EdgeType) => void; + /** + * Returns an edge by id. + * + * @param id - the edge id + * @returns the edge or undefined if no edge was found + */ + getEdge: (id: string) => EdgeType | undefined; + /** + * Returns the nodes, edges and the viewport as a JSON object. + * + * @returns the nodes, edges and the viewport as a JSON object + */ + toObject: () => ReactFlowJsonObject; + /** + * Deletes nodes and edges. + * + * @param params.nodes - optional nodes array to delete + * @param params.edges - optional edges array to delete + * + * @returns a promise that resolves with the deleted nodes and edges + */ + deleteElements: (params: DeleteElementsOptions) => Promise<{ + deletedNodes: Node[]; + deletedEdges: Edge[]; + }>; + /** + * Find all the nodes currently intersecting with a given node or rectangle. The `partially` + * parameter can be set to `true` to include nodes that are only partially intersecting. + * + * @param node - the node or rect to check for intersections + * @param partially - true by default, if set to false, only nodes that are fully intersecting will be returned + * @param nodes - optional nodes array to check for intersections + * + * @returns an array of intersecting nodes + */ + getIntersectingNodes: (node: NodeType | { + id: Node['id']; + } | Rect, partially?: boolean, nodes?: NodeType[]) => NodeType[]; + /** + * Determine if a given node or rectangle is intersecting with another rectangle. The `partially` + * parameter can be set to true return `true` even if the node is only partially intersecting. + * + * @param node - the node or rect to check for intersections + * @param area - the rect to check for intersections + * @param partially - if true, the node is considered to be intersecting if it partially overlaps with the passed react + * + * @returns true if the node or rect intersects with the given area + */ + isNodeIntersecting: (node: NodeType | { + id: Node['id']; + } | Rect, area: Rect, partially?: boolean) => boolean; + /** + * Updates a node. + * + * @param id - id of the node to update + * @param nodeUpdate - the node update as an object or a function that receives the current node and returns the node update + * @param options.replace - if true, the node is replaced with the node update, otherwise the changes get merged + * + * @example + * updateNode('node-1', (node) => ({ position: { x: node.position.x + 10, y: node.position.y } })); + */ + updateNode: (id: string, nodeUpdate: Partial | ((node: NodeType) => Partial), options?: { + replace: boolean; + }) => void; + /** + * Updates the data attribute of a node. + * + * @param id - id of the node to update + * @param dataUpdate - the data update as an object or a function that receives the current data and returns the data update + * @param options.replace - if true, the data is replaced with the data update, otherwise the changes get merged + * + * @example + * updateNodeData('node-1', { label: 'A new label' }); + */ + updateNodeData: (id: string, dataUpdate: Partial | ((node: NodeType) => Partial), options?: { + replace: boolean; + }) => void; + /** + * Updates an edge. + * + * @param id - id of the edge to update + * @param edgeUpdate - the edge update as an object or a function that receives the current edge and returns the edge update + * @param options.replace - if true, the edge is replaced with the edge update, otherwise the changes get merged + * + * @example + * updateEdge('edge-1', (edge) => ({ label: 'A new label' })); + */ + updateEdge: (id: string, edgeUpdate: Partial | ((edge: EdgeType) => Partial), options?: { + replace: boolean; + }) => void; + /** + * Updates the data attribute of a edge. + * + * @param id - id of the edge to update + * @param dataUpdate - the data update as an object or a function that receives the current data and returns the data update + * @param options.replace - if true, the data is replaced with the data update, otherwise the changes get merged + * + * @example + * updateEdgeData('edge-1', { label: 'A new label' }); + */ + updateEdgeData: (id: string, dataUpdate: Partial | ((edge: EdgeType) => Partial), options?: { + replace: boolean; + }) => void; + /** + * Returns the bounds of the given nodes or node ids. + * + * @param nodes - the nodes or node ids to calculate the bounds for + * + * @returns the bounds of the given nodes + */ + getNodesBounds: (nodes: (NodeType | InternalNode | string)[]) => Rect; + /** + * Get all the connections of a handle belonging to a specific node. The type parameter be either + * `'source'` or `'target'`. + * @deprecated + * @param type - handle type 'source' or 'target' + * @param id - the handle id (this is only needed if you have multiple handles of the same type, meaning you have to provide a unique id for each handle) + * @param nodeId - the node id the handle belongs to + * @returns an array with handle connections + */ + getHandleConnections: ({ type, id, nodeId, }: { + type: HandleType; + nodeId: string; + id?: string | null; + }) => HandleConnection[]; + /** + * Gets all connections to a node. Can be filtered by handle type and id. + * @param type - handle type 'source' or 'target' + * @param handleId - the handle id (this is only needed if you have multiple handles of the same type, meaning you have to provide a unique id for each handle) + * @param nodeId - the node id the handle belongs to + * @returns an array with handle connections + */ + getNodeConnections: ({ type, handleId, nodeId, }: { + type?: HandleType; + nodeId: string; + handleId?: string | null; + }) => NodeConnection[]; + /** + * Fits the view based on the passed params. By default it fits the view to all nodes. + * + * @param options.padding - optional padding + * @param options.nodes - optional nodes to fit the view to + * @param options.minZoom - optional minZoom + * @param options.maxZoom - optional maxZoom + * @param options.duration - optional duration. If set, a transition will be applied + * @param options.includeHiddenNodes - optional includeHiddenNodes + */ + fitView: FitView; +}; +/** + * The `ReactFlowInstance` provides a collection of methods to query and manipulate + * the internal state of your flow. You can get an instance by using the + * [`useReactFlow`](/api-reference/hooks/use-react-flow) hook or attaching a listener + * to the [`onInit`](/api-reference/react-flow#event-oninit) event. + * + * @public + */ +export type ReactFlowInstance = GeneralHelpers & ViewportHelperFunctions & { + /** + * React Flow needs to mount the viewport to the DOM and initialize its zoom and pan behavior. + * This property tells you when viewport is initialized. + */ + viewportInitialized: boolean; +}; +//# sourceMappingURL=instance.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/instance.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/instance.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..454f6a19248a753bd2049dabeaef6ea9e24b8036 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/instance.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../../src/types/instance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACnG,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,uBAAuB,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;AAEpF,MAAM,MAAM,mBAAmB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI;IAC5F,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG;QAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC,EAAE,CAAC;IACtC,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG;QAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC,EAAE,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI;IACvF;;;;OAIG;IACH,QAAQ,EAAE,MAAM,QAAQ,EAAE,CAAC;IAC3B;;;;;;;OAOG;IACH,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9E;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,KAAK,IAAI,CAAC;IACnD;;;;;OAKG;IACH,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,GAAG,SAAS,CAAC;IAC9C;;;;;OAKG;IACH,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,YAAY,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IACpE;;;;OAIG;IACH,QAAQ,EAAE,MAAM,QAAQ,EAAE,CAAC;IAC3B;;;;;;;OAOG;IACH,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9E;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,KAAK,IAAI,CAAC;IACnD;;;;;OAKG;IACH,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,GAAG,SAAS,CAAC;IAC9C;;;;OAIG;IACH,QAAQ,EAAE,MAAM,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxD;;;;;;;OAOG;IACH,cAAc,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,OAAO,CAAC;QACzD,YAAY,EAAE,IAAI,EAAE,CAAC;QACrB,YAAY,EAAE,IAAI,EAAE,CAAC;KACtB,CAAC,CAAC;IACH;;;;;;;;;OASG;IACH,oBAAoB,EAAE,CACpB,IAAI,EAAE,QAAQ,GAAG;QAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,IAAI,EAC1C,SAAS,CAAC,EAAE,OAAO,EACnB,KAAK,CAAC,EAAE,QAAQ,EAAE,KACf,QAAQ,EAAE,CAAC;IAChB;;;;;;;;;OASG;IACH,kBAAkB,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG;QAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;KAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;IAC7G;;;;;;;;;OASG;IACH,UAAU,EAAE,CACV,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,EACvE,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,KAC3B,IAAI,CAAC;IACV;;;;;;;;;OASG;IACH,cAAc,EAAE,CACd,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EACvF,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,KAC3B,IAAI,CAAC;IACV;;;;;;;;;OASG;IACH,UAAU,EAAE,CACV,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,EACvE,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,KAC3B,IAAI,CAAC;IACV;;;;;;;;;OASG;IACH,cAAc,EAAE,CACd,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EACvF,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,KAC3B,IAAI,CAAC;IACV;;;;;;OAMG;IACH,cAAc,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;IACtE;;;;;;;;OAQG;IACH,oBAAoB,EAAE,CAAC,EACrB,IAAI,EACJ,EAAE,EACF,MAAM,GACP,EAAE;QACD,IAAI,EAAE,UAAU,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACpB,KAAK,gBAAgB,EAAE,CAAC;IACzB;;;;;;OAMG;IACH,kBAAkB,EAAE,CAAC,EACnB,IAAI,EACJ,QAAQ,EACR,MAAM,GACP,EAAE;QACD,IAAI,CAAC,EAAE,UAAU,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,KAAK,cAAc,EAAE,CAAC;IACvB;;;;;;;;;OASG;IACH,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC5B,CAAC;AACF;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,cAAc,CACxG,QAAQ,EACR,QAAQ,CACT,GACC,uBAAuB,GAAG;IACxB;;;OAGG;IACH,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/nodes.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/nodes.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..513a81064335fc13520f778e3c2e8dc91bdded40 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/nodes.d.ts @@ -0,0 +1,101 @@ +import type { CSSProperties, MouseEvent as ReactMouseEvent, AriaRole, HTMLAttributes, DOMAttributes } from 'react'; +import type { CoordinateExtent, NodeBase, OnError, NodeProps as NodePropsBase, InternalNodeBase } from '@xyflow/system'; +import { NodeTypes } from './general'; +/** + * The `Node` type represents everything React Flow needs to know about a given node. + * Whenever you want to update a certain attribute of a node, you need to create a new + * node object. + * + * @public + */ +export type Node = Record, NodeType extends string | undefined = string | undefined> = NodeBase & { + style?: CSSProperties; + className?: string; + resizing?: boolean; + focusable?: boolean; + /** + * The ARIA role attribute for the node element, used for accessibility. + * @default "group" + */ + ariaRole?: AriaRole; + /** + * General escape hatch for adding custom attributes to the node's DOM element. + */ + domAttributes?: Omit, 'id' | 'style' | 'className' | 'draggable' | 'role' | 'aria-label' | 'defaultValue' | 'dangerouslySetInnerHTML' | keyof DOMAttributes>; +}; +/** + * The `InternalNode` type is identical to the base [`Node`](/api-references/types/node) + * type but is extended with some additional properties used internally. + * Some functions and callbacks that return nodes may return an `InternalNode`. + * + * @public + */ +export type InternalNode = InternalNodeBase; +export type NodeMouseHandler = (event: ReactMouseEvent, node: NodeType) => void; +export type SelectionDragHandler = (event: ReactMouseEvent, nodes: NodeType[]) => void; +export type OnNodeDrag = (event: MouseEvent | TouchEvent, node: NodeType, nodes: NodeType[]) => void; +export type NodeWrapperProps = { + id: string; + nodesConnectable: boolean; + elementsSelectable: boolean; + nodesDraggable: boolean; + nodesFocusable: boolean; + onClick?: NodeMouseHandler; + onDoubleClick?: NodeMouseHandler; + onMouseEnter?: NodeMouseHandler; + onMouseMove?: NodeMouseHandler; + onMouseLeave?: NodeMouseHandler; + onContextMenu?: NodeMouseHandler; + resizeObserver: ResizeObserver | null; + noDragClassName: string; + noPanClassName: string; + rfId: string; + disableKeyboardA11y: boolean; + nodeTypes?: NodeTypes; + nodeExtent?: CoordinateExtent; + onError?: OnError; + nodeClickDistance?: number; +}; +/** + * The `BuiltInNode` type represents the built-in node types that are available in React Flow. + * You can use this type to extend your custom node type if you still want to use the built-in ones. + * + * @public + * @example + * ```ts + * type CustomNode = Node<{ value: number }, 'custom'>; + * type MyAppNode = CustomNode | BuiltInNode; + * ``` + */ +export type BuiltInNode = Node<{ + label: string; +}, 'input' | 'output' | 'default' | undefined> | Node, 'group'>; +/** + * When you implement a [custom node](/learn/customization/custom-nodes) it is + * wrapped in a component that enables basic functionality like selection and + * dragging. Your custom node receives `NodeProps` as props. + * + * @public + * @example + * ```tsx + *import { useState } from 'react'; + *import { NodeProps, Node } from '@xyflow/react'; + * + *export type CounterNode = Node<{ initialCount?: number }, 'counter'>; + * + *export default function CounterNode(props: NodeProps) { + * const [count, setCount] = useState(props.data?.initialCount ?? 0); + * + * return ( + *
+ *

Count: {count}

+ * + *
+ * ); + *} + *``` + */ +export type NodeProps = NodePropsBase; +//# sourceMappingURL=nodes.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/nodes.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/nodes.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..7a128b76ec689629c5b969ea24b108375ac6ba45 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/nodes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/types/nodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,IAAI,eAAe,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACnH,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAExH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,MAAM,IAAI,CACd,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,QAAQ,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,IACtD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG;IACjC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;OAEG;IACH,aAAa,CAAC,EAAE,IAAI,CAClB,cAAc,CAAC,cAAc,CAAC,EAC5B,IAAI,GACJ,OAAO,GACP,WAAW,GACX,WAAW,GACX,MAAM,GACN,YAAY,GACZ,cAAc,GACd,yBAAyB,GACzB,MAAM,aAAa,CAAC,cAAc,CAAC,CACtC,CAAC;CACH,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAEpF,MAAM,MAAM,gBAAgB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;AAC9G,MAAM,MAAM,oBAAoB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;AACrH,MAAM,MAAM,UAAU,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,CACrD,KAAK,EAAE,UAAU,GAAG,UAAU,EAC9B,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,QAAQ,EAAE,KACd,IAAI,CAAC;AAEV,MAAM,MAAM,gBAAgB,CAAC,QAAQ,SAAS,IAAI,IAAI;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACrC,aAAa,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC3C,YAAY,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1C,WAAW,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACzC,YAAY,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC1C,aAAa,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC3C,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,WAAW,GACnB,IAAI,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC,GACnE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,MAAM,SAAS,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/store.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/store.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f0760922502dc0d25ec0f547922a66f72586bdb2 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/store.d.ts @@ -0,0 +1,115 @@ +import { ConnectionMode, withResolvers, type ConnectionState, type CoordinateExtent, type InternalNodeUpdate, type UpdateNodePositions, type NodeOrigin, type OnConnect, type OnError, type OnViewportChange, type SelectionRect, type SnapGrid, type Handle, type Transform, type PanZoomInstance, type PanBy, type OnConnectStart, type OnConnectEnd, type OnSelectionDrag, type OnMoveStart, type OnMove, type OnMoveEnd, type UpdateConnection, type EdgeLookup, type ConnectionLookup, type NodeLookup, type NodeChange, type EdgeChange, type ParentLookup, type AriaLabelConfig, type SetCenter, type ZIndexMode } from '@xyflow/system'; +import type { Edge, Node, OnNodesChange, OnEdgesChange, DefaultEdgeOptions, FitViewOptions, OnNodesDelete, OnEdgesDelete, OnSelectionChangeFunc, UnselectNodesAndEdgesParams, OnDelete, OnNodeDrag, OnBeforeDelete, IsValidConnection, InternalNode } from '.'; +export type ReactFlowStore = { + rfId: string; + width: number; + height: number; + transform: Transform; + nodes: NodeType[]; + nodesInitialized: boolean; + nodeLookup: NodeLookup>; + parentLookup: ParentLookup>; + edges: EdgeType[]; + edgeLookup: EdgeLookup; + connectionLookup: ConnectionLookup; + onNodesChange: OnNodesChange | null; + onEdgesChange: OnEdgesChange | null; + hasDefaultNodes: boolean; + hasDefaultEdges: boolean; + domNode: HTMLDivElement | null; + paneDragging: boolean; + noPanClassName: string; + panZoom: PanZoomInstance | null; + minZoom: number; + maxZoom: number; + translateExtent: CoordinateExtent; + nodeExtent: CoordinateExtent; + nodeOrigin: NodeOrigin; + nodeDragThreshold: number; + connectionDragThreshold: number; + nodesSelectionActive: boolean; + userSelectionActive: boolean; + userSelectionRect: SelectionRect | null; + connection: ConnectionState>; + connectionMode: ConnectionMode; + connectionClickStartHandle: (Pick & Required>) | null; + snapToGrid: boolean; + snapGrid: SnapGrid; + nodesDraggable: boolean; + autoPanOnNodeFocus: boolean; + nodesConnectable: boolean; + nodesFocusable: boolean; + edgesFocusable: boolean; + edgesReconnectable: boolean; + elementsSelectable: boolean; + elevateNodesOnSelect: boolean; + elevateEdgesOnSelect: boolean; + selectNodesOnDrag: boolean; + multiSelectionActive: boolean; + onNodeDragStart?: OnNodeDrag; + onNodeDrag?: OnNodeDrag; + onNodeDragStop?: OnNodeDrag; + onSelectionDragStart?: OnSelectionDrag; + onSelectionDrag?: OnSelectionDrag; + onSelectionDragStop?: OnSelectionDrag; + onMoveStart?: OnMoveStart; + onMove?: OnMove; + onMoveEnd?: OnMoveEnd; + onConnect?: OnConnect; + onConnectStart?: OnConnectStart; + onConnectEnd?: OnConnectEnd; + onClickConnectStart?: OnConnectStart; + onClickConnectEnd?: OnConnectEnd; + connectOnClick: boolean; + defaultEdgeOptions?: DefaultEdgeOptions; + fitViewQueued: boolean; + fitViewOptions: FitViewOptions | undefined; + fitViewResolver: ReturnType> | null; + onNodesDelete?: OnNodesDelete; + onEdgesDelete?: OnEdgesDelete; + onDelete?: OnDelete; + onError?: OnError; + onViewportChangeStart?: OnViewportChange; + onViewportChange?: OnViewportChange; + onViewportChangeEnd?: OnViewportChange; + onBeforeDelete?: OnBeforeDelete; + onSelectionChangeHandlers: OnSelectionChangeFunc[]; + ariaLiveMessage: string; + autoPanOnConnect: boolean; + autoPanOnNodeDrag: boolean; + autoPanSpeed: number; + connectionRadius: number; + isValidConnection?: IsValidConnection; + lib: string; + debug: boolean; + ariaLabelConfig: AriaLabelConfig; + zIndexMode: ZIndexMode; + onNodesChangeMiddlewareMap: Map[]) => NodeChange[]>; + onEdgesChangeMiddlewareMap: Map[]) => EdgeChange[]>; +}; +export type ReactFlowActions = { + setNodes: (nodes: NodeType[]) => void; + setEdges: (edges: EdgeType[]) => void; + setDefaultNodesAndEdges: (nodes?: NodeType[], edges?: EdgeType[]) => void; + updateNodeInternals: (updates: Map, params?: { + triggerFitView: boolean; + }) => void; + updateNodePositions: UpdateNodePositions; + resetSelectedElements: () => void; + unselectNodesAndEdges: (params?: UnselectNodesAndEdgesParams) => void; + addSelectedNodes: (nodeIds: string[]) => void; + addSelectedEdges: (edgeIds: string[]) => void; + setMinZoom: (minZoom: number) => void; + setMaxZoom: (maxZoom: number) => void; + setTranslateExtent: (translateExtent: CoordinateExtent) => void; + setNodeExtent: (nodeExtent: CoordinateExtent) => void; + cancelConnection: () => void; + updateConnection: UpdateConnection>; + reset: () => void; + triggerNodeChanges: (changes: NodeChange[]) => void; + triggerEdgeChanges: (changes: EdgeChange[]) => void; + panBy: PanBy; + setCenter: SetCenter; +}; +export type ReactFlowState = ReactFlowStore & ReactFlowActions; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/store.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/store.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..6855e0d62f64ae82c2d71fedb2814a79ea816660 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/types/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/types/store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EACV,IAAI,EACJ,IAAI,EACJ,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,2BAA2B,EAC3B,QAAQ,EACR,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,YAAY,EACb,MAAM,GAAG,CAAC;AAEX,MAAM,MAAM,cAAc,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI;IACvF,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnD,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IACjC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAC9C,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IAC9C,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,gBAAgB,CAAC;IAClC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uBAAuB,EAAE,MAAM,CAAC;IAEhC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,aAAa,GAAG,IAAI,CAAC;IAExC,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpD,cAAc,EAAE,cAAc,CAAC;IAC/B,0BAA0B,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAEpG,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IAEnB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iBAAiB,EAAE,OAAO,CAAC;IAE3B,oBAAoB,EAAE,OAAO,CAAC;IAE9B,eAAe,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,cAAc,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAEtC,oBAAoB,CAAC,EAAE,eAAe,CAAC;IACvC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,mBAAmB,CAAC,EAAE,eAAe,CAAC;IAEtC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B,mBAAmB,CAAC,EAAE,cAAc,CAAC;IACrC,iBAAiB,CAAC,EAAE,YAAY,CAAC;IAEjC,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,cAAc,GAAG,SAAS,CAAC;IAC3C,eAAe,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAElE,aAAa,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,aAAa,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,qBAAqB,CAAC,EAAE,gBAAgB,CAAC;IACzC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,mBAAmB,CAAC,EAAE,gBAAgB,CAAC;IACvC,cAAc,CAAC,EAAE,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEpD,yBAAyB,EAAE,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;IAEvE,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IAEzB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAEhD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,eAAe,EAAE,eAAe,CAAC;IAEjC,UAAU,EAAE,UAAU,CAAC;IACvB,0BAA0B,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrG,0BAA0B,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;CACtG,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,QAAQ,SAAS,IAAI,EAAE,QAAQ,SAAS,IAAI,IAAI;IAC3E,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACtC,uBAAuB,EAAE,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IAC1E,mBAAmB,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC,EAAE;QAAE,cAAc,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9G,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,qBAAqB,EAAE,CAAC,MAAM,CAAC,EAAE,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,IAAI,CAAC;IAC1F,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC9C,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC9C,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,kBAAkB,EAAE,CAAC,eAAe,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAChE,aAAa,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACtD,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,gBAAgB,EAAE,gBAAgB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3D,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,kBAAkB,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC;IAC9D,kBAAkB,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC;IAC9D,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,cAAc,CACrG,QAAQ,EACR,QAAQ,CACT,GACC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/changes.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/changes.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f9e093601fb353aa8a74e98c4135d7934edb74bb --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/changes.d.ts @@ -0,0 +1,87 @@ +import { EdgeLookup, NodeLookup, EdgeChange, NodeChange, NodeSelectionChange, EdgeSelectionChange, NodeRemoveChange, EdgeRemoveChange } from '@xyflow/system'; +import type { Node, Edge, InternalNode } from '../types'; +/** + * Drop in function that applies node changes to an array of nodes. + * @public + * @param changes - Array of changes to apply. + * @param nodes - Array of nodes to apply the changes to. + * @returns Array of updated nodes. + * @example + *```tsx + *import { useState, useCallback } from 'react'; + *import { ReactFlow, applyNodeChanges, type Node, type Edge, type OnNodesChange } from '@xyflow/react'; + * + *export default function Flow() { + * const [nodes, setNodes] = useState([]); + * const [edges, setEdges] = useState([]); + * const onNodesChange: OnNodesChange = useCallback( + * (changes) => { + * setNodes((oldNodes) => applyNodeChanges(changes, oldNodes)); + * }, + * [setNodes], + * ); + * + * return ( + * + * ); + *} + *``` + * @remarks Various events on the component can produce an {@link NodeChange} + * that describes how to update the edges of your flow in some way. + * If you don't need any custom behaviour, this util can be used to take an array + * of these changes and apply them to your edges. + */ +export declare function applyNodeChanges(changes: NodeChange[], nodes: NodeType[]): NodeType[]; +/** + * Drop in function that applies edge changes to an array of edges. + * @public + * @param changes - Array of changes to apply. + * @param edges - Array of edge to apply the changes to. + * @returns Array of updated edges. + * @example + * ```tsx + *import { useState, useCallback } from 'react'; + *import { ReactFlow, applyEdgeChanges } from '@xyflow/react'; + * + *export default function Flow() { + * const [nodes, setNodes] = useState([]); + * const [edges, setEdges] = useState([]); + * const onEdgesChange = useCallback( + * (changes) => { + * setEdges((oldEdges) => applyEdgeChanges(changes, oldEdges)); + * }, + * [setEdges], + * ); + * + * return ( + * + * ); + *} + *``` + * @remarks Various events on the component can produce an {@link EdgeChange} + * that describes how to update the edges of your flow in some way. + * If you don't need any custom behaviour, this util can be used to take an array + * of these changes and apply them to your edges. + */ +export declare function applyEdgeChanges(changes: EdgeChange[], edges: EdgeType[]): EdgeType[]; +export declare function createSelectionChange(id: string, selected: boolean): NodeSelectionChange | EdgeSelectionChange; +export declare function getSelectionChanges(items: Map, selectedIds?: Set, mutateItem?: boolean): NodeSelectionChange[] | EdgeSelectionChange[]; +/** + * This function is used to find the changes between two sets of elements. + * It is used to determine which nodes or edges have been added, removed or replaced. + * + * @internal + * @param params.items = the next set of elements (nodes or edges) + * @param params.lookup = a lookup map of the current store elements + * @returns an array of changes + */ +export declare function getElementsDiffChanges({ items, lookup, }: { + items: Node[] | undefined; + lookup: NodeLookup>; +}): NodeChange[]; +export declare function getElementsDiffChanges({ items, lookup, }: { + items: Edge[] | undefined; + lookup: EdgeLookup; +}): EdgeChange[]; +export declare function elementToRemoveChange(item: T): NodeRemoveChange | EdgeRemoveChange; +//# sourceMappingURL=changes.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/changes.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/changes.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..a0847acbbf852b201dfb198fe78c3726440e6866 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/changes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../../src/utils/changes.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA2IzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAC3D,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,EAC/B,KAAK,EAAE,QAAQ,EAAE,GAChB,QAAQ,EAAE,CAEZ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAC3D,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,EAC/B,KAAK,EAAE,QAAQ,EAAE,GAChB,QAAQ,EAAE,CAEZ;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,mBAAmB,GAAG,mBAAmB,CAM9G;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EACvB,WAAW,GAAE,GAAG,CAAC,MAAM,CAAa,EACpC,UAAU,UAAQ,GACjB,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,CAqB/C;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,MAAM,GACP,EAAE;IACD,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;CACxC,GAAG,UAAU,EAAE,CAAC;AACjB,wBAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,MAAM,GACP,EAAE;IACD,KAAK,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC;CACpB,GAAG,UAAU,EAAE,CAAC;AAmCjB,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,gBAAgB,GAAG,gBAAgB,CAKzG"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/edges.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/edges.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..5142918345508b69fa829867da0019b8ef12bad9 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/edges.d.ts @@ -0,0 +1,4 @@ +import { type AddEdgeOptions, type Connection, type EdgeBase, type ReconnectEdgeOptions } from '@xyflow/system'; +export declare function addEdge(edgeParams: EdgeType | Connection, edges: EdgeType[], options?: AddEdgeOptions): EdgeType[]; +export declare function reconnectEdge(oldEdge: EdgeType, newConnection: Connection, edges: EdgeType[], options?: ReconnectEdgeOptions): EdgeType[]; +//# sourceMappingURL=edges.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/edges.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/edges.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..5b069e680dabd55ddb8111a7f4a73ac40a9cbd97 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/edges.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"edges.d.ts","sourceRoot":"","sources":["../../src/utils/edges.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AAIxB,wBAAgB,OAAO,CAAC,QAAQ,SAAS,QAAQ,EAC/C,UAAU,EAAE,QAAQ,GAAG,UAAU,EACjC,KAAK,EAAE,QAAQ,EAAE,EACjB,OAAO,GAAE,cAAmB,GAC3B,QAAQ,EAAE,CAKZ;AAED,wBAAgB,aAAa,CAAC,QAAQ,SAAS,QAAQ,EACrD,OAAO,EAAE,QAAQ,EACjB,aAAa,EAAE,UAAU,EACzB,KAAK,EAAE,QAAQ,EAAE,EACjB,OAAO,GAAE,oBAAgD,GACxD,QAAQ,EAAE,CAKZ"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/general.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/general.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..832adfcb54a7f48a2c47237c4071f3906944b31b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/general.d.ts @@ -0,0 +1,48 @@ +import { type Ref, type RefAttributes, JSX, PropsWithoutRef } from 'react'; +import type { Edge, Node } from '../types'; +/** + * Test whether an object is usable as an [`Node`](/api-reference/types/node). + * In TypeScript this is a type guard that will narrow the type of whatever you pass in to + * [`Node`](/api-reference/types/node) if it returns `true`. + * + * @public + * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Node if it returns true + * @param element - The element to test. + * @returns Tests whether the provided value can be used as a `Node`. If you're using TypeScript, + * this function acts as a type guard and will narrow the type of the value to `Node` if it returns + * `true`. + * + * @example + * ```js + *import { isNode } from '@xyflow/react'; + * + *if (isNode(node)) { + * // ... + *} + *``` + */ +export declare const isNode: (element: unknown) => element is NodeType; +/** + * Test whether an object is usable as an [`Edge`](/api-reference/types/edge). + * In TypeScript this is a type guard that will narrow the type of whatever you pass in to + * [`Edge`](/api-reference/types/edge) if it returns `true`. + * + * @public + * @remarks In TypeScript this is a type guard that will narrow the type of whatever you pass in to Edge if it returns true + * @param element - The element to test + * @returns Tests whether the provided value can be used as an `Edge`. If you're using TypeScript, + * this function acts as a type guard and will narrow the type of the value to `Edge` if it returns + * `true`. + * + * @example + * ```js + *import { isEdge } from '@xyflow/react'; + * + *if (isEdge(edge)) { + * // ... + *} + *``` + */ +export declare const isEdge: (element: unknown) => element is EdgeType; +export declare function fixedForwardRef(render: (props: PropsWithoutRef

, ref: Ref) => JSX.Element): (props: P & RefAttributes) => JSX.Element; +//# sourceMappingURL=general.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/general.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/general.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..f30bfc8a2a6aa9cacd1a0dd6a389c903ed87997e --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/general.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../src/utils/general.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,aAAa,EAAc,GAAG,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAGvF,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,MAAM,GAAI,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,SAAS,OAAO,KAAG,OAAO,IAAI,QACpD,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,MAAM,GAAI,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,SAAS,OAAO,KAAG,OAAO,IAAI,QACpD,CAAC;AAGhC,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EACvC,MAAM,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,GAC9D,CAAC,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAG9C"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2e6637cb32b5dcd04679ee86a8e764afb170f515 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/index.d.ts @@ -0,0 +1,4 @@ +export * from './changes'; +export * from './edges'; +export * from './general'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..f2317a54ae070ddbeb586102999468408e82b669 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/esm/utils/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/style.css b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/style.css new file mode 100644 index 0000000000000000000000000000000000000000..e15fd4c9c5b690686a0ec773534fe8b6a51df383 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/style.css @@ -0,0 +1,625 @@ +/* this gets exported as style.css and can be used for the default theming */ +/* these are the necessary styles for React/Svelte Flow, they get used by base.css and style.css */ +.react-flow { + direction: ltr; + + --xy-edge-stroke-default: #b1b1b7; + --xy-edge-stroke-width-default: 1; + --xy-edge-stroke-selected-default: #555; + + --xy-connectionline-stroke-default: #b1b1b7; + --xy-connectionline-stroke-width-default: 1; + + --xy-attribution-background-color-default: rgba(255, 255, 255, 0.5); + + --xy-minimap-background-color-default: #fff; + --xy-minimap-mask-background-color-default: rgba(240, 240, 240, 0.6); + --xy-minimap-mask-stroke-color-default: transparent; + --xy-minimap-mask-stroke-width-default: 1; + --xy-minimap-node-background-color-default: #e2e2e2; + --xy-minimap-node-stroke-color-default: transparent; + --xy-minimap-node-stroke-width-default: 2; + + --xy-background-color-default: transparent; + --xy-background-pattern-dots-color-default: #91919a; + --xy-background-pattern-lines-color-default: #eee; + --xy-background-pattern-cross-color-default: #e2e2e2; + background-color: var(--xy-background-color, var(--xy-background-color-default)); + --xy-node-color-default: inherit; + --xy-node-border-default: 1px solid #1a192b; + --xy-node-background-color-default: #fff; + --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25); + --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, 0.08); + --xy-node-boxshadow-selected-default: 0 0 0 0.5px #1a192b; + --xy-node-border-radius-default: 3px; + + --xy-handle-background-color-default: #1a192b; + --xy-handle-border-color-default: #fff; + + --xy-selection-background-color-default: rgba(0, 89, 220, 0.08); + --xy-selection-border-default: 1px dotted rgba(0, 89, 220, 0.8); + + --xy-controls-button-background-color-default: #fefefe; + --xy-controls-button-background-color-hover-default: #f4f4f4; + --xy-controls-button-color-default: inherit; + --xy-controls-button-color-hover-default: inherit; + --xy-controls-button-border-color-default: #eee; + --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08); + + --xy-edge-label-background-color-default: #ffffff; + --xy-edge-label-color-default: inherit; + --xy-resize-background-color-default: #3367d9; +} +.react-flow.dark { + --xy-edge-stroke-default: #3e3e3e; + --xy-edge-stroke-width-default: 1; + --xy-edge-stroke-selected-default: #727272; + + --xy-connectionline-stroke-default: #b1b1b7; + --xy-connectionline-stroke-width-default: 1; + + --xy-attribution-background-color-default: rgba(150, 150, 150, 0.25); + + --xy-minimap-background-color-default: #141414; + --xy-minimap-mask-background-color-default: rgba(60, 60, 60, 0.6); + --xy-minimap-mask-stroke-color-default: transparent; + --xy-minimap-mask-stroke-width-default: 1; + --xy-minimap-node-background-color-default: #2b2b2b; + --xy-minimap-node-stroke-color-default: transparent; + --xy-minimap-node-stroke-width-default: 2; + + --xy-background-color-default: #141414; + --xy-background-pattern-dots-color-default: #555; + --xy-background-pattern-lines-color-default: #333; + --xy-background-pattern-cross-color-default: #333; + --xy-node-color-default: #f8f8f8; + --xy-node-border-default: 1px solid #3c3c3c; + --xy-node-background-color-default: #1e1e1e; + --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25); + --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, 0.08); + --xy-node-boxshadow-selected-default: 0 0 0 0.5px #999; + + --xy-handle-background-color-default: #bebebe; + --xy-handle-border-color-default: #1e1e1e; + + --xy-selection-background-color-default: rgba(200, 200, 220, 0.08); + --xy-selection-border-default: 1px dotted rgba(200, 200, 220, 0.8); + + --xy-controls-button-background-color-default: #2b2b2b; + --xy-controls-button-background-color-hover-default: #3e3e3e; + --xy-controls-button-color-default: #f8f8f8; + --xy-controls-button-color-hover-default: #fff; + --xy-controls-button-border-color-default: #5b5b5b; + --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08); + + --xy-edge-label-background-color-default: #141414; + --xy-edge-label-color-default: #f8f8f8; +} +.react-flow__background { + background-color: var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default))); + pointer-events: none; + z-index: -1; +} +.react-flow__container { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; +} +.react-flow__pane { + z-index: 1; + touch-action: none; +} +.react-flow__pane.draggable { + cursor: grab; + } +.react-flow__pane.dragging { + cursor: grabbing; + } +.react-flow__pane.selection { + cursor: pointer; + } +.react-flow__viewport { + transform-origin: 0 0; + z-index: 2; + pointer-events: none; +} +.react-flow__renderer { + z-index: 4; +} +.react-flow__selection { + z-index: 6; +} +.react-flow__nodesselection-rect:focus, +.react-flow__nodesselection-rect:focus-visible { + outline: none; +} +.react-flow__edge-path { + stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default)); + stroke-width: var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default)); + fill: none; +} +.react-flow__connection-path { + stroke: var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default)); + stroke-width: var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default)); + fill: none; +} +.react-flow .react-flow__edges { + position: absolute; +} +.react-flow .react-flow__edges svg { + overflow: visible; + position: absolute; + pointer-events: none; + } +.react-flow__edge { + pointer-events: visibleStroke; +} +.react-flow__edge.selectable { + cursor: pointer; + } +.react-flow__edge.animated path { + stroke-dasharray: 5; + animation: dashdraw 0.5s linear infinite; + } +.react-flow__edge.animated path.react-flow__edge-interaction { + stroke-dasharray: none; + animation: none; + } +.react-flow__edge.inactive { + pointer-events: none; + } +.react-flow__edge.selected, + .react-flow__edge:focus, + .react-flow__edge:focus-visible { + outline: none; + } +.react-flow__edge.selected .react-flow__edge-path, + .react-flow__edge.selectable:focus .react-flow__edge-path, + .react-flow__edge.selectable:focus-visible .react-flow__edge-path { + stroke: var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default)); + } +.react-flow__edge-textwrapper { + pointer-events: all; + } +.react-flow__edge .react-flow__edge-text { + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + } +/* Arrowhead marker styles - use CSS custom properties as default */ +.react-flow__arrowhead polyline { + stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default)); +} +.react-flow__arrowhead polyline.arrowclosed { + fill: var(--xy-edge-stroke, var(--xy-edge-stroke-default)); +} +.react-flow__connection { + pointer-events: none; +} +.react-flow__connection .animated { + stroke-dasharray: 5; + animation: dashdraw 0.5s linear infinite; + } +svg.react-flow__connectionline { + z-index: 1001; + overflow: visible; + position: absolute; +} +.react-flow__nodes { + pointer-events: none; + transform-origin: 0 0; +} +.react-flow__node { + position: absolute; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + pointer-events: all; + transform-origin: 0 0; + box-sizing: border-box; + cursor: default; +} +.react-flow__node.selectable { + cursor: pointer; + } +.react-flow__node.draggable { + cursor: grab; + pointer-events: all; + } +.react-flow__node.draggable.dragging { + cursor: grabbing; + } +.react-flow__nodesselection { + z-index: 3; + transform-origin: left top; + pointer-events: none; +} +.react-flow__nodesselection-rect { + position: absolute; + pointer-events: all; + cursor: grab; + } +.react-flow__handle { + position: absolute; + pointer-events: none; + min-width: 5px; + min-height: 5px; + width: 6px; + height: 6px; + background-color: var(--xy-handle-background-color, var(--xy-handle-background-color-default)); + border: 1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default)); + border-radius: 100%; +} +.react-flow__handle.connectingfrom { + pointer-events: all; + } +.react-flow__handle.connectionindicator { + pointer-events: all; + cursor: crosshair; + } +.react-flow__handle-bottom { + top: auto; + left: 50%; + bottom: 0; + transform: translate(-50%, 50%); + } +.react-flow__handle-top { + top: 0; + left: 50%; + transform: translate(-50%, -50%); + } +.react-flow__handle-left { + top: 50%; + left: 0; + transform: translate(-50%, -50%); + } +.react-flow__handle-right { + top: 50%; + right: 0; + transform: translate(50%, -50%); + } +.react-flow__edgeupdater { + cursor: move; + pointer-events: all; +} +.react-flow__pane.selection .react-flow__panel { + pointer-events: none; +} +.react-flow__panel { + position: absolute; + z-index: 5; + margin: 15px; +} +.react-flow__panel.top { + top: 0; + } +.react-flow__panel.bottom { + bottom: 0; + } +.react-flow__panel.top.center, .react-flow__panel.bottom.center { + left: 50%; + transform: translateX(-15px) translateX(-50%); + } +.react-flow__panel.left { + left: 0; + } +.react-flow__panel.right { + right: 0; + } +.react-flow__panel.left.center, .react-flow__panel.right.center { + top: 50%; + transform: translateY(-15px) translateY(-50%); + } +.react-flow__attribution { + font-size: 10px; + background: var(--xy-attribution-background-color, var(--xy-attribution-background-color-default)); + padding: 2px 3px; + margin: 0; +} +.react-flow__attribution a { + text-decoration: none; + color: #999; + } +@keyframes dashdraw { + from { + stroke-dashoffset: 10; + } +} +.react-flow__edgelabel-renderer { + position: absolute; + width: 100%; + height: 100%; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + left: 0; + top: 0; +} +.react-flow__viewport-portal { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.react-flow__minimap { + background: var( + --xy-minimap-background-color-props, + var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) + ); +} +.react-flow__minimap-svg { + display: block; + } +.react-flow__minimap-mask { + fill: var( + --xy-minimap-mask-background-color-props, + var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) + ); + stroke: var( + --xy-minimap-mask-stroke-color-props, + var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) + ); + stroke-width: var( + --xy-minimap-mask-stroke-width-props, + var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) + ); + } +.react-flow__minimap-node { + fill: var( + --xy-minimap-node-background-color-props, + var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) + ); + stroke: var( + --xy-minimap-node-stroke-color-props, + var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) + ); + stroke-width: var( + --xy-minimap-node-stroke-width-props, + var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) + ); + } +.react-flow__background-pattern.dots { + fill: var( + --xy-background-pattern-color-props, + var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) + ); + } +.react-flow__background-pattern.lines { + stroke: var( + --xy-background-pattern-color-props, + var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) + ); + } +.react-flow__background-pattern.cross { + stroke: var( + --xy-background-pattern-color-props, + var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) + ); + } +.react-flow__controls { + display: flex; + flex-direction: column; + box-shadow: var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default)); +} +.react-flow__controls.horizontal { + flex-direction: row; + } +.react-flow__controls-button { + display: flex; + justify-content: center; + align-items: center; + height: 26px; + width: 26px; + padding: 4px; + border: none; + background: var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default)); + border-bottom: 1px solid + var( + --xy-controls-button-border-color-props, + var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) + ); + color: var( + --xy-controls-button-color-props, + var(--xy-controls-button-color, var(--xy-controls-button-color-default)) + ); + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + } +.react-flow__controls-button svg { + width: 100%; + max-width: 12px; + max-height: 12px; + fill: currentColor; + } +.react-flow__edge.updating .react-flow__edge-path { + stroke: #777; + } +.react-flow__edge-text { + font-size: 10px; + } +.react-flow__node.selectable:focus, + .react-flow__node.selectable:focus-visible { + outline: none; + } +.react-flow__node-input, +.react-flow__node-default, +.react-flow__node-output, +.react-flow__node-group { + padding: 10px; + border-radius: var(--xy-node-border-radius, var(--xy-node-border-radius-default)); + width: 150px; + font-size: 12px; + color: var(--xy-node-color, var(--xy-node-color-default)); + text-align: center; + border: var(--xy-node-border, var(--xy-node-border-default)); + background-color: var(--xy-node-background-color, var(--xy-node-background-color-default)); +} +.react-flow__node-input.selectable:hover, .react-flow__node-default.selectable:hover, .react-flow__node-output.selectable:hover, .react-flow__node-group.selectable:hover { + box-shadow: var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default)); + } +.react-flow__node-input.selectable.selected, + .react-flow__node-input.selectable:focus, + .react-flow__node-input.selectable:focus-visible, + .react-flow__node-default.selectable.selected, + .react-flow__node-default.selectable:focus, + .react-flow__node-default.selectable:focus-visible, + .react-flow__node-output.selectable.selected, + .react-flow__node-output.selectable:focus, + .react-flow__node-output.selectable:focus-visible, + .react-flow__node-group.selectable.selected, + .react-flow__node-group.selectable:focus, + .react-flow__node-group.selectable:focus-visible { + box-shadow: var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default)); + } +.react-flow__node-group { + background-color: var(--xy-node-group-background-color, var(--xy-node-group-background-color-default)); +} +.react-flow__nodesselection-rect, +.react-flow__selection { + background: var(--xy-selection-background-color, var(--xy-selection-background-color-default)); + border: var(--xy-selection-border, var(--xy-selection-border-default)); +} +.react-flow__nodesselection-rect:focus, + .react-flow__nodesselection-rect:focus-visible, + .react-flow__selection:focus, + .react-flow__selection:focus-visible { + outline: none; + } +.react-flow__controls-button:hover { + background: var( + --xy-controls-button-background-color-hover-props, + var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) + ); + color: var( + --xy-controls-button-color-hover-props, + var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) + ); + } +.react-flow__controls-button:disabled { + pointer-events: none; + } +.react-flow__controls-button:disabled svg { + fill-opacity: 0.4; + } +.react-flow__controls-button:last-child { + border-bottom: none; + } +.react-flow__controls.horizontal .react-flow__controls-button { + border-bottom: none; + border-right: 1px solid + var( + --xy-controls-button-border-color-props, + var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) + ); + } +.react-flow__controls.horizontal .react-flow__controls-button:last-child { + border-right: none; + } +.react-flow__resize-control { + position: absolute; +} +.react-flow__resize-control.left, +.react-flow__resize-control.right { + cursor: ew-resize; +} +.react-flow__resize-control.top, +.react-flow__resize-control.bottom { + cursor: ns-resize; +} +.react-flow__resize-control.top.left, +.react-flow__resize-control.bottom.right { + cursor: nwse-resize; +} +.react-flow__resize-control.bottom.left, +.react-flow__resize-control.top.right { + cursor: nesw-resize; +} +/* handle styles */ +.react-flow__resize-control.handle { + width: 5px; + height: 5px; + border: 1px solid #fff; + border-radius: 1px; + background-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default)); + translate: -50% -50%; +} +.react-flow__resize-control.handle.left { + left: 0; + top: 50%; +} +.react-flow__resize-control.handle.right { + left: 100%; + top: 50%; +} +.react-flow__resize-control.handle.top { + left: 50%; + top: 0; +} +.react-flow__resize-control.handle.bottom { + left: 50%; + top: 100%; +} +.react-flow__resize-control.handle.top.left { + left: 0; +} +.react-flow__resize-control.handle.bottom.left { + left: 0; +} +.react-flow__resize-control.handle.top.right { + left: 100%; +} +.react-flow__resize-control.handle.bottom.right { + left: 100%; +} +/* line styles */ +.react-flow__resize-control.line { + border-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default)); + border-width: 0; + border-style: solid; +} +.react-flow__resize-control.line.left, +.react-flow__resize-control.line.right { + width: 1px; + transform: translate(-50%, 0); + top: 0; + height: 100%; +} +.react-flow__resize-control.line.left { + left: 0; + border-left-width: 1px; +} +.react-flow__resize-control.line.right { + left: 100%; + border-right-width: 1px; +} +.react-flow__resize-control.line.top, +.react-flow__resize-control.line.bottom { + height: 1px; + transform: translate(0, -50%); + left: 0; + width: 100%; +} +.react-flow__resize-control.line.top { + top: 0; + border-top-width: 1px; +} +.react-flow__resize-control.line.bottom { + border-bottom-width: 1px; + top: 100%; +} +.react-flow__edge-textbg { + fill: var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default)); +} +.react-flow__edge-text { + fill: var(--xy-edge-label-color, var(--xy-edge-label-color-default)); +} diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/Background.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/Background.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..00c489a36033425e88389a905ae3c299f3480596 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/Background.d.ts @@ -0,0 +1,61 @@ +import { type BackgroundProps } from './types'; +declare function BackgroundComponent({ id, variant, gap, size, lineWidth, offset, color, bgColor, style, className, patternClassName, }: BackgroundProps): import("react/jsx-runtime").JSX.Element; +declare namespace BackgroundComponent { + var displayName: string; +} +/** + * The `` component makes it convenient to render different types of backgrounds common in node-based UIs. It comes with three variants: lines, dots and cross. + * + * @example + * + * A simple example of how to use the Background component. + * + * ```tsx + * import { useState } from 'react'; + * import { ReactFlow, Background, BackgroundVariant } from '@xyflow/react'; + * + * export default function Flow() { + * return ( + * + * + * + * ); + * } + * ``` + * + * @example + * + * In this example you can see how to combine multiple backgrounds + * + * ```tsx + * import { ReactFlow, Background, BackgroundVariant } from '@xyflow/react'; + * import '@xyflow/react/dist/style.css'; + * + * export default function Flow() { + * return ( + * + * + * + * + * ); + * } + * ``` + * + * @remarks + * + * When combining multiple components it’s important to give each of them a unique id prop! + * + */ +export declare const Background: import("react").MemoExoticComponent; +export {}; +//# sourceMappingURL=Background.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/Background.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/Background.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..18667acbf787a363ac1c4f33490459f7bd61a0e9 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/Background.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Background.d.ts","sourceRoot":"","sources":["../../../src/additional-components/Background/Background.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,eAAe,EAAqB,MAAM,SAAS,CAAC;AAWlE,iBAAS,mBAAmB,CAAC,EAC3B,EAAE,EACF,OAAgC,EAEhC,GAAQ,EAER,IAAI,EACJ,SAAa,EACb,MAAU,EACV,KAAK,EACL,OAAO,EACP,KAAK,EACL,SAAS,EACT,gBAAgB,GACjB,EAAE,eAAe,2CAwDjB;kBAtEQ,mBAAmB;;;AA0E5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,eAAO,MAAM,UAAU,iEAA4B,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/Patterns.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/Patterns.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..df8ade2f5eefea62adc3a04a0e328619ee0e226f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/Patterns.d.ts @@ -0,0 +1,15 @@ +import { BackgroundVariant } from './types'; +type LinePatternProps = { + dimensions: [number, number]; + variant: BackgroundVariant; + lineWidth?: number; + className?: string; +}; +export declare function LinePattern({ dimensions, lineWidth, variant, className }: LinePatternProps): import("react/jsx-runtime").JSX.Element; +type DotPatternProps = { + radius: number; + className?: string; +}; +export declare function DotPattern({ radius, className }: DotPatternProps): import("react/jsx-runtime").JSX.Element; +export {}; +//# sourceMappingURL=Patterns.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/Patterns.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/Patterns.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..949a517258fcfc028208ec217740c41b9beef24c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/Patterns.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Patterns.d.ts","sourceRoot":"","sources":["../../../src/additional-components/Background/Patterns.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,KAAK,gBAAgB,GAAG;IACtB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,gBAAgB,2CAQ1F;AAED,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,eAAe,2CAIhE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..1873c3a6d40a7e4b37a80f2a938e601808deef46 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/index.d.ts @@ -0,0 +1,3 @@ +export { Background } from './Background'; +export { BackgroundVariant, type BackgroundProps } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..be81c4b6bf30a8b64ab531c87970943975359c91 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/additional-components/Background/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/types.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/types.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..50b0708d89ab053b465b5561fc43a65a1069cd72 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/types.d.ts @@ -0,0 +1,59 @@ +import { CSSProperties } from 'react'; +/** + * The three variants are exported as an enum for convenience. You can either import + * the enum and use it like `BackgroundVariant.Lines` or you can use the raw string + * value directly. + * @public + */ +export declare enum BackgroundVariant { + Lines = "lines", + Dots = "dots", + Cross = "cross" +} +/** + * @expand + */ +export type BackgroundProps = { + /** When multiple backgrounds are present on the page, each one should have a unique id. */ + id?: string; + /** Color of the pattern. */ + color?: string; + /** Color of the background. */ + bgColor?: string; + /** Class applied to the container. */ + className?: string; + /** Class applied to the pattern. */ + patternClassName?: string; + /** + * The gap between patterns. Passing in a tuple allows you to control the x and y gap + * independently. + * @default 20 + */ + gap?: number | [number, number]; + /** + * The radius of each dot or the size of each rectangle if `BackgroundVariant.Dots` or + * `BackgroundVariant.Cross` is used. This defaults to 1 or 6 respectively, or ignored if + * `BackgroundVariant.Lines` is used. + */ + size?: number; + /** + * Offset of the pattern. + * @default 0 + */ + offset?: number | [number, number]; + /** + * The stroke thickness used when drawing the pattern. + * @default 1 + */ + lineWidth?: number; + /** + * Variant of the pattern. + * @default BackgroundVariant.Dots + * @example BackgroundVariant.Lines, BackgroundVariant.Dots, BackgroundVariant.Cross + * 'lines', 'dots', 'cross' + */ + variant?: BackgroundVariant; + /** Style applied to the container. */ + style?: CSSProperties; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/types.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/types.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..5f11f5860070de3b52517583f261a9a63d28e293 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Background/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/additional-components/Background/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC;;;;;GAKG;AACH,oBAAY,iBAAiB;IAC3B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,2FAA2F;IAC3F,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,sCAAsC;IACtC,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/ControlButton.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/ControlButton.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f16846c487ad50c013c1400c84c153bd24b4e2a6 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/ControlButton.d.ts @@ -0,0 +1,26 @@ +import type { ControlButtonProps } from './types'; +/** + * You can add buttons to the control panel by using the `` component + * and pass it as a child to the [``](/api-reference/components/controls) component. + * + * @public + * @example + *```jsx + *import { MagicWand } from '@radix-ui/react-icons' + *import { ReactFlow, Controls, ControlButton } from '@xyflow/react' + * + *export default function Flow() { + * return ( + * + * + * alert('Something magical just happened. ✨')}> + * + * + * + * + * ) + *} + *``` + */ +export declare function ControlButton({ children, className, ...rest }: ControlButtonProps): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=ControlButton.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/ControlButton.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/ControlButton.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..ecba11292a4561bddd2596cd84bc72afae0385ac --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/ControlButton.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"ControlButton.d.ts","sourceRoot":"","sources":["../../../src/additional-components/Controls/ControlButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,kBAAkB,2CAMjF"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Controls.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Controls.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d2029fdd1616943e9dcfdec9803b709802f1cf5c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Controls.d.ts @@ -0,0 +1,29 @@ +import type { ControlProps } from './types'; +declare function ControlsComponent({ style, showZoom, showFitView, showInteractive, fitViewOptions, onZoomIn, onZoomOut, onFitView, onInteractiveChange, className, children, position, orientation, 'aria-label': ariaLabel, }: ControlProps): import("react/jsx-runtime").JSX.Element; +declare namespace ControlsComponent { + var displayName: string; +} +/** + * The `` component renders a small panel that contains convenient + * buttons to zoom in, zoom out, fit the view, and lock the viewport. + * + * @public + * @example + *```tsx + *import { ReactFlow, Controls } from '@xyflow/react' + * + *export default function Flow() { + * return ( + * + * + * + * ) + *} + *``` + * + * @remarks To extend or customise the controls, you can use the [``](/api-reference/components/control-button) component + * + */ +export declare const Controls: import("react").MemoExoticComponent; +export {}; +//# sourceMappingURL=Controls.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Controls.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Controls.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..2d540bccd0c775954c4dd484e7fe76a3c4da2403 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Controls.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Controls.d.ts","sourceRoot":"","sources":["../../../src/additional-components/Controls/Controls.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAS5C,iBAAS,iBAAiB,CAAC,EACzB,KAAK,EACL,QAAe,EACf,WAAkB,EAClB,eAAsB,EACtB,cAAc,EACd,QAAQ,EACR,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,SAAS,EACT,QAAQ,EACR,QAAwB,EACxB,WAAwB,EACxB,YAAY,EAAE,SAAS,GACxB,EAAE,YAAY,2CAoFd;kBAnGQ,iBAAiB;;;AAuG1B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,QAAQ,+DAA0B,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/FitView.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/FitView.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..04840170e884cb0d877d1f481a39386ca6567497 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/FitView.d.ts @@ -0,0 +1,2 @@ +export declare function FitViewIcon(): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=FitView.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/FitView.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/FitView.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..f25c00c0255977f322481f91f3c4b0e2c3536955 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/FitView.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"FitView.d.ts","sourceRoot":"","sources":["../../../../src/additional-components/Controls/Icons/FitView.tsx"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,4CAM1B"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Lock.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Lock.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d0c9a1a022ebdf95dae6a28ee6d40429aa9116c7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Lock.d.ts @@ -0,0 +1,2 @@ +export declare function LockIcon(): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=Lock.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Lock.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Lock.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..b9b9821ee88557232179a949ae09b5fe7d02bad8 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Lock.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Lock.d.ts","sourceRoot":"","sources":["../../../../src/additional-components/Controls/Icons/Lock.tsx"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,4CAMvB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Minus.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Minus.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee21712c4c1d3d621178b29ef5a9e47ccbfef5af --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Minus.d.ts @@ -0,0 +1,2 @@ +export declare function MinusIcon(): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=Minus.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Minus.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Minus.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..12c2986a878b126ac09083f4610120551ec080ca --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Minus.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Minus.d.ts","sourceRoot":"","sources":["../../../../src/additional-components/Controls/Icons/Minus.tsx"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,4CAMxB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Plus.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Plus.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..74c6ecc69130dc212c6464364881f24cafff278c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Plus.d.ts @@ -0,0 +1,2 @@ +export declare function PlusIcon(): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=Plus.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Plus.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Plus.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..66dd22730b0d6c2e296a13de157f2e1cc3b140c8 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Plus.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Plus.d.ts","sourceRoot":"","sources":["../../../../src/additional-components/Controls/Icons/Plus.tsx"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,4CAMvB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Unlock.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Unlock.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..0411d051768678a5a7a571a4ae50c3ba83286c84 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Unlock.d.ts @@ -0,0 +1,2 @@ +export declare function UnlockIcon(): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=Unlock.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Unlock.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Unlock.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..cb8c1656d3a2de829a5c89b3caf2214166162994 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/Icons/Unlock.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Unlock.d.ts","sourceRoot":"","sources":["../../../../src/additional-components/Controls/Icons/Unlock.tsx"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,4CAMzB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4b86d586ced7513835f5a57c0f2e13f3508d5259 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/index.d.ts @@ -0,0 +1,4 @@ +export { Controls } from './Controls'; +export { ControlButton } from './ControlButton'; +export type { ControlProps, ControlButtonProps } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..adf9ac379ecd8ef467b877384dbdccce8f628280 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/additional-components/Controls/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/types.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/types.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..44591c064e2de4123202cf0ce989c3124be0bd87 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/types.d.ts @@ -0,0 +1,66 @@ +import type { ButtonHTMLAttributes, ReactNode } from 'react'; +import type { PanelPosition } from '@xyflow/system'; +import type { FitViewOptions } from '../../types'; +/** + * @expand + */ +export type ControlProps = { + /** + * Whether or not to show the zoom in and zoom out buttons. These buttons will adjust the viewport + * zoom by a fixed amount each press. + * @default true + */ + showZoom?: boolean; + /** + * Whether or not to show the fit view button. By default, this button will adjust the viewport so + * that all nodes are visible at once. + * @default true + */ + showFitView?: boolean; + /** + * Show button for toggling interactivity + * @default true + */ + showInteractive?: boolean; + /** + * Customise the options for the fit view button. These are the same options you would pass to the + * fitView function. + */ + fitViewOptions?: FitViewOptions; + /** Called in addition the default zoom behavior when the zoom in button is clicked. */ + onZoomIn?: () => void; + /** Called in addition the default zoom behavior when the zoom out button is clicked. */ + onZoomOut?: () => void; + /** + * Called when the fit view button is clicked. When this is not provided, the viewport will be + * adjusted so that all nodes are visible. + */ + onFitView?: () => void; + /** Called when the interactive (lock) button is clicked. */ + onInteractiveChange?: (interactiveStatus: boolean) => void; + /** + * Position of the controls on the pane + * @default PanelPosition.BottomLeft + * @example PanelPosition.TopLeft, PanelPosition.TopRight, + * PanelPosition.BottomLeft, PanelPosition.BottomRight + */ + position?: PanelPosition; + children?: ReactNode; + /** Style applied to container */ + style?: React.CSSProperties; + /** Class name applied to container */ + className?: string; + /** + * @default 'React Flow controls' + */ + 'aria-label'?: string; + /** + * @default 'vertical' + */ + orientation?: 'horizontal' | 'vertical'; +}; +/** + * @expand + */ +export type ControlButtonProps = ButtonHTMLAttributes; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/types.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/types.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..664b48f868c53c758a30b6278549ff06c277441a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/Controls/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/additional-components/Controls/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,CAAC,iBAAiB,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3D;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iCAAiC;IACjC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/EdgeToolbar.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/EdgeToolbar.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..7eb2ecd1715791ca23627c6410ab7a38437c40ab --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/EdgeToolbar.d.ts @@ -0,0 +1,26 @@ +import type { EdgeToolbarProps } from './types'; +/** + * This component can render a toolbar or tooltip to one side of a custom edge. This + * toolbar doesn't scale with the viewport so that the content stays the same size. + * + * @public + * @example + * ```jsx + * import { EdgeToolbar, BaseEdge, getBezierPath, type EdgeProps } from "@xyflow/react"; + * + * export function CustomEdge({ id, data, ...props }: EdgeProps) { + * const [edgePath, centerX, centerY] = getBezierPath(props); + * + * return ( + * <> + * + * + * + * + * + * ); + * } + * ``` + */ +export declare function EdgeToolbar({ edgeId, x, y, children, className, style, isVisible, alignX, alignY, ...rest }: EdgeToolbarProps): import("react/jsx-runtime").JSX.Element | null; +//# sourceMappingURL=EdgeToolbar.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/EdgeToolbar.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/EdgeToolbar.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..e74d2a1bb2726b8679f4a0b320bc455bc49ad420 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/EdgeToolbar.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EdgeToolbar.d.ts","sourceRoot":"","sources":["../../../src/additional-components/EdgeToolbar/EdgeToolbar.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAIhD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,CAAC,EACD,CAAC,EACD,QAAQ,EACR,SAAS,EACT,KAAK,EACL,SAAS,EACT,MAAiB,EACjB,MAAiB,EACjB,GAAG,IAAI,EACR,EAAE,gBAAgB,kDAgClB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2c59eb7c1078205bd40d4e7c00246057a2f5afcb --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/index.d.ts @@ -0,0 +1,3 @@ +export { EdgeToolbar } from './EdgeToolbar'; +export type { EdgeToolbarProps } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..b94ddfda42263b3e1802d67a3529769facc2b0c3 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/additional-components/EdgeToolbar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/types.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/types.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..50393ba8111adc78679ac3588e6605ac4a3bc2b6 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/types.d.ts @@ -0,0 +1,13 @@ +import type { HTMLAttributes, ReactNode } from 'react'; +import type { EdgeToolbarBaseProps } from '@xyflow/system'; +/** + * @inline + */ +export type EdgeToolbarProps = EdgeToolbarBaseProps & HTMLAttributes & { + /** + * An edge toolbar must be attached to an edge. + */ + edgeId: string; + children?: ReactNode; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/types.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/types.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..acfffdafdad5f52a2525e3897b35f62d1e295cb9 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/EdgeToolbar/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/additional-components/EdgeToolbar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GACjD,cAAc,CAAC,cAAc,CAAC,GAAG;IAC/B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMap.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMap.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..9a955356cb2ad8166ae8f50df982b732d66fb975 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMap.d.ts @@ -0,0 +1,29 @@ +import type { Node } from '../../types'; +import type { MiniMapProps } from './types'; +declare function MiniMapComponent({ style, className, nodeStrokeColor, nodeColor, nodeClassName, nodeBorderRadius, nodeStrokeWidth, nodeComponent, bgColor, maskColor, maskStrokeColor, maskStrokeWidth, position, onClick, onNodeClick, pannable, zoomable, ariaLabel, inversePan, zoomStep, offsetScale, }: MiniMapProps): import("react/jsx-runtime").JSX.Element; +declare namespace MiniMapComponent { + var displayName: string; +} +/** + * The `` component can be used to render an overview of your flow. It + * renders each node as an SVG element and visualizes where the current viewport is + * in relation to the rest of the flow. + * + * @public + * @example + * + * ```jsx + *import { ReactFlow, MiniMap } from '@xyflow/react'; + * + *export default function Flow() { + * return ( + * + * + * + * ); + *} + *``` + */ +export declare const MiniMap: typeof MiniMapComponent; +export {}; +//# sourceMappingURL=MiniMap.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMap.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMap.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..d20a2beeb90e4fe535dda15ccf5bb1d417501851 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMap.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MiniMap.d.ts","sourceRoot":"","sources":["../../../src/additional-components/MiniMap/MiniMap.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAkB,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA+C5C,iBAAS,gBAAgB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EACtD,KAAK,EACL,SAAS,EACT,eAAe,EACf,SAAS,EACT,aAAkB,EAClB,gBAAoB,EACpB,eAAe,EAKf,aAAa,EACb,OAAO,EACP,SAAS,EACT,eAAe,EACf,eAAe,EACf,QAAyB,EACzB,OAAO,EACP,WAAW,EACX,QAAgB,EAChB,QAAgB,EAChB,SAAS,EACT,UAAU,EACV,QAAY,EACZ,WAAe,GAChB,EAAE,YAAY,CAAC,QAAQ,CAAC,2CAsHxB;kBAhJQ,gBAAgB;;;AAoJzB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,OAAO,EAA6B,OAAO,gBAAgB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMapNode.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMapNode.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..54bddea520d0114b7eb9f3adb63631b2d98490f7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMapNode.d.ts @@ -0,0 +1,5 @@ +import type { MiniMapNodeProps } from './types'; +declare function MiniMapNodeComponent({ id, x, y, width, height, style, color, strokeColor, strokeWidth, className, borderRadius, shapeRendering, selected, onClick, }: MiniMapNodeProps): import("react/jsx-runtime").JSX.Element; +export declare const MiniMapNode: import("react").MemoExoticComponent; +export {}; +//# sourceMappingURL=MiniMapNode.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMapNode.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMapNode.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..5e9d2adf85ef2dc8b74cb4774ea7b6ee10c4cc52 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMapNode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MiniMapNode.d.ts","sourceRoot":"","sources":["../../../src/additional-components/MiniMap/MiniMapNode.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,iBAAS,oBAAoB,CAAC,EAC5B,EAAE,EACF,CAAC,EACD,CAAC,EACD,KAAK,EACL,MAAM,EACN,KAAK,EACL,KAAK,EACL,WAAW,EACX,WAAW,EACX,SAAS,EACT,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,OAAO,GACR,EAAE,gBAAgB,2CAsBlB;AAED,eAAO,MAAM,WAAW,kEAA6B,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMapNodes.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMapNodes.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..ca1030547de2b595866f013f053d928016d8baa6 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMapNodes.d.ts @@ -0,0 +1,6 @@ +import type { Node } from '../../types'; +import type { MiniMapNodes as MiniMapNodesProps } from './types'; +declare function MiniMapNodes({ nodeStrokeColor, nodeColor, nodeClassName, nodeBorderRadius, nodeStrokeWidth, nodeComponent: NodeComponent, onClick, }: MiniMapNodesProps): import("react/jsx-runtime").JSX.Element; +declare const _default: typeof MiniMapNodes; +export default _default; +//# sourceMappingURL=MiniMapNodes.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMapNodes.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMapNodes.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..b28464e92121ef05f242d06ce45fdbf1abd577c8 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/MiniMapNodes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MiniMapNodes.d.ts","sourceRoot":"","sources":["../../../src/additional-components/MiniMap/MiniMapNodes.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAkB,IAAI,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,IAAI,iBAAiB,EAA6C,MAAM,SAAS,CAAC;AAQ5G,iBAAS,YAAY,CAAC,QAAQ,SAAS,IAAI,EAAE,EAC3C,eAAe,EACf,SAAS,EACT,aAAkB,EAClB,gBAAoB,EACpB,eAAe,EAKf,aAAa,EAAE,aAA2B,EAC1C,OAAO,GACR,EAAE,iBAAiB,CAAC,QAAQ,CAAC,2CAiC7B;wBAqEoC,OAAO,YAAY;AAAxD,wBAAyD"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..09eb325a8d8f4e140e1a35712204ec111c790fdc --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/index.d.ts @@ -0,0 +1,4 @@ +export { MiniMap } from './MiniMap'; +export { MiniMapNode } from './MiniMapNode'; +export * from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..955e4b0245b1bcc886b8fe6cd08c73c85f473d8e --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/additional-components/MiniMap/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,cAAc,SAAS,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/types.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/types.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4215867f149513a04ecd5f156902e8d2402181fb --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/types.d.ts @@ -0,0 +1,123 @@ +import type { ComponentType, CSSProperties, HTMLAttributes, MouseEvent } from 'react'; +import type { PanelPosition, XYPosition } from '@xyflow/system'; +import type { Node } from '../../types'; +export type GetMiniMapNodeAttribute = (node: NodeType) => string; +/** + * @expand + */ +export type MiniMapProps = Omit, 'onClick'> & { + /** + * Color of nodes on minimap. + * @default "#e2e2e2" + */ + nodeColor?: string | GetMiniMapNodeAttribute; + /** + * Stroke color of nodes on minimap. + * @default "transparent" + */ + nodeStrokeColor?: string | GetMiniMapNodeAttribute; + /** + * Class name applied to nodes on minimap. + * @default "" + */ + nodeClassName?: string | GetMiniMapNodeAttribute; + /** + * Border radius of nodes on minimap. + * @default 5 + */ + nodeBorderRadius?: number; + /** + * Stroke width of nodes on minimap. + * @default 2 + */ + nodeStrokeWidth?: number; + /** + * A custom component to render the nodes in the minimap. This component must render an SVG + * element! + */ + nodeComponent?: ComponentType; + /** Background color of minimap. */ + bgColor?: string; + /** + * The color of the mask that covers the portion of the minimap not currently visible in the + * viewport. + * @default "rgba(240, 240, 240, 0.6)" + */ + maskColor?: string; + /** + * Stroke color of mask representing viewport. + * @default transparent + */ + maskStrokeColor?: string; + /** + * Stroke width of mask representing viewport. + * @default 1 + */ + maskStrokeWidth?: number; + /** + * Position of minimap on pane. + * @default PanelPosition.BottomRight + * @example PanelPosition.TopLeft, PanelPosition.TopRight, + * PanelPosition.BottomLeft, PanelPosition.BottomRight + */ + position?: PanelPosition; + /** Callback called when minimap is clicked. */ + onClick?: (event: MouseEvent, position: XYPosition) => void; + /** Callback called when node on minimap is clicked. */ + onNodeClick?: (event: MouseEvent, node: NodeType) => void; + /** + * Determines whether you can pan the viewport by dragging inside the minimap. + * @default false + */ + pannable?: boolean; + /** + * Determines whether you can zoom the viewport by scrolling inside the minimap. + * @default false + */ + zoomable?: boolean; + /** + * There is no text inside the minimap for a screen reader to use as an accessible name, so it's + * important we provide one to make the minimap accessible. The default is sufficient, but you may + * want to replace it with something more relevant to your app or product. + * @default "Mini Map" + */ + ariaLabel?: string | null; + /** Invert direction when panning the minimap viewport. */ + inversePan?: boolean; + /** + * Step size for zooming in/out on minimap. + * @default 10 + */ + zoomStep?: number; + /** + * Offset the viewport on the minimap, acts like a padding. + * @default 5 + */ + offsetScale?: number; +}; +export type MiniMapNodes = Pick, 'nodeColor' | 'nodeStrokeColor' | 'nodeClassName' | 'nodeBorderRadius' | 'nodeStrokeWidth' | 'nodeComponent'> & { + onClick?: (event: MouseEvent, nodeId: string) => void; +}; +/** + * The props that are passed to the MiniMapNode component + * + * @public + * @expand + */ +export type MiniMapNodeProps = { + id: string; + x: number; + y: number; + width: number; + height: number; + borderRadius: number; + className: string; + color?: string; + shapeRendering: string; + strokeColor?: string; + strokeWidth?: number; + style?: CSSProperties; + selected: boolean; + onClick?: (event: MouseEvent, id: string) => void; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/types.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/types.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..50daa2b8b252abf202df78fb2d57cf3bae1b417a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/MiniMap/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/additional-components/MiniMap/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,MAAM,uBAAuB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAC;AAE/F;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,GAAG;IACxG;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACvD;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC7D;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC3D;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAChD,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,KAAK,IAAI,CAAC;IAC5D,uDAAuD;IACvD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC1D;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,0DAA0D;IAC1D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,IAAI,CAC3D,YAAY,CAAC,QAAQ,CAAC,EACtB,WAAW,GAAG,iBAAiB,GAAG,eAAe,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,eAAe,CAC7G,GAAG;IACF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/NodeResizeControl.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/NodeResizeControl.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2c9a83b911a15f1eaded904aa47328c70a769405 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/NodeResizeControl.d.ts @@ -0,0 +1,11 @@ +import type { ResizeControlProps, ResizeControlLineProps } from './types'; +declare function ResizeControl({ nodeId, position, variant, className, style, children, color, minWidth, minHeight, maxWidth, maxHeight, keepAspectRatio, resizeDirection, autoScale, shouldResize, onResizeStart, onResize, onResizeEnd, }: ResizeControlProps): import("react/jsx-runtime").JSX.Element; +export declare function ResizeControlLine(props: ResizeControlLineProps): import("react/jsx-runtime").JSX.Element; +/** + * To create your own resizing UI, you can use the `NodeResizeControl` component where you can pass children (such as icons). + * @public + * + */ +export declare const NodeResizeControl: import("react").MemoExoticComponent; +export {}; +//# sourceMappingURL=NodeResizeControl.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/NodeResizeControl.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/NodeResizeControl.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..75fd3a255aae2312822b2fdd337f97b8b0021f24 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/NodeResizeControl.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NodeResizeControl.d.ts","sourceRoot":"","sources":["../../../src/additional-components/NodeResizer/NodeResizeControl.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAW1E,iBAAS,aAAa,CAAC,EACrB,MAAM,EACN,QAAQ,EACR,OAAqC,EACrC,SAAS,EACT,KAAiB,EACjB,QAAQ,EACR,KAAK,EACL,QAAa,EACb,SAAc,EACd,QAA2B,EAC3B,SAA4B,EAC5B,eAAuB,EACvB,eAAe,EACf,SAAgB,EAChB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,WAAW,GACZ,EAAE,kBAAkB,2CA4KpB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,2CAE9D;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,2DAAsB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/NodeResizer.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/NodeResizer.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..bb00652076993af6983bdf36d2f2d8ba5990e7c2 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/NodeResizer.d.ts @@ -0,0 +1,27 @@ +import type { NodeResizerProps } from './types'; +/** + * The `` component can be used to add a resize functionality to your + * nodes. It renders draggable controls around the node to resize in all directions. + * @public + * + * @example + *```jsx + *import { memo } from 'react'; + *import { Handle, Position, NodeResizer } from '@xyflow/react'; + * + *function ResizableNode({ data }) { + * return ( + * <> + * + * + *

{data.label}
+ * + * + * ); + *}; + * + *export default memo(ResizableNode); + *``` + */ +export declare function NodeResizer({ nodeId, isVisible, handleClassName, handleStyle, lineClassName, lineStyle, color, minWidth, minHeight, maxWidth, maxHeight, keepAspectRatio, autoScale, shouldResize, onResizeStart, onResize, onResizeEnd, }: NodeResizerProps): import("react/jsx-runtime").JSX.Element | null; +//# sourceMappingURL=NodeResizer.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/NodeResizer.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/NodeResizer.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..22ce64e60832bc3f91cb2eb8505bd31e37c1b9b3 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/NodeResizer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NodeResizer.d.ts","sourceRoot":"","sources":["../../../src/additional-components/NodeResizer/NodeResizer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,SAAgB,EAChB,eAAe,EACf,WAAW,EACX,aAAa,EACb,SAAS,EACT,KAAK,EACL,QAAa,EACb,SAAc,EACd,QAA2B,EAC3B,SAA4B,EAC5B,eAAuB,EACvB,SAAgB,EAChB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,WAAW,GACZ,EAAE,gBAAgB,kDAkDlB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..58c7e6a9e3c47ce7ef7f974f7ce378c21b93bbb1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/index.d.ts @@ -0,0 +1,4 @@ +export { NodeResizer } from './NodeResizer'; +export { NodeResizeControl } from './NodeResizeControl'; +export * from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..8187fea953251969d748bcaa3e9f2cace5c3c3d3 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/additional-components/NodeResizer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,cAAc,SAAS,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/types.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/types.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2e5d891f3d3c4f79827472d379f7c5b3b8616235 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/types.d.ts @@ -0,0 +1,97 @@ +import type { CSSProperties, ReactNode } from 'react'; +import type { ControlPosition, ControlLinePosition, ResizeControlVariant, ResizeControlDirection, ShouldResize, OnResizeStart, OnResize, OnResizeEnd } from '@xyflow/system'; +/** + * @expand + */ +export type NodeResizerProps = { + /** + * Id of the node it is resizing. + * @remarks optional if used inside custom node + */ + nodeId?: string; + /** Color of the resize handle. */ + color?: string; + /** Class name applied to handle. */ + handleClassName?: string; + /** Style applied to handle. */ + handleStyle?: CSSProperties; + /** Class name applied to line. */ + lineClassName?: string; + /** Style applied to line. */ + lineStyle?: CSSProperties; + /** + * Are the controls visible. + * @default true + */ + isVisible?: boolean; + /** + * Minimum width of node. + * @default 10 + */ + minWidth?: number; + /** + * Minimum height of node. + * @default 10 + */ + minHeight?: number; + /** + * Maximum width of node. + * @default Number.MAX_VALUE + */ + maxWidth?: number; + /** + * Maximum height of node. + * @default Number.MAX_VALUE + */ + maxHeight?: number; + /** + * Keep aspect ratio when resizing. + * @default false + */ + keepAspectRatio?: boolean; + /** + * Scale the controls with the zoom level. + * @default true + */ + autoScale?: boolean; + /** Callback to determine if node should resize. */ + shouldResize?: ShouldResize; + /** Callback called when resizing starts. */ + onResizeStart?: OnResizeStart; + /** Callback called when resizing. */ + onResize?: OnResize; + /** Callback called when resizing ends. */ + onResizeEnd?: OnResizeEnd; +}; +/** + * @expand + */ +export type ResizeControlProps = Pick & { + /** + * Position of the control. + * @example ControlPosition.TopLeft, ControlPosition.TopRight, + * ControlPosition.BottomLeft, ControlPosition.BottomRight + */ + position?: ControlPosition; + /** + * Variant of the control. + * @default "handle" + * @example ResizeControlVariant.Handle, ResizeControlVariant.Line + */ + variant?: ResizeControlVariant; + /** + * The direction the user can resize the node. + * If not provided, the user can resize in any direction. + */ + resizeDirection?: ResizeControlDirection; + className?: string; + style?: CSSProperties; + children?: ReactNode; +}; +/** + * @expand + */ +export type ResizeControlLineProps = Omit & { + position?: ControlLinePosition; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/types.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/types.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..4fbe2cc57bd0e827b34d8d59960ef9182159f905 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeResizer/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/additional-components/NodeResizer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,gBAAgB,EACd,QAAQ,GACR,OAAO,GACP,UAAU,GACV,WAAW,GACX,UAAU,GACV,WAAW,GACX,iBAAiB,GACjB,cAAc,GACd,WAAW,GACX,eAAe,GACf,UAAU,GACV,aAAa,CAChB,GAAG;IACF;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B;;;OAGG;IACH,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,GAAG;IACjF,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAChC,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/NodeToolbar.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/NodeToolbar.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..571b5360a2659e0174d529187843eaf0ae88e24b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/NodeToolbar.d.ts @@ -0,0 +1,38 @@ +import type { NodeToolbarProps } from './types'; +/** + * This component can render a toolbar or tooltip to one side of a custom node. This + * toolbar doesn't scale with the viewport so that the content is always visible. + * + * @public + * @example + * ```jsx + *import { memo } from 'react'; + *import { Handle, Position, NodeToolbar } from '@xyflow/react'; + * + *function CustomNode({ data }) { + * return ( + * <> + * + * + * + * + * + * + *
+ * {data.label} + *
+ * + * + * + * + * ); + *}; + * + *export default memo(CustomNode); + *``` + * @remarks By default, the toolbar is only visible when a node is selected. If multiple + * nodes are selected it will not be visible to prevent overlapping toolbars or + * clutter. You can override this behavior by setting the `isVisible` prop to `true`. + */ +export declare function NodeToolbar({ nodeId, children, className, style, isVisible, position, offset, align, ...rest }: NodeToolbarProps): import("react/jsx-runtime").JSX.Element | null; +//# sourceMappingURL=NodeToolbar.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/NodeToolbar.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/NodeToolbar.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..960b0db9354c69a9b3fba9142b9d63c7e33dc85d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/NodeToolbar.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NodeToolbar.d.ts","sourceRoot":"","sources":["../../../src/additional-components/NodeToolbar/NodeToolbar.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA+BhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,EACL,SAAS,EACT,QAAuB,EACvB,MAAW,EACX,KAAgB,EAChB,GAAG,IAAI,EACR,EAAE,gBAAgB,kDAwDlB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/NodeToolbarPortal.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/NodeToolbarPortal.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..1036d76d2e3a108b836d03e3acc2b94e5c9fc9d7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/NodeToolbarPortal.d.ts @@ -0,0 +1,5 @@ +import { ReactNode } from 'react'; +export declare function NodeToolbarPortal({ children }: { + children: ReactNode; +}): import("react").ReactPortal | null; +//# sourceMappingURL=NodeToolbarPortal.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/NodeToolbarPortal.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/NodeToolbarPortal.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..ff908ea68eac0bc3c0c98a36f62744e5171cb0b4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/NodeToolbarPortal.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NodeToolbarPortal.d.ts","sourceRoot":"","sources":["../../../src/additional-components/NodeToolbar/NodeToolbarPortal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQlC,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,sCAQtE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..ae78d041ecc79c61ed99fa676ffad883a3bfefbd --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/index.d.ts @@ -0,0 +1,3 @@ +export { NodeToolbar } from './NodeToolbar'; +export type { NodeToolbarProps } from './types'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..300eba1eb0e6609c14434c4df89b771d7b59101b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/additional-components/NodeToolbar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/types.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/types.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..0eedc0257bb205f10416187fb1e6027b68061a69 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/types.d.ts @@ -0,0 +1,32 @@ +import type { HTMLAttributes } from 'react'; +import type { Position, Align } from '@xyflow/system'; +/** + * @expand + */ +export type NodeToolbarProps = HTMLAttributes & { + /** + * By passing in an array of node id's you can render a single tooltip for a group or collection + * of nodes. + */ + nodeId?: string | string[]; + /** If `true`, node toolbar is visible even if node is not selected. */ + isVisible?: boolean; + /** + * Position of the toolbar relative to the node. + * @default Position.Top + * @example Position.TopLeft, Position.TopRight, Position.BottomLeft, Position.BottomRight + */ + position?: Position; + /** + * The space between the node and the toolbar, measured in pixels. + * @default 10 + */ + offset?: number; + /** + * Align the toolbar relative to the node. + * @default "center" + * @example Align.Start, Align.Center, Align.End + */ + align?: Align; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/types.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/types.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..6e8199fc923165dfda02f32856f85e7e6e5554e7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/NodeToolbar/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/additional-components/NodeToolbar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IAC9D;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f1217d0d1aeb0d5c4ee46691bb17b728dcf538c0 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/index.d.ts @@ -0,0 +1,7 @@ +export * from './Background'; +export * from './Controls'; +export * from './MiniMap'; +export * from './NodeResizer'; +export * from './NodeToolbar'; +export * from './EdgeToolbar'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..2d46a446d82536a3d4fc7183d0a1fd6edfd503f6 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/additional-components/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/additional-components/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/A11yDescriptions/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/A11yDescriptions/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..a8afaa3f26ba814fc5ccb82fa0cc805c3135ce82 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/A11yDescriptions/index.d.ts @@ -0,0 +1,8 @@ +export declare const ARIA_NODE_DESC_KEY = "react-flow__node-desc"; +export declare const ARIA_EDGE_DESC_KEY = "react-flow__edge-desc"; +export declare const ARIA_LIVE_MESSAGE = "react-flow__aria-live"; +export declare function A11yDescriptions({ rfId, disableKeyboardA11y }: { + rfId: string; + disableKeyboardA11y: boolean; +}): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/A11yDescriptions/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/A11yDescriptions/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..02a814cb7b270c647e8599084bd416c4a1b7e387 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/A11yDescriptions/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/A11yDescriptions/index.tsx"],"names":[],"mappings":"AAkBA,eAAO,MAAM,kBAAkB,0BAA0B,CAAC;AAC1D,eAAO,MAAM,kBAAkB,0BAA0B,CAAC;AAC1D,eAAO,MAAM,iBAAiB,0BAA0B,CAAC;AAezD,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,OAAO,CAAA;CAAE,2CAgB7G"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Attribution/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Attribution/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..bf992f92e2be54ec21cd9630cbc04555a91ef5e1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Attribution/index.d.ts @@ -0,0 +1,8 @@ +import type { PanelPosition, ProOptions } from '@xyflow/system'; +type AttributionProps = { + proOptions?: ProOptions; + position?: PanelPosition; +}; +export declare function Attribution({ proOptions, position }: AttributionProps): import("react/jsx-runtime").JSX.Element | null; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Attribution/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Attribution/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..fac86f385819e7d1126261925a99d9a3d4b1a226 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Attribution/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Attribution/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIhE,KAAK,gBAAgB,GAAG;IACtB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,CAAC;AAMF,wBAAgB,WAAW,CAAC,EAAE,UAAU,EAAE,QAAyB,EAAE,EAAE,gBAAgB,kDAgBtF"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..42650c68d2d5136e37e2441a7ee044def8a732d7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/index.d.ts @@ -0,0 +1,17 @@ +import { ReactNode } from 'react'; +import { Queue } from './types'; +import type { Edge, Node } from '../../types'; +/** + * This is a context provider that holds and processes the node and edge update queues + * that are needed to handle setNodes, addNodes, setEdges and addEdges. + * + * @internal + */ +export declare function BatchProvider({ children, }: { + children: ReactNode; +}): import("react/jsx-runtime").JSX.Element; +export declare function useBatchContext(): { + nodeQueue: Queue; + edgeQueue: Queue; +}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..bce78ac3a4acd7507be90229bcf797640b99c7f7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/BatchProvider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAoC,MAAM,OAAO,CAAC;AAKnF,OAAO,EAAE,KAAK,EAAa,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAU9C;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EACxF,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;CACrB,2CA8EA;AAED,wBAAgB,eAAe;eA/FlB,KAAK,CAAC,GAAG,CAAC;eAEV,KAAK,CAAC,GAAG,CAAC;EAqGtB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/types.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/types.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b96a61eb9f3f417e28cb1d1ad178e675357ef560 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/types.d.ts @@ -0,0 +1,7 @@ +export type QueueItem = T[] | ((items: T[]) => T[]); +export type Queue = { + get: () => QueueItem[]; + reset: () => void; + push: (item: QueueItem) => void; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/types.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/types.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..a5cb6b8fd90fb875224cc26d5a9053793b35027c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/BatchProvider/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;AAEvD,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI;IACrB,GAAG,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CACpC,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/useQueue.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/useQueue.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f4842ba87193c437dc18779800b6bd791c4942e0 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/useQueue.d.ts @@ -0,0 +1,11 @@ +import { Queue, QueueItem } from './types'; +/** + * This hook returns a queue that can be used to batch updates. + * + * @param runQueue - a function that gets called when the queue is flushed + * @internal + * + * @returns a Queue object + */ +export declare function useQueue(runQueue: (items: QueueItem[]) => void): Queue; +//# sourceMappingURL=useQueue.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/useQueue.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/useQueue.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..e1957931e6d29239d011d88a9c867217f97b9773 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/BatchProvider/useQueue.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useQueue.d.ts","sourceRoot":"","sources":["../../../src/components/BatchProvider/useQueue.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,YAiCpE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ConnectionLine/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ConnectionLine/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..8aff7b0c1f9b789346129c9eabfbbcd7763102b3 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ConnectionLine/index.d.ts @@ -0,0 +1,12 @@ +import { CSSProperties } from 'react'; +import { ConnectionLineType } from '@xyflow/system'; +import type { ConnectionLineComponent, Node } from '../../types'; +type ConnectionLineWrapperProps = { + type: ConnectionLineType; + component?: ConnectionLineComponent; + containerStyle?: CSSProperties; + style?: CSSProperties; +}; +export declare function ConnectionLineWrapper({ containerStyle, style, type, component, }: ConnectionLineWrapperProps): import("react/jsx-runtime").JSX.Element | null; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ConnectionLine/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ConnectionLine/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..90edd83b0ce2867591ccc997cf2035d4ff176723 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ConnectionLine/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ConnectionLine/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EACL,kBAAkB,EAKnB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAkB,MAAM,aAAa,CAAC;AAGjF,KAAK,0BAA0B,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI;IAC9D,IAAI,EAAE,kBAAkB,CAAC;IACzB,SAAS,CAAC,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC9C,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB,CAAC;AAUF,wBAAgB,qBAAqB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EAClE,cAAc,EACd,KAAK,EACL,IAAI,EACJ,SAAS,GACV,EAAE,0BAA0B,CAAC,QAAQ,CAAC,kDAoBtC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeLabelRenderer/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeLabelRenderer/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..558f6edd77096c89a706ea815e8a954123d10181 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeLabelRenderer/index.d.ts @@ -0,0 +1,47 @@ +import type { ReactNode } from 'react'; +export type EdgeLabelRendererProps = { + children: ReactNode; +}; +/** + * Edges are SVG-based. If you want to render more complex labels you can use the + * `` component to access a div based renderer. This component + * is a portal that renders the label in a `
` that is positioned on top of + * the edges. You can see an example usage of the component in the + * [edge label renderer example](/examples/edges/edge-label-renderer). + * @public + * + * @example + * ```jsx + * import React from 'react'; + * import { getBezierPath, EdgeLabelRenderer, BaseEdge } from '@xyflow/react'; + * + * export function CustomEdge({ id, data, ...props }) { + * const [edgePath, labelX, labelY] = getBezierPath(props); + * + * return ( + * <> + * + * + *
+ * {data.label} + *
+ *
+ * + * ); + * }; + * ``` + * + * @remarks The `` has no pointer events by default. If you want to + * add mouse interactions you need to set the style `pointerEvents: all` and add + * the `nopan` class on the label or the element you want to interact with. + */ +export declare function EdgeLabelRenderer({ children }: EdgeLabelRendererProps): import("react").ReactPortal | null; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeLabelRenderer/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeLabelRenderer/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..836e3b8f578ed3c5b48195b8e168bb6fc51132c1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeLabelRenderer/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/EdgeLabelRenderer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQvC,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,SAAS,CAAA;CACpB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,sBAAsB,sCAQrE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/EdgeUpdateAnchors.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/EdgeUpdateAnchors.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..3c399f9d4cc5d55669609cca2ab2825bd22c7b9b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/EdgeUpdateAnchors.d.ts @@ -0,0 +1,15 @@ +import { type EdgePosition } from '@xyflow/system'; +import type { EdgeWrapperProps, Edge } from '../../types/edges'; +type EdgeUpdateAnchorsProps = { + edge: EdgeType; + isReconnectable: boolean | 'source' | 'target'; + reconnectRadius: EdgeWrapperProps['reconnectRadius']; + onReconnect: EdgeWrapperProps['onReconnect']; + onReconnectStart: EdgeWrapperProps['onReconnectStart']; + onReconnectEnd: EdgeWrapperProps['onReconnectEnd']; + setUpdateHover: (hover: boolean) => void; + setReconnecting: (updating: boolean) => void; +} & EdgePosition; +export declare function EdgeUpdateAnchors({ isReconnectable, reconnectRadius, edge, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, onReconnect, onReconnectStart, onReconnectEnd, setReconnecting, setUpdateHover, }: EdgeUpdateAnchorsProps): import("react/jsx-runtime").JSX.Element; +export {}; +//# sourceMappingURL=EdgeUpdateAnchors.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/EdgeUpdateAnchors.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/EdgeUpdateAnchors.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..49ed8e3ce0ce60e6fa0f894f1f791251e34cd6f6 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/EdgeUpdateAnchors.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EdgeUpdateAnchors.d.ts","sourceRoot":"","sources":["../../../src/components/EdgeWrapper/EdgeUpdateAnchors.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,YAAY,EAKlB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGhE,KAAK,sBAAsB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI;IAC1D,IAAI,EAAE,QAAQ,CAAC;IACf,eAAe,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC/C,eAAe,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACrD,WAAW,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC;IACvD,gBAAgB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACjE,cAAc,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC7D,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,eAAe,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9C,GAAG,YAAY,CAAC;AAEjB,wBAAgB,iBAAiB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EAC9D,eAAe,EACf,eAAe,EACf,IAAI,EACJ,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,cAAc,GACf,EAAE,sBAAsB,CAAC,QAAQ,CAAC,2CAqGlC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..09061cb23a0a6b4d94d6fa27848205e797d4cf0b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/index.d.ts @@ -0,0 +1,6 @@ +import { JSX } from 'react'; +import type { Edge, EdgeWrapperProps } from '../../types'; +declare function EdgeWrapper({ id, edgesFocusable, edgesReconnectable, elementsSelectable, onClick, onDoubleClick, onContextMenu, onMouseEnter, onMouseMove, onMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, rfId, edgeTypes, noPanClassName, onError, disableKeyboardA11y, }: EdgeWrapperProps): JSX.Element | null; +declare const _default: typeof EdgeWrapper; +export default _default; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..5f5d65f7d8395535cb616134425390a630ba657d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/EdgeWrapper/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA8D,GAAG,EAAQ,MAAM,OAAO,CAAC;AAe9F,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE1D,iBAAS,WAAW,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EACjD,EAAE,EACF,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,OAAO,EACP,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,IAAI,EACJ,SAAS,EACT,cAAc,EACd,OAAO,EACP,mBAAmB,GACpB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAyOjD;wBAEmC,OAAO,WAAW;AAAtD,wBAAuD"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/utils.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4ec01214231af3f178c2dd93de8a86fca741b8ff --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/utils.d.ts @@ -0,0 +1,12 @@ +import type { EdgeTypes } from '../../types'; +export declare const builtinEdgeTypes: EdgeTypes; +export declare const nullPosition: { + sourceX: null; + sourceY: null; + targetX: null; + targetY: null; + sourcePosition: null; + targetPosition: null; + zIndex: undefined; +}; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/utils.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/utils.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..a24bb50fcdc21923486d7f2ad5021ec6285944c3 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/EdgeWrapper/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/EdgeWrapper/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAS7C,eAAO,MAAM,gBAAgB,EAAE,SAM9B,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;CAQxB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/BaseEdge.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/BaseEdge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..328af2fa0741eec473aa3e6482ba8228ba8c1b3a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/BaseEdge.d.ts @@ -0,0 +1,30 @@ +import type { BaseEdgeProps } from '../../types'; +/** + * The `` component gets used internally for all the edges. It can be + * used inside a custom edge and handles the invisible helper edge and the edge label + * for you. + * + * @public + * @example + * ```jsx + *import { BaseEdge } from '@xyflow/react'; + * + *export function CustomEdge({ sourceX, sourceY, targetX, targetY, ...props }) { + * const [edgePath] = getStraightPath({ + * sourceX, + * sourceY, + * targetX, + * targetY, + * }); + * + * return ; + *} + *``` + * + * @remarks If you want to use an edge marker with the [``](/api-reference/components/base-edge) component, + * you can pass the `markerStart` or `markerEnd` props passed to your custom edge + * through to the [``](/api-reference/components/base-edge) component. + * You can see all the props passed to a custom edge by looking at the [`EdgeProps`](/api-reference/types/edge-props) type. + */ +export declare function BaseEdge({ path, labelX, labelY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, interactionWidth, ...props }: BaseEdgeProps): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=BaseEdge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/BaseEdge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/BaseEdge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..7e03035aaf6130c96a44744c9b3d87d010dfd847 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/BaseEdge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BaseEdge.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/BaseEdge.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,MAAM,EACN,MAAM,EACN,KAAK,EACL,UAAU,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,gBAAqB,EACrB,GAAG,KAAK,EACT,EAAE,aAAa,2CA2Bf"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/BezierEdge.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/BezierEdge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d0570d5a5320ea9f4d795579aac6678efb672a4a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/BezierEdge.d.ts @@ -0,0 +1,31 @@ +import type { BezierEdgeProps } from '../../types'; +/** + * Component that can be used inside a custom edge to render a bezier curve. + * + * @public + * @example + * + * ```tsx + * import { BezierEdge } from '@xyflow/react'; + * + * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) { + * return ( + * + * ); + * } + * ``` + */ +declare const BezierEdge: import("react").MemoExoticComponent<({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, pathOptions, interactionWidth, }: BezierEdgeProps) => import("react/jsx-runtime").JSX.Element>; +/** + * @internal + */ +declare const BezierEdgeInternal: import("react").MemoExoticComponent<({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, pathOptions, interactionWidth, }: BezierEdgeProps) => import("react/jsx-runtime").JSX.Element>; +export { BezierEdge, BezierEdgeInternal }; +//# sourceMappingURL=BezierEdge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/BezierEdge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/BezierEdge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..60b5ae3a56cdaab1bdb84c7de35b82986df8667b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/BezierEdge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"BezierEdge.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/BezierEdge.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA2DnD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,QAAA,MAAM,UAAU,qQA1DT,eAAe,6CA0DoC,CAAC;AAE3D;;GAEG;AACH,QAAA,MAAM,kBAAkB,qQA/DjB,eAAe,6CA+D2C,CAAC;AAKlE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/EdgeAnchor.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/EdgeAnchor.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..a3465d44ae729f2868fb965b1f751abca769ed2b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/EdgeAnchor.d.ts @@ -0,0 +1,17 @@ +import type { MouseEvent as ReactMouseEvent, SVGAttributes } from 'react'; +import { Position } from '@xyflow/system'; +export interface EdgeAnchorProps extends SVGAttributes { + position: Position; + centerX: number; + centerY: number; + radius?: number; + onMouseDown: (event: ReactMouseEvent) => void; + onMouseEnter: (event: ReactMouseEvent) => void; + onMouseOut: (event: ReactMouseEvent) => void; + type: string; +} +/** + * @internal + */ +export declare function EdgeAnchor({ position, centerX, centerY, radius, onMouseDown, onMouseEnter, onMouseOut, type, }: EdgeAnchorProps): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=EdgeAnchor.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/EdgeAnchor.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/EdgeAnchor.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..69cfdfe3903ce5a3e5ed445b0d8d1b420ba53507 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/EdgeAnchor.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EdgeAnchor.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/EdgeAnchor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,IAAI,eAAe,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAc1C,MAAM,WAAW,eAAgB,SAAQ,aAAa,CAAC,WAAW,CAAC;IACjE,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IACvE,YAAY,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IACxE,UAAU,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;IACtE,IAAI,EAAE,MAAM,CAAC;CACd;AAID;;GAEG;AACH,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,OAAO,EACP,OAAO,EACP,MAAW,EACX,WAAW,EACX,YAAY,EACZ,UAAU,EACV,IAAI,GACL,EAAE,eAAe,2CAcjB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/EdgeText.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/EdgeText.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..cab46cfc2a07e3025277d2b84e13ffdb183997a4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/EdgeText.d.ts @@ -0,0 +1,34 @@ +import type { EdgeTextProps } from '../../types'; +declare function EdgeTextComponent({ x, y, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, children, className, ...rest }: EdgeTextProps): import("react/jsx-runtime").JSX.Element | null; +declare namespace EdgeTextComponent { + var displayName: string; +} +/** + * You can use the `` component as a helper component to display text + * within your custom edges. + * + * @public + * + * @example + * ```jsx + * import { EdgeText } from '@xyflow/react'; + * + * export function CustomEdgeLabel({ label }) { + * return ( + * + * ); + * } + *``` + */ +export declare const EdgeText: import("react").MemoExoticComponent; +export {}; +//# sourceMappingURL=EdgeText.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/EdgeText.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/EdgeText.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..b151af5980f5730047903cf7b2a18c07a9cb050b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/EdgeText.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"EdgeText.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/EdgeText.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,iBAAS,iBAAiB,CAAC,EACzB,CAAC,EACD,CAAC,EACD,KAAK,EACL,UAAU,EACV,WAAkB,EAClB,YAAY,EACZ,cAAuB,EACvB,mBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACR,EAAE,aAAa,kDAqDf;kBAjEQ,iBAAiB;;;AAqE1B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,QAAQ,+DAA0B,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/SimpleBezierEdge.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/SimpleBezierEdge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..7d39b014c18ba136cdb36da5cb94a3125a6387e5 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/SimpleBezierEdge.d.ts @@ -0,0 +1,30 @@ +import { Position } from '@xyflow/system'; +import type { SimpleBezierEdgeProps } from '../../types'; +export interface GetSimpleBezierPathParams { + sourceX: number; + sourceY: number; + /** @default Position.Bottom */ + sourcePosition?: Position; + targetX: number; + targetY: number; + /** @default Position.Top */ + targetPosition?: Position; +} +/** + * The `getSimpleBezierPath` util returns everything you need to render a simple + * bezier edge between two nodes. + * @public + * @returns + * - `path`: the path to use in an SVG `` element. + * - `labelX`: the `x` position you can use to render a label for this edge. + * - `labelY`: the `y` position you can use to render a label for this edge. + * - `offsetX`: the absolute difference between the source `x` position and the `x` position of the + * middle of this path. + * - `offsetY`: the absolute difference between the source `y` position and the `y` position of the + * middle of this path. + */ +export declare function getSimpleBezierPath({ sourceX, sourceY, sourcePosition, targetX, targetY, targetPosition, }: GetSimpleBezierPathParams): [path: string, labelX: number, labelY: number, offsetX: number, offsetY: number]; +declare const SimpleBezierEdge: import("react").MemoExoticComponent<({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }: SimpleBezierEdgeProps) => import("react/jsx-runtime").JSX.Element>; +declare const SimpleBezierEdgeInternal: import("react").MemoExoticComponent<({ id, sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }: SimpleBezierEdgeProps) => import("react/jsx-runtime").JSX.Element>; +export { SimpleBezierEdge, SimpleBezierEdgeInternal }; +//# sourceMappingURL=SimpleBezierEdge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/SimpleBezierEdge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/SimpleBezierEdge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..43ba79b907b5a24f527ee57cfbf551cd267e7dd8 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/SimpleBezierEdge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SimpleBezierEdge.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/SimpleBezierEdge.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAuB,MAAM,gBAAgB,CAAC;AAG/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,cAAc,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAkBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,OAAO,EACP,cAAgC,EAChC,OAAO,EACP,OAAO,EACP,cAA6B,GAC9B,EAAE,yBAAyB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAiC9G;AAyDD,QAAA,MAAM,gBAAgB,wPAlCf,qBAAqB,6CAkC0C,CAAC;AACvE,QAAA,MAAM,wBAAwB,wPAnCvB,qBAAqB,6CAmCiD,CAAC;AAK9E,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/SmoothStepEdge.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/SmoothStepEdge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..e6ac0cb7ec686eeaccee7ca987807d4f41eced6c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/SmoothStepEdge.d.ts @@ -0,0 +1,31 @@ +import type { SmoothStepEdgeProps } from '../../types'; +/** + * Component that can be used inside a custom edge to render a smooth step edge. + * + * @public + * @example + * + * ```tsx + * import { SmoothStepEdge } from '@xyflow/react'; + * + * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) { + * return ( + * + * ); + * } + * ``` + */ +declare const SmoothStepEdge: import("react").MemoExoticComponent<({ id, sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, sourcePosition, targetPosition, markerEnd, markerStart, pathOptions, interactionWidth, }: SmoothStepEdgeProps) => import("react/jsx-runtime").JSX.Element>; +/** + * @internal + */ +declare const SmoothStepEdgeInternal: import("react").MemoExoticComponent<({ id, sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, sourcePosition, targetPosition, markerEnd, markerStart, pathOptions, interactionWidth, }: SmoothStepEdgeProps) => import("react/jsx-runtime").JSX.Element>; +export { SmoothStepEdge, SmoothStepEdgeInternal }; +//# sourceMappingURL=SmoothStepEdge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/SmoothStepEdge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/SmoothStepEdge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..abb01cdf33180887c54b940d4155709c21b2ea5b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/SmoothStepEdge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"SmoothStepEdge.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/SmoothStepEdge.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AA6DvD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,QAAA,MAAM,cAAc,qQA5Db,mBAAmB,6CA4DwC,CAAC;AAEnE;;GAEG;AACH,QAAA,MAAM,sBAAsB,qQAjErB,mBAAmB,6CAiE+C,CAAC;AAK1E,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/StepEdge.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/StepEdge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b335551653ca76d385d28538572b03209a63265b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/StepEdge.d.ts @@ -0,0 +1,31 @@ +import type { StepEdgeProps } from '../../types'; +/** + * Component that can be used inside a custom edge to render a step edge. + * + * @public + * @example + * + * ```tsx + * import { StepEdge } from '@xyflow/react'; + * + * function CustomEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition }) { + * return ( + * + * ); + * } + * ``` + */ +declare const StepEdge: import("react").MemoExoticComponent<({ id, ...props }: StepEdgeProps) => import("react/jsx-runtime").JSX.Element>; +/** + * @internal + */ +declare const StepEdgeInternal: import("react").MemoExoticComponent<({ id, ...props }: StepEdgeProps) => import("react/jsx-runtime").JSX.Element>; +export { StepEdge, StepEdgeInternal }; +//# sourceMappingURL=StepEdge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/StepEdge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/StepEdge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..9fd57f9b5e95792de4982a4c5810f8ac226688a8 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/StepEdge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"StepEdge.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/StepEdge.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAoBjD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,QAAA,MAAM,QAAQ,yDAvCmB,aAAa,6CAuCQ,CAAC;AAEvD;;GAEG;AACH,QAAA,MAAM,gBAAgB,yDA5CW,aAAa,6CA4Ce,CAAC;AAK9D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/StraightEdge.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/StraightEdge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..0af4c2808d86510b9aff68ba704066e6570b280a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/StraightEdge.d.ts @@ -0,0 +1,29 @@ +import type { StraightEdgeProps } from '../../types'; +/** + * Component that can be used inside a custom edge to render a straight line. + * + * @public + * @example + * + * ```tsx + * import { StraightEdge } from '@xyflow/react'; + * + * function CustomEdge({ sourceX, sourceY, targetX, targetY }) { + * return ( + * + * ); + * } + * ``` + */ +declare const StraightEdge: import("react").MemoExoticComponent<({ id, sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }: StraightEdgeProps) => import("react/jsx-runtime").JSX.Element>; +/** + * @internal + */ +declare const StraightEdgeInternal: import("react").MemoExoticComponent<({ id, sourceX, sourceY, targetX, targetY, label, labelStyle, labelShowBg, labelBgStyle, labelBgPadding, labelBgBorderRadius, style, markerEnd, markerStart, interactionWidth, }: StraightEdgeProps) => import("react/jsx-runtime").JSX.Element>; +export { StraightEdge, StraightEdgeInternal }; +//# sourceMappingURL=StraightEdge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/StraightEdge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/StraightEdge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..4037d3861f63beeb67c0efb73faee39b09f78039 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/StraightEdge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"StraightEdge.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/StraightEdge.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAgDrD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,QAAA,MAAM,YAAY,wNAhDX,iBAAiB,6CAgDsC,CAAC;AAE/D;;GAEG;AACH,QAAA,MAAM,oBAAoB,wNArDnB,iBAAiB,6CAqD6C,CAAC;AAKtE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d90e7ba2baae05dc68e147be8bae849717031c35 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/index.d.ts @@ -0,0 +1,6 @@ +export { SimpleBezierEdge, SimpleBezierEdgeInternal } from './SimpleBezierEdge'; +export { SmoothStepEdge, SmoothStepEdgeInternal } from './SmoothStepEdge'; +export { StepEdge, StepEdgeInternal } from './StepEdge'; +export { StraightEdge, StraightEdgeInternal } from './StraightEdge'; +export { BezierEdge, BezierEdgeInternal } from './BezierEdge'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..b8fbaa23a883db21d2ae0a28c41aa7aa3fee739c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Edges/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Edges/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Handle/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Handle/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..40659a6e204486449435e12074799da8eb5a6a15 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Handle/index.d.ts @@ -0,0 +1,39 @@ +import { type HTMLAttributes } from 'react'; +import { type HandleProps as HandlePropsSystem, OnConnect } from '@xyflow/system'; +/** + * @expand + */ +export type HandleProps = HandlePropsSystem & Omit, 'id'> & { + /** Callback called when connection is made */ + onConnect?: OnConnect; +}; +/** + * The `` component is used in your [custom nodes](/learn/customization/custom-nodes) + * to define connection points. + * + *@public + * + *@example + * + *```jsx + *import { Handle, Position } from '@xyflow/react'; + * + *export function CustomNode({ data }) { + * return ( + * <> + *
+ * {data.label} + *
+ * + * + * + * + * ); + *}; + *``` + */ +export declare const Handle: import("react").MemoExoticComponent<(props: HandlePropsSystem & Omit, "id"> & { + /** Callback called when connection is made */ + onConnect?: OnConnect; +} & import("react").RefAttributes) => import("react").JSX.Element>; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Handle/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Handle/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..61f16b6f8dd8650e3984f5ba0bce89f7580287fc --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Handle/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Handle/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAKpB,MAAM,OAAO,CAAC;AAGf,OAAO,EAML,KAAK,WAAW,IAAI,iBAAiB,EAIrC,SAAS,EAIV,MAAM,gBAAgB,CAAC;AASxB;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,iBAAiB,GACzC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,GAAG;IAC3C,8CAA8C;IAC9C,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAkPJ;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,MAAM;IA7Qf,8CAA8C;gBAClC,SAAS;kFA4QmC,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..0c52805415515a7d584f43cdc32b458b3135aff9 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/index.d.ts @@ -0,0 +1,5 @@ +import type { Node, NodeWrapperProps } from '../../types'; +declare function NodeWrapper({ id, onClick, onMouseEnter, onMouseMove, onMouseLeave, onContextMenu, onDoubleClick, nodesDraggable, elementsSelectable, nodesConnectable, nodesFocusable, resizeObserver, noDragClassName, noPanClassName, disableKeyboardA11y, rfId, nodeTypes, nodeClickDistance, onError, }: NodeWrapperProps): import("react/jsx-runtime").JSX.Element | null; +declare const _default: typeof NodeWrapper; +export default _default; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..098ea003a3ebfa4f2336568d5ecfd5ae9848c439 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/NodeWrapper/index.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAgB,IAAI,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAExE,iBAAS,WAAW,CAAC,QAAQ,SAAS,IAAI,EAAE,EAC1C,EAAE,EACF,OAAO,EACP,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,IAAI,EACJ,SAAS,EACT,iBAAiB,EACjB,OAAO,GACR,EAAE,gBAAgB,CAAC,QAAQ,CAAC,kDAgN5B;wBAEmC,OAAO,WAAW;AAAtD,wBAAuD"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/useNodeObserver.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/useNodeObserver.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..457539f50ac4053cb0359f81681215bd343bda67 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/useNodeObserver.d.ts @@ -0,0 +1,14 @@ +import type { InternalNode } from '../../types'; +/** + * Hook to handle the resize observation + internal updates for the passed node. + * + * @internal + * @returns nodeRef - reference to the node element + */ +export declare function useNodeObserver({ node, nodeType, hasDimensions, resizeObserver, }: { + node: InternalNode; + nodeType: string; + hasDimensions: boolean; + resizeObserver: ResizeObserver | null; +}): import("react").MutableRefObject; +//# sourceMappingURL=useNodeObserver.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/useNodeObserver.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/useNodeObserver.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..34342f7aaf4d64a3f42462ddea39626a5821f494 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/useNodeObserver.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useNodeObserver.d.ts","sourceRoot":"","sources":["../../../src/components/NodeWrapper/useNodeObserver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,cAAc,GACf,EAAE;IACD,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC,2DAmDA"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/utils.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..ec4720eead9b0601de9e8cd31c25e0e95f6b8db6 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/utils.d.ts @@ -0,0 +1,9 @@ +import type { XYPosition } from '@xyflow/system'; +import type { InternalNode, Node, NodeTypes } from '../../types'; +export declare const arrowKeyDiffs: Record; +export declare const builtinNodeTypes: NodeTypes; +export declare function getNodeInlineStyleDimensions(node: InternalNode): { + width: number | string | undefined; + height: number | string | undefined; +}; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/utils.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/utils.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..9450c4ef0fbfee8323a6151b1e4f4208bc9765ac --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodeWrapper/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/NodeWrapper/utils.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAMjD,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEjE,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAKpD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,SAK9B,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EACvE,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,GAC3B;IACD,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACrC,CAYA"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/DefaultNode.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/DefaultNode.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..c97468eb10630410a5306410fe55436c2ed0c2fb --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/DefaultNode.d.ts @@ -0,0 +1,3 @@ +import type { BuiltInNode, NodeProps } from '../../types/nodes'; +export declare function DefaultNode({ data, isConnectable, targetPosition, sourcePosition, }: NodeProps): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=DefaultNode.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/DefaultNode.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/DefaultNode.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..39117d0fac33dd471a3e4ef03d935002c4aee092 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/DefaultNode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"DefaultNode.d.ts","sourceRoot":"","sources":["../../../src/components/Nodes/DefaultNode.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEhE,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,aAAa,EACb,cAA6B,EAC7B,cAAgC,GACjC,EAAE,SAAS,CAAC,WAAW,CAAC,2CAQxB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/GroupNode.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/GroupNode.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..901decc06ec479b48a2f97694b44e3a031425735 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/GroupNode.d.ts @@ -0,0 +1,2 @@ +export declare function GroupNode(): null; +//# sourceMappingURL=GroupNode.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/GroupNode.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/GroupNode.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..842751685d03ceec42329ff30228644aca5612cd --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/GroupNode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"GroupNode.d.ts","sourceRoot":"","sources":["../../../src/components/Nodes/GroupNode.tsx"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,SAExB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/InputNode.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/InputNode.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..5f5476081a669f50a548d656fcf0d821c41346a0 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/InputNode.d.ts @@ -0,0 +1,3 @@ +import type { BuiltInNode, NodeProps } from '../../types/nodes'; +export declare function InputNode({ data, isConnectable, sourcePosition }: NodeProps): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=InputNode.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/InputNode.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/InputNode.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..1b43a1cb5e75bacd4376abf984b3548bab0660e3 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/InputNode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"InputNode.d.ts","sourceRoot":"","sources":["../../../src/components/Nodes/InputNode.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEhE,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,cAAgC,EAAE,EAAE,SAAS,CAAC,WAAW,CAAC,2CAO1G"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/OutputNode.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/OutputNode.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d66c1fb30fdc207fc72699b6ddb04bbc14546dd1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/OutputNode.d.ts @@ -0,0 +1,3 @@ +import type { BuiltInNode, NodeProps } from '../../types/nodes'; +export declare function OutputNode({ data, isConnectable, targetPosition }: NodeProps): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=OutputNode.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/OutputNode.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/OutputNode.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..f53ab007a600485bf3297942bee9c19613ec6972 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/OutputNode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"OutputNode.d.ts","sourceRoot":"","sources":["../../../src/components/Nodes/OutputNode.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEhE,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,cAA6B,EAAE,EAAE,SAAS,CAAC,WAAW,CAAC,2CAOxG"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/utils.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..25d4ff1bfba38c8c8a7783380e01f3d2f55242bf --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/utils.d.ts @@ -0,0 +1,13 @@ +import type { RefObject } from 'react'; +import type { StoreApi } from 'zustand'; +import type { ReactFlowState } from '../../types'; +export declare function handleNodeClick({ id, store, unselect, nodeRef, }: { + id: string; + store: { + getState: StoreApi['getState']; + setState: StoreApi['setState']; + }; + unselect?: boolean; + nodeRef?: RefObject; +}): void; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/utils.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/utils.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..84a7a1c4d04344063bc76b2f6315cb29f07a7c4f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Nodes/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/Nodes/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQlD,wBAAgB,eAAe,CAAC,EAC9B,EAAE,EACF,KAAK,EACL,QAAgB,EAChB,OAAO,GACR,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE;QACL,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,CAAC;QAC/C,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,CAAC;KAChD,CAAC;IACF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;CACrC,QAkBA"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodesSelection/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodesSelection/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..0c096139ff00f69c0df36c0d08222b59d3eb2bb9 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodesSelection/index.d.ts @@ -0,0 +1,13 @@ +/** + * The nodes selection rectangle gets displayed when a user + * made a selection with on or several nodes + */ +import { type MouseEvent } from 'react'; +import type { Node } from '../../types'; +export type NodesSelectionProps = { + onSelectionContextMenu?: (event: MouseEvent, nodes: NodeType[]) => void; + noPanClassName?: string; + disableKeyboardA11y: boolean; +}; +export declare function NodesSelection({ onSelectionContextMenu, noPanClassName, disableKeyboardA11y, }: NodesSelectionProps): import("react/jsx-runtime").JSX.Element | null; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodesSelection/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodesSelection/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..4bf2616f5e157a5f7a3bfb41a2ba26770328ddf4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/NodesSelection/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/NodesSelection/index.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAqB,KAAK,UAAU,EAAsB,MAAM,OAAO,CAAC;AAS/E,OAAO,KAAK,EAAE,IAAI,EAAkB,MAAM,aAAa,CAAC;AAExD,MAAM,MAAM,mBAAmB,CAAC,QAAQ,IAAI;IAC1C,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAeF,wBAAgB,cAAc,CAAC,QAAQ,SAAS,IAAI,EAAE,EACpD,sBAAsB,EACtB,cAAc,EACd,mBAAmB,GACpB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,kDAgE/B"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Panel/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Panel/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f9a8b24cbe1a606a230ff335281f642b3c0dd596 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Panel/index.d.ts @@ -0,0 +1,45 @@ +import { HTMLAttributes } from 'react'; +import type { PanelPosition } from '@xyflow/system'; +/** + * @expand + */ +export type PanelProps = HTMLAttributes & { + /** + * The position of the panel. + * @default "top-left" + */ + position?: PanelPosition; +}; +/** + * The `` component helps you position content above the viewport. + * It is used internally by the [``](/api-reference/components/minimap) + * and [``](/api-reference/components/controls) components. + * + * @public + * + * @example + * ```jsx + *import { ReactFlow, Background, Panel } from '@xyflow/react'; + * + *export default function Flow() { + * return ( + * + * top-left + * top-center + * top-right + * bottom-left + * bottom-center + * bottom-right + * + * ); + *} + *``` + */ +export declare const Panel: import("react").ForwardRefExoticComponent & { + /** + * The position of the panel. + * @default "top-left" + */ + position?: PanelPosition; +} & import("react").RefAttributes>; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Panel/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Panel/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..0306ce2a740550baea34bf4b7b0fa38803867c0c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/Panel/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Panel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAc,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC,cAAc,CAAC,GAAG;IACxD;;;OAGG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,KAAK;IAhChB;;;OAGG;eACQ,aAAa;kDAsCzB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ReactFlowProvider/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ReactFlowProvider/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..3cdf44ced3d9869e5fbbc291535ac1bc546d3389 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ReactFlowProvider/index.d.ts @@ -0,0 +1,83 @@ +import { type ReactNode } from 'react'; +import type { Node, Edge, FitViewOptions } from '../../types'; +import { CoordinateExtent, NodeOrigin, ZIndexMode } from '@xyflow/system'; +export type ReactFlowProviderProps = { + /** These nodes are used to initialize the flow. They are not dynamic. */ + initialNodes?: Node[]; + /** These edges are used to initialize the flow. They are not dynamic. */ + initialEdges?: Edge[]; + /** These nodes are used to initialize the flow. They are not dynamic. */ + defaultNodes?: Node[]; + /** These edges are used to initialize the flow. They are not dynamic. */ + defaultEdges?: Edge[]; + /** The initial width is necessary to be able to use fitView on the server */ + initialWidth?: number; + /** The initial height is necessary to be able to use fitView on the server */ + initialHeight?: number; + /** When `true`, the flow will be zoomed and panned to fit all the nodes initially provided. */ + fitView?: boolean; + /** + * You can provide an object of options to customize the initial fitView behavior. + */ + initialFitViewOptions?: FitViewOptions; + /** Initial minimum zoom level */ + initialMinZoom?: number; + /** Initial maximum zoom level */ + initialMaxZoom?: number; + /** + * The origin of the node to use when placing it in the flow or looking up its `x` and `y` + * position. An origin of `[0, 0]` means that a node's top left corner will be placed at the `x` + * and `y` position. + * @default [0, 0] + * @example + * [0, 0] // default, top left + * [0.5, 0.5] // center + * [1, 1] // bottom right + */ + nodeOrigin?: NodeOrigin; + /** + * By default, nodes can be placed on an infinite flow. You can use this prop to set a boundary. + * + * The first pair of coordinates is the top left boundary and the second pair is the bottom right. + * @example [[-1000, -10000], [1000, 1000]] + */ + nodeExtent?: CoordinateExtent; + children: ReactNode; + zIndexMode?: ZIndexMode; +}; +/** + * The `` component is a [context provider](https://react.dev/learn/passing-data-deeply-with-context#) + * that makes it possible to access a flow's internal state outside of the + * [``](/api-reference/react-flow) component. Many of the hooks we + * provide rely on this component to work. + * @public + * + * @example + * ```tsx + *import { ReactFlow, ReactFlowProvider, useNodes } from '@xyflow/react' + * + *export default function Flow() { + * return ( + * + * + * + * + * ); + *} + * + *function Sidebar() { + * // This hook will only work if the component it's used in is a child of a + * // . + * const nodes = useNodes() + * + * return ; + *} + *``` + * + * @remarks If you're using a router and want your flow's state to persist across routes, + * it's vital that you place the `` component _outside_ of + * your router. If you have multiple flows on the same page you will need to use a separate + * `` for each flow. + */ +export declare function ReactFlowProvider({ initialNodes: nodes, initialEdges: edges, defaultNodes, defaultEdges, initialWidth: width, initialHeight: height, initialMinZoom: minZoom, initialMaxZoom: maxZoom, initialFitViewOptions: fitViewOptions, fitView, nodeOrigin, nodeExtent, zIndexMode, children, }: ReactFlowProviderProps): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ReactFlowProvider/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ReactFlowProvider/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..444cacd8fcaaa7dba8c8205e07ff5b1b57dede70 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ReactFlowProvider/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ReactFlowProvider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMjD,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE1E,MAAM,MAAM,sBAAsB,GAAG;IACnC,yEAAyE;IACzE,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,yEAAyE;IACzE,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,yEAAyE;IACzE,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,yEAAyE;IACzE,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,qBAAqB,CAAC,EAAE,cAAc,CAAC;IACvC,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,YAAY,EAAE,KAAK,EACnB,YAAY,EAAE,KAAK,EACnB,YAAY,EACZ,YAAY,EACZ,YAAY,EAAE,KAAK,EACnB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,OAAO,EACvB,cAAc,EAAE,OAAO,EACvB,qBAAqB,EAAE,cAAc,EACrC,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAQ,GACT,EAAE,sBAAsB,2CA0BxB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/SelectionListener/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/SelectionListener/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2eb1cb399ffea8acb6b9dae123d17596bb561db3 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/SelectionListener/index.d.ts @@ -0,0 +1,7 @@ +import type { OnSelectionChangeFunc, Node, Edge } from '../../types'; +type SelectionListenerProps = { + onSelectionChange?: OnSelectionChangeFunc; +}; +export declare function SelectionListener({ onSelectionChange, }: SelectionListenerProps): import("react/jsx-runtime").JSX.Element | null; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/SelectionListener/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/SelectionListener/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..ff248c337e3f6229b886b7426c85221bcc6a160f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/SelectionListener/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SelectionListener/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAkB,qBAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAErF,KAAK,sBAAsB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI;IACxF,iBAAiB,CAAC,EAAE,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CAC/D,CAAC;AAkDF,wBAAgB,iBAAiB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EAC5F,iBAAiB,GAClB,EAAE,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,kDAQ5C"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/StoreUpdater/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/StoreUpdater/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..65282a728bc7aac67a1ec9482f2a27a01d50314a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/StoreUpdater/index.d.ts @@ -0,0 +1,9 @@ +import type { Node, Edge, ReactFlowProps } from '../../types'; +declare const reactFlowFieldsToTrack: readonly ["nodes", "edges", "defaultNodes", "defaultEdges", "onConnect", "onConnectStart", "onConnectEnd", "onClickConnectStart", "onClickConnectEnd", "nodesDraggable", "autoPanOnNodeFocus", "nodesConnectable", "nodesFocusable", "edgesFocusable", "edgesReconnectable", "elevateNodesOnSelect", "elevateEdgesOnSelect", "minZoom", "maxZoom", "nodeExtent", "onNodesChange", "onEdgesChange", "elementsSelectable", "connectionMode", "snapGrid", "snapToGrid", "translateExtent", "connectOnClick", "defaultEdgeOptions", "fitView", "fitViewOptions", "onNodesDelete", "onEdgesDelete", "onDelete", "onNodeDrag", "onNodeDragStart", "onNodeDragStop", "onSelectionDrag", "onSelectionDragStart", "onSelectionDragStop", "onMoveStart", "onMove", "onMoveEnd", "noPanClassName", "nodeOrigin", "autoPanOnConnect", "autoPanOnNodeDrag", "onError", "connectionRadius", "isValidConnection", "selectNodesOnDrag", "nodeDragThreshold", "connectionDragThreshold", "onBeforeDelete", "debug", "autoPanSpeed", "ariaLabelConfig", "zIndexMode"]; +type ReactFlowFieldsToTrack = (typeof reactFlowFieldsToTrack)[number]; +type StoreUpdaterProps = Pick, ReactFlowFieldsToTrack> & { + rfId: string; +}; +export declare function StoreUpdater(props: StoreUpdaterProps): null; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/StoreUpdater/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/StoreUpdater/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..65fa384d6568f96f145ca6a730352804f97edfa0 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/StoreUpdater/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/StoreUpdater/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAkB,cAAc,EAAkB,MAAM,aAAa,CAAC;AAI9F,QAAA,MAAM,sBAAsB,q/BA2DlB,CAAC;AAEX,KAAK,sBAAsB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AACtE,KAAK,iBAAiB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,IAAI,CACvF,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAClC,sBAAsB,CACvB,GAAG;IACF,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AA+BF,wBAAgB,YAAY,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,EACrF,KAAK,EAAE,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAyD7C"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/UserSelection/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/UserSelection/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..51a455d3f81553204d1c0ab29ca5ab77d223fe26 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/UserSelection/index.d.ts @@ -0,0 +1,2 @@ +export declare function UserSelection(): import("react/jsx-runtime").JSX.Element | null; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/UserSelection/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/UserSelection/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..ee199d0021d5fbf2ab80a205f281b34b50a2b690 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/UserSelection/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/UserSelection/index.tsx"],"names":[],"mappings":"AAUA,wBAAgB,aAAa,mDAkB5B"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ViewportPortal/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ViewportPortal/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..27023553a8cc4644c7b4221fbbcb190a3e4ce93d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ViewportPortal/index.d.ts @@ -0,0 +1,30 @@ +import type { ReactNode } from 'react'; +/** + * The `` component can be used to add components to the same viewport + * of the flow where nodes and edges are rendered. This is useful when you want to render + * your own components that are adhere to the same coordinate system as the nodes & edges + * and are also affected by zooming and panning + * @public + * @example + * + * ```jsx + *import React from 'react'; + *import { ViewportPortal } from '@xyflow/react'; + * + *export default function () { + * return ( + * + *
+ * This div is positioned at [100, 100] on the flow. + *
+ *
+ * ); + *} + *``` + */ +export declare function ViewportPortal({ children }: { + children: ReactNode; +}): import("react").ReactPortal | null; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ViewportPortal/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ViewportPortal/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..439da41301e061a4d80bed06d7721b79ab70eb6d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/components/ViewportPortal/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ViewportPortal/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQvC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,sCAQnE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/MarkerDefinitions.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/MarkerDefinitions.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..7448a03cc16d18a167edef7d5a85615a961524e5 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/MarkerDefinitions.d.ts @@ -0,0 +1,10 @@ +type MarkerDefinitionsProps = { + defaultColor: string | null; + rfId?: string; +}; +declare const _default: import("react").MemoExoticComponent<{ + ({ defaultColor, rfId }: MarkerDefinitionsProps): import("react/jsx-runtime").JSX.Element | null; + displayName: string; +}>; +export default _default; +//# sourceMappingURL=MarkerDefinitions.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/MarkerDefinitions.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/MarkerDefinitions.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..38767015a151300af8399ec42535fc2cd11a1984 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/MarkerDefinitions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MarkerDefinitions.d.ts","sourceRoot":"","sources":["../../../src/container/EdgeRenderer/MarkerDefinitions.tsx"],"names":[],"mappings":"AAMA,KAAK,sBAAsB,GAAG;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;;6BAwCiD,sBAAsB;;;AA0CzE,wBAAuC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/MarkerSymbols.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/MarkerSymbols.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..05dd34ebbd61ee31c147edfd22f00d5c22f34cd1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/MarkerSymbols.d.ts @@ -0,0 +1,9 @@ +import { MarkerType, type EdgeMarker } from '@xyflow/system'; +type SymbolProps = Omit; +export declare const MarkerSymbols: { + arrow: ({ color, strokeWidth }: SymbolProps) => import("react/jsx-runtime").JSX.Element; + arrowclosed: ({ color, strokeWidth }: SymbolProps) => import("react/jsx-runtime").JSX.Element; +}; +export declare function useMarkerSymbol(type: MarkerType | `${MarkerType}`): (({ color, strokeWidth }: SymbolProps) => import("react/jsx-runtime").JSX.Element) | null; +export {}; +//# sourceMappingURL=MarkerSymbols.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/MarkerSymbols.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/MarkerSymbols.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..9b3d243e1dfd668863c2536e20a97427de3137dd --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/MarkerSymbols.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"MarkerSymbols.d.ts","sourceRoot":"","sources":["../../../src/container/EdgeRenderer/MarkerSymbols.tsx"],"names":[],"mappings":"AACA,OAAO,EAAiB,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5E,KAAK,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAqC5C,eAAO,MAAM,aAAa;oCAnCgC,WAAW;0CAkBL,WAAW;CAoB1E,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,GAAG,UAAU,EAAE,6BAxCR,WAAW,qDAwDpE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee9186531608d9e45f0a158e5dfd5e3cdc8e448a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/index.d.ts @@ -0,0 +1,13 @@ +import { ReactNode } from 'react'; +import { GraphViewProps } from '../GraphView'; +import type { Edge, Node } from '../../types'; +type EdgeRendererProps = Pick, 'onEdgeClick' | 'onEdgeDoubleClick' | 'defaultMarkerColor' | 'onlyRenderVisibleElements' | 'onReconnect' | 'onEdgeContextMenu' | 'onEdgeMouseEnter' | 'onEdgeMouseMove' | 'onEdgeMouseLeave' | 'onReconnectStart' | 'onReconnectEnd' | 'reconnectRadius' | 'noPanClassName' | 'rfId' | 'disableKeyboardA11y' | 'edgeTypes'> & { + children?: ReactNode; +}; +declare function EdgeRendererComponent({ defaultMarkerColor, onlyRenderVisibleElements, rfId, edgeTypes, noPanClassName, onReconnect, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, onEdgeClick, reconnectRadius, onEdgeDoubleClick, onReconnectStart, onReconnectEnd, disableKeyboardA11y, }: EdgeRendererProps): import("react/jsx-runtime").JSX.Element; +declare namespace EdgeRendererComponent { + var displayName: string; +} +export declare const EdgeRenderer: typeof EdgeRendererComponent; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..d3a1f62aec37bd89db1f99ac7a239ecd36ecbd41 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/EdgeRenderer/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/EdgeRenderer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,SAAS,EAAE,MAAM,OAAO,CAAC;AAMxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAE,IAAI,EAAkB,IAAI,EAAE,MAAM,aAAa,CAAC;AAE9D,KAAK,iBAAiB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,IAAI,CACzD,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,EAC5B,aAAa,GACb,mBAAmB,GACnB,oBAAoB,GACpB,2BAA2B,GAC3B,aAAa,GACb,mBAAmB,GACnB,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,MAAM,GACN,qBAAqB,GACrB,WAAW,CACd,GAAG;IACF,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAUF,iBAAS,qBAAqB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EAC3D,kBAAkB,EAClB,yBAAyB,EACzB,IAAI,EACJ,SAAS,EACT,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,GACpB,EAAE,iBAAiB,CAAC,QAAQ,CAAC,2CAoC7B;kBArDQ,qBAAqB;;;AAyD9B,eAAO,MAAM,YAAY,EAAkC,OAAO,qBAAqB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/FlowRenderer/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/FlowRenderer/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..0af351e996cb55c43f1555864a5346af2425219e --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/FlowRenderer/index.d.ts @@ -0,0 +1,14 @@ +import { type ReactNode } from 'react'; +import { GraphViewProps } from '../GraphView'; +import type { Node } from '../../types'; +export type FlowRendererProps = Omit, 'snapToGrid' | 'nodeTypes' | 'edgeTypes' | 'snapGrid' | 'connectionLineType' | 'connectionLineContainerStyle' | 'arrowHeadColor' | 'onlyRenderVisibleElements' | 'selectNodesOnDrag' | 'defaultMarkerColor' | 'rfId' | 'nodeClickDistance'> & { + isControlledViewport: boolean; + children: ReactNode; +}; +declare function FlowRendererComponent({ children, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneContextMenu, onPaneScroll, paneClickDistance, deleteKeyCode, selectionKeyCode, selectionOnDrag, selectionMode, onSelectionStart, onSelectionEnd, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, elementsSelectable, zoomOnScroll, zoomOnPinch, panOnScroll: _panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag: _panOnDrag, autoPanOnSelection, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, onSelectionContextMenu, noWheelClassName, noPanClassName, disableKeyboardA11y, onViewportChange, isControlledViewport, }: FlowRendererProps): import("react/jsx-runtime").JSX.Element; +declare namespace FlowRendererComponent { + var displayName: string; +} +export declare const FlowRenderer: typeof FlowRendererComponent; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/FlowRenderer/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/FlowRenderer/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..fd60cd90c39b691e314f868ce67592a919fe3ca7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/FlowRenderer/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/FlowRenderer/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAM7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAI9C,OAAO,KAAK,EAAkB,IAAI,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,MAAM,iBAAiB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,IAAI,CAChE,cAAc,CAAC,QAAQ,CAAC,EACtB,YAAY,GACZ,WAAW,GACX,WAAW,GACX,UAAU,GACV,oBAAoB,GACpB,8BAA8B,GAC9B,gBAAgB,GAChB,2BAA2B,GAC3B,mBAAmB,GACnB,oBAAoB,GACpB,MAAM,GACN,mBAAmB,CACtB,GAAG;IACF,oBAAoB,EAAE,OAAO,CAAC;IAC9B,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAQF,iBAAS,qBAAqB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EAC3D,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,WAAW,EAAE,YAAY,EACzB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,SAAS,EAAE,UAAU,EACrB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,GACrB,EAAE,iBAAiB,CAAC,QAAQ,CAAC,2CAgE7B;kBAtGQ,qBAAqB;;;AA0G9B,eAAO,MAAM,YAAY,EAAkC,OAAO,qBAAqB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..e393a5c9efd3a3e0ad3c0429f91a6f65a5edd193 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/index.d.ts @@ -0,0 +1,11 @@ +import type { Edge, Node, ReactFlowProps } from '../../types'; +export type GraphViewProps = Omit, 'onSelectionChange' | 'nodes' | 'edges' | 'onMove' | 'onMoveStart' | 'onMoveEnd' | 'elevateEdgesOnSelect'> & Required, 'selectionKeyCode' | 'deleteKeyCode' | 'multiSelectionKeyCode' | 'connectionLineType' | 'onlyRenderVisibleElements' | 'translateExtent' | 'minZoom' | 'maxZoom' | 'defaultMarkerColor' | 'noDragClassName' | 'noWheelClassName' | 'noPanClassName' | 'defaultViewport' | 'disableKeyboardA11y' | 'paneClickDistance' | 'nodeClickDistance'>> & { + rfId: string; +}; +declare function GraphViewComponent({ nodeTypes, edgeTypes, onInit, onNodeClick, onEdgeClick, onNodeDoubleClick, onEdgeDoubleClick, onNodeMouseEnter, onNodeMouseMove, onNodeMouseLeave, onNodeContextMenu, onSelectionContextMenu, onSelectionStart, onSelectionEnd, connectionLineType, connectionLineStyle, connectionLineComponent, connectionLineContainerStyle, selectionKeyCode, selectionOnDrag, selectionMode, multiSelectionKeyCode, panActivationKeyCode, zoomActivationKeyCode, deleteKeyCode, onlyRenderVisibleElements, elementsSelectable, defaultViewport, translateExtent, minZoom, maxZoom, preventScrolling, defaultMarkerColor, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag, autoPanOnSelection, onPaneClick, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, onPaneScroll, onPaneContextMenu, paneClickDistance, nodeClickDistance, onEdgeContextMenu, onEdgeMouseEnter, onEdgeMouseMove, onEdgeMouseLeave, reconnectRadius, onReconnect, onReconnectStart, onReconnectEnd, noDragClassName, noWheelClassName, noPanClassName, disableKeyboardA11y, nodeExtent, rfId, viewport, onViewportChange, nodesDraggable, }: GraphViewProps): import("react/jsx-runtime").JSX.Element; +declare namespace GraphViewComponent { + var displayName: string; +} +export declare const GraphView: typeof GraphViewComponent; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..140c37665db6ccc82db0b8d3eab22124ec67acbe --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/GraphView/index.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG9D,MAAM,MAAM,cAAc,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,IAAI,IAAI,CAC3F,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAClC,mBAAmB,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,GAAG,sBAAsB,CAC1G,GACC,QAAQ,CACN,IAAI,CACF,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAChC,kBAAkB,GAClB,eAAe,GACf,uBAAuB,GACvB,oBAAoB,GACpB,2BAA2B,GAC3B,iBAAiB,GACjB,SAAS,GACT,SAAS,GACT,oBAAoB,GACpB,iBAAiB,GACjB,kBAAkB,GAClB,gBAAgB,GAChB,iBAAiB,GACjB,qBAAqB,GACrB,mBAAmB,GACnB,mBAAmB,CACtB,CACF,GAAG;IACF,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEJ,iBAAS,kBAAkB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EACtF,SAAS,EACT,SAAS,EACT,MAAM,EACN,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,4BAA4B,EAC5B,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,EACb,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,gBAAgB,EAChB,cAAc,GACf,EAAE,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,2CA+FpC;kBAlKQ,kBAAkB;;;AAsK3B,eAAO,MAAM,SAAS,EAA+B,OAAO,kBAAkB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/useNodeOrEdgeTypesWarning.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/useNodeOrEdgeTypesWarning.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..601d17067179aad205b6af9ba324412aed16afd9 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/useNodeOrEdgeTypesWarning.d.ts @@ -0,0 +1,10 @@ +import type { EdgeTypes, NodeTypes } from '../../types'; +/** + * This hook warns the user if nodeTypes or edgeTypes changed. + * It is only used in development mode. + * + * @internal + */ +export declare function useNodeOrEdgeTypesWarning(nodeOrEdgeTypes?: NodeTypes): void; +export declare function useNodeOrEdgeTypesWarning(nodeOrEdgeTypes?: EdgeTypes): void; +//# sourceMappingURL=useNodeOrEdgeTypesWarning.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/useNodeOrEdgeTypesWarning.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/useNodeOrEdgeTypesWarning.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..52c632039124568ab4c7342b153b922d8e53fdaa --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/useNodeOrEdgeTypesWarning.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useNodeOrEdgeTypesWarning.d.ts","sourceRoot":"","sources":["../../../src/container/GraphView/useNodeOrEdgeTypesWarning.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIxD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;AAC7E,wBAAgB,yBAAyB,CAAC,eAAe,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/useStylesLoadedWarning.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/useStylesLoadedWarning.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..736e3be5d8e35aec5569211c517e849ad35ba549 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/useStylesLoadedWarning.d.ts @@ -0,0 +1,2 @@ +export declare function useStylesLoadedWarning(): void; +//# sourceMappingURL=useStylesLoadedWarning.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/useStylesLoadedWarning.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/useStylesLoadedWarning.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..f7c8afb1e265a61e8f46e30af901e3442b60f9c6 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/GraphView/useStylesLoadedWarning.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useStylesLoadedWarning.d.ts","sourceRoot":"","sources":["../../../src/container/GraphView/useStylesLoadedWarning.ts"],"names":[],"mappings":"AAKA,wBAAgB,sBAAsB,SAiBrC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/NodeRenderer/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/NodeRenderer/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d533d7ac625c5c30d9b79aa2f2ff050a65c8e6a4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/NodeRenderer/index.d.ts @@ -0,0 +1,10 @@ +import { GraphViewProps } from '../GraphView'; +import type { Node } from '../../types'; +export type NodeRendererProps = Pick, 'onNodeClick' | 'onNodeDoubleClick' | 'onNodeMouseEnter' | 'onNodeMouseMove' | 'onNodeMouseLeave' | 'onNodeContextMenu' | 'onlyRenderVisibleElements' | 'noPanClassName' | 'noDragClassName' | 'rfId' | 'disableKeyboardA11y' | 'nodeExtent' | 'nodeTypes' | 'nodeClickDistance' | 'nodesDraggable'>; +declare function NodeRendererComponent(props: NodeRendererProps): import("react/jsx-runtime").JSX.Element; +declare namespace NodeRendererComponent { + var displayName: string; +} +export declare const NodeRenderer: typeof NodeRendererComponent; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/NodeRenderer/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/NodeRenderer/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..dfcf8217a2e622b717b75c1414464a91ddf2ce16 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/NodeRenderer/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/NodeRenderer/index.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,KAAK,EAAE,IAAI,EAAkB,MAAM,aAAa,CAAC;AAExD,MAAM,MAAM,iBAAiB,CAAC,QAAQ,SAAS,IAAI,IAAI,IAAI,CACzD,cAAc,CAAC,QAAQ,CAAC,EACtB,aAAa,GACb,mBAAmB,GACnB,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,mBAAmB,GACnB,2BAA2B,GAC3B,gBAAgB,GAChB,iBAAiB,GACjB,MAAM,GACN,qBAAqB,GACrB,YAAY,GACZ,WAAW,GACX,mBAAmB,GACnB,gBAAgB,CACnB,CAAC;AASF,iBAAS,qBAAqB,CAAC,QAAQ,SAAS,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,2CA6DvF;kBA7DQ,qBAAqB;;;AAiE9B,eAAO,MAAM,YAAY,EAAkC,OAAO,qBAAqB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/NodeRenderer/useResizeObserver.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/NodeRenderer/useResizeObserver.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..cfb3b546f87b4bbc878bb4f5ae11f63260d092aa --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/NodeRenderer/useResizeObserver.d.ts @@ -0,0 +1,2 @@ +export declare function useResizeObserver(): ResizeObserver | null; +//# sourceMappingURL=useResizeObserver.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/NodeRenderer/useResizeObserver.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/NodeRenderer/useResizeObserver.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..7fbcf4e962cc764cde8bae868e0036459e60d06f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/NodeRenderer/useResizeObserver.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useResizeObserver.d.ts","sourceRoot":"","sources":["../../../src/container/NodeRenderer/useResizeObserver.ts"],"names":[],"mappings":"AAQA,wBAAgB,iBAAiB,0BA6BhC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/Pane/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/Pane/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..ff84f0328eeb21c2d1cdf664e1392f6710305238 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/Pane/index.d.ts @@ -0,0 +1,11 @@ +import { type ReactNode } from 'react'; +import type { ReactFlowProps } from '../../types'; +type PaneProps = { + isSelecting: boolean; + selectionKeyPressed: boolean; + children: ReactNode; + paneClickDistance: number; +} & Partial>; +export declare function Pane({ isSelecting, selectionKeyPressed, selectionMode, panOnDrag, autoPanOnSelection, paneClickDistance, selectionOnDrag, onSelectionStart, onSelectionEnd, onPaneClick, onPaneContextMenu, onPaneScroll, onPaneMouseEnter, onPaneMouseMove, onPaneMouseLeave, children, }: PaneProps): import("react/jsx-runtime").JSX.Element; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/Pane/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/Pane/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..1bc504155f73fe881bc910ee5bd571d03139040d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/Pane/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/Pane/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAkBf,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,aAAa,CAAC;AAElE,KAAK,SAAS,GAAG;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,GAAG,OAAO,CACT,IAAI,CACF,cAAc,EACZ,eAAe,GACf,WAAW,GACX,oBAAoB,GACpB,kBAAkB,GAClB,gBAAgB,GAChB,aAAa,GACb,mBAAmB,GACnB,cAAc,GACd,kBAAkB,GAClB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,CACpB,CACF,CAAC;AAsBF,wBAAgB,IAAI,CAAC,EACnB,WAAW,EACX,mBAAmB,EACnB,aAAkC,EAClC,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,QAAQ,GACT,EAAE,SAAS,2CA+RX"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/Wrapper.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/Wrapper.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..dbe9067819da7946d97e5c21240f8a5dfbd0326c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/Wrapper.d.ts @@ -0,0 +1,20 @@ +import { type ReactNode } from 'react'; +import type { Node, Edge, FitViewOptions } from '../../types'; +import { CoordinateExtent, NodeOrigin, ZIndexMode } from '@xyflow/system'; +export declare function Wrapper({ children, nodes, edges, defaultNodes, defaultEdges, width, height, fitView, fitViewOptions, minZoom, maxZoom, nodeOrigin, nodeExtent, zIndexMode, }: { + children: ReactNode; + nodes?: Node[]; + edges?: Edge[]; + defaultNodes?: Node[]; + defaultEdges?: Edge[]; + width?: number; + height?: number; + fitView?: boolean; + fitViewOptions?: FitViewOptions; + minZoom?: number; + maxZoom?: number; + nodeOrigin?: NodeOrigin; + nodeExtent?: CoordinateExtent; + zIndexMode?: ZIndexMode; +}): import("react/jsx-runtime").JSX.Element; +//# sourceMappingURL=Wrapper.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/Wrapper.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/Wrapper.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..e64758e0ded0e8fb53643b8abd3c58d608ed68a7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/Wrapper.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Wrapper.d.ts","sourceRoot":"","sources":["../../../src/container/ReactFlow/Wrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAInD,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE1E,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,KAAK,EACL,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,MAAM,EACN,OAAO,EACP,cAAc,EACd,OAAO,EACP,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,GACX,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,2CA8BA"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..3c796a9ebf30c12f59e512e03329dbc0a3acb48d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/index.d.ts @@ -0,0 +1,24 @@ +import type { Edge, Node, ReactFlowProps } from '../../types'; +/** + * The `` component is the heart of your React Flow application. + * It renders your nodes and edges and handles user interaction + * + * @public + * + * @example + * ```tsx + *import { ReactFlow } from '@xyflow/react' + * + *export default function Flow() { + * return (); + *} + *``` + */ +declare const _default: (props: ReactFlowProps & import("react").RefAttributes) => import("react").JSX.Element; +export default _default; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..480ebfb7cc26a312fa81a5c6a4f2320f56fb2080 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/ReactFlow/index.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA8T9D;;;;;;;;;;;;;;;;;;;GAmBG;yBArUgB,QAAQ,SAAS,IAAI,SAAS,QAAQ,SAAS,IAAI;AAsUtE,wBAA0C"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/init-values.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/init-values.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..683999ad368432a9064aa6346115950984b35337 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/init-values.d.ts @@ -0,0 +1,4 @@ +import { type NodeOrigin, Viewport } from '@xyflow/system'; +export declare const defaultNodeOrigin: NodeOrigin; +export declare const defaultViewport: Viewport; +//# sourceMappingURL=init-values.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/init-values.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/init-values.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..4f68c0a267df3b24a9fa96af7a85d76215a8de64 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ReactFlow/init-values.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"init-values.d.ts","sourceRoot":"","sources":["../../../src/container/ReactFlow/init-values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE3D,eAAO,MAAM,iBAAiB,EAAE,UAAmB,CAAC;AACpD,eAAO,MAAM,eAAe,EAAE,QAAkC,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/Viewport/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/Viewport/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..a792737fcdcdab71aa001c1e0cc8510de062db58 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/Viewport/index.d.ts @@ -0,0 +1,7 @@ +import { type ReactNode } from 'react'; +type ViewportProps = { + children: ReactNode; +}; +export declare function Viewport({ children }: ViewportProps): import("react/jsx-runtime").JSX.Element; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/Viewport/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/Viewport/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..bacebb3ac553f02c83af0782bdc01776d9206c62 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/Viewport/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/Viewport/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AASzD,KAAK,aAAa,GAAG;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,2CA4CnD"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ZoomPane/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ZoomPane/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..36c7a42182474fce350af570795a1d9bcad4468e --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ZoomPane/index.d.ts @@ -0,0 +1,7 @@ +import type { FlowRendererProps } from '../FlowRenderer'; +type ZoomPaneProps = Omit & { + isControlledViewport: boolean; +}; +export declare function ZoomPane({ onPaneContextMenu, zoomOnScroll, zoomOnPinch, panOnScroll, panOnScrollSpeed, panOnScrollMode, zoomOnDoubleClick, panOnDrag, defaultViewport, translateExtent, minZoom, maxZoom, zoomActivationKeyCode, preventScrolling, children, noWheelClassName, noPanClassName, onViewportChange, isControlledViewport, paneClickDistance, selectionOnDrag, }: ZoomPaneProps): import("react/jsx-runtime").JSX.Element; +export {}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ZoomPane/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ZoomPane/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..f4c882a0e9575f247bd885848d6153416cea599c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/container/ZoomPane/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/container/ZoomPane/index.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGzD,KAAK,aAAa,GAAG,IAAI,CACvB,iBAAiB,EACjB,eAAe,GAAG,kBAAkB,GAAG,uBAAuB,GAAG,iBAAiB,GAAG,qBAAqB,CAC3G,GAAG;IACF,oBAAoB,EAAE,OAAO,CAAC;CAC/B,CAAC;AAQF,wBAAgB,QAAQ,CAAC,EACvB,iBAAiB,EACjB,YAAmB,EACnB,WAAkB,EAClB,WAAmB,EACnB,gBAAsB,EACtB,eAAsC,EACtC,iBAAwB,EACxB,SAAgB,EAChB,eAAe,EACf,eAAe,EACf,OAAO,EACP,OAAO,EACP,qBAAqB,EACrB,gBAAuB,EACvB,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,GAChB,EAAE,aAAa,2CA4Gf"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/HandleConfigContext.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/HandleConfigContext.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d4b6dd8dd7d12a42f80e0c9c181b3a3eeac56709 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/HandleConfigContext.d.ts @@ -0,0 +1,12 @@ +import { type ReactNode } from 'react'; +type HandleConfig = { + connectOnClick: boolean; + noPanClassName: string; + rfId: string; +}; +export declare function HandleConfigProvider({ children }: { + children: ReactNode; +}): import("react/jsx-runtime").JSX.Element; +export declare function useHandleConfig(): HandleConfig; +export {}; +//# sourceMappingURL=HandleConfigContext.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/HandleConfigContext.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/HandleConfigContext.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..039002cca819e74bcfd18ebf89ee1143c209540a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/HandleConfigContext.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"HandleConfigContext.d.ts","sourceRoot":"","sources":["../../src/contexts/HandleConfigContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMlE,KAAK,YAAY,GAAG;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAcF,wBAAgB,oBAAoB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAGzE;AAED,wBAAgB,eAAe,iBAQ9B"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/NodeIdContext.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/NodeIdContext.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..516f33af65c609ffbb12960296efd4fe4924a93a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/NodeIdContext.d.ts @@ -0,0 +1,34 @@ +export declare const NodeIdContext: import("react").Context; +export declare const Provider: import("react").Provider; +export declare const Consumer: import("react").Consumer; +/** + * You can use this hook to get the id of the node it is used inside. It is useful + * if you need the node's id deeper in the render tree but don't want to manually + * drill down the id as a prop. + * + * @public + * @returns The id for a node in the flow. + * + * @example + *```jsx + *import { useNodeId } from '@xyflow/react'; + * + *export default function CustomNode() { + * return ( + *
+ * This node has an id of + * + *
+ * ); + *} + * + *function NodeIdDisplay() { + * const nodeId = useNodeId(); + * + * return {nodeId}; + *} + *``` + */ +export declare const useNodeId: () => string | null; +export default NodeIdContext; +//# sourceMappingURL=NodeIdContext.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/NodeIdContext.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/NodeIdContext.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..5118ac80a25f6ce8a43179a821a535713fc97491 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/NodeIdContext.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"NodeIdContext.d.ts","sourceRoot":"","sources":["../../src/contexts/NodeIdContext.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,wCAAqC,CAAC;AAChE,eAAO,MAAM,QAAQ,yCAAyB,CAAC;AAC/C,eAAO,MAAM,QAAQ,yCAAyB,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,SAAS,QAAO,MAAM,GAAG,IAGrC,CAAC;AAEF,eAAe,aAAa,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/StoreContext.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/StoreContext.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f83f50307096bab1986fb96182b77679d129d870 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/StoreContext.d.ts @@ -0,0 +1,4 @@ +declare const StoreContext: import("react").Context> | null>; +export declare const Provider: import("react").Provider> | null>; +export default StoreContext; +//# sourceMappingURL=StoreContext.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/StoreContext.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/StoreContext.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..8ad90d4ab70db8cbc7ccfb4a979b7a0e5f5b06ef --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/contexts/StoreContext.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"StoreContext.d.ts","sourceRoot":"","sources":["../../src/contexts/StoreContext.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,YAAY,oJAA6D,CAAC;AAEhF,eAAO,MAAM,QAAQ,qJAAwB,CAAC;AAC9C,eAAe,YAAY,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useColorModeClass.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useColorModeClass.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..7053d2c369948d2d445ed80b9602e5ec2003300f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useColorModeClass.d.ts @@ -0,0 +1,9 @@ +import type { ColorMode, ColorModeClass } from '@xyflow/system'; +/** + * Hook for receiving the current color mode class 'dark' or 'light'. + * + * @internal + * @param colorMode - The color mode to use ('dark', 'light' or 'system') + */ +export declare function useColorModeClass(colorMode: ColorMode): ColorModeClass; +//# sourceMappingURL=useColorModeClass.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useColorModeClass.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useColorModeClass.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..630898fb80b4bc9a9c751deb530ca874160abaef --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useColorModeClass.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useColorModeClass.d.ts","sourceRoot":"","sources":["../../src/hooks/useColorModeClass.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAUhE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,cAAc,CAuBtE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useConnection.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useConnection.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..13d3f7c71c55811d71fb9b40c0c67c4e2ec3f917 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useConnection.d.ts @@ -0,0 +1,33 @@ +import { ConnectionState } from '@xyflow/system'; +import type { InternalNode, Node } from '../types'; +/** + * The `useConnection` hook returns the current connection when there is an active + * connection interaction. If no connection interaction is active, it returns null + * for every property. A typical use case for this hook is to colorize handles + * based on a certain condition (e.g. if the connection is valid or not). + * + * @public + * @param connectionSelector - An optional selector function used to extract a slice of the + * `ConnectionState` data. Using a selector can prevent component re-renders where data you don't + * otherwise care about might change. If a selector is not provided, the entire `ConnectionState` + * object is returned unchanged. + * @example + * + * ```tsx + *import { useConnection } from '@xyflow/react'; + * + *function App() { + * const connection = useConnection(); + * + * return ( + *
{connection ? `Someone is trying to make a connection from ${connection.fromNode} to this one.` : 'There are currently no incoming connections!'} + * + *
+ * ); + * } + * ``` + * + * @returns ConnectionState + */ +export declare function useConnection>>(connectionSelector?: (connection: ConnectionState>) => SelectorReturn): SelectorReturn; +//# sourceMappingURL=useConnection.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useConnection.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useConnection.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..4e00752120e7a5fc670e0d4e8d26c3a7df449a1f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useConnection.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useConnection.d.ts","sourceRoot":"","sources":["../../src/hooks/useConnection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAwB,MAAM,gBAAgB,CAAC;AAGvE,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAkB,MAAM,UAAU,CAAC;AAqBnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,aAAa,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,cAAc,GAAG,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAClH,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,cAAc,GAC3F,cAAc,CAGhB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useDrag.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useDrag.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..dc85f00c944862e9ff323788cdb22134c28879c4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useDrag.d.ts @@ -0,0 +1,18 @@ +import { type RefObject } from 'react'; +type UseDragParams = { + nodeRef: RefObject; + disabled?: boolean; + noDragClassName?: string; + handleSelector?: string; + nodeId?: string; + isSelectable?: boolean; + nodeClickDistance?: number; +}; +/** + * Hook for calling XYDrag helper from @xyflow/system. + * + * @internal + */ +export declare function useDrag({ nodeRef, disabled, noDragClassName, handleSelector, nodeId, isSelectable, nodeClickDistance, }: UseDragParams): boolean; +export {}; +//# sourceMappingURL=useDrag.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useDrag.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useDrag.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..a1b151e857a7b2f3f3cc565a62cf6f9cc61350b9 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useDrag.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useDrag.d.ts","sourceRoot":"","sources":["../../src/hooks/useDrag.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAMpE,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,EACtB,OAAO,EACP,QAAgB,EAChB,eAAe,EACf,cAAc,EACd,MAAM,EACN,YAAY,EACZ,iBAAiB,GAClB,EAAE,aAAa,WAiDf"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useEdges.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useEdges.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..dd8579f9f4ff49bcdfcfad2827442ff0df4b588d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useEdges.d.ts @@ -0,0 +1,21 @@ +import type { Edge } from '../types'; +/** + * This hook returns an array of the current edges. Components that use this hook + * will re-render **whenever any edge changes**. + * + * @public + * @returns An array of all edges currently in the flow. + * + * @example + * ```tsx + *import { useEdges } from '@xyflow/react'; + * + *export default function () { + * const edges = useEdges(); + * + * return
There are currently {edges.length} edges!
; + *} + *``` + */ +export declare function useEdges(): EdgeType[]; +//# sourceMappingURL=useEdges.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useEdges.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useEdges.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..914f004394a6a1467bb0ef079a889d2fe9786b12 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useEdges.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useEdges.d.ts","sourceRoot":"","sources":["../../src/hooks/useEdges.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAkB,MAAM,UAAU,CAAC;AAIrD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,CAInE"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useGlobalKeyHandler.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useGlobalKeyHandler.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..619d3e39b001c37a0e07bd90ac22386252c4c648 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useGlobalKeyHandler.d.ts @@ -0,0 +1,11 @@ +import type { KeyCode } from '@xyflow/system'; +/** + * Hook for handling global key events. + * + * @internal + */ +export declare function useGlobalKeyHandler({ deleteKeyCode, multiSelectionKeyCode, }: { + deleteKeyCode: KeyCode | null; + multiSelectionKeyCode: KeyCode | null; +}): void; +//# sourceMappingURL=useGlobalKeyHandler.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useGlobalKeyHandler.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useGlobalKeyHandler.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..573f15bb9324c6516842ece3a4bd183575a7b7a2 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useGlobalKeyHandler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useGlobalKeyHandler.d.ts","sourceRoot":"","sources":["../../src/hooks/useGlobalKeyHandler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAW9C;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,aAAa,EACb,qBAAqB,GACtB,EAAE;IACD,aAAa,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,qBAAqB,EAAE,OAAO,GAAG,IAAI,CAAC;CACvC,GAAG,IAAI,CAkBP"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useHandleConnections.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useHandleConnections.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..33231ca53ef86e174ee56674afbaab6861d3327e --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useHandleConnections.d.ts @@ -0,0 +1,23 @@ +import { Connection, HandleConnection, HandleType } from '@xyflow/system'; +type UseHandleConnectionsParams = { + /** What type of handle connections do you want to observe? */ + type: HandleType; + /** The handle id (this is only needed if the node has multiple handles of the same type). */ + id?: string | null; + /** If node id is not provided, the node id from the `NodeIdContext` is used. */ + nodeId?: string; + /** Gets called when a connection is established. */ + onConnect?: (connections: Connection[]) => void; + /** Gets called when a connection is removed. */ + onDisconnect?: (connections: Connection[]) => void; +}; +/** + * Hook to check if a is connected to another and get the connections. + * + * @public + * @deprecated Use `useNodeConnections` instead. + * @returns An array with handle connections. + */ +export declare function useHandleConnections({ type, id, nodeId, onConnect, onDisconnect, }: UseHandleConnectionsParams): HandleConnection[]; +export {}; +//# sourceMappingURL=useHandleConnections.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useHandleConnections.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useHandleConnections.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..43d849a4f76a9fc9e2262d62e109b8eb925d763a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useHandleConnections.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useHandleConnections.d.ts","sourceRoot":"","sources":["../../src/hooks/useHandleConnections.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,UAAU,EAGX,MAAM,gBAAgB,CAAC;AAKxB,KAAK,0BAA0B,GAAG;IAChC,8DAA8D;IAC9D,IAAI,EAAE,UAAU,CAAC;IACjB,6FAA6F;IAC7F,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAChD,gDAAgD;IAChD,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;CACpD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,EAAE,EACF,MAAM,EACN,SAAS,EACT,YAAY,GACb,EAAE,0BAA0B,GAAG,gBAAgB,EAAE,CA2BjD"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useInternalNode.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useInternalNode.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f661522fa65e6ce39d62137d15e810ea1043631f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useInternalNode.d.ts @@ -0,0 +1,30 @@ +import type { InternalNode, Node } from '../types'; +/** + * This hook returns the internal representation of a specific node. + * Components that use this hook will re-render **whenever the node changes**, + * including when a node is selected or moved. + * + * @public + * @param id - The ID of a node you want to observe. + * @returns The `InternalNode` object for the node with the given ID. + * + * @example + * ```tsx + *import { useInternalNode } from '@xyflow/react'; + * + *export default function () { + * const internalNode = useInternalNode('node-1'); + * const absolutePosition = internalNode.internals.positionAbsolute; + * + * return ( + *
+ * The absolute position of the node is at: + *

x: {absolutePosition.x}

+ *

y: {absolutePosition.y}

+ *
+ * ); + *} + *``` + */ +export declare function useInternalNode(id: string): InternalNode | undefined; +//# sourceMappingURL=useInternalNode.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useInternalNode.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useInternalNode.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..4688719c3f20d9b6255a59c2783fd0d1a68126aa --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useInternalNode.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useInternalNode.d.ts","sourceRoot":"","sources":["../../src/hooks/useInternalNode.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,eAAe,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,SAAS,CAO5G"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useIsomorphicLayoutEffect.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useIsomorphicLayoutEffect.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..5c1131bbc26c3a8b36c28031b9001b83bd370927 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useIsomorphicLayoutEffect.d.ts @@ -0,0 +1,3 @@ +import { useEffect } from 'react'; +export declare const useIsomorphicLayoutEffect: typeof useEffect; +//# sourceMappingURL=useIsomorphicLayoutEffect.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useIsomorphicLayoutEffect.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useIsomorphicLayoutEffect.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..073e9973f0916b251721d8d9332fd47c86ddef4b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useIsomorphicLayoutEffect.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useIsomorphicLayoutEffect.d.ts","sourceRoot":"","sources":["../../src/hooks/useIsomorphicLayoutEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,OAAO,CAAC;AAGnD,eAAO,MAAM,yBAAyB,kBAA8D,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useKeyPress.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useKeyPress.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..63cd82522cd6637518bebb35ecd12a8dc737236d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useKeyPress.d.ts @@ -0,0 +1,53 @@ +import { type KeyCode } from '@xyflow/system'; +export type UseKeyPressOptions = { + /** + * Listen to key presses on a specific element. + * @default document + */ + target?: Window | Document | HTMLElement | ShadowRoot | null; + /** + * You can use this flag to prevent triggering the key press hook when an input field is focused. + * @default true + */ + actInsideInputWithModifier?: boolean; + preventDefault?: boolean; +}; +/** + * This hook lets you listen for specific key codes and tells you whether they are + * currently pressed or not. + * + * @public + * @param options - Options + * + * @example + * ```tsx + *import { useKeyPress } from '@xyflow/react'; + * + *export default function () { + * const spacePressed = useKeyPress('Space'); + * const cmdAndSPressed = useKeyPress(['Meta+s', 'Strg+s']); + * + * return ( + *
+ * {spacePressed &&

Space pressed!

} + * {cmdAndSPressed &&

Cmd + S pressed!

} + *
+ * ); + *} + *``` + */ +export declare function useKeyPress( +/** + * The key code (string or array of strings) specifies which key(s) should trigger + * an action. + * + * A **string** can represent: + * - A **single key**, e.g. `'a'` + * - A **key combination**, using `'+'` to separate keys, e.g. `'a+d'` + * + * An **array of strings** represents **multiple possible key inputs**. For example, `['a', 'd+s']` + * means the user can press either the single key `'a'` or the combination of `'d'` and `'s'`. + * @default null + */ +keyCode?: KeyCode | null, options?: UseKeyPressOptions): boolean; +//# sourceMappingURL=useKeyPress.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useKeyPress.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useKeyPress.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..347fb0f89a862b75eb9c43577f03fbe0ec283a5e --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useKeyPress.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"useKeyPress.d.ts","sourceRoot":"","sources":["../../src/hooks/useKeyPress.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAM9D,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC;IAC7D;;;OAGG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAIF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,WAAW;AACzB;;;;;;;;;;;GAWG;AACH,OAAO,GAAE,OAAO,GAAG,IAAW,EAC9B,OAAO,GAAE,kBAA6E,GACrF,OAAO,CAuGT"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useMoveSelectedNodes.d.ts b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useMoveSelectedNodes.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..24389ec68c372b172b7a63ad78d587d5f7adb18f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/hooks/useMoveSelectedNodes.d.ts @@ -0,0 +1,12 @@ +import { type XYPosition } from '@xyflow/system'; +/** + * Hook for updating node positions by passing a direction and factor + * + * @internal + * @returns function for updating node positions + */ +export declare function useMoveSelectedNodes(): (params: { + direction: XYPosition; + factor: number; +}) => void; +//# sourceMappingURL=useMoveSelectedNodes.d.ts.map \ No newline at end of file