diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.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.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/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/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/umd/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/umd/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/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/umd/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/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/umd/index.js new file mode 100644 index 0000000000000000000000000000000000000000..5e9e489ed46c96543ab596d53a65638fcdb89a20 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/index.js @@ -0,0 +1,10 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react/jsx-runtime"),require("react"),require("react-dom")):"function"==typeof define&&define.amd?define(["exports","react/jsx-runtime","react","react-dom"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ReactFlow={},e.jsxRuntime,e.React,e.ReactDOM)}(this,function(e,t,n,o){"use strict";function r(e){if("string"==typeof e||"number"==typeof e)return""+e;let t="";if(Array.isArray(e))for(let n,o=0;o{}};function a(){for(var e,t=0,n=arguments.length,o={};t=0&&(t=e.slice(n+1),e=e.slice(0,n)),e&&!o.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:t}})),a=-1,s=i.length;if(!(arguments.length<2)){if(null!=t&&"function"!=typeof t)throw new Error("invalid callback: "+t);for(;++a0)for(var n,o,r=new Array(n),i=0;i=0&&"xmlns"!==(t=e.slice(0,n))&&(e=e.slice(n+1)),d.hasOwnProperty(t)?{space:d[t],local:e}:e}function f(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===u&&t.documentElement.namespaceURI===u?t.createElement(e):t.createElementNS(n,e)}}function g(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function p(e){var t=h(e);return(t.local?g:f)(t)}function m(){}function y(e){return null==e?m:function(){return this.querySelector(e)}}function v(){return[]}function x(e){return null==e?v:function(){return this.querySelectorAll(e)}}function w(e){return function(){return null==(t=e.apply(this,arguments))?[]:Array.isArray(t)?t:Array.from(t);var t}}function b(e){return function(){return this.matches(e)}}function S(e){return function(t){return t.matches(e)}}var C=Array.prototype.find;function E(){return this.firstElementChild}var M=Array.prototype.filter;function N(){return Array.from(this.children)}function k(e){return new Array(e.length)}function _(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}function P(e,t,n,o,r,i){for(var a,s=0,c=t.length,l=i.length;st?1:e>=t?0:NaN}function D(e){return function(){this.removeAttribute(e)}}function R(e){return function(){this.removeAttributeNS(e.space,e.local)}}function L(e,t){return function(){this.setAttribute(e,t)}}function $(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function B(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttribute(e):this.setAttribute(e,n)}}function T(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function V(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function j(e){return function(){this.style.removeProperty(e)}}function H(e,t,n){return function(){this.style.setProperty(e,t,n)}}function Z(e,t,n){return function(){var o=t.apply(this,arguments);null==o?this.style.removeProperty(e):this.style.setProperty(e,o,n)}}function X(e,t){return e.style.getPropertyValue(t)||V(e).getComputedStyle(e,null).getPropertyValue(t)}function Y(e){return function(){delete this[e]}}function F(e,t){return function(){this[e]=t}}function W(e,t){return function(){var n=t.apply(this,arguments);null==n?delete this[e]:this[e]=n}}function K(e){return e.trim().split(/^|\s+/)}function G(e){return e.classList||new q(e)}function q(e){this._node=e,this._names=K(e.getAttribute("class")||"")}function U(e,t){for(var n=G(e),o=-1,r=t.length;++o=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};var xe=[null];function we(e,t){this._groups=e,this._parents=t}function be(){return new we([[document.documentElement]],xe)}function Se(e){return"string"==typeof e?new we([[document.querySelector(e)]],[document.documentElement]):new we([[e]],xe)}function Ce(e,t){if(e=function(e){let t;for(;t=e.sourceEvent;)e=t;return e}(e),void 0===t&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var o=n.createSVGPoint();return o.x=e.clientX,o.y=e.clientY,[(o=o.matrixTransform(t.getScreenCTM().inverse())).x,o.y]}if(t.getBoundingClientRect){var r=t.getBoundingClientRect();return[e.clientX-r.left-t.clientLeft,e.clientY-r.top-t.clientTop]}}return[e.pageX,e.pageY]}we.prototype=be.prototype={constructor:we,select:function(e){"function"!=typeof e&&(e=y(e));for(var t=this._groups,n=t.length,o=new Array(n),r=0;r=b&&(b=w+1);!(x=y[b])&&++b=0;)(o=r[i])&&(a&&4^o.compareDocumentPosition(a)&&a.parentNode.insertBefore(o,a),a=o);return this},sort:function(e){function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}e||(e=A);for(var n=this._groups,o=n.length,r=new Array(o),i=0;i1?this.each((null==t?j:"function"==typeof t?Z:H)(e,t,null==n?"":n)):X(this.node(),e)},property:function(e,t){return arguments.length>1?this.each((null==t?Y:"function"==typeof t?W:F)(e,t)):this.node()[e]},classed:function(e,t){var n=K(e+"");if(arguments.length<2){for(var o=G(this.node()),r=-1,i=n.length;++r=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}(e+""),a=i.length;if(!(arguments.length<2)){for(s=t?pe:ge,o=0;o()=>e;function Ie(e,{sourceEvent:t,subject:n,target:o,identifier:r,active:i,x:a,y:s,dx:c,dy:l,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:o,enumerable:!0,configurable:!0},identifier:{value:r,enumerable:!0,configurable:!0},active:{value:i,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:u}})}function Oe(e){return!e.ctrlKey&&!e.button}function Ae(){return this.parentNode}function De(e,t){return null==t?{x:e.x,y:e.y}:t}function Re(){return navigator.maxTouchPoints||"ontouchstart"in this}function Le(){var e,t,n,o,r=Oe,i=Ae,s=De,c=Re,l={},u=a("start","drag","end"),d=0,h=0;function f(e){e.on("mousedown.drag",g).filter(c).on("touchstart.drag",y).on("touchmove.drag",v,Ee).on("touchend.drag touchcancel.drag",x).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function g(a,s){if(!o&&r.call(this,a,s)){var c=w(this,i.call(this,a,s),a,s,"mouse");c&&(Se(a.view).on("mousemove.drag",p,Me).on("mouseup.drag",m,Me),_e(a.view),Ne(a),n=!1,e=a.clientX,t=a.clientY,c("start",a))}}function p(o){if(ke(o),!n){var r=o.clientX-e,i=o.clientY-t;n=r*r+i*i>h}l.mouse("drag",o)}function m(e){Se(e.view).on("mousemove.drag mouseup.drag",null),Pe(e.view,n),ke(e),l.mouse("end",e)}function y(e,t){if(r.call(this,e,t)){var n,o,a=e.changedTouches,s=i.call(this,e,t),c=a.length;for(n=0;n>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===n?ot(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===n?ot(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=Fe.exec(e))?new it(t[1],t[2],t[3],1):(t=We.exec(e))?new it(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=Ke.exec(e))?ot(t[1],t[2],t[3],t[4]):(t=Ge.exec(e))?ot(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=qe.exec(e))?dt(t[1],t[2]/100,t[3]/100,1):(t=Ue.exec(e))?dt(t[1],t[2]/100,t[3]/100,t[4]):Qe.hasOwnProperty(e)?nt(Qe[e]):"transparent"===e?new it(NaN,NaN,NaN,0):null}function nt(e){return new it(e>>16&255,e>>8&255,255&e,1)}function ot(e,t,n,o){return o<=0&&(e=t=n=NaN),new it(e,t,n,o)}function rt(e,t,n,o){return 1===arguments.length?((r=e)instanceof Te||(r=tt(r)),r?new it((r=r.rgb()).r,r.g,r.b,r.opacity):new it):new it(e,t,n,null==o?1:o);var r}function it(e,t,n,o){this.r=+e,this.g=+t,this.b=+n,this.opacity=+o}function at(){return`#${ut(this.r)}${ut(this.g)}${ut(this.b)}`}function st(){const e=ct(this.opacity);return`${1===e?"rgb(":"rgba("}${lt(this.r)}, ${lt(this.g)}, ${lt(this.b)}${1===e?")":`, ${e})`}`}function ct(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function lt(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function ut(e){return((e=lt(e))<16?"0":"")+e.toString(16)}function dt(e,t,n,o){return o<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new ft(e,t,n,o)}function ht(e){if(e instanceof ft)return new ft(e.h,e.s,e.l,e.opacity);if(e instanceof Te||(e=tt(e)),!e)return new ft;if(e instanceof ft)return e;var t=(e=e.rgb()).r/255,n=e.g/255,o=e.b/255,r=Math.min(t,n,o),i=Math.max(t,n,o),a=NaN,s=i-r,c=(i+r)/2;return s?(a=t===i?(n-o)/s+6*(n0&&c<1?0:a,new ft(a,s,c,e.opacity)}function ft(e,t,n,o){this.h=+e,this.s=+t,this.l=+n,this.opacity=+o}function gt(e){return(e=(e||0)%360)<0?e+360:e}function pt(e){return Math.max(0,Math.min(1,e||0))}function mt(e,t,n){return 255*(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)}$e(Te,tt,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:Je,formatHex:Je,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return ht(this).formatHsl()},formatRgb:et,toString:et}),$e(it,rt,Be(Te,{brighter(e){return e=null==e?je:Math.pow(je,e),new it(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=null==e?Ve:Math.pow(Ve,e),new it(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new it(lt(this.r),lt(this.g),lt(this.b),ct(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:at,formatHex:at,formatHex8:function(){return`#${ut(this.r)}${ut(this.g)}${ut(this.b)}${ut(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:st,toString:st})),$e(ft,function(e,t,n,o){return 1===arguments.length?ht(e):new ft(e,t,n,null==o?1:o)},Be(Te,{brighter(e){return e=null==e?je:Math.pow(je,e),new ft(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=null==e?Ve:Math.pow(Ve,e),new ft(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,o=n+(n<.5?n:1-n)*t,r=2*n-o;return new it(mt(e>=240?e-240:e+120,r,o),mt(e,r,o),mt(e<120?e+240:e-120,r,o),this.opacity)},clamp(){return new ft(gt(this.h),pt(this.s),pt(this.l),ct(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=ct(this.opacity);return`${1===e?"hsl(":"hsla("}${gt(this.h)}, ${100*pt(this.s)}%, ${100*pt(this.l)}%${1===e?")":`, ${e})`}`}}));var yt=e=>()=>e;function vt(e){return 1===(e=+e)?xt:function(t,n){return n-t?function(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(o){return Math.pow(e+o*t,n)}}(t,n,e):yt(isNaN(t)?n:t)}}function xt(e,t){var n=t-e;return n?function(e,t){return function(n){return e+n*t}}(e,n):yt(isNaN(e)?t:e)}var wt=function e(t){var n=vt(t);function o(e,t){var o=n((e=rt(e)).r,(t=rt(t)).r),r=n(e.g,t.g),i=n(e.b,t.b),a=xt(e.opacity,t.opacity);return function(t){return e.r=o(t),e.g=r(t),e.b=i(t),e.opacity=a(t),e+""}}return o.gamma=e,o}(1);function bt(e,t){t||(t=[]);var n,o=e?Math.min(t.length,e.length):0,r=t.slice();return function(i){for(n=0;ni&&(r=t.slice(i,r),s[a]?s[a]+=r:s[++a]=r),(n=n[0])===(o=o[0])?s[a]?s[a]+=o:s[++a]=o:(s[++a]=null,c.push({i:a,x:Et(n,o)})),i=kt.lastIndex;return i180?t+=360:t-e>180&&(e+=360),i.push({i:n.push(r(n)+"rotate(",null,o)-2,x:Et(e,t)})):t&&n.push(r(n)+"rotate("+t+o)}(i.rotate,a.rotate,s,c),function(e,t,n,i){e!==t?i.push({i:n.push(r(n)+"skewX(",null,o)-2,x:Et(e,t)}):t&&n.push(r(n)+"skewX("+t+o)}(i.skewX,a.skewX,s,c),function(e,t,n,o,i,a){if(e!==n||t!==o){var s=i.push(r(i)+"scale(",null,",",null,")");a.push({i:s-4,x:Et(e,n)},{i:s-2,x:Et(t,o)})}else 1===n&&1===o||i.push(r(i)+"scale("+n+","+o+")")}(i.scaleX,i.scaleY,a.scaleX,a.scaleY,s,c),i=a=null,function(e){for(var t,n=-1,o=c.length;++n=0&&t._call.call(void 0,e),t=t._next;--jt}()}finally{jt=0,function(){var e,t,n=Bt,o=1/0;for(;n;)n._call?(o>n._time&&(o=n._time),e=n,n=n._next):(t=n._next,n._next=null,n=e?e._next=t:Bt=t);Tt=e,tn(o)}(),Yt=0}}function en(){var e=Wt.now(),t=e-Xt;t>1e3&&(Ft-=t,Xt=e)}function tn(e){jt||(Ht&&(Ht=clearTimeout(Ht)),e-Yt>24?(e<1/0&&(Ht=setTimeout(Jt,e-Wt.now()-Ft)),Zt&&(Zt=clearInterval(Zt))):(Zt||(Xt=Wt.now(),Zt=setInterval(en,1e3)),jt=1,Kt(Jt)))}function nn(e,t,n){var o=new Ut;return t=null==t?0:+t,o.restart(n=>{o.stop(),e(n+t)},t,n),o}Ut.prototype=Qt.prototype={constructor:Ut,restart:function(e,t,n){if("function"!=typeof e)throw new TypeError("callback is not a function");n=(null==n?Gt():+n)+(null==t?0:+t),this._next||Tt===this||(Tt?Tt._next=this:Bt=this,Tt=this),this._call=e,this._time=n,tn()},stop:function(){this._call&&(this._call=null,this._time=1/0,tn())}};var on=a("start","end","cancel","interrupt"),rn=[];function an(e,t,n,o,r,i){var a=e.__transition;if(a){if(n in a)return}else e.__transition={};!function(e,t,n){var o,r=e.__transition;function i(e){n.state=1,n.timer.restart(a,n.delay,n.time),n.delay<=e&&a(e-n.delay)}function a(i){var l,u,d,h;if(1!==n.state)return c();for(l in r)if((h=r[l]).name===n.name){if(3===h.state)return nn(a);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",e,e.__data__,h.index,h.group),delete r[l]):+l0)throw new Error("too late; already scheduled");return n}function cn(e,t){var n=ln(e,t);if(n.state>3)throw new Error("too late; already running");return n}function ln(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function un(e,t){var n,o,r,i=e.__transition,a=!0;if(i){for(r in t=null==t?null:t+"",i)(n=i[r]).name===t?(o=n.state>2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(o?"interrupt":"cancel",e,e.__data__,n.index,n.group),delete i[r]):a=!1;a&&delete e.__transition}}function dn(e,t){var n,o;return function(){var r=cn(this,e),i=r.tween;if(i!==n)for(var a=0,s=(o=n=i).length;a=0&&(e=e.slice(0,t)),!e||"start"===e})}(t)?sn:cn;return function(){var a=i(this,e),s=a.on;s!==o&&(r=(o=s).copy()).on(t,n),a.on=r}}(n,e,t))},attr:function(e,t){var n=h(e),o="transform"===n?Lt:gn;return this.attrTween(e,"function"==typeof t?(n.local?wn:xn)(n,o,fn(this,"attr."+e,t)):null==t?(n.local?mn:pn)(n):(n.local?vn:yn)(n,o,t))},attrTween:function(e,t){var n="attr."+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;var o=h(e);return this.tween(n,(o.local?bn:Sn)(o,t))},style:function(e,t,n){var o="transform"==(e+="")?Rt:gn;return null==t?this.styleTween(e,function(e,t){var n,o,r;return function(){var i=X(this,e),a=(this.style.removeProperty(e),X(this,e));return i===a?null:i===n&&a===o?r:r=t(n=i,o=a)}}(e,o)).on("end.style."+e,_n(e)):"function"==typeof t?this.styleTween(e,function(e,t,n){var o,r,i;return function(){var a=X(this,e),s=n(this),c=s+"";return null==s&&(this.style.removeProperty(e),c=s=X(this,e)),a===c?null:a===o&&c===r?i:(r=c,i=t(o=a,s))}}(e,o,fn(this,"style."+e,t))).each(function(e,t){var n,o,r,i,a="style."+t,s="end."+a;return function(){var c=cn(this,e),l=c.on,u=null==c.value[a]?i||(i=_n(t)):void 0;l===n&&r===u||(o=(n=l).copy()).on(s,r=u),c.on=o}}(this._id,e)):this.styleTween(e,function(e,t,n){var o,r,i=n+"";return function(){var a=X(this,e);return a===i?null:a===o?r:r=t(o=a,n)}}(e,o,t),n).on("end.style."+e,null)},styleTween:function(e,t,n){var o="style."+(e+="");if(arguments.length<2)return(o=this.tween(o))&&o._value;if(null==t)return this.tween(o,null);if("function"!=typeof t)throw new Error;return this.tween(o,function(e,t,n){var o,r;function i(){var i=t.apply(this,arguments);return i!==r&&(o=(r=i)&&function(e,t,n){return function(o){this.style.setProperty(e,t.call(this,o),n)}}(e,i,n)),o}return i._value=t,i}(e,t,null==n?"":n))},text:function(e){return this.tween("text","function"==typeof e?function(e){return function(){var t=e(this);this.textContent=null==t?"":t}}(fn(this,"text",e)):function(e){return function(){this.textContent=e}}(null==e?"":e+""))},textTween:function(e){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(null==e)return this.tween(t,null);if("function"!=typeof e)throw new Error;return this.tween(t,function(e){var t,n;function o(){var o=e.apply(this,arguments);return o!==n&&(t=(n=o)&&function(e){return function(t){this.textContent=e.call(this,t)}}(o)),t}return o._value=e,o}(e))},remove:function(){return this.on("end.remove",function(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}(this._id))},tween:function(e,t){var n=this._id;if(e+="",arguments.length<2){for(var o,r=ln(this.node(),n).tween,i=0,a=r.length;i()=>e;function Ln(e,{sourceEvent:t,target:n,transform:o,dispatch:r}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:o,enumerable:!0,configurable:!0},_:{value:r}})}function $n(e,t,n){this.k=e,this.x=t,this.y=n}$n.prototype={constructor:$n,scale:function(e){return 1===e?this:new $n(this.k*e,this.x,this.y)},translate:function(e,t){return 0===e&0===t?this:new $n(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Bn=new $n(1,0,0);function Tn(e){for(;!e.__zoom;)if(!(e=e.parentNode))return Bn;return e.__zoom}function Vn(e){e.stopImmediatePropagation()}function jn(e){e.preventDefault(),e.stopImmediatePropagation()}function Hn(e){return!(e.ctrlKey&&"wheel"!==e.type||e.button)}function Zn(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e).hasAttribute("viewBox")?[[(e=e.viewBox.baseVal).x,e.y],[e.x+e.width,e.y+e.height]]:[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]:[[0,0],[e.clientWidth,e.clientHeight]]}function Xn(){return this.__zoom||Bn}function Yn(e){return-e.deltaY*(1===e.deltaMode?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Fn(){return navigator.maxTouchPoints||"ontouchstart"in this}function Wn(e,t,n){var o=e.invertX(t[0][0])-n[0][0],r=e.invertX(t[1][0])-n[1][0],i=e.invertY(t[0][1])-n[0][1],a=e.invertY(t[1][1])-n[1][1];return e.translate(r>o?(o+r)/2:Math.min(0,o)||Math.max(0,r),a>i?(i+a)/2:Math.min(0,i)||Math.max(0,a))}function Kn(){var e,t,n,o=Hn,r=Zn,i=Wn,s=Yn,c=Fn,l=[0,1/0],u=[[-1/0,-1/0],[1/0,1/0]],d=250,h=Vt,f=a("start","zoom","end"),g=0,p=10;function m(e){e.property("__zoom",Xn).on("wheel.zoom",C,{passive:!1}).on("mousedown.zoom",E).on("dblclick.zoom",M).filter(c).on("touchstart.zoom",N).on("touchmove.zoom",k).on("touchend.zoom touchcancel.zoom",_).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function y(e,t){return(t=Math.max(l[0],Math.min(l[1],t)))===e.k?e:new $n(t,e.x,e.y)}function v(e,t,n){var o=t[0]-n[0]*e.k,r=t[1]-n[1]*e.k;return o===e.x&&r===e.y?e:new $n(e.k,o,r)}function x(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function w(e,t,n,o){e.on("start.zoom",function(){b(this,arguments).event(o).start()}).on("interrupt.zoom end.zoom",function(){b(this,arguments).event(o).end()}).tween("zoom",function(){var e=this,i=arguments,a=b(e,i).event(o),s=r.apply(e,i),c=null==n?x(s):"function"==typeof n?n.apply(e,i):n,l=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),u=e.__zoom,d="function"==typeof t?t.apply(e,i):t,f=h(u.invert(c).concat(l/u.k),d.invert(c).concat(l/d.k));return function(e){if(1===e)e=d;else{var t=f(e),n=l/t[2];e=new $n(n,c[0]-t[0]*n,c[1]-t[1]*n)}a.zoom(null,e)}})}function b(e,t,n){return!n&&e.__zooming||new S(e,t)}function S(e,t){this.that=e,this.args=t,this.active=0,this.sourceEvent=null,this.extent=r.apply(e,t),this.taps=0}function C(e,...t){if(o.apply(this,arguments)){var n=b(this,t).event(e),r=this.__zoom,a=Math.max(l[0],Math.min(l[1],r.k*Math.pow(2,s.apply(this,arguments)))),c=Ce(e);if(n.wheel)n.mouse[0][0]===c[0]&&n.mouse[0][1]===c[1]||(n.mouse[1]=r.invert(n.mouse[0]=c)),clearTimeout(n.wheel);else{if(r.k===a)return;n.mouse=[c,r.invert(c)],un(this),n.start()}jn(e),n.wheel=setTimeout(function(){n.wheel=null,n.end()},150),n.zoom("mouse",i(v(y(r,a),n.mouse[0],n.mouse[1]),n.extent,u))}}function E(e,...t){if(!n&&o.apply(this,arguments)){var r=e.currentTarget,a=b(this,t,!0).event(e),s=Se(e.view).on("mousemove.zoom",function(e){if(jn(e),!a.moved){var t=e.clientX-l,n=e.clientY-d;a.moved=t*t+n*n>g}a.event(e).zoom("mouse",i(v(a.that.__zoom,a.mouse[0]=Ce(e,r),a.mouse[1]),a.extent,u))},!0).on("mouseup.zoom",function(e){s.on("mousemove.zoom mouseup.zoom",null),Pe(e.view,a.moved),jn(e),a.event(e).end()},!0),c=Ce(e,r),l=e.clientX,d=e.clientY;_e(e.view),Vn(e),a.mouse=[c,this.__zoom.invert(c)],un(this),a.start()}}function M(e,...t){if(o.apply(this,arguments)){var n=this.__zoom,a=Ce(e.changedTouches?e.changedTouches[0]:e,this),s=n.invert(a),c=n.k*(e.shiftKey?.5:2),l=i(v(y(n,c),a,s),r.apply(this,t),u);jn(e),d>0?Se(this).transition().duration(d).call(w,l,a,e):Se(this).call(m.transform,l,a,e)}}function N(n,...r){if(o.apply(this,arguments)){var i,a,s,c,l=n.touches,u=l.length,d=b(this,r,n.changedTouches.length===u).event(n);for(Vn(n),a=0;a`Seems like you have not used ${"svelte"===e?"SvelteFlowProvider":"ReactFlowProvider"} as an ancestor. Help: https://${e}flow.dev/error#001`,qn=e=>`Node type "${e}" not found. Using fallback type "default".`,Un=()=>"The parent container needs a width and a height to render the graph.",Qn=()=>"Only child nodes can use a parent extent.",Jn=()=>"Can't create edge. An edge needs a source and a target.",eo=e=>`The old edge with id=${e} does not exist.`,to=e=>`Marker type "${e}" doesn't exist.`,no=(e,{id:t,sourceHandle:n,targetHandle:o})=>`Couldn't create edge for ${e} handle id: "${"source"===e?n:o}", edge id: ${t}.`,oo=()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",ro=e=>`Edge type "${e}" not found. Using fallback type "default".`,io=e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,ao=()=>"useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.",so=()=>"It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs.",co=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],lo=["Enter"," ","Escape"],uo={"node.a11yDescription.default":"Press enter or space to select a node. Press delete to remove it and escape to cancel.","node.a11yDescription.keyboardDisabled":"Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.","node.a11yDescription.ariaLiveMessage":({direction:e,x:t,y:n})=>`Moved selected node ${e}. New position, x: ${t}, y: ${n}`,"edge.a11yDescription.default":"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.","controls.ariaLabel":"Control Panel","controls.zoomIn.ariaLabel":"Zoom In","controls.zoomOut.ariaLabel":"Zoom Out","controls.fitView.ariaLabel":"Fit View","controls.interactive.ariaLabel":"Toggle Interactivity","minimap.ariaLabel":"Mini Map","handle.ariaLabel":"Handle"};var ho,fo,go;e.ConnectionMode=void 0,(ho=e.ConnectionMode||(e.ConnectionMode={})).Strict="strict",ho.Loose="loose",e.PanOnScrollMode=void 0,(fo=e.PanOnScrollMode||(e.PanOnScrollMode={})).Free="free",fo.Vertical="vertical",fo.Horizontal="horizontal",e.SelectionMode=void 0,(go=e.SelectionMode||(e.SelectionMode={})).Partial="partial",go.Full="full";const po={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null};var mo,yo,vo;e.ConnectionLineType=void 0,(mo=e.ConnectionLineType||(e.ConnectionLineType={})).Bezier="default",mo.Straight="straight",mo.Step="step",mo.SmoothStep="smoothstep",mo.SimpleBezier="simplebezier",e.MarkerType=void 0,(yo=e.MarkerType||(e.MarkerType={})).Arrow="arrow",yo.ArrowClosed="arrowclosed",e.Position=void 0,(vo=e.Position||(e.Position={})).Left="left",vo.Top="top",vo.Right="right",vo.Bottom="bottom";const xo={[e.Position.Left]:e.Position.Right,[e.Position.Right]:e.Position.Left,[e.Position.Top]:e.Position.Bottom,[e.Position.Bottom]:e.Position.Top};function wo(e,t){if(!e&&!t)return!0;if(!e||!t||e.size!==t.size)return!1;if(!e.size&&!t.size)return!0;for(const n of e.keys())if(!t.has(n))return!1;return!0}function bo(e,t,n){if(!n)return;const o=[];e.forEach((e,n)=>{t?.has(n)||o.push(e)}),o.length&&n(o)}function So(e){return null===e?null:e?"valid":"invalid"}const Co=e=>!!e&&"object"==typeof e&&"id"in e&&"source"in e&&"target"in e,Eo=e=>!!e&&"object"==typeof e&&"id"in e&&"internals"in e&&!("source"in e)&&!("target"in e),Mo=(e,t=[0,0])=>{const{width:n,height:o}=er(e),r=e.origin??t,i=n*r[0],a=o*r[1];return{x:e.position.x-i,y:e.position.y-a}},No=(e,t={nodeOrigin:[0,0]})=>{if(0===e.length)return{x:0,y:0,width:0,height:0};const n=e.reduce((e,n)=>{const o="string"==typeof n;let r=t.nodeLookup||o?void 0:n;t.nodeLookup&&(r=o?t.nodeLookup.get(n):Eo(n)?n:t.nodeLookup.get(n.id));const i=r?jo(r,t.nodeOrigin):{x:0,y:0,x2:0,y2:0};return $o(e,i)},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return To(n)},ko=(e,t={})=>{let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0},o=!1;return e.forEach(e=>{(void 0===t.filter||t.filter(e))&&(n=$o(n,jo(e)),o=!0)}),o?To(n):{x:0,y:0,width:0,height:0}},_o=(e,t,[n,o,r]=[0,0,1],i=!1,a=!1)=>{const s=(t.x-n)/r,c=(t.y-o)/r,l=t.width/r,u=t.height/r,d=[];for(const t of e.values()){const{measured:e,selectable:n=!0,hidden:o=!1}=t;if(a&&!n||o)continue;const r=e.width??t.width??t.initialWidth??0,h=e.height??t.height??t.initialHeight??0,{x:f,y:g}=t.internals.positionAbsolute,p=Zo(s,c,l,u,f,g,r,h),m=r*h,y=i&&p>0;(!t.internals.handleBounds||y||p>=m||t.dragging)&&d.push(t)}return d},Po=(e,t)=>{const n=new Set;return e.forEach(e=>{n.add(e.id)}),t.filter(e=>n.has(e.source)||n.has(e.target))};async function zo({nodes:e,width:t,height:n,panZoom:o,minZoom:r,maxZoom:i},a){if(0===e.size)return!0;const s=function(e,t){const n=new Map,o=t?.nodes?new Set(t.nodes.map(e=>e.id)):null;return e.forEach(e=>{let r;if(t?.includeHiddenNodes){const{width:t,height:n}=er(e);r=t>0&&n>0}else r=Boolean(e.measured.width&&e.measured.height&&!e.hidden);!r||o&&!o.has(e.id)||n.set(e.id,e)}),n}(e,a),c=ko(s),l=Uo(c,t,n,a?.minZoom??r,a?.maxZoom??i,a?.padding??.1);return await o.setViewport(l,{duration:a?.duration,ease:a?.ease,interpolate:a?.interpolate}),!0}function Io({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:o=[0,0],nodeExtent:r,onError:i}){const a=n.get(e),s=a.parentId?n.get(a.parentId):void 0,{x:c,y:l}=s?s.internals.positionAbsolute:{x:0,y:0},u=a.origin??o;let d=a.extent||r;if("parent"!==a.extent||a.expandParent)s&&Jo(a.extent)&&(d=[[a.extent[0][0]+c,a.extent[0][1]+l],[a.extent[1][0]+c,a.extent[1][1]+l]]);else if(s){const e=s.measured.width,t=s.measured.height;e&&t&&(d=[[c,l],[c+e,l+t]])}else i?.("005",Qn());const h=Jo(d)?Ao(t,d,a.measured):t;return void 0!==a.measured.width&&void 0!==a.measured.height||i?.("015",so()),{position:{x:h.x-c+(a.measured.width??0)*u[0],y:h.y-l+(a.measured.height??0)*u[1]},positionAbsolute:h}}const Oo=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),Ao=(e={x:0,y:0},t,n)=>({x:Oo(e.x,t[0][0],t[1][0]-(n?.width??0)),y:Oo(e.y,t[0][1],t[1][1]-(n?.height??0))});function Do(e,t,n){const{width:o,height:r}=er(n),{x:i,y:a}=n.internals.positionAbsolute;return Ao(e,[[i,a],[i+o,a+r]],t)}const Ro=(e,t,n)=>en?-Oo(Math.abs(e-n),1,t)/t:0,Lo=(e,t,n=15,o=40)=>[Ro(e.x,o,t.width-o)*n,Ro(e.y,o,t.height-o)*n],$o=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),Bo=({x:e,y:t,width:n,height:o})=>({x:e,y:t,x2:e+n,y2:t+o}),To=({x:e,y:t,x2:n,y2:o})=>({x:e,y:t,width:n-e,height:o-t}),Vo=(e,t=[0,0])=>{const{x:n,y:o}=Eo(e)?e.internals.positionAbsolute:Mo(e,t);return{x:n,y:o,width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}},jo=(e,t=[0,0])=>{const{x:n,y:o}=Eo(e)?e.internals.positionAbsolute:Mo(e,t);return{x:n,y:o,x2:n+(e.measured?.width??e.width??e.initialWidth??0),y2:o+(e.measured?.height??e.height??e.initialHeight??0)}},Ho=(e,t)=>To($o(Bo(e),Bo(t))),Zo=(e,t,n,o,r,i,a,s)=>{const c=Math.max(0,Math.min(e+n,r+a)-Math.max(e,r)),l=Math.max(0,Math.min(t+o,i+s)-Math.max(t,i));return Math.ceil(c*l)},Xo=(e,t)=>Zo(e.x,e.y,e.width,e.height,t.x,t.y,t.width,t.height),Yo=e=>Fo(e.width)&&Fo(e.height)&&Fo(e.x)&&Fo(e.y),Fo=e=>!isNaN(e)&&isFinite(e),Wo=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),Ko=({x:e,y:t},[n,o,r],i=!1,a=[1,1])=>{const s={x:(e-n)/r,y:(t-o)/r};return i?Wo(s,a):s},Go=({x:e,y:t},[n,o,r])=>({x:e*r+n,y:t*r+o});function qo(e,t){if("number"==typeof e)return Math.floor(.5*(t-t/(1+e)));if("string"==typeof e&&e.endsWith("px")){const t=parseFloat(e);if(!Number.isNaN(t))return Math.floor(t)}if("string"==typeof e&&e.endsWith("%")){const n=parseFloat(e);if(!Number.isNaN(n))return Math.floor(t*n*.01)}return console.error(`The padding value "${e}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}const Uo=(e,t,n,o,r,i)=>{const a=function(e,t,n){if("string"==typeof e||"number"==typeof e){const o=qo(e,n),r=qo(e,t);return{top:o,right:r,bottom:o,left:r,x:2*r,y:2*o}}if("object"==typeof e){const o=qo(e.top??e.y??0,n),r=qo(e.bottom??e.y??0,n),i=qo(e.left??e.x??0,t),a=qo(e.right??e.x??0,t);return{top:o,right:a,bottom:r,left:i,x:i+a,y:o+r}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}(i,t,n),s=(t-a.x)/e.width,c=(n-a.y)/e.height,l=Math.min(s,c),u=Oo(l,o,r),d=t/2-(e.x+e.width/2)*u,h=n/2-(e.y+e.height/2)*u,f=function(e,t,n,o,r,i){const{x:a,y:s}=Go(e,[t,n,o]),{x:c,y:l}=Go({x:e.x+e.width,y:e.y+e.height},[t,n,o]),u=r-c,d=i-l;return{left:Math.floor(a),top:Math.floor(s),right:Math.floor(u),bottom:Math.floor(d)}}(e,d,h,u,t,n),g=Math.min(f.left-a.left,0),p=Math.min(f.top-a.top,0);return{x:d-g+Math.min(f.right-a.right,0),y:h-p+Math.min(f.bottom-a.bottom,0),zoom:u}},Qo=()=>"undefined"!=typeof navigator&&navigator?.userAgent?.indexOf("Mac")>=0;function Jo(e){return null!=e&&"parent"!==e}function er(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function tr(e){return void 0!==(e.measured?.width??e.width??e.initialWidth)&&void 0!==(e.measured?.height??e.height??e.initialHeight)}function nr(e,t={width:0,height:0},n,o,r){const i={...e},a=o.get(n);if(a){const e=a.origin||r;i.x+=a.internals.positionAbsolute.x-(t.width??0)*e[0],i.y+=a.internals.positionAbsolute.y-(t.height??0)*e[1]}return i}function or(e,t){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}function rr(e){return{...uo,...e||{}}}function ir(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:o,containerBounds:r}){const{x:i,y:a}=dr(e),s=Ko({x:i-(r?.left??0),y:a-(r?.top??0)},o),{x:c,y:l}=n?Wo(s,t):s;return{xSnapped:c,ySnapped:l,...s}}const ar=e=>({width:e.offsetWidth,height:e.offsetHeight}),sr=e=>e?.getRootNode?.()||window?.document,cr=["INPUT","SELECT","TEXTAREA"];function lr(e){const t=e.composedPath?.()?.[0]||e.target;if(1!==t?.nodeType)return!1;return cr.includes(t.nodeName)||t.hasAttribute("contenteditable")||!!t.closest(".nokey")}const ur=e=>"clientX"in e,dr=(e,t)=>{const n=ur(e),o=n?e.clientX:e.touches?.[0].clientX,r=n?e.clientY:e.touches?.[0].clientY;return{x:o-(t?.left??0),y:r-(t?.top??0)}},hr=(e,t,n,o,r)=>{const i=t.querySelectorAll(`.${e}`);return i&&i.length?Array.from(i).map(t=>{const i=t.getBoundingClientRect();return{id:t.getAttribute("data-handleid"),type:e,nodeId:r,position:t.getAttribute("data-handlepos"),x:(i.left-n.left)/o,y:(i.top-n.top)/o,...ar(t)}}):null};function fr({sourceX:e,sourceY:t,targetX:n,targetY:o,sourceControlX:r,sourceControlY:i,targetControlX:a,targetControlY:s}){const c=.125*e+.375*r+.375*a+.125*n,l=.125*t+.375*i+.375*s+.125*o;return[c,l,Math.abs(c-e),Math.abs(l-t)]}function gr(e,t){return e>=0?.5*e:25*t*Math.sqrt(-e)}function pr({pos:t,x1:n,y1:o,x2:r,y2:i,c:a}){switch(t){case e.Position.Left:return[n-gr(n-r,a),o];case e.Position.Right:return[n+gr(r-n,a),o];case e.Position.Top:return[n,o-gr(o-i,a)];case e.Position.Bottom:return[n,o+gr(i-o,a)]}}function mr({sourceX:t,sourceY:n,sourcePosition:o=e.Position.Bottom,targetX:r,targetY:i,targetPosition:a=e.Position.Top,curvature:s=.25}){const[c,l]=pr({pos:o,x1:t,y1:n,x2:r,y2:i,c:s}),[u,d]=pr({pos:a,x1:r,y1:i,x2:t,y2:n,c:s}),[h,f,g,p]=fr({sourceX:t,sourceY:n,targetX:r,targetY:i,sourceControlX:c,sourceControlY:l,targetControlX:u,targetControlY:d});return[`M${t},${n} C${c},${l} ${u},${d} ${r},${i}`,h,f,g,p]}function yr({sourceX:e,sourceY:t,targetX:n,targetY:o}){const r=Math.abs(n-e)/2,i=n0}const xr=({source:e,sourceHandle:t,target:n,targetHandle:o})=>`xy-edge__${e}${t||""}-${n}${o||""}`;function wr({sourceX:e,sourceY:t,targetX:n,targetY:o}){const[r,i,a,s]=yr({sourceX:e,sourceY:t,targetX:n,targetY:o});return[`M ${e},${t}L ${n},${o}`,r,i,a,s]}const br={[e.Position.Left]:{x:-1,y:0},[e.Position.Right]:{x:1,y:0},[e.Position.Top]:{x:0,y:-1},[e.Position.Bottom]:{x:0,y:1}},Sr=(e,t)=>Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function Cr({source:t,sourcePosition:n=e.Position.Bottom,target:o,targetPosition:r=e.Position.Top,center:i,offset:a,stepPosition:s}){const c=br[n],l=br[r],u={x:t.x+c.x*a,y:t.y+c.y*a},d={x:o.x+l.x*a,y:o.y+l.y*a},h=(({source:t,sourcePosition:n=e.Position.Bottom,target:o})=>n===e.Position.Left||n===e.Position.Right?t.xt[f]?-1:1)*n:x[f]=(d[f]>o[f]?-1:1)*n}}if(n!==r){const t="x"===f?"y":"x",n=c[f]===l[t],o=u[t]>d[t],r=u[t]=Math.max(Math.abs(s.y-y[0].y),Math.abs(h.y-y[0].y))?(p=(s.x+h.x)/2,m=y[0].y):(p=y[0].x,m=(s.y+h.y)/2)}const S={x:u.x+v.x,y:u.y+v.y},C={x:d.x+x.x,y:d.y+x.y};return[[t,...S.x!==y[0].x||S.y!==y[0].y?[S]:[],...y,...C.x!==y[y.length-1].x||C.y!==y[y.length-1].y?[C]:[],o],p,m,w,b]}function Er(e,t,n,o){const r=Math.min(Sr(e,t)/2,Sr(t,n)/2,o),{x:i,y:a}=t;if(e.x===i&&i===n.x||e.y===a&&a===n.y)return`L${i} ${a}`;if(e.y===a){return`L ${i+r*(e.xe.id===t):e[0])||null}function zr(e,t){if(!e)return"";if("string"==typeof e)return e;return`${t?`${t}__`:""}${Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join("&")}`}function Ir(t,n,o,r,i){let a=.5;"start"===i?a=0:"end"===i&&(a=1);let s=[(t.x+t.width*a)*n.zoom+n.x,t.y*n.zoom+n.y-r],c=[-100*a,-100];switch(o){case e.Position.Right:s=[(t.x+t.width)*n.zoom+n.x+r,(t.y+t.height*a)*n.zoom+n.y],c=[0,-100*a];break;case e.Position.Bottom:s[1]=(t.y+t.height)*n.zoom+n.y+r,c[1]=0;break;case e.Position.Left:s=[t.x*n.zoom+n.x-r,(t.y+t.height*a)*n.zoom+n.y],c=[-100,-100*a]}return`translate(${s[0]}px, ${s[1]}px) translate(${c[0]}%, ${c[1]}%)`}const Or={left:0,center:50,right:100},Ar={top:0,center:50,bottom:100};const Dr={nodeOrigin:[0,0],nodeExtent:co,elevateNodesOnSelect:!0,zIndexMode:"basic",defaults:{}},Rr={...Dr,checkEquality:!0};function Lr(e,t){const n={...e};for(const e in t)void 0!==t[e]&&(n[e]=t[e]);return n}function $r(e,t){if(!e.handles)return e.measured?t?.internals.handleBounds:void 0;const n=[],o=[];for(const t of e.handles){const r={id:t.id,width:t.width??1,height:t.height??1,nodeId:e.id,x:t.x,y:t.y,position:t.position,type:t.type};"source"===t.type?n.push(r):"target"===t.type&&o.push(r)}return{source:n,target:o}}function Br(e){return"manual"===e}function Tr(e,t,n,o={}){const r=Lr(Rr,o),i={i:0},a=new Map(t),s=r?.elevateNodesOnSelect&&!Br(r.zIndexMode)?1e3:0;let c=e.length>0,l=!1;t.clear(),n.clear();for(const u of e){let e=a.get(u.id);if(r.checkEquality&&u===e?.internals.userNode)t.set(u.id,e);else{const n=Mo(u,r.nodeOrigin),o=Jo(u.extent)?u.extent:r.nodeExtent,i=Ao(n,o,er(u));e={...r.defaults,...u,measured:{width:u.measured?.width,height:u.measured?.height},internals:{positionAbsolute:i,handleBounds:$r(u,e),z:jr(u,s,r.zIndexMode),userNode:u}},t.set(u.id,e)}void 0!==e.measured&&void 0!==e.measured.width&&void 0!==e.measured.height||e.hidden||(c=!1),u.parentId&&Vr(e,t,n,o,i),l||=u.selected??!1}return{nodesInitialized:c,hasSelectedNodes:l}}function Vr(e,t,n,o,r){const{elevateNodesOnSelect:i,nodeOrigin:a,nodeExtent:s,zIndexMode:c}=Lr(Dr,o),l=e.parentId,u=t.get(l);if(!u)return void console.warn(`Parent node ${l} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);!function(e,t){if(!e.parentId)return;const n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}(e,n),r&&!u.parentId&&void 0===u.internals.rootParentIndex&&"auto"===c&&(u.internals.rootParentIndex=++r.i,u.internals.z=u.internals.z+10*r.i),r&&void 0!==u.internals.rootParentIndex&&(r.i=u.internals.rootParentIndex);const d=i&&!Br(c)?1e3:0,{x:h,y:f,z:g}=function(e,t,n,o,r,i){const{x:a,y:s}=t.internals.positionAbsolute,c=er(e),l=Mo(e,n),u=Jo(e.extent)?Ao(l,e.extent,c):l;let d=Ao({x:a+u.x,y:s+u.y},o,c);"parent"===e.extent&&(d=Do(d,c,t));const h=jr(e,r,i),f=t.internals.z??0;return{x:d.x,y:d.y,z:f>=h?f+1:h}}(e,u,a,s,d,c),{positionAbsolute:p}=e.internals,m=h!==p.x||f!==p.y;(m||g!==e.internals.z)&&t.set(e.id,{...e,internals:{...e.internals,positionAbsolute:m?{x:h,y:f}:p,z:g}})}function jr(e,t,n){const o=Fo(e.zIndex)?e.zIndex:0;return Br(n)?o:o+(e.selected?t:0)}function Hr(e,t,n,o=[0,0]){const r=[],i=new Map;for(const n of e){const e=t.get(n.parentId);if(!e)continue;const o=i.get(n.parentId)?.expandedRect??Vo(e),r=Ho(o,n.rect);i.set(n.parentId,{expandedRect:r,parent:e})}return i.size>0&&i.forEach(({expandedRect:t,parent:i},a)=>{const s=i.internals.positionAbsolute,c=er(i),l=i.origin??o,u=t.x0||d>0||g||p)&&(r.push({id:a,type:"position",position:{x:i.position.x-u+g,y:i.position.y-d+p}}),n.get(a)?.forEach(t=>{e.some(e=>e.id===t.id)||r.push({id:t.id,type:"position",position:{x:t.position.x+u,y:t.position.y+d}})})),(c.width1,x=v&&a?Bo(ko(s)):null,b=v&&l?function({dragItems:e,snapGrid:t,x:n,y:o}){const r=e.values().next().value;if(!r)return null;const i={x:n-r.distance.x,y:o-r.distance.y},a=Wo(i,t);return{x:a.x-i.x,y:a.y-i.y}}({dragItems:s,snapGrid:c,x:e,y:n}):null;for(const[t,o]of s){if(!r.has(t))continue;let i={x:e-o.distance.x,y:n-o.distance.y};l&&(i=b?{x:Math.round(i.x+b.x),y:Math.round(i.y+b.y)}:Wo(i,c));let s=null;if(v&&a&&!o.extent&&x){const{positionAbsolute:e}=o.internals,t=e.x-x.x+a[0][0],n=e.x+o.measured.width-x.x2+a[1][0];s=[[t,e.y-x.y+a[0][1]],[n,e.y+o.measured.height-x.y2+a[1][1]]]}const{position:d,positionAbsolute:h}=Io({nodeId:t,nextPosition:i,nodeLookup:r,nodeExtent:s||a,nodeOrigin:u,onError:f});y=y||o.position.x!==d.x||o.position.y!==d.y,o.position=d,o.internals.positionAbsolute=h}if(g=g||y,y&&(m(s,!0),p&&(o||d||!w&&h))){const[e,t]=Kr({nodeId:w,dragItems:s,nodeLookup:r});o?.(p,s,e,t),d?.(p,e,t),w||h?.(p,t)}}async function C(){if(!u)return;const{transform:e,panBy:n,autoPanSpeed:o,autoPanOnNodeDrag:r}=t();if(!r)return c=!1,void cancelAnimationFrame(a);const[s,d]=Lo(l,u,o);0===s&&0===d||(i.x=(i.x??0)-s/e[2],i.y=(i.y??0)-d/e[2],await n({x:s,y:d})&&S(i)),a=requestAnimationFrame(C)}function E(o){const{nodeLookup:r,multiSelectionActive:a,nodesDraggable:c,transform:l,snapGrid:h,snapToGrid:f,selectNodesOnDrag:g,onNodeDragStart:p,onSelectionDragStart:m,unselectNodesAndEdges:y}=t();d=!0,g&&x||a||!w||r.get(w)?.selected||y(),x&&g&&w&&e?.(w);const v=ir(o.sourceEvent,{transform:l,snapGrid:h,snapToGrid:f,containerBounds:u});if(i=v,s=function(e,t,n,o){const r=new Map;for(const[i,a]of e)if((a.selected||a.id===o)&&(!a.parentId||!Fr(a,e))&&(a.draggable||t&&void 0===a.draggable)){const t=e.get(i);t&&r.set(i,{id:i,position:t.position||{x:0,y:0},distance:{x:n.x-t.internals.positionAbsolute.x,y:n.y-t.internals.positionAbsolute.y},extent:t.extent,parentId:t.parentId,origin:t.origin,expandParent:t.expandParent,internals:{positionAbsolute:t.internals.positionAbsolute||{x:0,y:0}},measured:{width:t.measured.width??0,height:t.measured.height??0}})}return r}(r,c,v,w),s.size>0&&(n||p||!w&&m)){const[e,t]=Kr({nodeId:w,dragItems:s,nodeLookup:r});n?.(o.sourceEvent,s,e,t),p?.(o.sourceEvent,e,t),w||m?.(o.sourceEvent,t)}}h=Se(v);const M=Le().clickDistance(b).on("start",e=>{const{domNode:n,nodeDragThreshold:o,transform:r,snapGrid:a,snapToGrid:s}=t();u=n?.getBoundingClientRect()||null,f=!1,g=!1,p=e.sourceEvent,0===o&&E(e);const c=ir(e.sourceEvent,{transform:r,snapGrid:a,snapToGrid:s,containerBounds:u});i=c,l=dr(e.sourceEvent,u)}).on("drag",e=>{const{autoPanOnNodeDrag:n,transform:o,snapGrid:r,snapToGrid:a,nodeDragThreshold:h,nodeLookup:g}=t(),m=ir(e.sourceEvent,{transform:o,snapGrid:r,snapToGrid:a,containerBounds:u});if(p=e.sourceEvent,("touchmove"===e.sourceEvent.type&&e.sourceEvent.touches.length>1||w&&!g.has(w))&&(f=!0),!f){if(!c&&n&&d&&(c=!0,C()),!d){const t=dr(e.sourceEvent,u),n=t.x-l.x,o=t.y-l.y;Math.sqrt(n*n+o*o)>h&&E(e)}(i.x!==m.xSnapped||i.y!==m.ySnapped)&&s&&d&&(l=dr(e.sourceEvent,u),S(m))}}).on("end",e=>{if(d&&!f){if(c=!1,d=!1,cancelAnimationFrame(a),s.size>0){const{nodeLookup:n,updateNodePositions:o,onNodeDragStop:i,onSelectionDragStop:a}=t();if(g&&(o(s,!1),g=!1),r||i||!w&&a){const[t,o]=Kr({nodeId:w,dragItems:s,nodeLookup:n,dragging:!1});r?.(e.sourceEvent,s,t,o),i?.(e.sourceEvent,t,o),w||a?.(e.sourceEvent,o)}}}else f&&s.size>0&&t().updateNodePositions(s,!1)}).filter(e=>{const t=e.target;return!e.button&&(!m||!Wr(t,`.${m}`,v))&&(!y||Wr(t,y,v))});h.call(M)},destroy:function(){h?.on(".drag",null)}}}function qr(e,t,n,o){let r=[],i=1/0;const a=function(e,t,n){const o=[],r={x:e.x-n,y:e.y-n,width:2*n,height:2*n};for(const e of t.values())Xo(r,Vo(e))>0&&o.push(e);return o}(e,n,t+250);for(const n of a){const a=[...n.internals.handleBounds?.source??[],...n.internals.handleBounds?.target??[]];for(const s of a){if(o.nodeId===s.nodeId&&o.type===s.type&&o.id===s.id)continue;const{x:a,y:c}=_r(n,s,s.position,!0),l=Math.sqrt(Math.pow(a-e.x,2)+Math.pow(c-e.y,2));l>t||(l1){const e="source"===o.type?"target":"source";return r.find(t=>t.type===e)??r[0]}return r[0]}function Ur(e,t,n,o,r,i=!1){const a=o.get(e);if(!a)return null;const s="strict"===r?a.internals.handleBounds?.[t]:[...a.internals.handleBounds?.source??[],...a.internals.handleBounds?.target??[]],c=(n?s?.find(e=>e.id===n):s?.[0])??null;return c&&i?{...c,..._r(a,c,c.position,!0)}:c}function Qr(e,t){return e||(t?.classList.contains("target")?"target":t?.classList.contains("source")?"source":null)}const Jr=()=>!0;function ei(t,{handle:n,connectionMode:o,fromNodeId:r,fromHandleId:i,fromType:a,doc:s,lib:c,flowId:l,isValidConnection:u=Jr,nodeLookup:d}){const h="target"===a,f=n?s.querySelector(`.${c}-flow__handle[data-id="${l}-${n?.nodeId}-${n?.id}-${n?.type}"]`):null,{x:g,y:p}=dr(t),m=s.elementFromPoint(g,p),y=m?.classList.contains(`${c}-flow__handle`)?m:f,v={handleDomNode:y,isValid:!1,connection:null,toHandle:null};if(y){const t=Qr(void 0,y),n=y.getAttribute("data-nodeid"),a=y.getAttribute("data-handleid"),s=y.classList.contains("connectable"),c=y.classList.contains("connectableend");if(!n||!t)return v;const l={source:h?n:r,sourceHandle:h?a:i,target:h?r:n,targetHandle:h?i:a};v.connection=l;const f=s&&c&&(o===e.ConnectionMode.Strict?h&&"source"===t||!h&&"target"===t:n!==r||a!==i);v.isValid=f&&u(l),v.toHandle=Ur(n,t,a,d,o,!0)}return v}const ti={onPointerDown:function(t,{connectionMode:n,connectionRadius:o,handleId:r,nodeId:i,edgeUpdaterType:a,isTarget:s,domNode:c,nodeLookup:l,lib:u,autoPanOnConnect:d,flowId:h,panBy:f,cancelConnection:g,onConnectStart:p,onConnect:m,onConnectEnd:y,isValidConnection:v=Jr,onReconnectEnd:x,updateConnection:w,getTransform:b,getFromHandle:S,autoPanSpeed:C,dragThreshold:E=1,handleDomNode:M}){const N=sr(t.target);let k,_=0;const{x:P,y:z}=dr(t),I=Qr(a,M),O=c?.getBoundingClientRect();let A=!1;if(!O||!I)return;const D=Ur(i,I,r,l,n);if(!D)return;let R=dr(t,O),L=!1,$=null,B=!1,T=null;function V(){if(!d||!O)return;const[e,t]=Lo(R,O,C);f({x:e,y:t}),_=requestAnimationFrame(V)}const j={...D,nodeId:i,type:I,position:D.position},H=l.get(i);let Z={inProgress:!0,isValid:null,from:_r(H,j,e.Position.Left,!0),fromHandle:j,fromPosition:j.position,fromNode:H,to:R,toHandle:null,toPosition:xo[j.position],toNode:null,pointer:R};function X(){A=!0,w(Z),p?.(t,{nodeId:i,handleId:r,handleType:I})}function Y(t){if(!A){const{x:e,y:n}=dr(t),o=e-P,r=n-z;if(!(o*o+r*r>E*E))return;X()}if(!S()||!j)return void F(t);const a=b();R=dr(t,O),k=qr(Ko(R,a,!1,[1,1]),o,l,j),L||(V(),L=!0);const c=ei(t,{handle:k,connectionMode:n,fromNodeId:i,fromHandleId:r,fromType:s?"target":"source",isValidConnection:v,doc:N,lib:u,flowId:h,nodeLookup:l});T=c.handleDomNode,$=c.connection,B=function(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}(!!k,c.isValid);const d=l.get(i),f=d?_r(d,j,e.Position.Left,!0):Z.from,g={...Z,from:f,isValid:B,to:c.toHandle&&B?Go({x:c.toHandle.x,y:c.toHandle.y},a):R,toHandle:c.toHandle,toPosition:B&&c.toHandle?c.toHandle.position:xo[j.position],toNode:c.toHandle?l.get(c.toHandle.nodeId):null,pointer:R};w(g),Z=g}function F(e){if(!("touches"in e&&e.touches.length>0)){if(A){(k||T)&&$&&B&&m?.($);const{inProgress:t,...n}=Z,o={...n,toPosition:Z.toHandle?Z.toPosition:null};y?.(e,o),a&&x?.(e,o)}g(),cancelAnimationFrame(_),L=!1,B=!1,$=null,T=null,N.removeEventListener("mousemove",Y),N.removeEventListener("mouseup",F),N.removeEventListener("touchmove",Y),N.removeEventListener("touchend",F)}}0===E&&X(),N.addEventListener("mousemove",Y),N.addEventListener("mouseup",F),N.addEventListener("touchmove",Y),N.addEventListener("touchend",F)},isValid:ei};const ni=e=>({x:e.x,y:e.y,zoom:e.k}),oi=({x:e,y:t,zoom:n})=>Bn.translate(e,t).scale(n),ri=(e,t)=>e.target.closest(`.${t}`),ii=(e,t)=>2===t&&Array.isArray(e)&&e.includes(2),ai=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,si=(e,t=0,n=ai,o=()=>{})=>{const r="number"==typeof t&&t>0;return r||o(),r?e.transition().duration(t).ease(n).on("end",o):e},ci=e=>{const t=e.ctrlKey&&Qo()?10:1;return-e.deltaY*(1===e.deltaMode?.05:e.deltaMode?1:.002)*t};function li({domNode:t,minZoom:n,maxZoom:o,translateExtent:r,viewport:i,onPanZoom:a,onPanZoomStart:s,onPanZoomEnd:c,onDraggingChange:l}){const u={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},d=t.getBoundingClientRect();let h=[[0,0],[d.width,d.height]];const f="undefined"!=typeof ResizeObserver?new ResizeObserver(e=>{const t=e[0];t&&(h=[[0,0],[t.contentRect.width,t.contentRect.height]])}):null;f?.observe(t);const g=Kn().extent(()=>h).scaleExtent([n,o]).translateExtent(r),p=Se(t).call(g);w({x:i.x,y:i.y,zoom:Oo(i.zoom,n,o)},[[0,0],[d.width,d.height]],r);const m=p.on("wheel.zoom"),y=p.on("dblclick.zoom");async function v(e,t){return!!p&&new Promise(n=>{g?.interpolate("linear"===t?.interpolate?Pt:Vt).transform(si(p,t?.duration,t?.ease,()=>n(!0)),e)})}function x(){g.on("zoom",null)}async function w(e,t,n){const o=oi(e),r=g?.constrain()(o,t,n);return r&&await v(r),r}return g.wheelDelta(ci),{update:function({noWheelClassName:t,noPanClassName:n,onPaneContextMenu:o,userSelectionActive:r,panOnScroll:i,panOnDrag:d,panOnScrollMode:h,panOnScrollSpeed:f,preventScrolling:v,zoomOnPinch:w,zoomOnScroll:b,zoomOnDoubleClick:S,zoomActivationKeyPressed:C,lib:E,onTransformChange:M,connectionInProgress:N,paneClickDistance:k,selectionOnDrag:_}){r&&!u.isZoomingOrPanning&&x();const P=i&&!C&&!r;g.clickDistance(_?1/0:!Fo(k)||k<0?0:k);const z=P?function({zoomPanValues:t,noWheelClassName:n,d3Selection:o,d3Zoom:r,panOnScrollMode:i,panOnScrollSpeed:a,zoomOnPinch:s,onPanZoomStart:c,onPanZoom:l,onPanZoomEnd:u}){return d=>{if(ri(d,n))return d.ctrlKey&&d.preventDefault(),!1;d.preventDefault(),d.stopImmediatePropagation();const h=o.property("__zoom").k||1;if(d.ctrlKey&&s){const e=Ce(d),t=ci(d),n=h*Math.pow(2,t);return void r.scaleTo(o,n,e,d)}const f=1===d.deltaMode?20:1;let g=i===e.PanOnScrollMode.Vertical?0:d.deltaX*f,p=i===e.PanOnScrollMode.Horizontal?0:d.deltaY*f;!Qo()&&d.shiftKey&&i!==e.PanOnScrollMode.Vertical&&(g=d.deltaY*f,p=0),r.translateBy(o,-g/h*a,-p/h*a,{internal:!0});const m=ni(o.property("__zoom"));clearTimeout(t.panScrollTimeout),t.isPanScrolling?l?.(d,m):(t.isPanScrolling=!0,c?.(d,m)),t.panScrollTimeout=setTimeout(()=>{u?.(d,m),t.isPanScrolling=!1},150)}}({zoomPanValues:u,noWheelClassName:t,d3Selection:p,d3Zoom:g,panOnScrollMode:h,panOnScrollSpeed:f,zoomOnPinch:w,onPanZoomStart:s,onPanZoom:a,onPanZoomEnd:c}):function({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(o,r){const i="wheel"===o.type,a=!t&&i&&!o.ctrlKey,s=ri(o,e);if(o.ctrlKey&&i&&s&&o.preventDefault(),a||s)return null;o.preventDefault(),n.call(this,o,r)}}({noWheelClassName:t,preventScrolling:v,d3ZoomHandler:m});p.on("wheel.zoom",z,{passive:!1});const I=function({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return o=>{if(o.sourceEvent?.internal)return;const r=ni(o.transform);e.mouseButton=o.sourceEvent?.button||0,e.isZoomingOrPanning=!0,e.prevViewport=r,"mousedown"===o.sourceEvent?.type&&t(!0),n&&n?.(o.sourceEvent,r)}}({zoomPanValues:u,onDraggingChange:l,onPanZoomStart:s});g.on("start",I);const O=function({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:o,onPanZoom:r}){return i=>{e.usedRightMouseButton=!(!n||!ii(t,e.mouseButton??0)),i.sourceEvent?.sync||o([i.transform.x,i.transform.y,i.transform.k]),r&&!i.sourceEvent?.internal&&r?.(i.sourceEvent,ni(i.transform))}}({zoomPanValues:u,panOnDrag:d,onPaneContextMenu:!!o,onPanZoom:a,onTransformChange:M});g.on("zoom",O);const A=function({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:o,onPanZoomEnd:r,onPaneContextMenu:i}){return a=>{if(!a.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,i&&ii(t,e.mouseButton??0)&&!e.usedRightMouseButton&&a.sourceEvent&&i(a.sourceEvent),e.usedRightMouseButton=!1,o(!1),r)){const t=ni(a.transform);e.prevViewport=t,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{r?.(a.sourceEvent,t)},n?150:0)}}}({zoomPanValues:u,panOnDrag:d,panOnScroll:i,onPaneContextMenu:o,onPanZoomEnd:c,onDraggingChange:l});g.on("end",A);const D=function({zoomActivationKeyPressed:e,zoomOnScroll:t,zoomOnPinch:n,panOnDrag:o,panOnScroll:r,zoomOnDoubleClick:i,userSelectionActive:a,noWheelClassName:s,noPanClassName:c,lib:l,connectionInProgress:u}){return d=>{const h=e||t,f=n&&d.ctrlKey,g="wheel"===d.type;if(1===d.button&&"mousedown"===d.type&&(ri(d,`${l}-flow__node`)||ri(d,`${l}-flow__edge`)))return!0;if(!(o||h||r||i||n))return!1;if(a)return!1;if(u&&!g)return!1;if(ri(d,s)&&g)return!1;if(ri(d,c)&&(!g||r&&g&&!e))return!1;if(!n&&d.ctrlKey&&g)return!1;if(!n&&"touchstart"===d.type&&d.touches?.length>1)return d.preventDefault(),!1;if(!h&&!r&&!f&&g)return!1;if(!o&&("mousedown"===d.type||"touchstart"===d.type))return!1;if(Array.isArray(o)&&!o.includes(d.button)&&"mousedown"===d.type)return!1;const p=Array.isArray(o)&&o.includes(d.button)||!d.button||d.button<=1;return(!d.ctrlKey||g)&&p}}({zoomActivationKeyPressed:C,panOnDrag:d,zoomOnScroll:b,panOnScroll:i,zoomOnDoubleClick:S,zoomOnPinch:w,userSelectionActive:r,noPanClassName:n,noWheelClassName:t,lib:E,connectionInProgress:N});g.filter(D),S?p.on("dblclick.zoom",y):p.on("dblclick.zoom",null)},destroy:x,setViewport:async function(e,t){const n=oi(e);return await v(n,t),n},setViewportConstrained:w,getViewport:function(){const e=p?Tn(p.node()):{x:0,y:0,k:1};return{x:e.x,y:e.y,zoom:e.k}},scaleTo:async function(e,t){return!!p&&new Promise(n=>{g?.interpolate("linear"===t?.interpolate?Pt:Vt).scaleTo(si(p,t?.duration,t?.ease,()=>n(!0)),e)})},scaleBy:async function(e,t){return!!p&&new Promise(n=>{g?.interpolate("linear"===t?.interpolate?Pt:Vt).scaleBy(si(p,t?.duration,t?.ease,()=>n(!0)),e)})},setScaleExtent:function(e){g?.scaleExtent(e)},setTranslateExtent:function(e){g?.translateExtent(e)},syncViewport:function(e){if(p){const t=oi(e),n=p.property("__zoom");n.k===e.zoom&&n.x===e.x&&n.y===e.y||g?.transform(p,t,null,{sync:!0})}},setClickDistance:function(e){const t=!Fo(e)||e<0?0:e;g?.clickDistance(t)}}}var ui;e.ResizeControlVariant=void 0,(ui=e.ResizeControlVariant||(e.ResizeControlVariant={})).Line="line",ui.Handle="handle";const di=["top-left","top-right","bottom-left","bottom-right"],hi=["top","right","bottom","left"];function fi(e){return{isHorizontal:e.includes("right")||e.includes("left"),isVertical:e.includes("bottom")||e.includes("top"),affectsX:e.includes("left"),affectsY:e.includes("top")}}function gi(e,t){return Math.max(0,t-e)}function pi(e,t){return Math.max(0,e-t)}function mi(e,t,n){return Math.max(0,t-e,e-n)}function yi(e,t){return e?!t:t}const vi={width:0,height:0,x:0,y:0},xi={...vi,pointerX:0,pointerY:0,aspectRatio:1};function wi(e,t,n){const o=t.position.x+e.position.x,r=t.position.y+e.position.y,i=e.measured.width??0,a=e.measured.height??0,s=n[0]*i,c=n[1]*a;return[[o-s,r-c],[o+i-s,r+a-c]]}function bi({domNode:e,nodeId:t,getStoreItems:n,onChange:o,onEnd:r}){const i=Se(e);let a={controlDirection:fi("bottom-right"),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};return{update:function({controlPosition:e,boundaries:s,keepAspectRatio:c,resizeDirection:l,onResizeStart:u,onResize:d,onResizeEnd:h,shouldResize:f}){let g,p={...vi},m={...xi};a={boundaries:s,resizeDirection:l,keepAspectRatio:c,controlDirection:fi(e)};let y,v,x,w=null,b=[],S=!1;const C=Le().on("start",e=>{const{nodeLookup:o,transform:r,snapGrid:i,snapToGrid:a,nodeOrigin:s,paneDomNode:c}=n();if(g=o.get(t),!g)return;w=c?.getBoundingClientRect()??null;const{xSnapped:l,ySnapped:d}=ir(e.sourceEvent,{transform:r,snapGrid:i,snapToGrid:a,containerBounds:w});p={width:g.measured.width??0,height:g.measured.height??0,x:g.position.x??0,y:g.position.y??0},m={...p,pointerX:l,pointerY:d,aspectRatio:p.width/p.height},y=void 0,v=Jo(g.extent)?g.extent:void 0,g.parentId&&("parent"===g.extent||g.expandParent)&&(y=o.get(g.parentId)),y&&"parent"===g.extent&&(v=[[0,0],[y.measured.width,y.measured.height]]),b=[],x=void 0;for(const[e,n]of o)if(n.parentId===t&&(b.push({id:e,position:{...n.position},extent:n.extent}),"parent"===n.extent||n.expandParent)){const e=wi(n,g,n.origin??s);x=x?[[Math.min(e[0][0],x[0][0]),Math.min(e[0][1],x[0][1])],[Math.max(e[1][0],x[1][0]),Math.max(e[1][1],x[1][1])]]:e}u?.(e,{...p})}).on("drag",e=>{const{transform:t,snapGrid:r,snapToGrid:i,nodeOrigin:s}=n(),c=ir(e.sourceEvent,{transform:t,snapGrid:r,snapToGrid:i,containerBounds:w}),l=[];if(!g)return;const{x:u,y:h,width:C,height:E}=p,M={},N=g.origin??s,{width:k,height:_,x:P,y:z}=function(e,t,n,o,r,i,a,s){let{affectsX:c,affectsY:l}=t;const{isHorizontal:u,isVertical:d}=t,h=u&&d,{xSnapped:f,ySnapped:g}=n,{minWidth:p,maxWidth:m,minHeight:y,maxHeight:v}=o,{x:x,y:w,width:b,height:S,aspectRatio:C}=e;let E=Math.floor(u?f-e.pointerX:0),M=Math.floor(d?g-e.pointerY:0);const N=b+(c?-E:E),k=S+(l?-M:M),_=-i[0]*b,P=-i[1]*S;let z=mi(N,p,m),I=mi(k,y,v);if(a){let e=0,t=0;c&&E<0?e=gi(x+E+_,a[0][0]):!c&&E>0&&(e=pi(x+N+_,a[1][0])),l&&M<0?t=gi(w+M+P,a[0][1]):!l&&M>0&&(t=pi(w+k+P,a[1][1])),z=Math.max(z,e),I=Math.max(I,t)}if(s){let e=0,t=0;c&&E>0?e=pi(x+E,s[0][0]):!c&&E<0&&(e=gi(x+N,s[1][0])),l&&M>0?t=pi(w+M,s[0][1]):!l&&M<0&&(t=gi(w+k,s[1][1])),z=Math.max(z,e),I=Math.max(I,t)}if(r){if(u){const e=mi(N/C,y,v)*C;if(z=Math.max(z,e),a){let e=0;e=!c&&!l||c&&!l&&h?pi(w+P+N/C,a[1][1])*C:gi(w+P+(c?E:-E)/C,a[0][1])*C,z=Math.max(z,e)}if(s){let e=0;e=!c&&!l||c&&!l&&h?gi(w+N/C,s[1][1])*C:pi(w+(c?E:-E)/C,s[0][1])*C,z=Math.max(z,e)}}if(d){const e=mi(k*C,p,m)/C;if(I=Math.max(I,e),a){let e=0;e=!c&&!l||l&&!c&&h?pi(x+k*C+_,a[1][0])/C:gi(x+(l?M:-M)*C+_,a[0][0])/C,I=Math.max(I,e)}if(s){let e=0;e=!c&&!l||l&&!c&&h?gi(x+k*C,s[1][0])/C:pi(x+(l?M:-M)*C,s[0][0])/C,I=Math.max(I,e)}}}M+=M<0?I:-I,E+=E<0?z:-z,r&&(h?N>k*C?M=(yi(c,l)?-E:E)/C:E=(yi(c,l)?-M:M)*C:u?(M=E/C,l=c):(E=M*C,c=l));const O=c?x+E:x,A=l?w+M:w;return{width:b+(c?-E:E),height:S+(l?-M:M),x:i[0]*E*(c?-1:1)+O,y:i[1]*M*(l?-1:1)+A}}(m,a.controlDirection,c,a.boundaries,a.keepAspectRatio,N,v,x),I=k!==C,O=_!==E,A=P!==u&&I,D=z!==h&&O;if(!(A||D||I||O))return;if((A||D||1===N[0]||1===N[1])&&(M.x=A?P:p.x,M.y=D?z:p.y,p.x=M.x,p.y=M.y,b.length>0)){const e=P-u,t=z-h;for(const n of b)n.position={x:n.position.x-e+N[0]*(k-C),y:n.position.y-t+N[1]*(_-E)},l.push(n)}if((I||O)&&(M.width=!I||a.resizeDirection&&"horizontal"!==a.resizeDirection?p.width:k,M.height=!O||a.resizeDirection&&"vertical"!==a.resizeDirection?p.height:_,p.width=M.width,p.height=M.height),y&&g.expandParent){const e=N[0]*(M.width??0);M.x&&M.x0?1:a<0?-1:0,s>0?1:s<0?-1:0];return a&&r&&(c[0]=-1*c[0]),s&&i&&(c[1]=-1*c[1]),c}({width:p.width,prevWidth:C,height:p.height,prevHeight:E,affectsX:a.controlDirection.affectsX,affectsY:a.controlDirection.affectsY}),L={...p,direction:R},$=f?.(e,L);!1!==$&&(S=!0,d?.(e,L),o(M,l))}).on("end",e=>{S&&(h?.(e,{...p}),r?.({...p}),S=!1)});i.call(C)},destroy:function(){i.on(".drag",null)}}}function Si(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ci,Ei,Mi,Ni={exports:{}},ki={},_i={exports:{}},Pi={};function zi(){return Ei||(Ei=1,_i.exports=function(){if(Ci)return Pi;Ci=1;var e=n,t="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=e.useState,r=e.useEffect,i=e.useLayoutEffect,a=e.useDebugValue;function s(e){var n=e.getSnapshot;e=e.value;try{var o=n();return!t(e,o)}catch(e){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),c=o({inst:{value:n,getSnapshot:t}}),l=c[0].inst,u=c[1];return i(function(){l.value=n,l.getSnapshot=t,s(l)&&u({inst:l})},[e,n,t]),r(function(){return s(l)&&u({inst:l}),e(function(){s(l)&&u({inst:l})})},[e]),a(n),n};return Pi.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:c,Pi}()),_i.exports} +/** + * @license React + * use-sync-external-store-shim/with-selector.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */Ni.exports=function(){if(Mi)return ki;Mi=1;var e=n,t=zi(),o="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},r=t.useSyncExternalStore,i=e.useRef,a=e.useEffect,s=e.useMemo,c=e.useDebugValue;return ki.useSyncExternalStoreWithSelector=function(e,t,n,l,u){var d=i(null);if(null===d.current){var h={hasValue:!1,value:null};d.current=h}else h=d.current;d=s(function(){function e(e){if(!a){if(a=!0,r=e,e=l(e),void 0!==u&&h.hasValue){var t=h.value;if(u(t,e))return i=t}return i=e}if(t=i,o(r,e))return t;var n=l(e);return void 0!==u&&u(t,n)?(r=e,t):(r=e,i=n)}var r,i,a=!1,s=void 0===n?null:n;return[function(){return e(t())},null===s?void 0:function(){return e(s())}]},[t,n,l,u]);var f=r(e,d[0],d[1]);return a(function(){h.hasValue=!0,h.value=f},[f]),c(f),f},ki}();var Ii=Si(Ni.exports);const Oi=e=>{let t;const n=new Set,o=(e,o)=>{const r="function"==typeof e?e(t):e;if(!Object.is(r,t)){const e=t;t=(null!=o?o:"object"!=typeof r||null===r)?r:Object.assign({},t,r),n.forEach(n=>n(t,e))}},r=()=>t,i={setState:o,getState:r,getInitialState:()=>a,subscribe:e=>(n.add(e),()=>n.delete(e)),destroy:()=>{console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},a=t=e(o,r,i);return i},{useDebugValue:Ai}=n,{useSyncExternalStoreWithSelector:Di}=Ii,Ri=e=>e;function Li(e,t=Ri,n){const o=Di(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return Ai(o),o}const $i=(e,t)=>{const n=(e=>e?Oi(e):Oi)(e),o=(e,o=t)=>Li(n,e,o);return Object.assign(o,n),o},Bi=n.createContext(null),Ti=Bi.Provider,Vi=Gn("react");function ji(e,t){const o=n.useContext(Bi);if(null===o)throw new Error(Vi);return Li(o,e,t)}function Hi(){const e=n.useContext(Bi);if(null===e)throw new Error(Vi);return n.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}const Zi={display:"none"},Xi={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},Yi="react-flow__node-desc",Fi="react-flow__edge-desc",Wi=e=>e.ariaLiveMessage,Ki=e=>e.ariaLabelConfig;function Gi({rfId:e}){const n=ji(Wi);return t.jsx("div",{id:`react-flow__aria-live-${e}`,"aria-live":"assertive","aria-atomic":"true",style:Xi,children:n})}function qi({rfId:e,disableKeyboardA11y:n}){const o=ji(Ki);return t.jsxs(t.Fragment,{children:[t.jsx("div",{id:`${Yi}-${e}`,style:Zi,children:n?o["node.a11yDescription.default"]:o["node.a11yDescription.keyboardDisabled"]}),t.jsx("div",{id:`${Fi}-${e}`,style:Zi,children:o["edge.a11yDescription.default"]}),!n&&t.jsx(Gi,{rfId:e})]})}const Ui=n.forwardRef(({position:e="top-left",children:n,className:o,style:i,...a},s)=>{const c=`${e}`.split("-");return t.jsx("div",{className:r(["react-flow__panel",o,...c]),style:i,ref:s,...a,children:n})});Ui.displayName="Panel";const Qi="https://reactflow.dev?utm_source=attribution";function Ji({proOptions:e,position:n="bottom-right"}){return e?.hideAttribution?null:t.jsx(Ui,{position:n,className:"react-flow__attribution","data-message":`Please only hide this attribution when you are subscribed to React Flow Pro: ${Qi}`,children:t.jsx("a",{href:Qi,target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}function ea(e,t){if(Object.is(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(const[n,o]of e)if(!Object.is(o,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(const n of e)if(!t.has(n))return!1;return!0}const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(const o of n)if(!Object.prototype.hasOwnProperty.call(t,o)||!Object.is(e[o],t[o]))return!1;return!0}const ta=e=>{const t=[],n=[];for(const[,n]of e.nodeLookup)n.selected&&t.push(n.internals.userNode);for(const[,t]of e.edgeLookup)t.selected&&n.push(t);return{selectedNodes:t,selectedEdges:n}},na=e=>e.id;function oa(e,t){return ea(e.selectedNodes.map(na),t.selectedNodes.map(na))&&ea(e.selectedEdges.map(na),t.selectedEdges.map(na))}function ra({onSelectionChange:e}){const t=Hi(),{selectedNodes:o,selectedEdges:r}=ji(ta,oa);return n.useEffect(()=>{const n={nodes:o,edges:r};e?.(n),t.getState().onSelectionChangeHandlers.forEach(e=>e(n))},[o,r,e]),null}const ia=e=>!!e.onSelectionChangeHandlers;function aa({onSelectionChange:e}){const n=ji(ia);return e||n?t.jsx(ra,{onSelectionChange:e}):null}const sa=[0,0],ca={x:0,y:0,zoom:1},la=["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"],ua=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges}),da={translateExtent:co,nodeOrigin:sa,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function ha(e){const{setNodes:t,setEdges:o,setMinZoom:r,setMaxZoom:i,setTranslateExtent:a,setNodeExtent:s,reset:c,setDefaultNodesAndEdges:l}=ji(ua,ea),u=Hi();n.useEffect(()=>(l(e.defaultNodes,e.defaultEdges),()=>{d.current=da,c()}),[]);const d=n.useRef(da);return n.useEffect(()=>{for(const n of la){const c=e[n];c!==d.current[n]&&(void 0!==e[n]&&("nodes"===n?t(c):"edges"===n?o(c):"minZoom"===n?r(c):"maxZoom"===n?i(c):"translateExtent"===n?a(c):"nodeExtent"===n?s(c):"ariaLabelConfig"===n?u.setState({ariaLabelConfig:rr(c)}):"fitView"===n?u.setState({fitViewQueued:c}):"fitViewOptions"===n?u.setState({fitViewOptions:c}):u.setState({[n]:c})))}d.current=e},la.map(t=>e[t])),null}function fa(){return"undefined"!=typeof window&&window.matchMedia?window.matchMedia("(prefers-color-scheme: dark)"):null}const ga="undefined"!=typeof document?document:null;function pa(e=null,t={target:ga,actInsideInputWithModifier:!0}){const[o,r]=n.useState(!1),i=n.useRef(!1),a=n.useRef(new Set([])),[s,c]=n.useMemo(()=>{if(null!==e){const t=(Array.isArray(e)?e:[e]).filter(e=>"string"==typeof e).map(e=>e.replace("+","\n").replace("\n\n","\n+").split("\n")),n=t.reduce((e,t)=>e.concat(...t),[]);return[t,n]}return[[],[]]},[e]);return n.useEffect(()=>{const n=t?.target??ga,o=t?.actInsideInputWithModifier??!0;if(null!==e){const e=e=>{i.current=e.ctrlKey||e.metaKey||e.shiftKey||e.altKey;if((!i.current||i.current&&!o)&&lr(e))return!1;const n=ya(e.code,c);if(a.current.add(e[n]),ma(s,a.current,!1)){const n=e.composedPath?.()?.[0]||e.target,o="BUTTON"===n?.nodeName||"A"===n?.nodeName;!1===t.preventDefault||!i.current&&o||e.preventDefault(),r(!0)}},l=e=>{const t=ya(e.code,c);ma(s,a.current,!0)?(r(!1),a.current.clear()):a.current.delete(e[t]),"Meta"===e.key&&a.current.clear(),i.current=!1},u=()=>{a.current.clear(),r(!1)};return n?.addEventListener("keydown",e),n?.addEventListener("keyup",l),window.addEventListener("blur",u),window.addEventListener("contextmenu",u),()=>{n?.removeEventListener("keydown",e),n?.removeEventListener("keyup",l),window.removeEventListener("blur",u),window.removeEventListener("contextmenu",u)}}},[e,r]),o}function ma(e,t,n){return e.filter(e=>n||e.length===t.size).some(e=>e.every(e=>t.has(e)))}function ya(e,t){return t.includes(e)?"code":"key"}function va(e,t){const n=[],o=new Map,r=[];for(const t of e)if("add"!==t.type)if("remove"===t.type||"replace"===t.type)o.set(t.id,[t]);else{const e=o.get(t.id);e?e.push(t):o.set(t.id,[t])}else r.push(t);for(const e of t){const t=o.get(e.id);if(!t){n.push(e);continue}if("remove"===t[0].type)continue;if("replace"===t[0].type){n.push({...t[0].item});continue}const r={...e};for(const e of t)xa(e,r);n.push(r)}return r.length&&r.forEach(e=>{void 0!==e.index?n.splice(e.index,0,{...e.item}):n.push({...e.item})}),n}function xa(e,t){switch(e.type){case"select":t.selected=e.selected;break;case"position":void 0!==e.position&&(t.position=e.position),void 0!==e.dragging&&(t.dragging=e.dragging);break;case"dimensions":void 0!==e.dimensions&&(t.measured={...e.dimensions},e.setAttributes&&(!0!==e.setAttributes&&"width"!==e.setAttributes||(t.width=e.dimensions.width),!0!==e.setAttributes&&"height"!==e.setAttributes||(t.height=e.dimensions.height))),"boolean"==typeof e.resizing&&(t.resizing=e.resizing)}}function wa(e,t){return va(e,t)}function ba(e,t){return va(e,t)}function Sa(e,t){return{id:e,type:"select",selected:t}}function Ca(e,t=new Set,n=!1){const o=[];for(const[r,i]of e){const e=t.has(r);void 0===i.selected&&!e||i.selected===e||(n&&(i.selected=e),o.push(Sa(i.id,e)))}return o}function Ea({items:e=[],lookup:t}){const n=[],o=new Map(e.map(e=>[e.id,e]));for(const[o,r]of e.entries()){const e=t.get(r.id),i=e?.internals?.userNode??e;void 0!==i&&i!==r&&n.push({id:r.id,item:r,type:"replace"}),void 0===i&&n.push({item:r,type:"add",index:o})}for(const[e]of t){void 0===o.get(e)&&n.push({id:e,type:"remove"})}return n}function Ma(e){return{id:e.id,type:"remove"}}const Na=(e,t)=>{};function ka(e,t,n={}){return((e,t,n={})=>{if(!e.source||!e.target)return n.onError?.("006",Jn()),t;const o=n.getEdgeId||xr;let r;return r=Co(e)?{...e}:{...e,id:o(e)},((e,t)=>t.some(t=>!(t.source!==e.source||t.target!==e.target||t.sourceHandle!==e.sourceHandle&&(t.sourceHandle||e.sourceHandle)||t.targetHandle!==e.targetHandle&&(t.targetHandle||e.targetHandle))))(r,t)?t:(null===r.sourceHandle&&delete r.sourceHandle,null===r.targetHandle&&delete r.targetHandle,t.concat(r))})(e,t,{...n,onError:n.onError??Na})}const _a=e=>(e=>!!e&&"object"==typeof e&&"id"in e&&"position"in e&&!("source"in e)&&!("target"in e))(e),Pa=e=>Co(e);function za(e){return n.forwardRef(e)}const Ia="undefined"!=typeof window?n.useLayoutEffect:n.useEffect;function Oa(e){const[t,o]=n.useState(BigInt(0)),[r]=n.useState(()=>function(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}(()=>o(e=>e+BigInt(1))));return Ia(()=>{const t=r.get();t.length&&(e(t),r.reset())},[t]),r}const Aa=n.createContext(null);function Da({children:e}){const o=Hi(),r=Oa(n.useCallback(e=>{const{nodes:t=[],setNodes:n,hasDefaultNodes:r,onNodesChange:i,nodeLookup:a,fitViewQueued:s,onNodesChangeMiddlewareMap:c}=o.getState();let l=t;for(const t of e)l="function"==typeof t?t(l):t;let u=Ea({items:l,lookup:a});for(const e of c.values())u=e(u);r&&n(l),u.length>0?i?.(u):s&&window.requestAnimationFrame(()=>{const{fitViewQueued:e,nodes:t,setNodes:n}=o.getState();e&&n(t)})},[])),i=Oa(n.useCallback(e=>{const{edges:t=[],setEdges:n,hasDefaultEdges:r,onEdgesChange:i,edgeLookup:a}=o.getState();let s=t;for(const t of e)s="function"==typeof t?t(s):t;r?n(s):i&&i(Ea({items:s,lookup:a}))},[])),a=n.useMemo(()=>({nodeQueue:r,edgeQueue:i}),[]);return t.jsx(Aa.Provider,{value:a,children:e})}const Ra=e=>!!e.panZoom;function La(){const e=(()=>{const e=Hi();return n.useMemo(()=>({zoomIn:async t=>{const{panZoom:n}=e.getState();return!!n&&n.scaleBy(1.2,t)},zoomOut:async t=>{const{panZoom:n}=e.getState();return!!n&&n.scaleBy(1/1.2,t)},zoomTo:async(t,n)=>{const{panZoom:o}=e.getState();return!!o&&o.scaleTo(t,n)},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{const{transform:[o,r,i],panZoom:a}=e.getState();return!!a&&(await a.setViewport({x:t.x??o,y:t.y??r,zoom:t.zoom??i},n),!0)},getViewport:()=>{const[t,n,o]=e.getState().transform;return{x:t,y:n,zoom:o}},setCenter:async(t,n,o)=>e.getState().setCenter(t,n,o),fitBounds:async(t,n)=>{const{width:o,height:r,minZoom:i,maxZoom:a,panZoom:s}=e.getState(),c=Uo(t,o,r,i,a,n?.padding??.1);return!!s&&(await s.setViewport(c,{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0)},screenToFlowPosition:(t,n={})=>{const{transform:o,snapGrid:r,snapToGrid:i,domNode:a}=e.getState();if(!a)return t;const{x:s,y:c}=a.getBoundingClientRect(),l={x:t.x-s,y:t.y-c},u=n.snapGrid??r,d=n.snapToGrid??i;return Ko(l,o,d,u)},flowToScreenPosition:t=>{const{transform:n,domNode:o}=e.getState();if(!o)return t;const{x:r,y:i}=o.getBoundingClientRect(),a=Go(t,n);return{x:a.x+r,y:a.y+i}}}),[])})(),t=Hi(),o=function(){const e=n.useContext(Aa);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}(),r=ji(Ra),i=n.useMemo(()=>{const e=e=>t.getState().nodeLookup.get(e),n=e=>{o.nodeQueue.push(e)},r=e=>{o.edgeQueue.push(e)},i=e=>{const{nodeLookup:n,nodeOrigin:o}=t.getState(),r=_a(e)?e:n.get(e.id),i=r.parentId?nr(r.position,r.measured,r.parentId,n,o):r.position,a={...r,position:i,width:r.measured?.width??r.width,height:r.measured?.height??r.height};return Vo(a)},a=(e,t,o={replace:!1})=>{n(n=>n.map(n=>{if(n.id===e){const e="function"==typeof t?t(n):t;return o.replace&&_a(e)?e:{...n,...e}}return n}))},s=(e,t,n={replace:!1})=>{r(o=>o.map(o=>{if(o.id===e){const e="function"==typeof t?t(o):t;return n.replace&&Pa(e)?e:{...o,...e}}return o}))};return{getNodes:()=>t.getState().nodes.map(e=>({...e})),getNode:t=>e(t)?.internals.userNode,getInternalNode:e,getEdges:()=>{const{edges:e=[]}=t.getState();return e.map(e=>({...e}))},getEdge:e=>t.getState().edgeLookup.get(e),setNodes:n,setEdges:r,addNodes:e=>{const t=Array.isArray(e)?e:[e];o.nodeQueue.push(e=>[...e,...t])},addEdges:e=>{const t=Array.isArray(e)?e:[e];o.edgeQueue.push(e=>[...e,...t])},toObject:()=>{const{nodes:e=[],edges:n=[],transform:o}=t.getState(),[r,i,a]=o;return{nodes:e.map(e=>({...e})),edges:n.map(e=>({...e})),viewport:{x:r,y:i,zoom:a}}},deleteElements:async({nodes:e=[],edges:n=[]})=>{const{nodes:o,edges:r,onNodesDelete:i,onEdgesDelete:a,triggerNodeChanges:s,triggerEdgeChanges:c,onDelete:l,onBeforeDelete:u}=t.getState(),{nodes:d,edges:h}=await async function({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:o,onBeforeDelete:r}){const i=new Set(e.map(e=>e.id)),a=[];for(const e of n){if(!1===e.deletable)continue;const t=i.has(e.id),n=!t&&e.parentId&&a.find(t=>t.id===e.parentId);(t||n)&&a.push(e)}const s=new Set(t.map(e=>e.id)),c=o.filter(e=>!1!==e.deletable),l=Po(a,c);for(const e of c)s.has(e.id)&&!l.find(t=>t.id===e.id)&&l.push(e);if(!r)return{edges:l,nodes:a};const u=await r({nodes:a,edges:l});return"boolean"==typeof u?u?{edges:l,nodes:a}:{edges:[],nodes:[]}:u}({nodesToRemove:e,edgesToRemove:n,nodes:o,edges:r,onBeforeDelete:u}),f=h.length>0,g=d.length>0;if(f){const e=h.map(Ma);a?.(h),c(e)}if(g){const e=d.map(Ma);i?.(d),s(e)}return(g||f)&&l?.({nodes:d,edges:h}),{deletedNodes:d,deletedEdges:h}},getIntersectingNodes:(e,n=!0,o)=>{const r=Yo(e),a=r?e:i(e),s=void 0!==o;return a?(o||t.getState().nodes).filter(o=>{const i=t.getState().nodeLookup.get(o.id);if(i&&!r&&(o.id===e.id||!i.internals.positionAbsolute))return!1;const c=Vo(s?o:i),l=Xo(c,a);return n&&l>0||l>=c.width*c.height||l>=a.width*a.height}):[]},isNodeIntersecting:(e,t,n=!0)=>{const o=Yo(e)?e:i(e);if(!o)return!1;const r=Xo(o,t);return n&&r>0||r>=t.width*t.height||r>=o.width*o.height},updateNode:a,updateNodeData:(e,t,n={replace:!1})=>{a(e,e=>{const o="function"==typeof t?t(e):t;return n.replace?{...e,data:o}:{...e,data:{...e.data,...o}}},n)},updateEdge:s,updateEdgeData:(e,t,n={replace:!1})=>{s(e,e=>{const o="function"==typeof t?t(e):t;return n.replace?{...e,data:o}:{...e,data:{...e.data,...o}}},n)},getNodesBounds:e=>{const{nodeLookup:n,nodeOrigin:o}=t.getState();return No(e,{nodeLookup:n,nodeOrigin:o})},getHandleConnections:({type:e,id:n,nodeId:o})=>Array.from(t.getState().connectionLookup.get(`${o}-${e}${n?`-${n}`:""}`)?.values()??[]),getNodeConnections:({type:e,handleId:n,nodeId:o})=>Array.from(t.getState().connectionLookup.get(`${o}${e?n?`-${e}-${n}`:`-${e}`:""}`)?.values()??[]),fitView:async e=>{const n=t.getState().fitViewResolver??function(){let e,t;return{promise:new Promise((n,o)=>{e=n,t=o}),resolve:e,reject:t}}();return t.setState({fitViewQueued:!0,fitViewOptions:e,fitViewResolver:n}),o.nodeQueue.push(e=>[...e]),n.promise}}},[]);return n.useMemo(()=>({...i,...e,viewportInitialized:r}),[r])}const $a=e=>e.selected,Ba="undefined"!=typeof window?window:void 0;const Ta={position:"absolute",width:"100%",height:"100%",top:0,left:0},Va=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function ja({onPaneContextMenu:o,zoomOnScroll:r=!0,zoomOnPinch:i=!0,panOnScroll:a=!1,panOnScrollSpeed:s=.5,panOnScrollMode:c=e.PanOnScrollMode.Free,zoomOnDoubleClick:l=!0,panOnDrag:u=!0,defaultViewport:d,translateExtent:h,minZoom:f,maxZoom:g,zoomActivationKeyCode:p,preventScrolling:m=!0,children:y,noWheelClassName:v,noPanClassName:x,onViewportChange:w,isControlledViewport:b,paneClickDistance:S,selectionOnDrag:C}){const E=Hi(),M=n.useRef(null),{userSelectionActive:N,lib:k,connectionInProgress:_}=ji(Va,ea),P=pa(p),z=n.useRef();!function(e){const t=Hi();n.useEffect(()=>{const n=()=>{if(!e.current||!(e.current.checkVisibility?.()??1))return!1;const n=ar(e.current);0!==n.height&&0!==n.width||t.getState().onError?.("004",Un()),t.setState({width:n.width||500,height:n.height||500})};if(e.current){n(),window.addEventListener("resize",n);const t=new ResizeObserver(()=>n());return t.observe(e.current),()=>{window.removeEventListener("resize",n),t&&e.current&&t.unobserve(e.current)}}},[])}(M);const I=n.useCallback(e=>{w?.({x:e[0],y:e[1],zoom:e[2]}),b||E.setState({transform:e})},[w,b]);return n.useEffect(()=>{if(M.current){z.current=li({domNode:M.current,minZoom:f,maxZoom:g,translateExtent:h,viewport:d,onDraggingChange:e=>E.setState(t=>t.paneDragging===e?t:{paneDragging:e}),onPanZoomStart:(e,t)=>{const{onViewportChangeStart:n,onMoveStart:o}=E.getState();o?.(e,t),n?.(t)},onPanZoom:(e,t)=>{const{onViewportChange:n,onMove:o}=E.getState();o?.(e,t),n?.(t)},onPanZoomEnd:(e,t)=>{const{onViewportChangeEnd:n,onMoveEnd:o}=E.getState();o?.(e,t),n?.(t)}});const{x:e,y:t,zoom:n}=z.current.getViewport();return E.setState({panZoom:z.current,transform:[e,t,n],domNode:M.current.closest(".react-flow")}),()=>{z.current?.destroy()}}},[]),n.useEffect(()=>{z.current?.update({onPaneContextMenu:o,zoomOnScroll:r,zoomOnPinch:i,panOnScroll:a,panOnScrollSpeed:s,panOnScrollMode:c,zoomOnDoubleClick:l,panOnDrag:u,zoomActivationKeyPressed:P,preventScrolling:m,noPanClassName:x,userSelectionActive:N,noWheelClassName:v,lib:k,onTransformChange:I,connectionInProgress:_,selectionOnDrag:C,paneClickDistance:S})},[o,r,i,a,s,c,l,u,P,m,x,N,v,k,I,_,C,S]),t.jsx("div",{className:"react-flow__renderer",ref:M,style:Ta,children:y})}const Ha=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function Za(){const{userSelectionActive:e,userSelectionRect:n}=ji(Ha,ea);return e&&n?t.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:n.width,height:n.height,transform:`translate(${n.x}px, ${n.y}px)`}}):null}const Xa=(e,t)=>n=>{n.target===t.current&&e?.(n)},Ya=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging,panBy:e.panBy,autoPanSpeed:e.autoPanSpeed});function Fa({isSelecting:o,selectionKeyPressed:i,selectionMode:a=e.SelectionMode.Full,panOnDrag:s,autoPanOnSelection:c,paneClickDistance:l,selectionOnDrag:u,onSelectionStart:d,onSelectionEnd:h,onPaneClick:f,onPaneContextMenu:g,onPaneScroll:p,onPaneMouseEnter:m,onPaneMouseMove:y,onPaneMouseLeave:v,children:x}){const w=n.useRef(0),b=Hi(),{userSelectionActive:S,elementsSelectable:C,dragging:E,panBy:M,autoPanSpeed:N}=ji(Ya,ea),k=C&&(o||S),_=n.useRef(null),P=n.useRef(),z=n.useRef(new Set),I=n.useRef(new Set),O=n.useRef(!1),A=n.useRef(!1),D=n.useRef({x:0,y:0}),R=n.useRef(!1),L=e=>{if(A.current||O.current||b.getState().connection.inProgress)return A.current=!1,void(O.current=!1);f?.(e),b.getState().resetSelectedElements(),b.setState({nodesSelectionActive:!1})},$=p?e=>p(e):void 0;function B(t,n){const{userSelectionRect:o}=b.getState();if(!o)return;const{transform:r,nodeLookup:i,edgeLookup:s,connectionLookup:c,triggerNodeChanges:l,triggerEdgeChanges:u,defaultEdgeOptions:d}=b.getState(),h={x:o.startX,y:o.startY},{x:f,y:g}=Go(h,r),p={startX:h.x,startY:h.y,x:te.id)),I.current=new Set;const v=d?.selectable??!0;for(const e of z.current){const t=c.get(e);if(t)for(const{edgeId:e}of t.values()){const t=s.get(e);t&&(t.selectable??v)&&I.current.add(e)}}if(!or(m,z.current)){l(Ca(i,z.current,!0))}if(!or(y,I.current)){u(Ca(s,I.current))}b.setState({userSelectionRect:p,userSelectionActive:!0,nodesSelectionActive:!1})}function T(){if(!c||!P.current)return;const[e,t]=Lo(D.current,P.current,N);M({x:e,y:t}).then(e=>{if(!A.current||!e)return void(w.current=requestAnimationFrame(T));const{x:t,y:n}=D.current;B(t,n),w.current=requestAnimationFrame(T)})}const V=()=>{cancelAnimationFrame(w.current),w.current=0,R.current=!1};n.useEffect(()=>()=>V(),[]);const j=!0===s||Array.isArray(s)&&s.includes(0);return t.jsxs("div",{className:r(["react-flow__pane",{draggable:j,dragging:E,selection:o}]),onClick:k?void 0:Xa(L,_),onContextMenu:Xa(e=>{Array.isArray(s)&&s?.includes(2)?e.preventDefault():g?.(e)},_),onWheel:Xa($,_),onPointerEnter:k?void 0:m,onPointerMove:k?e=>{const{userSelectionRect:t,transform:n,resetSelectedElements:o}=b.getState();if(!P.current||!t)return;const{x:r,y:a}=dr(e.nativeEvent,P.current);D.current={x:r,y:a};const s=Go({x:t.startX,y:t.startY},n);if(!A.current){const t=i?0:l;if(Math.hypot(r-s.x,a-s.y)<=t)return;o(),d?.(e)}A.current=!0,R.current||(T(),R.current=!0),B(r,a)}:y,onPointerUp:e=>{k?0===e.button&&(e.target?.releasePointerCapture?.(e.pointerId),!S&&e.target===_.current&&b.getState().userSelectionRect&&L?.(e),b.setState({userSelectionActive:!1,userSelectionRect:null}),A.current&&(h?.(e),b.setState({nodesSelectionActive:z.current.size>0})),V()):e.target===_.current&&b.getState().connection.inProgress&&(O.current=!0)},onPointerCancel:k?e=>{e.target?.releasePointerCapture?.(e.pointerId),V()}:void 0,onPointerDownCapture:k?e=>{const{domNode:t,transform:n}=b.getState();if(P.current=t?.getBoundingClientRect(),!P.current)return;const r=e.target===_.current;if(!r&&!!e.target.closest(".nokey")||!o||!(u&&r||i)||0!==e.button||!e.isPrimary)return;e.target?.setPointerCapture?.(e.pointerId),A.current=!1;const{x:a,y:s}=dr(e.nativeEvent,P.current),c=Ko({x:a,y:s},n);b.setState({userSelectionRect:{width:0,height:0,startX:c.x,startY:c.y,x:a,y:s}}),r||(e.stopPropagation(),e.preventDefault())}:void 0,onClickCapture:k?e=>{A.current&&(e.stopPropagation(),A.current=!1)}:void 0,onPointerLeave:v,ref:_,style:Ta,children:[x,t.jsx(Za,{})]})}function Wa({id:e,store:t,unselect:n=!1,nodeRef:o}){const{addSelectedNodes:r,unselectNodesAndEdges:i,multiSelectionActive:a,nodeLookup:s,onError:c}=t.getState(),l=s.get(e);l?(t.setState({nodesSelectionActive:!1}),l.selected?(n||l.selected&&a)&&(i({nodes:[l],edges:[]}),requestAnimationFrame(()=>o?.current?.blur())):r([e])):c?.("012",io(e))}function Ka({nodeRef:e,disabled:t=!1,noDragClassName:o,handleSelector:r,nodeId:i,isSelectable:a,nodeClickDistance:s}){const c=Hi(),[l,u]=n.useState(!1),d=n.useRef();return n.useEffect(()=>{if(!t)return d.current=Gr({getStoreItems:()=>c.getState(),onNodeMouseDown:t=>{Wa({id:t,store:c,nodeRef:e})},onDragStart:()=>{u(!0)},onDragStop:()=>{u(!1)}}),()=>{d.current?.destroy(),d.current=void 0}},[t,c,e]),n.useEffect(()=>{!t&&e.current&&d.current&&d.current.update({noDragClassName:o,handleSelector:r,domNode:e.current,isSelectable:a,nodeId:i,nodeClickDistance:s})},[o,r,t,a,e,i,s]),l}function Ga(){const e=Hi();return n.useCallback(t=>{const{nodeExtent:n,snapToGrid:o,snapGrid:r,nodesDraggable:i,onError:a,updateNodePositions:s,nodeLookup:c,nodeOrigin:l}=e.getState(),u=new Map,d=(e=>t=>t.selected&&(t.draggable||e&&void 0===t.draggable))(i),h=o?r[0]:5,f=o?r[1]:5,g=t.direction.x*h*t.factor,p=t.direction.y*f*t.factor;for(const[,e]of c){if(!d(e))continue;let t={x:e.internals.positionAbsolute.x+g,y:e.internals.positionAbsolute.y+p};o&&(t=Wo(t,r));const{position:i,positionAbsolute:s}=Io({nodeId:e.id,nextPosition:t,nodeLookup:c,nodeExtent:n,nodeOrigin:l,onError:a});e.position=i,e.internals.positionAbsolute=s,u.set(e.id,e)}s(u)},[])}const qa=n.createContext(null),Ua=qa.Provider;qa.Consumer;const Qa=()=>n.useContext(qa),Ja=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),es=n.createContext(null);function ts({children:e}){const n=ji(Ja,ea);return t.jsx(es.Provider,{value:n,children:e})}const ns={connectingFrom:!1,connectingTo:!1,clickConnecting:!1,isPossibleEndHandle:!0,connectionInProcess:!1,clickConnectionInProcess:!1,valid:!1};const os=n.memo(za(function({type:o="source",position:i=e.Position.Top,isValidConnection:a,isConnectable:s=!0,isConnectableStart:c=!0,isConnectableEnd:l=!0,id:u,onConnect:d,children:h,className:f,onMouseDown:g,onTouchStart:p,...m},y){const v=u||null,x="target"===o,w=Hi(),b=Qa(),{connectOnClick:S,noPanClassName:C,rfId:E}=function(){const e=n.useContext(es);if(!e)throw new Error("useHandleConfig must be used within a HandleConfigProvider");return e}(),{connectingFrom:M,connectingTo:N,clickConnecting:k,isPossibleEndHandle:_,connectionInProcess:P,clickConnectionInProcess:z,valid:I}=ji(((t,n,o)=>r=>{const{connectionClickStartHandle:i,connectionMode:a,connection:s}=r,{fromHandle:c,toHandle:l,isValid:u}=s;if(!c&&!i)return ns;const d=l?.nodeId===t&&l?.id===n&&l?.type===o;return{connectingFrom:c?.nodeId===t&&c?.id===n&&c?.type===o,connectingTo:d,clickConnecting:i?.nodeId===t&&i?.id===n&&i?.type===o,isPossibleEndHandle:a===e.ConnectionMode.Strict?c?.type!==o:t!==c?.nodeId||n!==c?.id,connectionInProcess:!!c,clickConnectionInProcess:!!i,valid:d&&u}})(b,v,o),ea);b||w.getState().onError?.("010",oo());const O=e=>{const{defaultEdgeOptions:t,onConnect:n,hasDefaultEdges:o}=w.getState(),r={...t,...e};if(o){const{edges:e,setEdges:t,onError:n}=w.getState();t(ka(r,e,{onError:n}))}n?.(r),d?.(r)},A=e=>{if(!b)return;const t=ur(e.nativeEvent);if(c&&(t&&0===e.button||!t)){const t=w.getState();ti.onPointerDown(e.nativeEvent,{handleDomNode:e.currentTarget,autoPanOnConnect:t.autoPanOnConnect,connectionMode:t.connectionMode,connectionRadius:t.connectionRadius,domNode:t.domNode,nodeLookup:t.nodeLookup,lib:t.lib,isTarget:x,handleId:v,nodeId:b,flowId:t.rfId,panBy:t.panBy,cancelConnection:t.cancelConnection,onConnectStart:t.onConnectStart,onConnectEnd:(...e)=>w.getState().onConnectEnd?.(...e),updateConnection:t.updateConnection,onConnect:O,isValidConnection:a||((...e)=>w.getState().isValidConnection?.(...e)??!0),getTransform:()=>w.getState().transform,getFromHandle:()=>w.getState().connection.fromHandle,autoPanSpeed:t.autoPanSpeed,dragThreshold:t.connectionDragThreshold})}t?g?.(e):p?.(e)};return t.jsx("div",{"data-handleid":v,"data-nodeid":b,"data-handlepos":i,"data-id":`${E}-${b}-${v}-${o}`,className:r(["react-flow__handle",`react-flow__handle-${i}`,"nodrag",C,f,{source:!x,target:x,connectable:s,connectablestart:c,connectableend:l,clickconnecting:k,connectingfrom:M,connectingto:N,valid:I,connectionindicator:s&&(!P||_)&&(P||z?l:c)}]),onMouseDown:A,onTouchStart:A,onClick:S?e=>{const{onClickConnectStart:t,onClickConnectEnd:n,connectionClickStartHandle:r,connectionMode:i,isValidConnection:s,lib:l,rfId:u,nodeLookup:d,connection:h}=w.getState();if(!b||!r&&!c)return;if(!r)return t?.(e.nativeEvent,{nodeId:b,handleId:v,handleType:o}),void w.setState({connectionClickStartHandle:{nodeId:b,type:o,id:v}});const f=sr(e.target),g=a||s,{connection:p,isValid:m}=ti.isValid(e.nativeEvent,{handle:{nodeId:b,id:v,type:o},connectionMode:i,fromNodeId:r.nodeId,fromHandleId:r.id||null,fromType:r.type,isValidConnection:g,flowId:u,doc:f,lib:l,nodeLookup:d});m&&p&&O(p);const y=structuredClone(h);delete y.inProgress,y.toPosition=y.toHandle?y.toHandle.position:null,n?.(e,y),w.setState({connectionClickStartHandle:null})}:void 0,ref:y,...m,children:h})}));const rs={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},is={input:function({data:n,isConnectable:o,sourcePosition:r=e.Position.Bottom}){return t.jsxs(t.Fragment,{children:[n?.label,t.jsx(os,{type:"source",position:r,isConnectable:o})]})},default:function({data:n,isConnectable:o,targetPosition:r=e.Position.Top,sourcePosition:i=e.Position.Bottom}){return t.jsxs(t.Fragment,{children:[t.jsx(os,{type:"target",position:r,isConnectable:o}),n?.label,t.jsx(os,{type:"source",position:i,isConnectable:o})]})},output:function({data:n,isConnectable:o,targetPosition:r=e.Position.Top}){return t.jsxs(t.Fragment,{children:[t.jsx(os,{type:"target",position:r,isConnectable:o}),n?.label]})},group:function(){return null}};const as=e=>{const{width:t,height:n,x:o,y:r}=ko(e.nodeLookup,{filter:e=>!!e.selected});return{width:Fo(t)?t:null,height:Fo(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${o}px,${r}px)`}};function ss({onSelectionContextMenu:e,noPanClassName:o,disableKeyboardA11y:i}){const a=Hi(),{width:s,height:c,transformString:l,userSelectionActive:u}=ji(as,ea),d=Ga(),h=n.useRef(null);n.useEffect(()=>{i||h.current?.focus({preventScroll:!0})},[i]);const f=!u&&null!==s&&null!==c;if(Ka({nodeRef:h,disabled:!f}),!f)return null;const g=e?t=>{const n=a.getState().nodes.filter(e=>e.selected);e(t,n)}:void 0;return t.jsx("div",{className:r(["react-flow__nodesselection","react-flow__container",o]),style:{transform:l},children:t.jsx("div",{ref:h,className:"react-flow__nodesselection-rect",onContextMenu:g,tabIndex:i?void 0:-1,onKeyDown:i?void 0:e=>{Object.prototype.hasOwnProperty.call(rs,e.key)&&(e.preventDefault(),d({direction:rs[e.key],factor:e.shiftKey?4:1}))},style:{width:s,height:c}})})}const cs="undefined"!=typeof window?window:void 0,ls=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function us({children:e,onPaneClick:o,onPaneMouseEnter:r,onPaneMouseMove:i,onPaneMouseLeave:a,onPaneContextMenu:s,onPaneScroll:c,paneClickDistance:l,deleteKeyCode:u,selectionKeyCode:d,selectionOnDrag:h,selectionMode:f,onSelectionStart:g,onSelectionEnd:p,multiSelectionKeyCode:m,panActivationKeyCode:y,zoomActivationKeyCode:v,elementsSelectable:x,zoomOnScroll:w,zoomOnPinch:b,panOnScroll:S,panOnScrollSpeed:C,panOnScrollMode:E,zoomOnDoubleClick:M,panOnDrag:N,autoPanOnSelection:k,defaultViewport:_,translateExtent:P,minZoom:z,maxZoom:I,preventScrolling:O,onSelectionContextMenu:A,noWheelClassName:D,noPanClassName:R,disableKeyboardA11y:L,onViewportChange:$,isControlledViewport:B}){const{nodesSelectionActive:T,userSelectionActive:V}=ji(ls,ea),j=pa(d,{target:cs}),H=pa(y,{target:cs}),Z=H||N,X=H||S,Y=h&&!0!==Z,F=j||V||Y;return function({deleteKeyCode:e,multiSelectionKeyCode:t}){const o=Hi(),{deleteElements:r}=La(),i=pa(e,{actInsideInputWithModifier:!1}),a=pa(t,{target:Ba});n.useEffect(()=>{if(i){const{edges:e,nodes:t}=o.getState();r({nodes:t.filter($a),edges:e.filter($a)}),o.setState({nodesSelectionActive:!1})}},[i]),n.useEffect(()=>{o.setState({multiSelectionActive:a})},[a])}({deleteKeyCode:u,multiSelectionKeyCode:m}),t.jsx(ja,{onPaneContextMenu:s,elementsSelectable:x,zoomOnScroll:w,zoomOnPinch:b,panOnScroll:X,panOnScrollSpeed:C,panOnScrollMode:E,zoomOnDoubleClick:M,panOnDrag:!j&&Z,defaultViewport:_,translateExtent:P,minZoom:z,maxZoom:I,zoomActivationKeyCode:v,preventScrolling:O,noWheelClassName:D,noPanClassName:R,onViewportChange:$,isControlledViewport:B,paneClickDistance:l,selectionOnDrag:Y,children:t.jsxs(Fa,{onSelectionStart:g,onSelectionEnd:p,onPaneClick:o,onPaneMouseEnter:r,onPaneMouseMove:i,onPaneMouseLeave:a,onPaneContextMenu:s,onPaneScroll:c,panOnDrag:Z,autoPanOnSelection:k,isSelecting:!!F,selectionMode:f,selectionKeyPressed:j,paneClickDistance:l,selectionOnDrag:Y,children:[e,T&&t.jsx(ss,{onSelectionContextMenu:A,noPanClassName:R,disableKeyboardA11y:L})]})})}us.displayName="FlowRenderer";const ds=n.memo(us);function hs(e){return ji(n.useCallback((e=>t=>e?_o(t.nodeLookup,{x:0,y:0,width:t.width,height:t.height},t.transform,!0).map(e=>e.id):Array.from(t.nodeLookup.keys()))(e),[e]),ea)}const fs=e=>e.updateNodeInternals;var gs=n.memo(function({id:e,onClick:o,onMouseEnter:i,onMouseMove:a,onMouseLeave:s,onContextMenu:c,onDoubleClick:l,nodesDraggable:u,elementsSelectable:d,nodesConnectable:h,nodesFocusable:f,resizeObserver:g,noDragClassName:p,noPanClassName:m,disableKeyboardA11y:y,rfId:v,nodeTypes:x,nodeClickDistance:w,onError:b}){const{node:S,internals:C,isParent:E}=ji(t=>{const n=t.nodeLookup.get(e),o=t.parentLookup.has(e);return{node:n,internals:n.internals,isParent:o}},ea);let M=S.type||"default",N=x?.[M]||is[M];void 0===N&&(b?.("003",qn(M)),M="default",N=x?.default||is.default);const k=!!(S.draggable||u&&void 0===S.draggable),_=!!(S.selectable||d&&void 0===S.selectable),P=!!(S.connectable||h&&void 0===S.connectable),z=!!(S.focusable||f&&void 0===S.focusable),I=Hi(),O=tr(S),A=function({node:e,nodeType:t,hasDimensions:o,resizeObserver:r}){const i=Hi(),a=n.useRef(null),s=n.useRef(null),c=n.useRef(e.sourcePosition),l=n.useRef(e.targetPosition),u=n.useRef(t),d=o&&!!e.internals.handleBounds;return n.useEffect(()=>{!a.current||e.hidden||d&&s.current===a.current||(s.current&&r?.unobserve(s.current),r?.observe(a.current),s.current=a.current)},[d,e.hidden]),n.useEffect(()=>()=>{s.current&&(r?.unobserve(s.current),s.current=null)},[]),n.useEffect(()=>{if(a.current){const n=u.current!==t,o=c.current!==e.sourcePosition,r=l.current!==e.targetPosition;(n||o||r)&&(u.current=t,c.current=e.sourcePosition,l.current=e.targetPosition,i.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:a.current,force:!0}]])))}},[e.id,t,e.sourcePosition,e.targetPosition]),a}({node:S,nodeType:M,hasDimensions:O,resizeObserver:g}),D=Ka({nodeRef:A,disabled:S.hidden||!k,noDragClassName:p,handleSelector:S.dragHandle,nodeId:e,isSelectable:_,nodeClickDistance:w}),R=Ga();if(S.hidden)return null;const L=er(S),$=function(e){return void 0===e.internals.handleBounds?{width:e.width??e.initialWidth??e.style?.width,height:e.height??e.initialHeight??e.style?.height}:{width:e.width??e.style?.width,height:e.height??e.style?.height}}(S),B=_||k||o||i||a||s,T=i?e=>i(e,{...C.userNode}):void 0,V=a?e=>a(e,{...C.userNode}):void 0,j=s?e=>s(e,{...C.userNode}):void 0,H=c?e=>c(e,{...C.userNode}):void 0,Z=l?e=>l(e,{...C.userNode}):void 0;return t.jsx("div",{className:r(["react-flow__node",`react-flow__node-${M}`,{[m]:k},S.className,{selected:S.selected,selectable:_,parent:E,draggable:k,dragging:D}]),ref:A,style:{zIndex:C.z,transform:`translate(${C.positionAbsolute.x}px,${C.positionAbsolute.y}px)`,pointerEvents:B?"all":"none",visibility:O?"visible":"hidden",...S.style,...$},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:T,onMouseMove:V,onMouseLeave:j,onContextMenu:H,onClick:t=>{const{selectNodesOnDrag:n,nodeDragThreshold:r}=I.getState();_&&(!n||!k||r>0)&&Wa({id:e,store:I,nodeRef:A}),o&&o(t,{...C.userNode})},onDoubleClick:Z,onKeyDown:z?t=>{if(!lr(t.nativeEvent)&&!y)if(lo.includes(t.key)&&_){const n="Escape"===t.key;Wa({id:e,store:I,unselect:n,nodeRef:A})}else if(k&&S.selected&&Object.prototype.hasOwnProperty.call(rs,t.key)){t.preventDefault();const{ariaLabelConfig:e}=I.getState();I.setState({ariaLiveMessage:e["node.a11yDescription.ariaLiveMessage"]({direction:t.key.replace("Arrow","").toLowerCase(),x:~~C.positionAbsolute.x,y:~~C.positionAbsolute.y})}),R({direction:rs[t.key],factor:t.shiftKey?4:1})}}:void 0,tabIndex:z?0:void 0,onFocus:z?()=>{if(y||!A.current?.matches(":focus-visible"))return;const{transform:t,width:n,height:o,autoPanOnNodeFocus:r,setCenter:i}=I.getState();if(!r)return;_o(new Map([[e,S]]),{x:0,y:0,width:n,height:o},t,!0).length>0||i(S.position.x+L.width/2,S.position.y+L.height/2,{zoom:t[2]})}:void 0,role:S.ariaRole??(z?"group":void 0),"aria-roledescription":"node","aria-describedby":y?void 0:`${Yi}-${v}`,"aria-label":S.ariaLabel,...S.domAttributes,children:t.jsx(Ua,{value:e,children:t.jsx(N,{id:e,data:S.data,type:M,positionAbsoluteX:C.positionAbsolute.x,positionAbsoluteY:C.positionAbsolute.y,selected:S.selected??!1,selectable:_,draggable:k,deletable:S.deletable??!0,isConnectable:P,sourcePosition:S.sourcePosition,targetPosition:S.targetPosition,dragging:D,dragHandle:S.dragHandle,zIndex:C.z,parentId:S.parentId,...L})})})});const ps=e=>({nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function ms(e){const{nodesConnectable:o,nodesFocusable:r,elementsSelectable:i,onError:a}=ji(ps,ea),s=hs(e.onlyRenderVisibleElements),c=function(){const e=ji(fs),[t]=n.useState(()=>"undefined"==typeof ResizeObserver?null:new ResizeObserver(t=>{const n=new Map;t.forEach(e=>{const t=e.target.getAttribute("data-id");n.set(t,{id:t,nodeElement:e.target,force:!0})}),e(n)}));return n.useEffect(()=>()=>{t?.disconnect()},[t]),t}();return t.jsx("div",{className:"react-flow__nodes",style:Ta,children:s.map(n=>t.jsx(gs,{id:n,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:c,nodesDraggable:e.nodesDraggable??!0,nodesConnectable:o,nodesFocusable:r,elementsSelectable:i,nodeClickDistance:e.nodeClickDistance,onError:a},n))})}ms.displayName="NodeRenderer";const ys=n.memo(ms);const vs={[e.MarkerType.Arrow]:({color:e="none",strokeWidth:n=1})=>{const o={strokeWidth:n,...e&&{stroke:e}};return t.jsx("polyline",{className:"arrow",style:o,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},[e.MarkerType.ArrowClosed]:({color:e="none",strokeWidth:n=1})=>{const o={strokeWidth:n,...e&&{stroke:e,fill:e}};return t.jsx("polyline",{className:"arrowclosed",style:o,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})}};const xs=({id:e,type:o,color:r,width:i=12.5,height:a=12.5,markerUnits:s="strokeWidth",strokeWidth:c,orient:l="auto-start-reverse"})=>{const u=function(e){const t=Hi();return n.useMemo(()=>Object.prototype.hasOwnProperty.call(vs,e)?vs[e]:(t.getState().onError?.("009",to(e)),null),[e])}(o);return u?t.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${i}`,markerHeight:`${a}`,viewBox:"-10 -10 20 20",markerUnits:s,orient:l,refX:"0",refY:"0",children:t.jsx(u,{color:r,strokeWidth:c})}):null},ws=({defaultColor:e,rfId:o})=>{const r=ji(e=>e.edges),i=ji(e=>e.defaultEdgeOptions),a=n.useMemo(()=>{const t=function(e,{id:t,defaultColor:n,defaultMarkerStart:o,defaultMarkerEnd:r}){const i=new Set;return e.reduce((e,a)=>([a.markerStart||o,a.markerEnd||r].forEach(o=>{if(o&&"object"==typeof o){const r=zr(o,t);i.has(r)||(e.push({id:r,color:o.color||n,...o}),i.add(r))}}),e),[]).sort((e,t)=>e.id.localeCompare(t.id))}(r,{id:o,defaultColor:e,defaultMarkerStart:i?.markerStart,defaultMarkerEnd:i?.markerEnd});return t},[r,i,o,e]);return a.length?t.jsx("svg",{className:"react-flow__marker","aria-hidden":"true",children:t.jsx("defs",{children:a.map(e=>t.jsx(xs,{id:e.id,type:e.type,color:e.color,width:e.width,height:e.height,markerUnits:e.markerUnits,strokeWidth:e.strokeWidth,orient:e.orient},e.id))})}):null};ws.displayName="MarkerDefinitions";var bs=n.memo(ws);function Ss({x:e,y:o,label:i,labelStyle:a,labelShowBg:s=!0,labelBgStyle:c,labelBgPadding:l=[2,4],labelBgBorderRadius:u=2,children:d,className:h,...f}){const[g,p]=n.useState({x:1,y:0,width:0,height:0}),m=r(["react-flow__edge-textwrapper",h]),y=n.useRef(null);return n.useEffect(()=>{if(y.current){const e=y.current.getBBox();p({x:e.x,y:e.y,width:e.width,height:e.height})}},[i]),i?t.jsxs("g",{transform:`translate(${e-g.width/2} ${o-g.height/2})`,className:m,visibility:g.width?"visible":"hidden",...f,children:[s&&t.jsx("rect",{width:g.width+2*l[0],x:-l[0],y:-l[1],height:g.height+2*l[1],className:"react-flow__edge-textbg",style:c,rx:u,ry:u}),t.jsx("text",{className:"react-flow__edge-text",y:g.height/2,dy:"0.3em",ref:y,style:a,children:i}),d]}):null}Ss.displayName="EdgeText";const Cs=n.memo(Ss);function Es({path:e,labelX:n,labelY:o,label:i,labelStyle:a,labelShowBg:s,labelBgStyle:c,labelBgPadding:l,labelBgBorderRadius:u,interactionWidth:d=20,...h}){return t.jsxs(t.Fragment,{children:[t.jsx("path",{...h,d:e,fill:"none",className:r(["react-flow__edge-path",h.className])}),d?t.jsx("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:d,className:"react-flow__edge-interaction"}):null,i&&Fo(n)&&Fo(o)?t.jsx(Cs,{x:n,y:o,label:i,labelStyle:a,labelShowBg:s,labelBgStyle:c,labelBgPadding:l,labelBgBorderRadius:u}):null]})}function Ms({pos:t,x1:n,y1:o,x2:r,y2:i}){return t===e.Position.Left||t===e.Position.Right?[.5*(n+r),o]:[n,.5*(o+i)]}function Ns({sourceX:t,sourceY:n,sourcePosition:o=e.Position.Bottom,targetX:r,targetY:i,targetPosition:a=e.Position.Top}){const[s,c]=Ms({pos:o,x1:t,y1:n,x2:r,y2:i}),[l,u]=Ms({pos:a,x1:r,y1:i,x2:t,y2:n}),[d,h,f,g]=fr({sourceX:t,sourceY:n,targetX:r,targetY:i,sourceControlX:s,sourceControlY:c,targetControlX:l,targetControlY:u});return[`M${t},${n} C${s},${c} ${l},${u} ${r},${i}`,d,h,f,g]}function ks(e){return n.memo(({id:n,sourceX:o,sourceY:r,targetX:i,targetY:a,sourcePosition:s,targetPosition:c,label:l,labelStyle:u,labelShowBg:d,labelBgStyle:h,labelBgPadding:f,labelBgBorderRadius:g,style:p,markerEnd:m,markerStart:y,interactionWidth:v})=>{const[x,w,b]=Ns({sourceX:o,sourceY:r,sourcePosition:s,targetX:i,targetY:a,targetPosition:c}),S=e.isInternal?void 0:n;return t.jsx(Es,{id:S,path:x,labelX:w,labelY:b,label:l,labelStyle:u,labelShowBg:d,labelBgStyle:h,labelBgPadding:f,labelBgBorderRadius:g,style:p,markerEnd:m,markerStart:y,interactionWidth:v})})}const _s=ks({isInternal:!1}),Ps=ks({isInternal:!0});function zs(o){return n.memo(({id:n,sourceX:r,sourceY:i,targetX:a,targetY:s,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:f,style:g,sourcePosition:p=e.Position.Bottom,targetPosition:m=e.Position.Top,markerEnd:y,markerStart:v,pathOptions:x,interactionWidth:w})=>{const[b,S,C]=Mr({sourceX:r,sourceY:i,sourcePosition:p,targetX:a,targetY:s,targetPosition:m,borderRadius:x?.borderRadius,offset:x?.offset,stepPosition:x?.stepPosition}),E=o.isInternal?void 0:n;return t.jsx(Es,{id:E,path:b,labelX:S,labelY:C,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:f,style:g,markerEnd:y,markerStart:v,interactionWidth:w})})}_s.displayName="SimpleBezierEdge",Ps.displayName="SimpleBezierEdgeInternal";const Is=zs({isInternal:!1}),Os=zs({isInternal:!0});function As(e){return n.memo(({id:o,...r})=>{const i=e.isInternal?void 0:o;return t.jsx(Is,{...r,id:i,pathOptions:n.useMemo(()=>({borderRadius:0,offset:r.pathOptions?.offset}),[r.pathOptions?.offset])})})}Is.displayName="SmoothStepEdge",Os.displayName="SmoothStepEdgeInternal";const Ds=As({isInternal:!1}),Rs=As({isInternal:!0});function Ls(e){return n.memo(({id:n,sourceX:o,sourceY:r,targetX:i,targetY:a,label:s,labelStyle:c,labelShowBg:l,labelBgStyle:u,labelBgPadding:d,labelBgBorderRadius:h,style:f,markerEnd:g,markerStart:p,interactionWidth:m})=>{const[y,v,x]=wr({sourceX:o,sourceY:r,targetX:i,targetY:a}),w=e.isInternal?void 0:n;return t.jsx(Es,{id:w,path:y,labelX:v,labelY:x,label:s,labelStyle:c,labelShowBg:l,labelBgStyle:u,labelBgPadding:d,labelBgBorderRadius:h,style:f,markerEnd:g,markerStart:p,interactionWidth:m})})}Ds.displayName="StepEdge",Rs.displayName="StepEdgeInternal";const $s=Ls({isInternal:!1}),Bs=Ls({isInternal:!0});function Ts(o){return n.memo(({id:n,sourceX:r,sourceY:i,targetX:a,targetY:s,sourcePosition:c=e.Position.Bottom,targetPosition:l=e.Position.Top,label:u,labelStyle:d,labelShowBg:h,labelBgStyle:f,labelBgPadding:g,labelBgBorderRadius:p,style:m,markerEnd:y,markerStart:v,pathOptions:x,interactionWidth:w})=>{const[b,S,C]=mr({sourceX:r,sourceY:i,sourcePosition:c,targetX:a,targetY:s,targetPosition:l,curvature:x?.curvature}),E=o.isInternal?void 0:n;return t.jsx(Es,{id:E,path:b,labelX:S,labelY:C,label:u,labelStyle:d,labelShowBg:h,labelBgStyle:f,labelBgPadding:g,labelBgBorderRadius:p,style:m,markerEnd:y,markerStart:v,interactionWidth:w})})}$s.displayName="StraightEdge",Bs.displayName="StraightEdgeInternal";const Vs=Ts({isInternal:!1}),js=Ts({isInternal:!0});Vs.displayName="BezierEdge",js.displayName="BezierEdgeInternal";const Hs={default:js,straight:Bs,step:Rs,smoothstep:Os,simplebezier:Ps},Zs={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null,zIndex:void 0},Xs=(t,n,o)=>o===e.Position.Left?t-n:o===e.Position.Right?t+n:t,Ys=(t,n,o)=>o===e.Position.Top?t-n:o===e.Position.Bottom?t+n:t,Fs="react-flow__edgeupdater";function Ws({position:e,centerX:n,centerY:o,radius:i=10,onMouseDown:a,onMouseEnter:s,onMouseOut:c,type:l}){return t.jsx("circle",{onMouseDown:a,onMouseEnter:s,onMouseOut:c,className:r([Fs,`${Fs}-${l}`]),cx:Xs(n,i,e),cy:Ys(o,i,e),r:i,stroke:"transparent",fill:"transparent"})}function Ks({isReconnectable:e,reconnectRadius:n,edge:o,sourceX:r,sourceY:i,targetX:a,targetY:s,sourcePosition:c,targetPosition:l,onReconnect:u,onReconnectStart:d,onReconnectEnd:h,setReconnecting:f,setUpdateHover:g}){const p=Hi(),m=(e,t)=>{if(0!==e.button)return;const{autoPanOnConnect:n,domNode:r,connectionMode:i,connectionRadius:a,lib:s,onConnectStart:c,cancelConnection:l,nodeLookup:g,rfId:m,panBy:y,updateConnection:v}=p.getState(),x="target"===t.type;ti.onPointerDown(e.nativeEvent,{autoPanOnConnect:n,connectionMode:i,connectionRadius:a,domNode:r,handleId:t.id,nodeId:t.nodeId,nodeLookup:g,isTarget:x,edgeUpdaterType:t.type,lib:s,flowId:m,cancelConnection:l,panBy:y,isValidConnection:(...e)=>p.getState().isValidConnection?.(...e)??!0,onConnect:e=>u?.(o,e),onConnectStart:(n,r)=>{f(!0),d?.(e,o,t.type),c?.(n,r)},onConnectEnd:(...e)=>p.getState().onConnectEnd?.(...e),onReconnectEnd:(e,n)=>{f(!1),h?.(e,o,t.type,n)},updateConnection:v,getTransform:()=>p.getState().transform,getFromHandle:()=>p.getState().connection.fromHandle,dragThreshold:p.getState().connectionDragThreshold,handleDomNode:e.currentTarget})},y=()=>g(!0),v=()=>g(!1);return t.jsxs(t.Fragment,{children:[(!0===e||"source"===e)&&t.jsx(Ws,{position:c,centerX:r,centerY:i,radius:n,onMouseDown:e=>m(e,{nodeId:o.target,id:o.targetHandle??null,type:"target"}),onMouseEnter:y,onMouseOut:v,type:"source"}),(!0===e||"target"===e)&&t.jsx(Ws,{position:l,centerX:a,centerY:s,radius:n,onMouseDown:e=>m(e,{nodeId:o.source,id:o.sourceHandle??null,type:"source"}),onMouseEnter:y,onMouseOut:v,type:"target"})]})}var Gs=n.memo(function({id:o,edgesFocusable:i,edgesReconnectable:a,elementsSelectable:s,onClick:c,onDoubleClick:l,onContextMenu:u,onMouseEnter:d,onMouseMove:h,onMouseLeave:f,reconnectRadius:g,onReconnect:p,onReconnectStart:m,onReconnectEnd:y,rfId:v,edgeTypes:x,noPanClassName:w,onError:b,disableKeyboardA11y:S}){let C=ji(e=>e.edgeLookup.get(o));const E=ji(e=>e.defaultEdgeOptions);C=E?{...E,...C}:C;let M=C.type||"default",N=x?.[M]||Hs[M];void 0===N&&(b?.("011",ro(M)),M="default",N=x?.default||Hs.default);const k=!!(C.focusable||i&&void 0===C.focusable),_=void 0!==p&&(C.reconnectable||a&&void 0===C.reconnectable),P=!!(C.selectable||s&&void 0===C.selectable),z=n.useRef(null),[I,O]=n.useState(!1),[A,D]=n.useState(!1),R=Hi(),{zIndex:L=C.zIndex,sourceX:$,sourceY:B,targetX:T,targetY:V,sourcePosition:j,targetPosition:H}=ji(n.useCallback(t=>{const n=t.nodeLookup.get(C.source),r=t.nodeLookup.get(C.target);if(!n||!r)return Zs;const i=function(t){const{sourceNode:n,targetNode:o}=t;if(!Nr(n)||!Nr(o))return null;const r=n.internals.handleBounds||kr(n.handles),i=o.internals.handleBounds||kr(o.handles),a=Pr(r?.source??[],t.sourceHandle),s=Pr(t.connectionMode===e.ConnectionMode.Strict?i?.target??[]:(i?.target??[]).concat(i?.source??[]),t.targetHandle);if(!a||!s)return t.onError?.("008",no(a?"target":"source",{id:t.id,sourceHandle:t.sourceHandle,targetHandle:t.targetHandle})),null;const c=a?.position||e.Position.Bottom,l=s?.position||e.Position.Top,u=_r(n,a,c),d=_r(o,s,l);return{sourceX:u.x,sourceY:u.y,targetX:d.x,targetY:d.y,sourcePosition:c,targetPosition:l}}({id:o,sourceNode:n,targetNode:r,sourceHandle:C.sourceHandle||null,targetHandle:C.targetHandle||null,connectionMode:t.connectionMode,onError:b}),a=function({sourceNode:e,targetNode:t,selected:n=!1,zIndex:o=0,elevateOnSelect:r=!1,zIndexMode:i="basic"}){return"manual"===i?o:(r&&n?o+1e3:o)+Math.max(e.parentId||r&&e.selected?e.internals.z:0,t.parentId||r&&t.selected?t.internals.z:0)}({selected:C.selected,zIndex:C.zIndex,sourceNode:n,targetNode:r,elevateOnSelect:t.elevateEdgesOnSelect,zIndexMode:t.zIndexMode});return{...i||Zs,zIndex:a}},[C.source,C.target,C.sourceHandle,C.targetHandle,C.selected,C.zIndex]),ea),Z=n.useMemo(()=>C.markerStart?`url('#${zr(C.markerStart,v)}')`:void 0,[C.markerStart,v]),X=n.useMemo(()=>C.markerEnd?`url('#${zr(C.markerEnd,v)}')`:void 0,[C.markerEnd,v]);if(C.hidden||null===$||null===B||null===T||null===V)return null;const Y=l?e=>{l(e,{...C})}:void 0,F=u?e=>{u(e,{...C})}:void 0,W=d?e=>{d(e,{...C})}:void 0,K=h?e=>{h(e,{...C})}:void 0,G=f?e=>{f(e,{...C})}:void 0;return t.jsx("svg",{style:{zIndex:L},children:t.jsxs("g",{className:r(["react-flow__edge",`react-flow__edge-${M}`,C.className,w,{selected:C.selected,animated:C.animated,inactive:!P&&!c,updating:I,selectable:P}]),onClick:e=>{const{addSelectedEdges:t,unselectNodesAndEdges:n,multiSelectionActive:r}=R.getState();P&&(R.setState({nodesSelectionActive:!1}),C.selected&&r?(n({nodes:[],edges:[C]}),z.current?.blur()):t([o])),c&&c(e,C)},onDoubleClick:Y,onContextMenu:F,onMouseEnter:W,onMouseMove:K,onMouseLeave:G,onKeyDown:k?e=>{if(!S&&lo.includes(e.key)&&P){const{unselectNodesAndEdges:t,addSelectedEdges:n}=R.getState();"Escape"===e.key?(z.current?.blur(),t({edges:[C]})):n([o])}}:void 0,tabIndex:k?0:void 0,role:C.ariaRole??(k?"group":"img"),"aria-roledescription":"edge","data-id":o,"data-testid":`rf__edge-${o}`,"aria-label":null===C.ariaLabel?void 0:C.ariaLabel||`Edge from ${C.source} to ${C.target}`,"aria-describedby":k?`${Fi}-${v}`:void 0,ref:z,...C.domAttributes,children:[!A&&t.jsx(N,{id:o,source:C.source,target:C.target,type:C.type,selected:C.selected,animated:C.animated,selectable:P,deletable:C.deletable??!0,label:C.label,labelStyle:C.labelStyle,labelShowBg:C.labelShowBg,labelBgStyle:C.labelBgStyle,labelBgPadding:C.labelBgPadding,labelBgBorderRadius:C.labelBgBorderRadius,sourceX:$,sourceY:B,targetX:T,targetY:V,sourcePosition:j,targetPosition:H,data:C.data,style:C.style,sourceHandleId:C.sourceHandle,targetHandleId:C.targetHandle,markerStart:Z,markerEnd:X,pathOptions:"pathOptions"in C?C.pathOptions:void 0,interactionWidth:C.interactionWidth}),_&&t.jsx(Ks,{edge:C,isReconnectable:_,reconnectRadius:g,onReconnect:p,onReconnectStart:m,onReconnectEnd:y,sourceX:$,sourceY:B,targetX:T,targetY:V,sourcePosition:j,targetPosition:H,setUpdateHover:O,setReconnecting:D})]})})});const qs=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function Us({defaultMarkerColor:e,onlyRenderVisibleElements:o,rfId:r,edgeTypes:i,noPanClassName:a,onReconnect:s,onEdgeContextMenu:c,onEdgeMouseEnter:l,onEdgeMouseMove:u,onEdgeMouseLeave:d,onEdgeClick:h,reconnectRadius:f,onEdgeDoubleClick:g,onReconnectStart:p,onReconnectEnd:m,disableKeyboardA11y:y}){const{edgesFocusable:v,edgesReconnectable:x,elementsSelectable:w,onError:b}=ji(qs,ea),S=(C=o,ji(n.useCallback(e=>{if(!C)return e.edges.map(e=>e.id);const t=[];if(e.width&&e.height)for(const n of e.edges){const o=e.nodeLookup.get(n.source),r=e.nodeLookup.get(n.target);o&&r&&vr({sourceNode:o,targetNode:r,width:e.width,height:e.height,transform:e.transform})&&t.push(n.id)}return t},[C]),ea));var C;return t.jsxs("div",{className:"react-flow__edges",children:[t.jsx(bs,{defaultColor:e,rfId:r}),S.map(e=>t.jsx(Gs,{id:e,edgesFocusable:v,edgesReconnectable:x,elementsSelectable:w,noPanClassName:a,onReconnect:s,onContextMenu:c,onMouseEnter:l,onMouseMove:u,onMouseLeave:d,onClick:h,reconnectRadius:f,onDoubleClick:g,onReconnectStart:p,onReconnectEnd:m,rfId:r,onError:b,edgeTypes:i,disableKeyboardA11y:y},e))]})}Us.displayName="EdgeRenderer";const Qs=n.memo(Us),Js=e=>`translate(${e[0]}px,${e[1]}px) scale(${e[2]})`;function ec({children:e}){const o=Hi(),r=n.useRef(null),[i]=n.useState(()=>o.getState().transform);return Ia(()=>{let e=null;const t=()=>{const t=o.getState().transform;e&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]||(e=t,r.current&&(r.current.style.transform=Js(t)))};return t(),o.subscribe(t)},[o]),t.jsx("div",{ref:r,className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:Js(i)},children:e})}const tc=e=>e.panZoom?.syncViewport;function nc(e){return e.connection.inProgress?{...e.connection,to:Ko(e.connection.to,e.transform)}:{...e.connection}}function oc(e){const t=function(e){if(e)return t=>{const n=nc(t);return e(n)};return nc}(e);return ji(t,ea)}const rc=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function ic({containerStyle:e,style:n,type:o,component:i}){const{nodesConnectable:a,width:s,height:c,isValid:l,inProgress:u}=ji(rc,ea);return!!(s&&a&&u)?t.jsx("svg",{style:e,width:s,height:c,className:"react-flow__connectionline react-flow__container",children:t.jsx("g",{className:r(["react-flow__connection",So(l)]),children:t.jsx(ac,{style:n,type:o,CustomComponent:i,isValid:l})})}):null}const ac=({style:n,type:o=e.ConnectionLineType.Bezier,CustomComponent:r,isValid:i})=>{const{inProgress:a,from:s,fromNode:c,fromHandle:l,fromPosition:u,to:d,toNode:h,toHandle:f,toPosition:g,pointer:p}=oc();if(!a)return;if(r)return t.jsx(r,{connectionLineType:o,connectionLineStyle:n,fromNode:c,fromHandle:l,fromX:s.x,fromY:s.y,toX:d.x,toY:d.y,fromPosition:u,toPosition:g,connectionStatus:So(i),toNode:h,toHandle:f,pointer:p});let m="";const y={sourceX:s.x,sourceY:s.y,sourcePosition:u,targetX:d.x,targetY:d.y,targetPosition:g};switch(o){case e.ConnectionLineType.Bezier:[m]=mr(y);break;case e.ConnectionLineType.SimpleBezier:[m]=Ns(y);break;case e.ConnectionLineType.Step:[m]=Mr({...y,borderRadius:0});break;case e.ConnectionLineType.SmoothStep:[m]=Mr(y);break;default:[m]=wr(y)}return t.jsx("path",{d:m,fill:"none",className:"react-flow__connection-path",style:n})};ac.displayName="ConnectionLine";const sc={};function cc(e=sc){n.useRef(e),Hi(),n.useEffect(()=>{},[e])}function lc({nodeTypes:e,edgeTypes:o,onInit:r,onNodeClick:i,onEdgeClick:a,onNodeDoubleClick:s,onEdgeDoubleClick:c,onNodeMouseEnter:l,onNodeMouseMove:u,onNodeMouseLeave:d,onNodeContextMenu:h,onSelectionContextMenu:f,onSelectionStart:g,onSelectionEnd:p,connectionLineType:m,connectionLineStyle:y,connectionLineComponent:v,connectionLineContainerStyle:x,selectionKeyCode:w,selectionOnDrag:b,selectionMode:S,multiSelectionKeyCode:C,panActivationKeyCode:E,zoomActivationKeyCode:M,deleteKeyCode:N,onlyRenderVisibleElements:k,elementsSelectable:_,defaultViewport:P,translateExtent:z,minZoom:I,maxZoom:O,preventScrolling:A,defaultMarkerColor:D,zoomOnScroll:R,zoomOnPinch:L,panOnScroll:$,panOnScrollSpeed:B,panOnScrollMode:T,zoomOnDoubleClick:V,panOnDrag:j,autoPanOnSelection:H,onPaneClick:Z,onPaneMouseEnter:X,onPaneMouseMove:Y,onPaneMouseLeave:F,onPaneScroll:W,onPaneContextMenu:K,paneClickDistance:G,nodeClickDistance:q,onEdgeContextMenu:U,onEdgeMouseEnter:Q,onEdgeMouseMove:J,onEdgeMouseLeave:ee,reconnectRadius:te,onReconnect:ne,onReconnectStart:oe,onReconnectEnd:re,noDragClassName:ie,noWheelClassName:ae,noPanClassName:se,disableKeyboardA11y:ce,nodeExtent:le,rfId:ue,viewport:de,onViewportChange:he,nodesDraggable:fe}){return cc(e),cc(o),Hi(),n.useRef(!1),n.useEffect(()=>{},[]),function(e){const t=La(),o=n.useRef(!1);n.useEffect(()=>{!o.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),o.current=!0)},[e,t.viewportInitialized])}(r),function(e){const t=ji(tc),o=Hi();n.useEffect(()=>{e&&(t?.(e),o.setState({transform:[e.x,e.y,e.zoom]}))},[e,t])}(de),t.jsx(ds,{onPaneClick:Z,onPaneMouseEnter:X,onPaneMouseMove:Y,onPaneMouseLeave:F,onPaneContextMenu:K,onPaneScroll:W,paneClickDistance:G,deleteKeyCode:N,selectionKeyCode:w,selectionOnDrag:b,selectionMode:S,onSelectionStart:g,onSelectionEnd:p,multiSelectionKeyCode:C,panActivationKeyCode:E,zoomActivationKeyCode:M,elementsSelectable:_,zoomOnScroll:R,zoomOnPinch:L,zoomOnDoubleClick:V,panOnScroll:$,panOnScrollSpeed:B,panOnScrollMode:T,panOnDrag:j,autoPanOnSelection:H,defaultViewport:P,translateExtent:z,minZoom:I,maxZoom:O,onSelectionContextMenu:f,preventScrolling:A,noDragClassName:ie,noWheelClassName:ae,noPanClassName:se,disableKeyboardA11y:ce,onViewportChange:he,isControlledViewport:!!de,children:t.jsxs(ec,{children:[t.jsx(Qs,{edgeTypes:o,onEdgeClick:a,onEdgeDoubleClick:c,onReconnect:ne,onReconnectStart:oe,onReconnectEnd:re,onlyRenderVisibleElements:k,onEdgeContextMenu:U,onEdgeMouseEnter:Q,onEdgeMouseMove:J,onEdgeMouseLeave:ee,reconnectRadius:te,defaultMarkerColor:D,noPanClassName:se,disableKeyboardA11y:ce,rfId:ue}),t.jsx(ic,{style:y,type:m,component:v,containerStyle:x}),t.jsx("div",{className:"react-flow__edgelabel-renderer"}),t.jsx(ys,{nodeTypes:e,onNodeClick:i,onNodeDoubleClick:s,onNodeMouseEnter:l,onNodeMouseMove:u,onNodeMouseLeave:d,onNodeContextMenu:h,nodeClickDistance:q,onlyRenderVisibleElements:k,noPanClassName:se,noDragClassName:ie,disableKeyboardA11y:ce,nodeExtent:le,rfId:ue,nodesDraggable:fe}),t.jsx("div",{className:"react-flow__viewport-portal"})]})})}lc.displayName="GraphView";const uc=n.memo(lc),dc=(e,t)=>{},hc=({nodes:t,edges:n,defaultNodes:o,defaultEdges:r,width:i,height:a,fitView:s,fitViewOptions:c,minZoom:l=.5,maxZoom:u=2,nodeOrigin:d,nodeExtent:h,zIndexMode:f="basic"}={})=>{const g=new Map,p=new Map,m=new Map,y=new Map,v=r??n??[],x=o??t??[],w=d??[0,0],b=h??co;Xr(m,y,v);const{nodesInitialized:S}=Tr(x,g,p,{nodeOrigin:w,nodeExtent:b,zIndexMode:f});let C=[0,0,1];if(s&&i&&a){const e=ko(g,{filter:e=>!(!e.width&&!e.initialWidth||!e.height&&!e.initialHeight)}),{x:t,y:n,zoom:o}=Uo(e,i,a,l,u,c?.padding??.1);C=[t,n,o]}return{rfId:"1",width:i??0,height:a??0,transform:C,nodes:x,nodesInitialized:S,nodeLookup:g,parentLookup:p,edges:v,edgeLookup:y,connectionLookup:m,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:void 0!==o,hasDefaultEdges:void 0!==r,panZoom:null,minZoom:l,maxZoom:u,translateExtent:co,nodeExtent:b,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:e.ConnectionMode.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:w,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:s??!1,fitViewOptions:c,fitViewResolver:null,connection:{...po},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:dc,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:uo,zIndexMode:f,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},fc=({nodes:t,edges:n,defaultNodes:o,defaultEdges:r,width:i,height:a,fitView:s,fitViewOptions:c,minZoom:l,maxZoom:u,nodeOrigin:d,nodeExtent:h,zIndexMode:f})=>{return g=(g,p)=>{async function m(){const{nodeLookup:e,panZoom:t,fitViewOptions:n,fitViewResolver:o,width:r,height:i,minZoom:a,maxZoom:s}=p();t&&(await zo({nodes:e,width:r,height:i,panZoom:t,minZoom:a,maxZoom:s},n),o?.resolve(!0),g({fitViewResolver:null}))}return{...hc({nodes:t,edges:n,width:i,height:a,fitView:s,fitViewOptions:c,minZoom:l,maxZoom:u,nodeOrigin:d,nodeExtent:h,defaultNodes:o,defaultEdges:r,zIndexMode:f}),setNodes:e=>{const{nodeLookup:t,parentLookup:n,nodeOrigin:o,elevateNodesOnSelect:r,fitViewQueued:i,zIndexMode:a,nodesSelectionActive:s}=p(),{nodesInitialized:c,hasSelectedNodes:l}=Tr(e,t,n,{nodeOrigin:o,nodeExtent:h,elevateNodesOnSelect:r,checkEquality:!0,zIndexMode:a}),u=s&&l;i&&c?(m(),g({nodes:e,nodesInitialized:c,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:u})):g({nodes:e,nodesInitialized:c,nodesSelectionActive:u})},setEdges:e=>{const{connectionLookup:t,edgeLookup:n}=p();Xr(t,n,e),g({edges:e})},setDefaultNodesAndEdges:(e,t)=>{if(e){const{setNodes:t}=p();t(e),g({hasDefaultNodes:!0})}if(t){const{setEdges:e}=p();e(t),g({hasDefaultEdges:!0})}},updateNodeInternals:e=>{const{triggerNodeChanges:t,nodeLookup:n,parentLookup:o,domNode:r,nodeOrigin:i,nodeExtent:a,debug:s,fitViewQueued:c,zIndexMode:l}=p(),{changes:u,updatedInternals:d}=function(e,t,n,o,r,i,a){const s=o?.querySelector(".xyflow__viewport");let c=!1;if(!s)return{changes:[],updatedInternals:c};const l=[],u=window.getComputedStyle(s),{m22:d}=new window.DOMMatrixReadOnly(u.transform),h=[];for(const o of e.values()){const e=t.get(o.id);if(!e)continue;if(e.hidden){t.set(e.id,{...e,internals:{...e.internals,handleBounds:void 0}}),c=!0;continue}const s=ar(o.nodeElement),u=e.measured.width!==s.width||e.measured.height!==s.height;if(s.width&&s.height&&(u||!e.internals.handleBounds||o.force)){const f=o.nodeElement.getBoundingClientRect(),g=Jo(e.extent)?e.extent:i;let{positionAbsolute:p}=e.internals;if(e.parentId&&"parent"===e.extent){const n=t.get(e.parentId);n&&(p=Do(p,s,n))}else g&&(p=Ao(p,g,s));const m={...e,measured:s,internals:{...e.internals,positionAbsolute:p,handleBounds:{source:hr("source",o.nodeElement,f,d,e.id),target:hr("target",o.nodeElement,f,d,e.id)}}};t.set(e.id,m),e.parentId&&Vr(m,t,n,{nodeOrigin:r,zIndexMode:a}),c=!0,u&&(l.push({id:e.id,type:"dimensions",dimensions:s}),e.expandParent&&e.parentId&&h.push({id:e.id,parentId:e.parentId,rect:Vo(m,r)}))}}if(h.length>0){const e=Hr(h,t,n,r);l.push(...e)}return{changes:l,updatedInternals:c}}(e,n,o,r,i,a,l);d&&(function(e,t,n){const o=Lr(Dr,n);for(const n of e.values())if(n.parentId)Vr(n,e,t,o);else{const e=Mo(n,o.nodeOrigin),t=Jo(n.extent)?n.extent:o.nodeExtent,r=Ao(e,t,er(n));n.internals.positionAbsolute=r}}(n,o,{nodeOrigin:i,nodeExtent:a,zIndexMode:l}),c?(m(),g({fitViewQueued:!1,fitViewOptions:void 0})):g({}),u?.length>0&&(s&&console.log("React Flow: trigger node changes",u),t?.(u)))},updateNodePositions:(t,n=!1)=>{const o=[];let r=[];const{nodeLookup:i,triggerNodeChanges:a,connection:s,updateConnection:c,onNodesChangeMiddlewareMap:l}=p();for(const[a,l]of t){const t=i.get(a),u=!!(t?.expandParent&&t?.parentId&&l?.position),d={id:a,type:"position",position:u?{x:Math.max(0,l.position.x),y:Math.max(0,l.position.y)}:l.position,dragging:n};if(t&&s.inProgress&&s.fromNode.id===t.id){const n=_r(t,s.fromHandle,e.Position.Left,!0);c({...s,from:n})}u&&t.parentId&&o.push({id:a,parentId:t.parentId,rect:{...l.internals.positionAbsolute,width:l.measured.width??0,height:l.measured.height??0}}),r.push(d)}if(o.length>0){const{parentLookup:e,nodeOrigin:t}=p(),n=Hr(o,i,e,t);r.push(...n)}for(const e of l.values())r=e(r);a(r)},triggerNodeChanges:e=>{const{onNodesChange:t,setNodes:n,nodes:o,hasDefaultNodes:r,debug:i}=p();e?.length&&(r&&n(wa(e,o)),i&&console.log("React Flow: trigger node changes",e),t?.(e))},triggerEdgeChanges:e=>{const{onEdgesChange:t,setEdges:n,edges:o,hasDefaultEdges:r,debug:i}=p();e?.length&&(r&&n(ba(e,o)),i&&console.log("React Flow: trigger edge changes",e),t?.(e))},addSelectedNodes:e=>{const{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:r,triggerEdgeChanges:i}=p();t?r(e.map(e=>Sa(e,!0))):(r(Ca(o,new Set([...e]),!0)),i(Ca(n)))},addSelectedEdges:e=>{const{multiSelectionActive:t,edgeLookup:n,nodeLookup:o,triggerNodeChanges:r,triggerEdgeChanges:i}=p();t?i(e.map(e=>Sa(e,!0))):(i(Ca(n,new Set([...e]))),r(Ca(o,new Set,!0)))},unselectNodesAndEdges:({nodes:e,edges:t}={})=>{const{edges:n,nodes:o,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=p(),s=e||o,c=t||n,l=[];for(const e of s){if(!e.selected)continue;const t=r.get(e.id);t&&(t.selected=!1),l.push(Sa(e.id,!1))}const u=[];for(const e of c)e.selected&&u.push(Sa(e.id,!1));i(l),a(u)},setMinZoom:e=>{const{panZoom:t,maxZoom:n}=p();t?.setScaleExtent([e,n]),g({minZoom:e})},setMaxZoom:e=>{const{panZoom:t,minZoom:n}=p();t?.setScaleExtent([n,e]),g({maxZoom:e})},setTranslateExtent:e=>{p().panZoom?.setTranslateExtent(e),g({translateExtent:e})},resetSelectedElements:()=>{const{edges:e,nodes:t,triggerNodeChanges:n,triggerEdgeChanges:o,elementsSelectable:r}=p();if(!r)return;const i=t.reduce((e,t)=>t.selected?[...e,Sa(t.id,!1)]:e,[]),a=e.reduce((e,t)=>t.selected?[...e,Sa(t.id,!1)]:e,[]);n(i),o(a)},setNodeExtent:e=>{const{nodes:t,nodeLookup:n,parentLookup:o,nodeOrigin:r,elevateNodesOnSelect:i,nodeExtent:a,zIndexMode:s}=p();e[0][0]===a[0][0]&&e[0][1]===a[0][1]&&e[1][0]===a[1][0]&&e[1][1]===a[1][1]||(Tr(t,n,o,{nodeOrigin:r,nodeExtent:e,elevateNodesOnSelect:i,checkEquality:!1,zIndexMode:s}),g({nodeExtent:e}))},panBy:e=>{const{transform:t,width:n,height:o,panZoom:r,translateExtent:i}=p();return async function({delta:e,panZoom:t,transform:n,translateExtent:o,width:r,height:i}){if(!t||!e.x&&!e.y)return!1;const a=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[r,i]],o);return!!a&&(a.x!==n[0]||a.y!==n[1]||a.k!==n[2])}({delta:e,panZoom:r,transform:t,translateExtent:i,width:n,height:o})},setCenter:async(e,t,n)=>{const{width:o,height:r,maxZoom:i,panZoom:a}=p();if(!a)return!1;const s=void 0!==n?.zoom?n.zoom:i;return await a.setViewport({x:o/2-e*s,y:r/2-t*s,zoom:s},{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0},cancelConnection:()=>{g({connection:{...po}})},updateConnection:e=>{g({connection:e})},reset:()=>g({...hc()})}},p=Object.is,g?$i(g,p):$i;var g,p};function gc({initialNodes:e,initialEdges:o,defaultNodes:r,defaultEdges:i,initialWidth:a,initialHeight:s,initialMinZoom:c,initialMaxZoom:l,initialFitViewOptions:u,fitView:d,nodeOrigin:h,nodeExtent:f,zIndexMode:g,children:p}){const[m]=n.useState(()=>fc({nodes:e,edges:o,defaultNodes:r,defaultEdges:i,width:a,height:s,fitView:d,minZoom:c,maxZoom:l,fitViewOptions:u,nodeOrigin:h,nodeExtent:f,zIndexMode:g}));return t.jsx(Ti,{value:m,children:t.jsx(Da,{children:t.jsx(ts,{children:p})})})}function pc({children:e,nodes:o,edges:r,defaultNodes:i,defaultEdges:a,width:s,height:c,fitView:l,fitViewOptions:u,minZoom:d,maxZoom:h,nodeOrigin:f,nodeExtent:g,zIndexMode:p}){return n.useContext(Bi)?t.jsx(t.Fragment,{children:e}):t.jsx(gc,{initialNodes:o,initialEdges:r,defaultNodes:i,defaultEdges:a,initialWidth:s,initialHeight:c,fitView:l,initialFitViewOptions:u,initialMinZoom:d,initialMaxZoom:h,nodeOrigin:f,nodeExtent:g,zIndexMode:p,children:e})}const mc={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};var yc=za(function({nodes:o,edges:i,defaultNodes:a,defaultEdges:s,className:c,nodeTypes:l,edgeTypes:u,onNodeClick:d,onEdgeClick:h,onInit:f,onMove:g,onMoveStart:p,onMoveEnd:m,onConnect:y,onConnectStart:v,onConnectEnd:x,onClickConnectStart:w,onClickConnectEnd:b,onNodeMouseEnter:S,onNodeMouseMove:C,onNodeMouseLeave:E,onNodeContextMenu:M,onNodeDoubleClick:N,onNodeDragStart:k,onNodeDrag:_,onNodeDragStop:P,onNodesDelete:z,onEdgesDelete:I,onDelete:O,onSelectionChange:A,onSelectionDragStart:D,onSelectionDrag:R,onSelectionDragStop:L,onSelectionContextMenu:$,onSelectionStart:B,onSelectionEnd:T,onBeforeDelete:V,connectionMode:j,connectionLineType:H=e.ConnectionLineType.Bezier,connectionLineStyle:Z,connectionLineComponent:X,connectionLineContainerStyle:Y,deleteKeyCode:F="Backspace",selectionKeyCode:W="Shift",selectionOnDrag:K=!1,selectionMode:G=e.SelectionMode.Full,panActivationKeyCode:q="Space",multiSelectionKeyCode:U=(Qo()?"Meta":"Control"),zoomActivationKeyCode:Q=(Qo()?"Meta":"Control"),snapToGrid:J,snapGrid:ee,onlyRenderVisibleElements:te=!1,selectNodesOnDrag:ne,nodesDraggable:oe,autoPanOnNodeFocus:re,nodesConnectable:ie,nodesFocusable:ae,nodeOrigin:se=sa,edgesFocusable:ce,edgesReconnectable:le,elementsSelectable:ue=!0,defaultViewport:de=ca,minZoom:he=.5,maxZoom:fe=2,translateExtent:ge=co,preventScrolling:pe=!0,nodeExtent:me,defaultMarkerColor:ye="#b1b1b7",zoomOnScroll:ve=!0,zoomOnPinch:xe=!0,panOnScroll:we=!1,panOnScrollSpeed:be=.5,panOnScrollMode:Se=e.PanOnScrollMode.Free,zoomOnDoubleClick:Ce=!0,panOnDrag:Ee=!0,onPaneClick:Me,onPaneMouseEnter:Ne,onPaneMouseMove:ke,onPaneMouseLeave:_e,onPaneScroll:Pe,onPaneContextMenu:ze,paneClickDistance:Ie=1,nodeClickDistance:Oe=0,children:Ae,onReconnect:De,onReconnectStart:Re,onReconnectEnd:Le,onEdgeContextMenu:$e,onEdgeDoubleClick:Be,onEdgeMouseEnter:Te,onEdgeMouseMove:Ve,onEdgeMouseLeave:je,reconnectRadius:He=10,onNodesChange:Ze,onEdgesChange:Xe,noDragClassName:Ye="nodrag",noWheelClassName:Fe="nowheel",noPanClassName:We="nopan",fitView:Ke,fitViewOptions:Ge,connectOnClick:qe,attributionPosition:Ue,proOptions:Qe,defaultEdgeOptions:Je,elevateNodesOnSelect:et=!0,elevateEdgesOnSelect:tt=!1,disableKeyboardA11y:nt=!1,autoPanOnConnect:ot,autoPanOnNodeDrag:rt,autoPanOnSelection:it=!0,autoPanSpeed:at,connectionRadius:st,isValidConnection:ct,onError:lt,style:ut,id:dt,nodeDragThreshold:ht,connectionDragThreshold:ft,viewport:gt,onViewportChange:pt,width:mt,height:yt,colorMode:vt="light",debug:xt,onScroll:wt,ariaLabelConfig:bt,zIndexMode:St="basic",...Ct},Et){const Mt=dt||"1",Nt=function(e){const[t,o]=n.useState("system"===e?null:e);return n.useEffect(()=>{if("system"!==e)return void o(e);const t=fa(),n=()=>o(t?.matches?"dark":"light");return n(),t?.addEventListener("change",n),()=>{t?.removeEventListener("change",n)}},[e]),null!==t?t:fa()?.matches?"dark":"light"}(vt),kt=n.useCallback(e=>{e.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),wt?.(e)},[wt]);return t.jsx("div",{"data-testid":"rf__wrapper",...Ct,onScroll:kt,style:{...ut,...mc},ref:Et,className:r(["react-flow",c,Nt]),id:dt,role:"application",children:t.jsxs(pc,{nodes:o,edges:i,width:mt,height:yt,fitView:Ke,fitViewOptions:Ge,minZoom:he,maxZoom:fe,nodeOrigin:se,nodeExtent:me,zIndexMode:St,children:[t.jsx(ha,{nodes:o,edges:i,defaultNodes:a,defaultEdges:s,onConnect:y,onConnectStart:v,onConnectEnd:x,onClickConnectStart:w,onClickConnectEnd:b,nodesDraggable:oe,autoPanOnNodeFocus:re,nodesConnectable:ie,nodesFocusable:ae,edgesFocusable:ce,edgesReconnectable:le,elementsSelectable:ue,elevateNodesOnSelect:et,elevateEdgesOnSelect:tt,minZoom:he,maxZoom:fe,nodeExtent:me,onNodesChange:Ze,onEdgesChange:Xe,snapToGrid:J,snapGrid:ee,connectionMode:j,translateExtent:ge,connectOnClick:qe,defaultEdgeOptions:Je,fitView:Ke,fitViewOptions:Ge,onNodesDelete:z,onEdgesDelete:I,onDelete:O,onNodeDragStart:k,onNodeDrag:_,onNodeDragStop:P,onSelectionDrag:R,onSelectionDragStart:D,onSelectionDragStop:L,onMove:g,onMoveStart:p,onMoveEnd:m,noPanClassName:We,nodeOrigin:se,rfId:Mt,autoPanOnConnect:ot,autoPanOnNodeDrag:rt,autoPanSpeed:at,onError:lt,connectionRadius:st,isValidConnection:ct,selectNodesOnDrag:ne,nodeDragThreshold:ht,connectionDragThreshold:ft,onBeforeDelete:V,debug:xt,ariaLabelConfig:bt,zIndexMode:St}),t.jsx(uc,{onInit:f,onNodeClick:d,onEdgeClick:h,onNodeMouseEnter:S,onNodeMouseMove:C,onNodeMouseLeave:E,onNodeContextMenu:M,onNodeDoubleClick:N,nodeTypes:l,edgeTypes:u,connectionLineType:H,connectionLineStyle:Z,connectionLineComponent:X,connectionLineContainerStyle:Y,selectionKeyCode:W,selectionOnDrag:K,selectionMode:G,deleteKeyCode:F,multiSelectionKeyCode:U,panActivationKeyCode:q,zoomActivationKeyCode:Q,onlyRenderVisibleElements:te,defaultViewport:de,translateExtent:ge,minZoom:he,maxZoom:fe,preventScrolling:pe,zoomOnScroll:ve,zoomOnPinch:xe,zoomOnDoubleClick:Ce,panOnScroll:we,panOnScrollSpeed:be,panOnScrollMode:Se,panOnDrag:Ee,autoPanOnSelection:it,onPaneClick:Me,onPaneMouseEnter:Ne,onPaneMouseMove:ke,onPaneMouseLeave:_e,onPaneScroll:Pe,onPaneContextMenu:ze,paneClickDistance:Ie,nodeClickDistance:Oe,onSelectionContextMenu:$,onSelectionStart:B,onSelectionEnd:T,onReconnect:De,onReconnectStart:Re,onReconnectEnd:Le,onEdgeContextMenu:$e,onEdgeDoubleClick:Be,onEdgeMouseEnter:Te,onEdgeMouseMove:Ve,onEdgeMouseLeave:je,reconnectRadius:He,defaultMarkerColor:ye,noDragClassName:Ye,noWheelClassName:Fe,noPanClassName:We,rfId:Mt,disableKeyboardA11y:nt,nodeExtent:me,viewport:gt,onViewportChange:pt,nodesDraggable:oe}),t.jsx(aa,{onSelectionChange:A}),Ae,t.jsx(Ji,{proOptions:Qe,position:Ue}),t.jsx(qi,{rfId:Mt,disableKeyboardA11y:nt})]})})});const vc=e=>e.domNode?.querySelector(".react-flow__edgelabel-renderer");function xc({children:e}){const t=ji(vc);return t?o.createPortal(e,t):null}const wc=e=>e.domNode?.querySelector(".react-flow__viewport-portal");const bc=e=>e.nodes;const Sc=e=>e.edges;const Cc=e=>({x:e.transform[0],y:e.transform[1],zoom:e.transform[2]});const Ec=ao();function Mc({dimensions:e,lineWidth:n,variant:o,className:i}){return t.jsx("path",{strokeWidth:n,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:r(["react-flow__background-pattern",o,i])})}function Nc({radius:e,className:n}){return t.jsx("circle",{cx:e,cy:e,r:e,className:r(["react-flow__background-pattern","dots",n])})}var kc;e.BackgroundVariant=void 0,(kc=e.BackgroundVariant||(e.BackgroundVariant={})).Lines="lines",kc.Dots="dots",kc.Cross="cross";const _c={[e.BackgroundVariant.Dots]:1,[e.BackgroundVariant.Lines]:1,[e.BackgroundVariant.Cross]:6},Pc=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function zc({id:o,variant:i=e.BackgroundVariant.Dots,gap:a=20,size:s,lineWidth:c=1,offset:l=0,color:u,bgColor:d,style:h,className:f,patternClassName:g}){const p=n.useRef(null),{transform:m,patternId:y}=ji(Pc,ea),v=s||_c[i],x=i===e.BackgroundVariant.Dots,w=i===e.BackgroundVariant.Cross,b=Array.isArray(a)?a:[a,a],S=[b[0]*m[2]||1,b[1]*m[2]||1],C=v*m[2],E=Array.isArray(l)?l:[l,l],M=w?[C,C]:S,N=[E[0]*m[2]||1+M[0]/2,E[1]*m[2]||1+M[1]/2],k=`${y}${o||""}`;return t.jsxs("svg",{className:r(["react-flow__background",f]),style:{...h,...Ta,"--xy-background-color-props":d,"--xy-background-pattern-color-props":u},ref:p,"data-testid":"rf__background",children:[t.jsx("pattern",{id:k,x:m[0]%S[0],y:m[1]%S[1],width:S[0],height:S[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${N[0]},-${N[1]})`,children:x?t.jsx(Nc,{radius:C/2,className:g}):t.jsx(Mc,{dimensions:M,lineWidth:c,variant:i,className:g})}),t.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${k})`})]})}zc.displayName="Background";const Ic=n.memo(zc);function Oc(){return t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:t.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function Ac(){return t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:t.jsx("path",{d:"M0 0h32v4.2H0z"})})}function Dc(){return t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:t.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 Rc(){return t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:t.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 Lc(){return t.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:t.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"})})}function $c({children:e,className:n,...o}){return t.jsx("button",{type:"button",className:r(["react-flow__controls-button",n]),...o,children:e})}const Bc=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function Tc({style:e,showZoom:n=!0,showFitView:o=!0,showInteractive:i=!0,fitViewOptions:a,onZoomIn:s,onZoomOut:c,onFitView:l,onInteractiveChange:u,className:d,children:h,position:f="bottom-left",orientation:g="vertical","aria-label":p}){const m=Hi(),{isInteractive:y,minZoomReached:v,maxZoomReached:x,ariaLabelConfig:w}=ji(Bc,ea),{zoomIn:b,zoomOut:S,fitView:C}=La(),E="horizontal"===g?"horizontal":"vertical";return t.jsxs(Ui,{className:r(["react-flow__controls",E,d]),position:f,style:e,"data-testid":"rf__controls","aria-label":p??w["controls.ariaLabel"],children:[n&&t.jsxs(t.Fragment,{children:[t.jsx($c,{onClick:()=>{b(),s?.()},className:"react-flow__controls-zoomin",title:w["controls.zoomIn.ariaLabel"],"aria-label":w["controls.zoomIn.ariaLabel"],disabled:x,children:t.jsx(Oc,{})}),t.jsx($c,{onClick:()=>{S(),c?.()},className:"react-flow__controls-zoomout",title:w["controls.zoomOut.ariaLabel"],"aria-label":w["controls.zoomOut.ariaLabel"],disabled:v,children:t.jsx(Ac,{})})]}),o&&t.jsx($c,{className:"react-flow__controls-fitview",onClick:()=>{C(a),l?.()},title:w["controls.fitView.ariaLabel"],"aria-label":w["controls.fitView.ariaLabel"],children:t.jsx(Dc,{})}),i&&t.jsx($c,{className:"react-flow__controls-interactive",onClick:()=>{m.setState({nodesDraggable:!y,nodesConnectable:!y,elementsSelectable:!y}),u?.(!y)},title:w["controls.interactive.ariaLabel"],"aria-label":w["controls.interactive.ariaLabel"],children:y?t.jsx(Lc,{}):t.jsx(Rc,{})}),h]})}Tc.displayName="Controls";const Vc=n.memo(Tc);const jc=n.memo(function({id:e,x:n,y:o,width:i,height:a,style:s,color:c,strokeColor:l,strokeWidth:u,className:d,borderRadius:h,shapeRendering:f,selected:g,onClick:p}){const{background:m,backgroundColor:y}=s||{},v=c||m||y;return t.jsx("rect",{className:r(["react-flow__minimap-node",{selected:g},d]),x:n,y:o,rx:h,ry:h,width:i,height:a,style:{fill:v,stroke:l,strokeWidth:u},shapeRendering:f,onClick:p?t=>p(t,e):void 0})}),Hc=e=>e.nodes.map(e=>e.id),Zc=e=>e instanceof Function?e:()=>e;const Xc=n.memo(function({id:e,nodeColorFunc:n,nodeStrokeColorFunc:o,nodeClassNameFunc:r,nodeBorderRadius:i,nodeStrokeWidth:a,shapeRendering:s,NodeComponent:c,onClick:l}){const{node:u,x:d,y:h,width:f,height:g}=ji(t=>{const n=t.nodeLookup.get(e);if(!n)return{node:void 0,x:0,y:0,width:0,height:0};const o=n.internals.userNode,{x:r,y:i}=n.internals.positionAbsolute,{width:a,height:s}=er(o);return{node:o,x:r,y:i,width:a,height:s}},ea);return u&&!u.hidden&&tr(u)?t.jsx(c,{x:d,y:h,width:f,height:g,style:u.style,selected:!!u.selected,className:r(u),color:n(u),borderRadius:i,strokeColor:o(u),strokeWidth:a,shapeRendering:s,onClick:l,id:u.id}):null});var Yc=n.memo(function({nodeStrokeColor:e,nodeColor:n,nodeClassName:o="",nodeBorderRadius:r=5,nodeStrokeWidth:i,nodeComponent:a=jc,onClick:s}){const c=ji(Hc,ea),l=Zc(n),u=Zc(e),d=Zc(o),h="undefined"==typeof window||window.chrome?"crispEdges":"geometricPrecision";return t.jsx(t.Fragment,{children:c.map(e=>t.jsx(Xc,{id:e,nodeColorFunc:l,nodeStrokeColorFunc:u,nodeClassNameFunc:d,nodeBorderRadius:r,nodeStrokeWidth:i,NodeComponent:a,onClick:s,shapeRendering:h},e))})});const Fc=e=>!e.hidden,Wc=e=>{const t={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:t,boundingRect:e.nodeLookup.size>0?Ho(ko(e.nodeLookup,{filter:Fc}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},Kc=(e,t)=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,Gc=(e,t)=>Kc(e.viewBB,t.viewBB)&&Kc(e.boundingRect,t.boundingRect)&&e.rfId===t.rfId&&e.panZoom===t.panZoom&&e.translateExtent===t.translateExtent&&e.flowWidth===t.flowWidth&&e.flowHeight===t.flowHeight&&e.ariaLabelConfig===t.ariaLabelConfig;function qc({style:e,className:o,nodeStrokeColor:i,nodeColor:a,nodeClassName:s="",nodeBorderRadius:c=5,nodeStrokeWidth:l,nodeComponent:u,bgColor:d,maskColor:h,maskStrokeColor:f,maskStrokeWidth:g,position:p="bottom-right",onClick:m,onNodeClick:y,pannable:v=!1,zoomable:x=!1,ariaLabel:w,inversePan:b,zoomStep:S=1,offsetScale:C=5}){const E=Hi(),M=n.useRef(null),{boundingRect:N,viewBB:k,rfId:_,panZoom:P,translateExtent:z,flowWidth:I,flowHeight:O,ariaLabelConfig:A}=ji(Wc,Gc),D=e?.width??200,R=e?.height??150,L=N.width/D,$=N.height/R,B=Math.max(L,$),T=B*D,V=B*R,j=C*B,H=N.x-(T-N.width)/2-j,Z=N.y-(V-N.height)/2-j,X=T+2*j,Y=V+2*j,F=`react-flow__minimap-desc-${_}`,W=n.useRef(0),K=n.useRef();W.current=B,n.useEffect(()=>{if(M.current&&P)return K.current=function({domNode:e,panZoom:t,getTransform:n,getViewScale:o}){const r=Se(e);return{update:function({translateExtent:e,width:i,height:a,zoomStep:s=1,pannable:c=!0,zoomable:l=!0,inversePan:u=!1}){let d=[0,0];const h=Kn().on("start",e=>{"mousedown"!==e.sourceEvent.type&&"touchstart"!==e.sourceEvent.type||(d=[e.sourceEvent.clientX??e.sourceEvent.touches[0].clientX,e.sourceEvent.clientY??e.sourceEvent.touches[0].clientY])}).on("zoom",c?r=>{const s=n();if("mousemove"!==r.sourceEvent.type&&"touchmove"!==r.sourceEvent.type||!t)return;const c=[r.sourceEvent.clientX??r.sourceEvent.touches[0].clientX,r.sourceEvent.clientY??r.sourceEvent.touches[0].clientY],l=[c[0]-d[0],c[1]-d[1]];d=c;const h=o()*Math.max(s[2],Math.log(s[2]))*(u?-1:1),f={x:s[0]-l[0]*h,y:s[1]-l[1]*h},g=[[0,0],[i,a]];t.setViewportConstrained({x:f.x,y:f.y,zoom:s[2]},g,e)}:null).on("zoom.wheel",l?e=>{if("wheel"!==e.sourceEvent.type||!t)return;const o=n(),r=e.sourceEvent.ctrlKey&&Qo()?10:1,i=-e.sourceEvent.deltaY*(1===e.sourceEvent.deltaMode?.05:e.sourceEvent.deltaMode?1:.002)*s,a=o[2]*Math.pow(2,i*r);t.scaleTo(a)}:null);r.call(h,{})},destroy:function(){r.on("zoom",null)},pointer:Ce}}({domNode:M.current,panZoom:P,getTransform:()=>E.getState().transform,getViewScale:()=>W.current}),()=>{K.current?.destroy()}},[P]),n.useEffect(()=>{K.current?.update({translateExtent:z,width:I,height:O,inversePan:b,pannable:v,zoomStep:S,zoomable:x})},[v,x,b,S,z,I,O]);const G=m?e=>{const[t,n]=K.current?.pointer(e)||[0,0];m(e,{x:t,y:n})}:void 0,q=y?n.useCallback((e,t)=>{const n=E.getState().nodeLookup.get(t).internals.userNode;y(e,n)},[]):void 0,U=w??A["minimap.ariaLabel"];return t.jsx(Ui,{position:p,style:{...e,"--xy-minimap-background-color-props":"string"==typeof d?d:void 0,"--xy-minimap-mask-background-color-props":"string"==typeof h?h:void 0,"--xy-minimap-mask-stroke-color-props":"string"==typeof f?f:void 0,"--xy-minimap-mask-stroke-width-props":"number"==typeof g?g*B:void 0,"--xy-minimap-node-background-color-props":"string"==typeof a?a:void 0,"--xy-minimap-node-stroke-color-props":"string"==typeof i?i:void 0,"--xy-minimap-node-stroke-width-props":"number"==typeof l?l:void 0},className:r(["react-flow__minimap",o]),"data-testid":"rf__minimap",children:t.jsxs("svg",{width:D,height:R,viewBox:`${H} ${Z} ${X} ${Y}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":F,ref:M,onClick:G,children:[U&&t.jsx("title",{id:F,children:U}),t.jsx(Yc,{onClick:q,nodeColor:a,nodeStrokeColor:i,nodeBorderRadius:c,nodeClassName:s,nodeStrokeWidth:l,nodeComponent:u}),t.jsx("path",{className:"react-flow__minimap-mask",d:`M${H-j},${Z-j}h${X+2*j}v${Y+2*j}h${-X-2*j}z\n M${k.x},${k.y}h${k.width}v${k.height}h${-k.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}qc.displayName="MiniMap";const Uc=n.memo(qc),Qc={[e.ResizeControlVariant.Line]:"right",[e.ResizeControlVariant.Handle]:"bottom-right"};const Jc=n.memo(function({nodeId:o,position:i,variant:a=e.ResizeControlVariant.Handle,className:s,style:c,children:l,color:u,minWidth:d=10,minHeight:h=10,maxWidth:f=Number.MAX_VALUE,maxHeight:g=Number.MAX_VALUE,keepAspectRatio:p=!1,resizeDirection:m,autoScale:y=!0,shouldResize:v,onResizeStart:x,onResize:w,onResizeEnd:b}){const S=Qa(),C="string"==typeof o?o:S,E=Hi(),M=n.useRef(null),N=a===e.ResizeControlVariant.Handle,k=ji(n.useCallback((_=N&&y,e=>_?`${Math.max(1/e.transform[2],1)}`:void 0),[N,y]),ea);var _;const P=n.useRef(null),z=i??Qc[a];n.useEffect(()=>{if(M.current&&C)return P.current||(P.current=bi({domNode:M.current,nodeId:C,getStoreItems:()=>{const{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:o,nodeOrigin:r,domNode:i}=E.getState();return{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:o,nodeOrigin:r,paneDomNode:i}},onChange:(e,t)=>{const{triggerNodeChanges:n,nodeLookup:o,parentLookup:r,nodeOrigin:i}=E.getState(),a=[],s={x:e.x,y:e.y},c=o.get(C);if(c&&c.expandParent&&c.parentId){const t=c.origin??i,n=e.width??c.measured.width??0,l=e.height??c.measured.height??0,u=Hr([{id:c.id,parentId:c.parentId,rect:{width:n,height:l,...nr({x:e.x??c.position.x,y:e.y??c.position.y},{width:n,height:l},c.parentId,o,t)}}],o,r,i);a.push(...u),s.x=e.x?Math.max(t[0]*n,e.x):void 0,s.y=e.y?Math.max(t[1]*l,e.y):void 0}if(void 0!==s.x&&void 0!==s.y){const e={id:C,type:"position",position:{...s}};a.push(e)}if(void 0!==e.width&&void 0!==e.height){const t={id:C,type:"dimensions",resizing:!0,setAttributes:!m||("horizontal"===m?"width":"height"),dimensions:{width:e.width,height:e.height}};a.push(t)}for(const e of t){const t={...e,type:"position"};a.push(t)}n(a)},onEnd:({width:e,height:t})=>{const n={id:C,type:"dimensions",resizing:!1,dimensions:{width:e,height:t}};E.getState().triggerNodeChanges([n])}})),P.current.update({controlPosition:z,boundaries:{minWidth:d,minHeight:h,maxWidth:f,maxHeight:g},keepAspectRatio:p,resizeDirection:m,onResizeStart:x,onResize:w,onResizeEnd:b,shouldResize:v}),()=>{P.current?.destroy()}},[z,d,h,f,g,p,x,w,b,v]);const I=z.split("-");return t.jsx("div",{className:r(["react-flow__resize-control","nodrag",...I,a,s]),ref:M,style:{...c,scale:k,...u&&{[N?"backgroundColor":"borderColor"]:u}},children:l})});const el=e=>e.domNode?.querySelector(".react-flow__renderer");function tl({children:e}){const t=ji(el);return t?o.createPortal(e,t):null}const nl=(e,t)=>e?.internals.positionAbsolute.x!==t?.internals.positionAbsolute.x||e?.internals.positionAbsolute.y!==t?.internals.positionAbsolute.y||e?.measured.width!==t?.measured.width||e?.measured.height!==t?.measured.height||e?.selected!==t?.selected||e?.internals.z!==t?.internals.z,ol=(e,t)=>{if(e.size!==t.size)return!1;for(const[n,o]of e)if(nl(o,t.get(n)))return!1;return!0},rl=e=>({x:e.transform[0],y:e.transform[1],zoom:e.transform[2],selectedNodesCount:e.nodes.filter(e=>e.selected).length});const il=e=>e.transform[2];e.Background=Ic,e.BaseEdge=Es,e.BezierEdge=Vs,e.ControlButton=$c,e.Controls=Vc,e.EdgeLabelRenderer=xc,e.EdgeText=Cs,e.EdgeToolbar=function({edgeId:e,x:o,y:i,children:a,className:s,style:c,isVisible:l,alignX:u="center",alignY:d="center",...h}){const f=ji(n.useCallback(t=>t.edgeLookup.get(e),[e]),ea),g="boolean"==typeof l?l:f?.selected,p=ji(il);if(!g)return null;const m=(f?.zIndex??0)+1,y=function(e,t,n,o="center",r="center"){return`translate(${e}px, ${t}px) scale(${1/n}) translate(${-(Or[o]??50)}%, ${-(Ar[r]??50)}%)`}(o,i,p,u,d);return t.jsx(xc,{children:t.jsx("div",{style:{position:"absolute",transform:y,zIndex:m,pointerEvents:"all",transformOrigin:"0 0",...c},className:r(["react-flow__edge-toolbar",s]),"data-id":f?.id??"",...h,children:a})})},e.Handle=os,e.MiniMap=Uc,e.MiniMapNode=jc,e.NodeResizeControl=Jc,e.NodeResizer=function({nodeId:n,isVisible:o=!0,handleClassName:r,handleStyle:i,lineClassName:a,lineStyle:s,color:c,minWidth:l=10,minHeight:u=10,maxWidth:d=Number.MAX_VALUE,maxHeight:h=Number.MAX_VALUE,keepAspectRatio:f=!1,autoScale:g=!0,shouldResize:p,onResizeStart:m,onResize:y,onResizeEnd:v}){return o?t.jsxs(t.Fragment,{children:[hi.map(o=>t.jsx(Jc,{className:a,style:s,nodeId:n,position:o,variant:e.ResizeControlVariant.Line,color:c,minWidth:l,minHeight:u,maxWidth:d,maxHeight:h,onResizeStart:m,keepAspectRatio:f,autoScale:g,shouldResize:p,onResize:y,onResizeEnd:v},o)),di.map(e=>t.jsx(Jc,{className:r,style:i,nodeId:n,position:e,color:c,minWidth:l,minHeight:u,maxWidth:d,maxHeight:h,onResizeStart:m,keepAspectRatio:f,autoScale:g,shouldResize:p,onResize:y,onResizeEnd:v},e))]}):null},e.NodeToolbar=function({nodeId:o,children:i,className:a,style:s,isVisible:c,position:l=e.Position.Top,offset:u=10,align:d="center",...h}){const f=Qa(),g=n.useCallback(e=>{const t=(Array.isArray(o)?o:[o||f||""]).reduce((t,n)=>{const o=e.nodeLookup.get(n);return o&&t.set(o.id,o),t},new Map);return t},[o,f]),p=ji(g,ol),{x:m,y:y,zoom:v,selectedNodesCount:x}=ji(rl,ea);if(!("boolean"==typeof c?c:1===p.size&&p.values().next().value?.selected&&1===x)||!p.size)return null;const w=ko(p),b=Array.from(p.values()),S=Math.max(...b.map(e=>e.internals.z+1)),C={position:"absolute",transform:Ir(w,{x:m,y:y,zoom:v},l,u,d),zIndex:S,...s};return t.jsx(tl,{children:t.jsx("div",{style:C,className:r(["react-flow__node-toolbar",a]),...h,"data-id":b.reduce((e,t)=>`${e}${t.id} `,"").trim(),children:i})})},e.Panel=Ui,e.ReactFlow=yc,e.ReactFlowProvider=gc,e.SimpleBezierEdge=_s,e.SmoothStepEdge=Is,e.StepEdge=Ds,e.StraightEdge=$s,e.ViewportPortal=function({children:e}){const t=ji(wc);return t?o.createPortal(e,t):null},e.addEdge=ka,e.applyEdgeChanges=ba,e.applyNodeChanges=wa,e.experimental_useOnEdgesChangeMiddleware=function(e){const t=Hi(),[o]=n.useState(()=>Symbol());n.useEffect(()=>{const{onEdgesChangeMiddlewareMap:n}=t.getState();n.set(o,e)},[e]),n.useEffect(()=>{const{onEdgesChangeMiddlewareMap:e}=t.getState();return()=>{e.delete(o)}},[])},e.experimental_useOnNodesChangeMiddleware=function(e){const t=Hi(),[o]=n.useState(()=>Symbol());n.useEffect(()=>{const{onNodesChangeMiddlewareMap:n}=t.getState();n.set(o,e)},[e]),n.useEffect(()=>{const{onNodesChangeMiddlewareMap:e}=t.getState();return()=>{e.delete(o)}},[])},e.getBezierEdgeCenter=fr,e.getBezierPath=mr,e.getConnectedEdges=Po,e.getEdgeCenter=yr,e.getIncomers=(e,t,n)=>{if(!e.id)return[];const o=new Set;return n.forEach(t=>{t.target===e.id&&o.add(t.source)}),t.filter(e=>o.has(e.id))},e.getNodesBounds=No,e.getOutgoers=(e,t,n)=>{if(!e.id)return[];const o=new Set;return n.forEach(t=>{t.source===e.id&&o.add(t.target)}),t.filter(e=>o.has(e.id))},e.getSimpleBezierPath=Ns,e.getSmoothStepPath=Mr,e.getStraightPath=wr,e.getViewportForBounds=Uo,e.isEdge=Pa,e.isNode=_a,e.reconnectEdge=function(e,t,n,o={shouldReplaceId:!0}){return((e,t,n,o={shouldReplaceId:!0})=>{const{id:r,...i}=e;if(!t.source||!t.target)return o.onError?.("006",Jn()),n;if(!n.find(t=>t.id===e.id))return o.onError?.("007",eo(r)),n;const a=o.getEdgeId||xr,s={...i,id:o.shouldReplaceId?a(t):r,source:t.source,target:t.target,sourceHandle:t.sourceHandle,targetHandle:t.targetHandle};return n.filter(e=>e.id!==r).concat(s)})(e,t,n,{...o,onError:o.onError??Na})},e.useConnection=oc,e.useEdges=function(){return ji(Sc,ea)},e.useEdgesState=function(e){const[t,o]=n.useState(e),r=n.useCallback(e=>o(t=>ba(e,t)),[]);return[t,o,r]},e.useHandleConnections=function({type:e,id:t,nodeId:o,onConnect:r,onDisconnect:i}){console.warn("[DEPRECATED] `useHandleConnections` is deprecated. Instead use `useNodeConnections` https://reactflow.dev/api-reference/hooks/useNodeConnections");const a=Qa(),s=o??a,c=n.useRef(null),l=ji(n=>n.connectionLookup.get(`${s}-${e}${t?`-${t}`:""}`),wo);return n.useEffect(()=>{if(c.current&&c.current!==l){const e=l??new Map;bo(c.current,e,i),bo(e,c.current,r)}c.current=l??new Map},[l,r,i]),n.useMemo(()=>Array.from(l?.values()??[]),[l])},e.useInternalNode=function(e){return ji(n.useCallback(t=>t.nodeLookup.get(e),[e]),ea)},e.useKeyPress=pa,e.useNodeConnections=function({id:e,handleType:t,handleId:o,onConnect:r,onDisconnect:i}={}){const a=Qa(),s=e??a;if(!s)throw new Error(Ec);const c=n.useRef(null),l=ji(e=>e.connectionLookup.get(`${s}${t?o?`-${t}-${o}`:`-${t}`:""}`),wo);return n.useEffect(()=>{if(c.current&&c.current!==l){const e=l??new Map;bo(c.current,e,i),bo(e,c.current,r)}c.current=l??new Map},[l,r,i]),n.useMemo(()=>Array.from(l?.values()??[]),[l])},e.useNodeId=Qa,e.useNodes=function(){return ji(bc,ea)},e.useNodesData=function(e){return ji(n.useCallback(t=>{const n=[],o=Array.isArray(e),r=o?e:[e];for(const e of r){const o=t.nodeLookup.get(e);o&&n.push({id:o.id,type:o.type,data:o.data})}return o?n:n[0]??null},[e]),Yr)},e.useNodesInitialized=function(e={includeHiddenNodes:!1}){return ji((e=>t=>{if(!e.includeHiddenNodes)return t.nodesInitialized;if(0===t.nodeLookup.size)return!1;for(const[,{internals:e}]of t.nodeLookup)if(void 0===e.handleBounds||!tr(e.userNode))return!1;return!0})(e))},e.useNodesState=function(e){const[t,o]=n.useState(e),r=n.useCallback(e=>o(t=>wa(e,t)),[]);return[t,o,r]},e.useOnSelectionChange=function({onChange:e}){const t=Hi();n.useEffect(()=>{const n=[...t.getState().onSelectionChangeHandlers,e];return t.setState({onSelectionChangeHandlers:n}),()=>{const n=t.getState().onSelectionChangeHandlers.filter(t=>t!==e);t.setState({onSelectionChangeHandlers:n})}},[e])},e.useOnViewportChange=function({onStart:e,onChange:t,onEnd:o}){const r=Hi();n.useEffect(()=>{r.setState({onViewportChangeStart:e})},[e]),n.useEffect(()=>{r.setState({onViewportChange:t})},[t]),n.useEffect(()=>{r.setState({onViewportChangeEnd:o})},[o])},e.useReactFlow=La,e.useStore=ji,e.useStoreApi=Hi,e.useUpdateNodeInternals=function(){const e=Hi();return n.useCallback(t=>{const{domNode:n,updateNodeInternals:o}=e.getState(),r=Array.isArray(t)?t:[t],i=new Map;r.forEach(e=>{const t=n?.querySelector(`.react-flow__node[data-id="${e}"]`);t&&i.set(e,{id:e,nodeElement:t,force:!0})}),requestAnimationFrame(()=>o(i,{triggerFitView:!1}))},[])},e.useViewport=function(){return ji(Cc,ea)}}); diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/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/umd/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/umd/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/umd/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/umd/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/umd/types/edges.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"edges.d.ts","sourceRoot":"","sources":["../../src/types/edges.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/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/umd/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/umd/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/umd/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/umd/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/umd/types/general.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../src/types/general.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/types/instance.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../../src/types/instance.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/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/umd/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/umd/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/umd/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/umd/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/umd/types/nodes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/types/nodes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/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/umd/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/umd/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/umd/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/umd/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/umd/types/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/types/store.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/dist/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/umd/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/package.json b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/package.json new file mode 100644 index 0000000000000000000000000000000000000000..7022c7c2710ff10337b0bc79f258ed71dee6b66a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+react@12.11.2_@types+react-dom@19.2.4_@types+react@19.2.18__@types+react@19.2.1_4449a809c64647816bd89ebca5fbd811/node_modules/@xyflow/react/package.json @@ -0,0 +1,108 @@ +{ + "name": "@xyflow/react", + "version": "12.11.2", + "description": "React Flow - A highly customizable React library for building node-based editors and interactive flow charts.", + "keywords": [ + "react", + "node-based UI", + "graph", + "diagram", + "workflow", + "react-flow", + "xyflow" + ], + "repository": { + "type": "git", + "url": "https://github.com/xyflow/xyflow.git", + "directory": "packages/react" + }, + "homepage": "https://reactflow.dev", + "bugs": { + "url": "https://github.com/xyflow/xyflow/issues" + }, + "files": [ + "dist" + ], + "source": "src/index.ts", + "main": "dist/umd/index.js", + "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", + "exports": { + "./package.json": "./package.json", + ".": { + "node": { + "types": "./dist/esm/index.d.ts", + "module": "./dist/esm/index.js", + "require": "./dist/umd/index.js", + "import": "./dist/esm/index.mjs" + }, + "browser": { + "import": "./dist/esm/index.js", + "require": "./dist/umd/index.js" + }, + "default": "./dist/esm/index.js" + }, + "./dist/base.css": "./dist/base.css", + "./dist/style.css": "./dist/style.css" + }, + "sideEffects": [ + "*.css" + ], + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "dependencies": { + "classcat": "^5.0.3", + "zustand": "^4.4.0", + "@xyflow/system": "0.0.79" + }, + "peerDependencies": { + "@types/react": ">=17", + "@types/react-dom": ">=17", + "react": ">=17", + "react-dom": ">=17" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + }, + "devDependencies": { + "@types/node": "^18.7.16", + "@types/react": ">=17", + "@types/react-dom": ">=17", + "autoprefixer": "^10.4.15", + "cssnano": "^6.0.1", + "postcss": "^8.4.21", + "postcss-cli": "^11.0.0", + "postcss-combine-duplicated-selectors": "^10.0.3", + "postcss-import": "^15.1.0", + "postcss-nested": "^6.0.0", + "postcss-rename": "^0.6.1", + "react": "^18.2.0", + "typescript": "5.4.5", + "@xyflow/rollup-config": "0.0.0", + "@xyflow/eslint-config": "0.0.1", + "@xyflow/tsconfig": "0.0.0" + }, + "rollup": { + "globals": { + "classcat": "cc", + "zustand": "zustand", + "zustand/shallow": "zustandShallow" + }, + "name": "ReactFlow" + }, + "scripts": { + "dev": "concurrently \"rollup --config node:@xyflow/rollup-config --watch\" pnpm:css-watch", + "build": "rollup --config node:@xyflow/rollup-config --environment NODE_ENV:production && npm run css", + "css": "postcss src/styles/{base,style}.css --config ./../../tooling/postcss-config/ --dir dist ", + "css-watch": "pnpm css --watch", + "lint": "eslint --ext .js,.jsx,.ts,.tsx src", + "typecheck": "tsc --noEmit" + } +} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/LICENSE b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..072ff46d7c23dd8e18ccba11aa6563f14e524312 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019-2025 webkid GmbH + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/README.md b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/README.md new file mode 100644 index 0000000000000000000000000000000000000000..da2f2e67777931ab411bd4c8dcf4c84b04d5751f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/README.md @@ -0,0 +1,62 @@ +# @xyflow/system + +Core system utilities powering [React Flow](https://reactflow.dev) and [Svelte Flow](https://svelteflow.dev). + +> **Note:** This package is designed as a shared vanilla utility layer for React Flow and Svelte Flow. It is not intended for use with unrelated libraries. + +## Installation + +```sh +pnpm add @xyflow/system +``` + +## What is this package? + +`@xyflow/system` provides core, framework-agnostic helpers and types for building node-based editors and flow diagrams. It contains the logic and utilities that are shared between React Flow and Svelte Flow, such as edge path calculations, pan/zoom, node dragging, and more. + +## Features + +- **Pan & Zoom (`XYPanZoom`)**: Utilities for adding interactive pan and zoom to your canvas. +- **Dragging (`XYDrag`)**: Helpers for node and selection dragging. +- **Handles/Connections (`XYHandle`)**: Logic for drawing and managing connection lines between nodes. +- **Minimap (`XYMiniMap`)**: Interactive minimap utilities for overview and navigation. +- **Edge Utilities**: Functions for SVG edge path creation (bezier, straight, step, smoothstep, etc.). +- **Store Utilities**: Helpers for managing and updating flow state. +- **DOM Utilities**: Functions for DOM measurements and interactions. +- **Marker Utilities**: Helpers for SVG markers on edges. +- **Graph Utilities**: Functions for working with nodes, edges, and graph structure. +- **General Utilities**: Miscellaneous helpers used throughout the system. +- **Types & Constants**: Shared types, enums, and constants for consistent data structures. + +## Usage + +You can import any utility, type, or helper directly from the package: + +```ts +import { getBezierPath, getConnectedEdges, Position, XYPanZoom } from '@xyflow/system'; +``` + +### Example: Bezier Edge Path Creation + +```ts +import { getBezierPath, Position } from '@xyflow/system'; + +const [path, labelX, labelY] = getBezierPath({ + sourceX: 0, + sourceY: 20, + sourcePosition: Position.Right, + targetX: 150, + targetY: 100, + targetPosition: Position.Left, +}); +``` + +## API Reference + +There is currently no dedicated API documentation for this package. For details on available utilities, types, and helpers, please refer to the [source code](./src) or check out the [React Flow documentation](https://reactflow.dev/api-reference/) where we are documenting a lot of stuff from this package. + +## Contributing + +See the main [xyflow repository](https://github.com/xyflow/xyflow) for contribution guidelines. + + diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/constants.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/constants.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..c38fe581563900cca2bdafc8311f3e9e1a175fad --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/constants.d.ts @@ -0,0 +1,44 @@ +import { CoordinateExtent, HandleType } from './types'; +export declare const errorMessages: { + error001: (lib?: string) => string; + error002: () => string; + error003: (nodeType: string) => string; + error004: () => string; + error005: () => string; + error006: () => string; + error007: (id: string) => string; + error009: (type: string) => string; + error008: (handleType: HandleType, { id, sourceHandle, targetHandle }: { + id: string; + sourceHandle: string | null; + targetHandle: string | null; + }) => string; + error010: () => string; + error011: (edgeType: string) => string; + error012: (id: string) => string; + error013: (lib?: string) => string; + error014: () => string; + error015: () => string; + error016: (id: string) => string; +}; +export declare const infiniteExtent: CoordinateExtent; +export declare const elementSelectionKeys: string[]; +export declare const defaultAriaLabelConfig: { + 'node.a11yDescription.default': string; + 'node.a11yDescription.keyboardDisabled': string; + 'node.a11yDescription.ariaLiveMessage': ({ direction, x, y }: { + direction: string; + x: number; + y: number; + }) => string; + 'edge.a11yDescription.default': string; + 'controls.ariaLabel': string; + 'controls.zoomIn.ariaLabel': string; + 'controls.zoomOut.ariaLabel': string; + 'controls.fitView.ariaLabel': string; + 'controls.interactive.ariaLabel': string; + 'minimap.ariaLabel': string; + 'handle.ariaLabel': string; +}; +export type AriaLabelConfig = typeof defaultAriaLabelConfig; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/constants.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/constants.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..45d4d505361eb5a73f514150d2ee034419b4e055 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEvD,eAAO,MAAM,aAAa;qBACR,MAAM;;yBAID,MAAM;;;;mBAIZ,MAAM;qBACJ,MAAM;2BAET,UAAU,sCACc;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;;yBAMzF,MAAM;mBACZ,MAAM;qBAEL,MAAM;;;mBAMP,MAAM;CAEtB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,gBAG5B,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAA2B,CAAC;AAE7D,eAAO,MAAM,sBAAsB;;;kEAK6B;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;CAiB1G,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,OAAO,sBAAsB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..74847ff6f2b8aa67bb7e1c82eceef48a941fc30f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/index.d.ts @@ -0,0 +1,9 @@ +export * from './constants'; +export * from './types'; +export * from './utils'; +export * from './xydrag'; +export * from './xyhandle'; +export * from './xyminimap'; +export * from './xypanzoom'; +export * from './xyresizer'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..804a5e32ca250ff5f2b59df01572bdfa4eb00603 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/index.js b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/index.js new file mode 100644 index 0000000000000000000000000000000000000000..ef024e428453d162f0709bbbc5e3a34d1dfbd107 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/index.js @@ -0,0 +1,3557 @@ +import { drag } from 'd3-drag'; +import { select, pointer } from 'd3-selection'; +import { zoom, zoomIdentity, zoomTransform } from 'd3-zoom'; +import { interpolateZoom, interpolate } from 'd3-interpolate'; + +const errorMessages = { + error001: (lib = 'react') => `Seems like you have not used ${lib === 'svelte' ? 'SvelteFlowProvider' : 'ReactFlowProvider'} as an ancestor. Help: https://${lib}flow.dev/error#001`, + error002: () => "It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.", + error003: (nodeType) => `Node type "${nodeType}" not found. Using fallback type "default".`, + error004: () => 'The parent container needs a width and a height to render the graph.', + error005: () => 'Only child nodes can use a parent extent.', + error006: () => "Can't create edge. An edge needs a source and a target.", + error007: (id) => `The old edge with id=${id} does not exist.`, + error009: (type) => `Marker type "${type}" doesn't exist.`, + error008: (handleType, { id, sourceHandle, targetHandle }) => `Couldn't create edge for ${handleType} handle id: "${handleType === 'source' ? sourceHandle : targetHandle}", edge id: ${id}.`, + error010: () => 'Handle: No node id found. Make sure to only use a Handle inside a custom Node.', + error011: (edgeType) => `Edge type "${edgeType}" not found. Using fallback type "default".`, + error012: (id) => `Node with id "${id}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`, + error013: (lib = 'react') => `It seems that you haven't loaded the styles. Please import '@xyflow/${lib}/dist/style.css' or base.css to make sure everything is working properly.`, + error014: () => 'useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.', + error015: () => 'It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs.', + error016: (id) => `Edge with id "${id}" does not exist, it may have been removed. This can happen when an edge is deleted before the "onEdgeClick" handler is called.`, +}; +const infiniteExtent = [ + [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY], + [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY], +]; +const elementSelectionKeys = ['Enter', ' ', 'Escape']; +const defaultAriaLabelConfig = { + 'node.a11yDescription.default': 'Press enter or space to select a node. Press delete to remove it and escape to cancel.', + 'node.a11yDescription.keyboardDisabled': 'Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.', + 'node.a11yDescription.ariaLiveMessage': ({ direction, x, y }) => `Moved selected node ${direction}. New position, x: ${x}, y: ${y}`, + 'edge.a11yDescription.default': 'Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.', + // Control elements + 'controls.ariaLabel': 'Control Panel', + 'controls.zoomIn.ariaLabel': 'Zoom In', + 'controls.zoomOut.ariaLabel': 'Zoom Out', + 'controls.fitView.ariaLabel': 'Fit View', + 'controls.interactive.ariaLabel': 'Toggle Interactivity', + // Mini map + 'minimap.ariaLabel': 'Mini Map', + // Handle + 'handle.ariaLabel': 'Handle', +}; + +/** + * The `ConnectionMode` is used to set the mode of connection between nodes. + * The `Strict` mode is the default one and only allows source to target edges. + * `Loose` mode allows source to source and target to target edges as well. + * + * @public + */ +var ConnectionMode; +(function (ConnectionMode) { + ConnectionMode["Strict"] = "strict"; + ConnectionMode["Loose"] = "loose"; +})(ConnectionMode || (ConnectionMode = {})); +/** + * This enum is used to set the different modes of panning the viewport when the + * user scrolls. The `Free` mode allows the user to pan in any direction by scrolling + * with a device like a trackpad. The `Vertical` and `Horizontal` modes restrict + * scroll panning to only the vertical or horizontal axis, respectively. + * + * @public + */ +var PanOnScrollMode; +(function (PanOnScrollMode) { + PanOnScrollMode["Free"] = "free"; + PanOnScrollMode["Vertical"] = "vertical"; + PanOnScrollMode["Horizontal"] = "horizontal"; +})(PanOnScrollMode || (PanOnScrollMode = {})); +var SelectionMode; +(function (SelectionMode) { + SelectionMode["Partial"] = "partial"; + SelectionMode["Full"] = "full"; +})(SelectionMode || (SelectionMode = {})); +const initialConnection = { + inProgress: false, + isValid: null, + from: null, + fromHandle: null, + fromPosition: null, + fromNode: null, + to: null, + toHandle: null, + toPosition: null, + toNode: null, + pointer: null, +}; + +/** + * If you set the `connectionLineType` prop on your [``](/api-reference/react-flow#connection-connectionLineType) + *component, it will dictate the style of connection line rendered when creating + *new edges. + * + * @public + * + * @remarks If you choose to render a custom connection line component, this value will be + *passed to your component as part of its [`ConnectionLineComponentProps`](/api-reference/types/connection-line-component-props). + */ +var ConnectionLineType; +(function (ConnectionLineType) { + ConnectionLineType["Bezier"] = "default"; + ConnectionLineType["Straight"] = "straight"; + ConnectionLineType["Step"] = "step"; + ConnectionLineType["SmoothStep"] = "smoothstep"; + ConnectionLineType["SimpleBezier"] = "simplebezier"; +})(ConnectionLineType || (ConnectionLineType = {})); +/** + * Edges may optionally have a marker on either end. The MarkerType type enumerates + * the options available to you when configuring a given marker. + * + * @public + */ +var MarkerType; +(function (MarkerType) { + MarkerType["Arrow"] = "arrow"; + MarkerType["ArrowClosed"] = "arrowclosed"; +})(MarkerType || (MarkerType = {})); + +/** + * While [`PanelPosition`](/api-reference/types/panel-position) can be used to place a + * component in the corners of a container, the `Position` enum is less precise and used + * primarily in relation to edges and handles. + * + * @public + */ +var Position; +(function (Position) { + Position["Left"] = "left"; + Position["Top"] = "top"; + Position["Right"] = "right"; + Position["Bottom"] = "bottom"; +})(Position || (Position = {})); +const oppositePosition = { + [Position.Left]: Position.Right, + [Position.Right]: Position.Left, + [Position.Top]: Position.Bottom, + [Position.Bottom]: Position.Top, +}; + +/** + * @internal + */ +function areConnectionMapsEqual(a, b) { + if (!a && !b) { + return true; + } + if (!a || !b || a.size !== b.size) { + return false; + } + if (!a.size && !b.size) { + return true; + } + for (const key of a.keys()) { + if (!b.has(key)) { + return false; + } + } + return true; +} +/** + * We call the callback for all connections in a that are not in b + * + * @internal + */ +function handleConnectionChange(a, b, cb) { + if (!cb) { + return; + } + const diff = []; + a.forEach((connection, key) => { + if (!b?.has(key)) { + diff.push(connection); + } + }); + if (diff.length) { + cb(diff); + } +} +function getConnectionStatus(isValid) { + return isValid === null ? null : isValid ? 'valid' : 'invalid'; +} + +/** + * Test whether an object is usable as an Edge + * @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 A boolean indicating whether the element is an Edge + */ +const isEdgeBase = (element) => !!element && typeof element === 'object' && 'id' in element && 'source' in element && 'target' in element; +/** + * Test whether an object is usable as a Node + * @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 A boolean indicating whether the element is an Node + */ +const isNodeBase = (element) => !!element && typeof element === 'object' && 'id' in element && 'position' in element && !('source' in element) && !('target' in element); +const isInternalNodeBase = (element) => !!element && typeof element === 'object' && 'id' in element && 'internals' in element && !('source' in element) && !('target' in element); +/** + * This util is used to tell you what nodes, if any, are connected to the given node + * as the _target_ of an edge. + * @public + * @param node - The node to get the connected nodes from. + * @param nodes - The array of all nodes. + * @param edges - The array of all edges. + * @returns An array of nodes that are connected over edges where the source is the given node. + * + * @example + * ```ts + *import { getOutgoers } from '@xyflow/react'; + * + *const nodes = []; + *const edges = []; + * + *const outgoers = getOutgoers( + * { id: '1', position: { x: 0, y: 0 }, data: { label: 'node' } }, + * nodes, + * edges, + *); + *``` + */ +const getOutgoers = (node, nodes, edges) => { + if (!node.id) { + return []; + } + const outgoerIds = new Set(); + edges.forEach((edge) => { + if (edge.source === node.id) { + outgoerIds.add(edge.target); + } + }); + return nodes.filter((n) => outgoerIds.has(n.id)); +}; +/** + * This util is used to tell you what nodes, if any, are connected to the given node + * as the _source_ of an edge. + * @public + * @param node - The node to get the connected nodes from. + * @param nodes - The array of all nodes. + * @param edges - The array of all edges. + * @returns An array of nodes that are connected over edges where the target is the given node. + * + * @example + * ```ts + *import { getIncomers } from '@xyflow/react'; + * + *const nodes = []; + *const edges = []; + * + *const incomers = getIncomers( + * { id: '1', position: { x: 0, y: 0 }, data: { label: 'node' } }, + * nodes, + * edges, + *); + *``` + */ +const getIncomers = (node, nodes, edges) => { + if (!node.id) { + return []; + } + const incomersIds = new Set(); + edges.forEach((edge) => { + if (edge.target === node.id) { + incomersIds.add(edge.source); + } + }); + return nodes.filter((n) => incomersIds.has(n.id)); +}; +const getNodePositionWithOrigin = (node, nodeOrigin = [0, 0]) => { + const { width, height } = getNodeDimensions(node); + const origin = node.origin ?? nodeOrigin; + const offsetX = width * origin[0]; + const offsetY = height * origin[1]; + return { + x: node.position.x - offsetX, + y: node.position.y - offsetY, + }; +}; +/** + * Returns the bounding box that contains all the given nodes in an array. This can + * be useful when combined with [`getViewportForBounds`](/api-reference/utils/get-viewport-for-bounds) + * to calculate the correct transform to fit the given nodes in a viewport. + * @public + * @remarks Useful when combined with {@link getViewportForBounds} to calculate the correct transform to fit the given nodes in a viewport. + * @param nodes - Nodes to calculate the bounds for. + * @returns Bounding box enclosing all nodes. + * + * @remarks This function was previously called `getRectOfNodes` + * + * @example + * ```js + *import { getNodesBounds } from '@xyflow/react'; + * + *const nodes = [ + * { + * id: 'a', + * position: { x: 0, y: 0 }, + * data: { label: 'a' }, + * width: 50, + * height: 25, + * }, + * { + * id: 'b', + * position: { x: 100, y: 100 }, + * data: { label: 'b' }, + * width: 50, + * height: 25, + * }, + *]; + * + *const bounds = getNodesBounds(nodes); + *``` + */ +const getNodesBounds = (nodes, params = { nodeOrigin: [0, 0] }) => { + if (process.env.NODE_ENV === 'development' && !params.nodeLookup) { + console.warn('Please use `getNodesBounds` from `useReactFlow`/`useSvelteFlow` hook to ensure correct values for sub flows. If not possible, you have to provide a nodeLookup to support sub flows.'); + } + if (nodes.length === 0) { + return { x: 0, y: 0, width: 0, height: 0 }; + } + const box = nodes.reduce((currBox, nodeOrId) => { + const isId = typeof nodeOrId === 'string'; + let currentNode = !params.nodeLookup && !isId ? nodeOrId : undefined; + if (params.nodeLookup) { + currentNode = isId + ? params.nodeLookup.get(nodeOrId) + : !isInternalNodeBase(nodeOrId) + ? params.nodeLookup.get(nodeOrId.id) + : nodeOrId; + } + const nodeBox = currentNode ? nodeToBox(currentNode, params.nodeOrigin) : { x: 0, y: 0, x2: 0, y2: 0 }; + return getBoundsOfBoxes(currBox, nodeBox); + }, { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity }); + return boxToRect(box); +}; +/** + * Determines a bounding box that contains all given nodes in an array + * @internal + */ +const getInternalNodesBounds = (nodeLookup, params = {}) => { + let box = { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity }; + let hasVisibleNodes = false; + nodeLookup.forEach((node) => { + if (params.filter === undefined || params.filter(node)) { + box = getBoundsOfBoxes(box, nodeToBox(node)); + hasVisibleNodes = true; + } + }); + return hasVisibleNodes ? boxToRect(box) : { x: 0, y: 0, width: 0, height: 0 }; +}; +const getNodesInside = (nodes, rect, [tx, ty, tScale] = [0, 0, 1], partially = false, +// set excludeNonSelectableNodes if you want to pay attention to the nodes "selectable" attribute +excludeNonSelectableNodes = false) => { + // viewport in flow coordinates, as scalars to avoid a Rect allocation per node + const paneX = (rect.x - tx) / tScale; + const paneY = (rect.y - ty) / tScale; + const paneWidth = rect.width / tScale; + const paneHeight = rect.height / tScale; + const visibleNodes = []; + for (const node of nodes.values()) { + const { measured, selectable = true, hidden = false } = node; + if ((excludeNonSelectableNodes && !selectable) || hidden) { + continue; + } + const width = measured.width ?? node.width ?? node.initialWidth ?? 0; + const height = measured.height ?? node.height ?? node.initialHeight ?? 0; + const { x, y } = node.internals.positionAbsolute; + const overlappingArea = getRectsOverlappingArea(paneX, paneY, paneWidth, paneHeight, x, y, width, height); + const area = width * height; + const partiallyVisible = partially && overlappingArea > 0; + const forceInitialRender = !node.internals.handleBounds; + const isVisible = forceInitialRender || partiallyVisible || overlappingArea >= area; + if (isVisible || node.dragging) { + visibleNodes.push(node); + } + } + return visibleNodes; +}; +/** + * This utility filters an array of edges, keeping only those where either the source or target + * node is present in the given array of nodes. + * @public + * @param nodes - Nodes you want to get the connected edges for. + * @param edges - All edges. + * @returns Array of edges that connect any of the given nodes with each other. + * + * @example + * ```js + *import { getConnectedEdges } from '@xyflow/react'; + * + *const nodes = [ + * { id: 'a', position: { x: 0, y: 0 } }, + * { id: 'b', position: { x: 100, y: 0 } }, + *]; + * + *const edges = [ + * { id: 'a->c', source: 'a', target: 'c' }, + * { id: 'c->d', source: 'c', target: 'd' }, + *]; + * + *const connectedEdges = getConnectedEdges(nodes, edges); + * // => [{ id: 'a->c', source: 'a', target: 'c' }] + *``` + */ +const getConnectedEdges = (nodes, edges) => { + const nodeIds = new Set(); + nodes.forEach((node) => { + nodeIds.add(node.id); + }); + return edges.filter((edge) => nodeIds.has(edge.source) || nodeIds.has(edge.target)); +}; +function getFitViewNodes(nodeLookup, options) { + const fitViewNodes = new Map(); + const optionNodeIds = options?.nodes ? new Set(options.nodes.map((node) => node.id)) : null; + nodeLookup.forEach((n) => { + let isVisible; + if (options?.includeHiddenNodes) { + /* + * when hidden nodes are included they were never rendered, so they have no + * measured size. Fall back to the declared dimensions (same fallback as + * nodeToBox) so a hidden node with an intrinsic size still contributes to + * the fit bounds instead of being dropped by a measured-only check. (#5841) + */ + const { width, height } = getNodeDimensions(n); + isVisible = width > 0 && height > 0; + } + else { + isVisible = Boolean(n.measured.width && n.measured.height && !n.hidden); + } + if (isVisible && (!optionNodeIds || optionNodeIds.has(n.id))) { + fitViewNodes.set(n.id, n); + } + }); + return fitViewNodes; +} +async function fitViewport({ nodes, width, height, panZoom, minZoom, maxZoom }, options) { + if (nodes.size === 0) { + return true; + } + const nodesToFit = getFitViewNodes(nodes, options); + const bounds = getInternalNodesBounds(nodesToFit); + const viewport = getViewportForBounds(bounds, width, height, options?.minZoom ?? minZoom, options?.maxZoom ?? maxZoom, options?.padding ?? 0.1); + await panZoom.setViewport(viewport, { + duration: options?.duration, + ease: options?.ease, + interpolate: options?.interpolate, + }); + return true; +} +/** + * This function calculates the next position of a node, taking into account the node's extent, parent node, and origin. + * + * @internal + * @returns position, positionAbsolute + */ +function calculateNodePosition({ nodeId, nextPosition, nodeLookup, nodeOrigin = [0, 0], nodeExtent, onError, }) { + const node = nodeLookup.get(nodeId); + const parentNode = node.parentId ? nodeLookup.get(node.parentId) : undefined; + const { x: parentX, y: parentY } = parentNode ? parentNode.internals.positionAbsolute : { x: 0, y: 0 }; + const origin = node.origin ?? nodeOrigin; + let extent = node.extent || nodeExtent; + if (node.extent === 'parent' && !node.expandParent) { + if (!parentNode) { + onError?.('005', errorMessages['error005']()); + } + else { + const parentWidth = parentNode.measured.width; + const parentHeight = parentNode.measured.height; + if (parentWidth && parentHeight) { + extent = [ + [parentX, parentY], + [parentX + parentWidth, parentY + parentHeight], + ]; + } + } + } + else if (parentNode && isCoordinateExtent(node.extent)) { + extent = [ + [node.extent[0][0] + parentX, node.extent[0][1] + parentY], + [node.extent[1][0] + parentX, node.extent[1][1] + parentY], + ]; + } + const positionAbsolute = isCoordinateExtent(extent) + ? clampPosition(nextPosition, extent, node.measured) + : nextPosition; + if (node.measured.width === undefined || node.measured.height === undefined) { + onError?.('015', errorMessages['error015']()); + } + return { + position: { + x: positionAbsolute.x - parentX + (node.measured.width ?? 0) * origin[0], + y: positionAbsolute.y - parentY + (node.measured.height ?? 0) * origin[1], + }, + positionAbsolute, + }; +} +/** + * Pass in nodes & edges to delete, get arrays of nodes and edges that actually can be deleted + * @internal + * @param param.nodesToRemove - The nodes to remove + * @param param.edgesToRemove - The edges to remove + * @param param.nodes - All nodes + * @param param.edges - All edges + * @param param.onBeforeDelete - Callback to check which nodes and edges can be deleted + * @returns nodes: nodes that can be deleted, edges: edges that can be deleted + */ +async function getElementsToRemove({ nodesToRemove = [], edgesToRemove = [], nodes, edges, onBeforeDelete, }) { + const nodeIds = new Set(nodesToRemove.map((node) => node.id)); + const matchingNodes = []; + for (const node of nodes) { + if (node.deletable === false) { + continue; + } + const isIncluded = nodeIds.has(node.id); + const parentHit = !isIncluded && node.parentId && matchingNodes.find((n) => n.id === node.parentId); + if (isIncluded || parentHit) { + matchingNodes.push(node); + } + } + const edgeIds = new Set(edgesToRemove.map((edge) => edge.id)); + const deletableEdges = edges.filter((edge) => edge.deletable !== false); + const connectedEdges = getConnectedEdges(matchingNodes, deletableEdges); + const matchingEdges = connectedEdges; + for (const edge of deletableEdges) { + const isIncluded = edgeIds.has(edge.id); + if (isIncluded && !matchingEdges.find((e) => e.id === edge.id)) { + matchingEdges.push(edge); + } + } + if (!onBeforeDelete) { + return { + edges: matchingEdges, + nodes: matchingNodes, + }; + } + const onBeforeDeleteResult = await onBeforeDelete({ + nodes: matchingNodes, + edges: matchingEdges, + }); + if (typeof onBeforeDeleteResult === 'boolean') { + return onBeforeDeleteResult ? { edges: matchingEdges, nodes: matchingNodes } : { edges: [], nodes: [] }; + } + return onBeforeDeleteResult; +} + +const clamp = (val, min = 0, max = 1) => Math.min(Math.max(val, min), max); +const clampPosition = (position = { x: 0, y: 0 }, extent, dimensions) => ({ + x: clamp(position.x, extent[0][0], extent[1][0] - (dimensions?.width ?? 0)), + y: clamp(position.y, extent[0][1], extent[1][1] - (dimensions?.height ?? 0)), +}); +function clampPositionToParent(childPosition, childDimensions, parent) { + const { width: parentWidth, height: parentHeight } = getNodeDimensions(parent); + const { x: parentX, y: parentY } = parent.internals.positionAbsolute; + return clampPosition(childPosition, [ + [parentX, parentY], + [parentX + parentWidth, parentY + parentHeight], + ], childDimensions); +} +/** + * Calculates the velocity of panning when the mouse is close to the edge of the canvas + * @internal + * @param value - One dimensional poition of the mouse (x or y) + * @param min - Minimal position on canvas before panning starts + * @param max - Maximal position on canvas before panning starts + * @returns - A number between 0 and 1 that represents the velocity of panning + */ +const calcAutoPanVelocity = (value, min, max) => { + if (value < min) { + return clamp(Math.abs(value - min), 1, min) / min; + } + else if (value > max) { + return -clamp(Math.abs(value - max), 1, min) / min; + } + return 0; +}; +const calcAutoPan = (pos, bounds, speed = 15, distance = 40) => { + const xMovement = calcAutoPanVelocity(pos.x, distance, bounds.width - distance) * speed; + const yMovement = calcAutoPanVelocity(pos.y, distance, bounds.height - distance) * speed; + return [xMovement, yMovement]; +}; +const getBoundsOfBoxes = (box1, box2) => ({ + x: Math.min(box1.x, box2.x), + y: Math.min(box1.y, box2.y), + x2: Math.max(box1.x2, box2.x2), + y2: Math.max(box1.y2, box2.y2), +}); +const rectToBox = ({ x, y, width, height }) => ({ + x, + y, + x2: x + width, + y2: y + height, +}); +const boxToRect = ({ x, y, x2, y2 }) => ({ + x, + y, + width: x2 - x, + height: y2 - y, +}); +const nodeToRect = (node, nodeOrigin = [0, 0]) => { + const { x, y } = isInternalNodeBase(node) + ? node.internals.positionAbsolute + : getNodePositionWithOrigin(node, nodeOrigin); + return { + x, + y, + width: node.measured?.width ?? node.width ?? node.initialWidth ?? 0, + height: node.measured?.height ?? node.height ?? node.initialHeight ?? 0, + }; +}; +const nodeToBox = (node, nodeOrigin = [0, 0]) => { + const { x, y } = isInternalNodeBase(node) + ? node.internals.positionAbsolute + : getNodePositionWithOrigin(node, nodeOrigin); + return { + x, + y, + x2: x + (node.measured?.width ?? node.width ?? node.initialWidth ?? 0), + y2: y + (node.measured?.height ?? node.height ?? node.initialHeight ?? 0), + }; +}; +const getBoundsOfRects = (rect1, rect2) => boxToRect(getBoundsOfBoxes(rectToBox(rect1), rectToBox(rect2))); +const getRectsOverlappingArea = (aX, aY, aWidth, aHeight, bX, bY, bWidth, bHeight) => { + const xOverlap = Math.max(0, Math.min(aX + aWidth, bX + bWidth) - Math.max(aX, bX)); + const yOverlap = Math.max(0, Math.min(aY + aHeight, bY + bHeight) - Math.max(aY, bY)); + return Math.ceil(xOverlap * yOverlap); +}; +const getOverlappingArea = (rectA, rectB) => getRectsOverlappingArea(rectA.x, rectA.y, rectA.width, rectA.height, rectB.x, rectB.y, rectB.width, rectB.height); +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const isRectObject = (obj) => isNumeric(obj.width) && isNumeric(obj.height) && isNumeric(obj.x) && isNumeric(obj.y); +/* eslint-disable-next-line @typescript-eslint/no-explicit-any */ +const isNumeric = (n) => !isNaN(n) && isFinite(n); +const createDevWarn = (lib, helpUrl) => (id, message) => { + if (process.env.NODE_ENV === 'development') { + console.warn(`[${lib}]: ${message} Help: ${helpUrl}error#${id}`); + } +}; +const snapPosition = (position, snapGrid = [1, 1]) => { + return { + x: snapGrid[0] * Math.round(position.x / snapGrid[0]), + y: snapGrid[1] * Math.round(position.y / snapGrid[1]), + }; +}; +const pointToRendererPoint = ({ x, y }, [tx, ty, tScale], snapToGrid = false, snapGrid = [1, 1]) => { + const position = { + x: (x - tx) / tScale, + y: (y - ty) / tScale, + }; + return snapToGrid ? snapPosition(position, snapGrid) : position; +}; +const rendererPointToPoint = ({ x, y }, [tx, ty, tScale]) => { + return { + x: x * tScale + tx, + y: y * tScale + ty, + }; +}; +/** + * Parses a single padding value to a number + * @internal + * @param padding - Padding to parse + * @param viewport - Width or height of the viewport + * @returns The padding in pixels + */ +function parsePadding(padding, viewport) { + if (typeof padding === 'number') { + return Math.floor((viewport - viewport / (1 + padding)) * 0.5); + } + if (typeof padding === 'string' && padding.endsWith('px')) { + const paddingValue = parseFloat(padding); + if (!Number.isNaN(paddingValue)) { + return Math.floor(paddingValue); + } + } + if (typeof padding === 'string' && padding.endsWith('%')) { + const paddingValue = parseFloat(padding); + if (!Number.isNaN(paddingValue)) { + return Math.floor(viewport * paddingValue * 0.01); + } + } + console.error(`The padding value "${padding}" is invalid. Please provide a number or a string with a valid unit (px or %).`); + return 0; +} +/** + * Parses the paddings to an object with top, right, bottom, left, x and y paddings + * @internal + * @param padding - Padding to parse + * @param width - Width of the viewport + * @param height - Height of the viewport + * @returns An object with the paddings in pixels + */ +function parsePaddings(padding, width, height) { + if (typeof padding === 'string' || typeof padding === 'number') { + const paddingY = parsePadding(padding, height); + const paddingX = parsePadding(padding, width); + return { + top: paddingY, + right: paddingX, + bottom: paddingY, + left: paddingX, + x: paddingX * 2, + y: paddingY * 2, + }; + } + if (typeof padding === 'object') { + const top = parsePadding(padding.top ?? padding.y ?? 0, height); + const bottom = parsePadding(padding.bottom ?? padding.y ?? 0, height); + const left = parsePadding(padding.left ?? padding.x ?? 0, width); + const right = parsePadding(padding.right ?? padding.x ?? 0, width); + return { top, right, bottom, left, x: left + right, y: top + bottom }; + } + return { top: 0, right: 0, bottom: 0, left: 0, x: 0, y: 0 }; +} +/** + * Calculates the resulting paddings if the new viewport is applied + * @internal + * @param bounds - Bounds to fit inside viewport + * @param x - X position of the viewport + * @param y - Y position of the viewport + * @param zoom - Zoom level of the viewport + * @param width - Width of the viewport + * @param height - Height of the viewport + * @returns An object with the minimum padding required to fit the bounds inside the viewport + */ +function calculateAppliedPaddings(bounds, x, y, zoom, width, height) { + const { x: left, y: top } = rendererPointToPoint(bounds, [x, y, zoom]); + const { x: boundRight, y: boundBottom } = rendererPointToPoint({ x: bounds.x + bounds.width, y: bounds.y + bounds.height }, [x, y, zoom]); + const right = width - boundRight; + const bottom = height - boundBottom; + return { + left: Math.floor(left), + top: Math.floor(top), + right: Math.floor(right), + bottom: Math.floor(bottom), + }; +} +/** + * Returns a viewport that encloses the given bounds with padding. + * @public + * @remarks You can determine bounds of nodes with {@link getNodesBounds} and {@link getBoundsOfRects} + * @param bounds - Bounds to fit inside viewport. + * @param width - Width of the viewport. + * @param height - Height of the viewport. + * @param minZoom - Minimum zoom level of the resulting viewport. + * @param maxZoom - Maximum zoom level of the resulting viewport. + * @param padding - Padding around the bounds. + * @returns A transformed {@link Viewport} that encloses the given bounds which you can pass to e.g. {@link setViewport}. + * @example + * const { x, y, zoom } = getViewportForBounds( + * { x: 0, y: 0, width: 100, height: 100}, + * 1200, 800, 0.5, 2); + */ +const getViewportForBounds = (bounds, width, height, minZoom, maxZoom, padding) => { + // First we resolve all the paddings to actual pixel values + const p = parsePaddings(padding, width, height); + const xZoom = (width - p.x) / bounds.width; + const yZoom = (height - p.y) / bounds.height; + // We calculate the new x, y, zoom for a centered view + const zoom = Math.min(xZoom, yZoom); + const clampedZoom = clamp(zoom, minZoom, maxZoom); + const boundsCenterX = bounds.x + bounds.width / 2; + const boundsCenterY = bounds.y + bounds.height / 2; + const x = width / 2 - boundsCenterX * clampedZoom; + const y = height / 2 - boundsCenterY * clampedZoom; + // Then we calculate the minimum padding, to respect asymmetric paddings + const newPadding = calculateAppliedPaddings(bounds, x, y, clampedZoom, width, height); + // We only want to have an offset if the newPadding is smaller than the required padding + const offset = { + left: Math.min(newPadding.left - p.left, 0), + top: Math.min(newPadding.top - p.top, 0), + right: Math.min(newPadding.right - p.right, 0), + bottom: Math.min(newPadding.bottom - p.bottom, 0), + }; + return { + x: x - offset.left + offset.right, + y: y - offset.top + offset.bottom, + zoom: clampedZoom, + }; +}; +const isMacOs = () => typeof navigator !== 'undefined' && navigator?.userAgent?.indexOf('Mac') >= 0; +function isCoordinateExtent(extent) { + return extent !== undefined && extent !== null && extent !== 'parent'; +} +function getNodeDimensions(node) { + return { + width: node.measured?.width ?? node.width ?? node.initialWidth ?? 0, + height: node.measured?.height ?? node.height ?? node.initialHeight ?? 0, + }; +} +function nodeHasDimensions(node) { + return ((node.measured?.width ?? node.width ?? node.initialWidth) !== undefined && + (node.measured?.height ?? node.height ?? node.initialHeight) !== undefined); +} +/** + * Convert child position to absolute position + * + * @internal + * @param position + * @param parentId + * @param nodeLookup + * @param nodeOrigin + * @returns an internal node with an absolute position + */ +function evaluateAbsolutePosition(position, dimensions = { width: 0, height: 0 }, parentId, nodeLookup, nodeOrigin) { + const positionAbsolute = { ...position }; + const parent = nodeLookup.get(parentId); + if (parent) { + const origin = parent.origin || nodeOrigin; + positionAbsolute.x += parent.internals.positionAbsolute.x - (dimensions.width ?? 0) * origin[0]; + positionAbsolute.y += parent.internals.positionAbsolute.y - (dimensions.height ?? 0) * origin[1]; + } + return positionAbsolute; +} +function areSetsEqual(a, b) { + if (a.size !== b.size) { + return false; + } + for (const item of a) { + if (!b.has(item)) { + return false; + } + } + return true; +} +/** + * Polyfill for Promise.withResolvers until we can use it in all browsers + * @internal + */ +function withResolvers() { + let resolve; + let reject; + const promise = new Promise((res, rej) => { + resolve = res; + reject = rej; + }); + return { promise, resolve, reject }; +} +function mergeAriaLabelConfig(partial) { + return { ...defaultAriaLabelConfig, ...(partial || {}) }; +} + +function getPointerPosition(event, { snapGrid = [0, 0], snapToGrid = false, transform, containerBounds }) { + const { x, y } = getEventPosition(event); + const pointerPos = pointToRendererPoint({ x: x - (containerBounds?.left ?? 0), y: y - (containerBounds?.top ?? 0) }, transform); + const { x: xSnapped, y: ySnapped } = snapToGrid ? snapPosition(pointerPos, snapGrid) : pointerPos; + // we need the snapped position in order to be able to skip unnecessary drag events + return { + xSnapped, + ySnapped, + ...pointerPos, + }; +} +const getDimensions = (node) => ({ + width: node.offsetWidth, + height: node.offsetHeight, +}); +const getHostForElement = (element) => element?.getRootNode?.() || window?.document; +const inputTags = ['INPUT', 'SELECT', 'TEXTAREA']; +function isInputDOMNode(event) { + // using composed path for handling shadow dom + const target = (event.composedPath?.()?.[0] || event.target); + if (target?.nodeType !== 1 /* Node.ELEMENT_NODE */) + return false; + const isInput = inputTags.includes(target.nodeName) || target.hasAttribute('contenteditable'); + // when an input field is focused we don't want to trigger deletion or movement of nodes + return isInput || !!target.closest('.nokey'); +} +const isMouseEvent = (event) => 'clientX' in event; +const getEventPosition = (event, bounds) => { + const isMouse = isMouseEvent(event); + const evtX = isMouse ? event.clientX : event.touches?.[0].clientX; + const evtY = isMouse ? event.clientY : event.touches?.[0].clientY; + return { + x: evtX - (bounds?.left ?? 0), + y: evtY - (bounds?.top ?? 0), + }; +}; +/* + * The handle bounds are calculated relative to the node element. + * We store them in the internals object of the node in order to avoid + * unnecessary recalculations. + */ +const getHandleBounds = (type, nodeElement, nodeBounds, zoom, nodeId) => { + const handles = nodeElement.querySelectorAll(`.${type}`); + if (!handles || !handles.length) { + return null; + } + return Array.from(handles).map((handle) => { + const handleBounds = handle.getBoundingClientRect(); + return { + id: handle.getAttribute('data-handleid'), + type, + nodeId, + position: handle.getAttribute('data-handlepos'), + x: (handleBounds.left - nodeBounds.left) / zoom, + y: (handleBounds.top - nodeBounds.top) / zoom, + ...getDimensions(handle), + }; + }); +}; + +function getBezierEdgeCenter({ sourceX, sourceY, targetX, targetY, sourceControlX, sourceControlY, targetControlX, targetControlY, }) { + /* + * cubic bezier t=0.5 mid point, not the actual mid point, but easy to calculate + * https://stackoverflow.com/questions/67516101/how-to-find-distance-mid-point-of-bezier-curve + */ + const centerX = sourceX * 0.125 + sourceControlX * 0.375 + targetControlX * 0.375 + targetX * 0.125; + const centerY = sourceY * 0.125 + sourceControlY * 0.375 + targetControlY * 0.375 + targetY * 0.125; + const offsetX = Math.abs(centerX - sourceX); + const offsetY = Math.abs(centerY - sourceY); + return [centerX, centerY, offsetX, offsetY]; +} +function calculateControlOffset(distance, curvature) { + if (distance >= 0) { + return 0.5 * distance; + } + return curvature * 25 * Math.sqrt(-distance); +} +function getControlWithCurvature({ pos, x1, y1, x2, y2, c }) { + switch (pos) { + case Position.Left: + return [x1 - calculateControlOffset(x1 - x2, c), y1]; + case Position.Right: + return [x1 + calculateControlOffset(x2 - x1, c), y1]; + case Position.Top: + return [x1, y1 - calculateControlOffset(y1 - y2, c)]; + case Position.Bottom: + return [x1, y1 + calculateControlOffset(y2 - y1, c)]; + } +} +/** + * The `getBezierPath` util returns everything you need to render a bezier edge + *between two nodes. + * @public + * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path) + * and `offsetX`, `offsetY` between source handle and label. + * - `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. + * @example + * ```js + * const source = { x: 0, y: 20 }; + * const target = { x: 150, y: 100 }; + * + * const [path, labelX, labelY, offsetX, offsetY] = getBezierPath({ + * sourceX: source.x, + * sourceY: source.y, + * sourcePosition: Position.Right, + * targetX: target.x, + * targetY: target.y, + * targetPosition: Position.Left, + *}); + *``` + * + * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to + *work with multiple edge paths at once. + */ +function getBezierPath({ sourceX, sourceY, sourcePosition = Position.Bottom, targetX, targetY, targetPosition = Position.Top, curvature = 0.25, }) { + const [sourceControlX, sourceControlY] = getControlWithCurvature({ + pos: sourcePosition, + x1: sourceX, + y1: sourceY, + x2: targetX, + y2: targetY, + c: curvature, + }); + const [targetControlX, targetControlY] = getControlWithCurvature({ + pos: targetPosition, + x1: targetX, + y1: targetY, + x2: sourceX, + y2: sourceY, + c: curvature, + }); + 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, + ]; +} + +// this is used for straight edges and simple smoothstep edges (LTR, RTL, BTT, TTB) +function getEdgeCenter({ sourceX, sourceY, targetX, targetY, }) { + const xOffset = Math.abs(targetX - sourceX) / 2; + const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset; + const yOffset = Math.abs(targetY - sourceY) / 2; + const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset; + return [centerX, centerY, xOffset, yOffset]; +} +/** + * Returns the z-index for an edge based on the node it connects and whether it is selected. + * By default, edges are rendered below nodes. This behaviour is different for edges that are + * connected to nodes with a parent, as they are rendered above the parent node. + */ +function getElevatedEdgeZIndex({ sourceNode, targetNode, selected = false, zIndex = 0, elevateOnSelect = false, zIndexMode = 'basic', }) { + if (zIndexMode === 'manual') { + return zIndex; + } + const edgeZ = elevateOnSelect && selected ? zIndex + 1000 : zIndex; + const nodeZ = Math.max(sourceNode.parentId || (elevateOnSelect && sourceNode.selected) ? sourceNode.internals.z : 0, targetNode.parentId || (elevateOnSelect && targetNode.selected) ? targetNode.internals.z : 0); + return edgeZ + nodeZ; +} +function isEdgeVisible({ sourceNode, targetNode, width, height, transform }) { + const edgeBox = getBoundsOfBoxes(nodeToBox(sourceNode), nodeToBox(targetNode)); + if (edgeBox.x === edgeBox.x2) { + edgeBox.x2 += 1; + } + if (edgeBox.y === edgeBox.y2) { + edgeBox.y2 += 1; + } + const viewRect = { + x: -transform[0] / transform[2], + y: -transform[1] / transform[2], + width: width / transform[2], + height: height / transform[2], + }; + return getOverlappingArea(viewRect, boxToRect(edgeBox)) > 0; +} +/** + * The default edge ID generator function. Generates an ID based on the source, target, and handles. + * @public + * @param params - The connection or edge to generate an ID for. + * @returns The generated edge ID. + */ +const getEdgeId = ({ source, sourceHandle, target, targetHandle }) => `xy-edge__${source}${sourceHandle || ''}-${target}${targetHandle || ''}`; +const connectionExists = (edge, edges) => { + return edges.some((el) => el.source === edge.source && + el.target === edge.target && + (el.sourceHandle === edge.sourceHandle || (!el.sourceHandle && !edge.sourceHandle)) && + (el.targetHandle === edge.targetHandle || (!el.targetHandle && !edge.targetHandle))); +}; +/** + * This util is a convenience function to add a new Edge to an array of edges. It also performs some validation to make sure you don't add an invalid edge or duplicate an existing one. + * @public + * @param edgeParams - Either an `Edge` or a `Connection` you want to add. + * @param edges - The array of all current edges. + * @param options - Optional configuration object. + * @returns A new array of edges with the new edge added. + * + * @remarks If an edge with the same `target` and `source` already exists (and the same + *`targetHandle` and `sourceHandle` if those are set), then this util won't add + *a new edge even if the `id` property is different. + * + */ +const addEdge = (edgeParams, edges, options = {}) => { + if (!edgeParams.source || !edgeParams.target) { + options.onError?.('006', errorMessages['error006']()); + return edges; + } + const edgeIdGenerator = options.getEdgeId || getEdgeId; + let edge; + if (isEdgeBase(edgeParams)) { + edge = { ...edgeParams }; + } + else { + edge = { + ...edgeParams, + id: edgeIdGenerator(edgeParams), + }; + } + if (connectionExists(edge, edges)) { + return edges; + } + if (edge.sourceHandle === null) { + delete edge.sourceHandle; + } + if (edge.targetHandle === null) { + delete edge.targetHandle; + } + return edges.concat(edge); +}; +/** + * A handy utility to update an existing [`Edge`](/api-reference/types/edge) with new properties. + *This searches your edge array for an edge with a matching `id` and updates its + *properties with the connection you provide. + * @public + * @param oldEdge - The edge you want to update. + * @param newConnection - The new connection you want to update the edge with. + * @param edges - The array of all current edges. + * @returns The updated edges array. + * + * @example + * ```js + *const onReconnect = useCallback( + * (oldEdge: Edge, newConnection: Connection) => setEdges((els) => reconnectEdge(oldEdge, newConnection, els)),[]); + *``` + */ +const reconnectEdge = (oldEdge, newConnection, edges, options = { shouldReplaceId: true }) => { + const { id: oldEdgeId, ...rest } = oldEdge; + if (!newConnection.source || !newConnection.target) { + options.onError?.('006', errorMessages['error006']()); + return edges; + } + const foundEdge = edges.find((e) => e.id === oldEdge.id); + if (!foundEdge) { + options.onError?.('007', errorMessages['error007'](oldEdgeId)); + return edges; + } + const edgeIdGenerator = options.getEdgeId || getEdgeId; + // Remove old edge and create the new edge with parameters of old edge. + const edge = { + ...rest, + id: options.shouldReplaceId ? edgeIdGenerator(newConnection) : oldEdgeId, + source: newConnection.source, + target: newConnection.target, + sourceHandle: newConnection.sourceHandle, + targetHandle: newConnection.targetHandle, + }; + return edges.filter((e) => e.id !== oldEdgeId).concat(edge); +}; + +/** + * Calculates the straight line path between two points. + * @public + * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path) + * and `offsetX`, `offsetY` between source handle and label. + * + * - `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. + * @example + * ```js + * const source = { x: 0, y: 20 }; + * const target = { x: 150, y: 100 }; + * + * const [path, labelX, labelY, offsetX, offsetY] = getStraightPath({ + * sourceX: source.x, + * sourceY: source.y, + * sourcePosition: Position.Right, + * targetX: target.x, + * targetY: target.y, + * targetPosition: Position.Left, + * }); + * ``` + * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to work with multiple edge paths at once. + */ +function getStraightPath({ sourceX, sourceY, targetX, targetY, }) { + const [labelX, labelY, offsetX, offsetY] = getEdgeCenter({ + sourceX, + sourceY, + targetX, + targetY, + }); + return [`M ${sourceX},${sourceY}L ${targetX},${targetY}`, labelX, labelY, offsetX, offsetY]; +} + +const handleDirections = { + [Position.Left]: { x: -1, y: 0 }, + [Position.Right]: { x: 1, y: 0 }, + [Position.Top]: { x: 0, y: -1 }, + [Position.Bottom]: { x: 0, y: 1 }, +}; +const getDirection = ({ source, sourcePosition = Position.Bottom, target, }) => { + if (sourcePosition === Position.Left || sourcePosition === Position.Right) { + return source.x < target.x ? { x: 1, y: 0 } : { x: -1, y: 0 }; + } + return source.y < target.y ? { x: 0, y: 1 } : { x: 0, y: -1 }; +}; +const distance = (a, b) => Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2)); +/* + * With this function we try to mimic an orthogonal edge routing behaviour + * It's not as good as a real orthogonal edge routing, but it's faster and good enough as a default for step and smooth step edges + */ +function getPoints({ source, sourcePosition = Position.Bottom, target, targetPosition = Position.Top, center, offset, stepPosition, }) { + const sourceDir = handleDirections[sourcePosition]; + const targetDir = handleDirections[targetPosition]; + const sourceGapped = { x: source.x + sourceDir.x * offset, y: source.y + sourceDir.y * offset }; + const targetGapped = { x: target.x + targetDir.x * offset, y: target.y + targetDir.y * offset }; + const dir = getDirection({ + source: sourceGapped, + sourcePosition, + target: targetGapped, + }); + const dirAccessor = dir.x !== 0 ? 'x' : 'y'; + const currDir = dir[dirAccessor]; + let points = []; + let centerX, centerY; + const sourceGapOffset = { x: 0, y: 0 }; + const targetGapOffset = { x: 0, y: 0 }; + const [, , defaultOffsetX, defaultOffsetY] = getEdgeCenter({ + sourceX: source.x, + sourceY: source.y, + targetX: target.x, + targetY: target.y, + }); + // opposite handle positions, default case + if (sourceDir[dirAccessor] * targetDir[dirAccessor] === -1) { + if (dirAccessor === 'x') { + // Primary direction is horizontal, so stepPosition affects X coordinate + centerX = center.x ?? sourceGapped.x + (targetGapped.x - sourceGapped.x) * stepPosition; + centerY = center.y ?? (sourceGapped.y + targetGapped.y) / 2; + } + else { + // Primary direction is vertical, so stepPosition affects Y coordinate + centerX = center.x ?? (sourceGapped.x + targetGapped.x) / 2; + centerY = center.y ?? sourceGapped.y + (targetGapped.y - sourceGapped.y) * stepPosition; + } + /* + * ---> + * | + * >--- + */ + const verticalSplit = [ + { x: centerX, y: sourceGapped.y }, + { x: centerX, y: targetGapped.y }, + ]; + /* + * | + * --- + * | + */ + const horizontalSplit = [ + { x: sourceGapped.x, y: centerY }, + { x: targetGapped.x, y: centerY }, + ]; + if (sourceDir[dirAccessor] === currDir) { + points = dirAccessor === 'x' ? verticalSplit : horizontalSplit; + } + else { + points = dirAccessor === 'x' ? horizontalSplit : verticalSplit; + } + } + else { + // sourceTarget means we take x from source and y from target, targetSource is the opposite + const sourceTarget = [{ x: sourceGapped.x, y: targetGapped.y }]; + const targetSource = [{ x: targetGapped.x, y: sourceGapped.y }]; + // this handles edges with same handle positions + if (dirAccessor === 'x') { + points = sourceDir.x === currDir ? targetSource : sourceTarget; + } + else { + points = sourceDir.y === currDir ? sourceTarget : targetSource; + } + if (sourcePosition === targetPosition) { + const diff = Math.abs(source[dirAccessor] - target[dirAccessor]); + // if an edge goes from right to right for example (sourcePosition === targetPosition) and the distance between source.x and target.x is less than the offset, the added point and the gapped source/target will overlap. This leads to a weird edge path. To avoid this we add a gapOffset to the source/target + if (diff <= offset) { + const gapOffset = Math.min(offset - 1, offset - diff); + if (sourceDir[dirAccessor] === currDir) { + sourceGapOffset[dirAccessor] = (sourceGapped[dirAccessor] > source[dirAccessor] ? -1 : 1) * gapOffset; + } + else { + targetGapOffset[dirAccessor] = (targetGapped[dirAccessor] > target[dirAccessor] ? -1 : 1) * gapOffset; + } + } + } + // these are conditions for handling mixed handle positions like Right -> Bottom for example + if (sourcePosition !== targetPosition) { + const dirAccessorOpposite = dirAccessor === 'x' ? 'y' : 'x'; + const isSameDir = sourceDir[dirAccessor] === targetDir[dirAccessorOpposite]; + const sourceGtTargetOppo = sourceGapped[dirAccessorOpposite] > targetGapped[dirAccessorOpposite]; + const sourceLtTargetOppo = sourceGapped[dirAccessorOpposite] < targetGapped[dirAccessorOpposite]; + const flipSourceTarget = (sourceDir[dirAccessor] === 1 && ((!isSameDir && sourceGtTargetOppo) || (isSameDir && sourceLtTargetOppo))) || + (sourceDir[dirAccessor] !== 1 && ((!isSameDir && sourceLtTargetOppo) || (isSameDir && sourceGtTargetOppo))); + if (flipSourceTarget) { + points = dirAccessor === 'x' ? sourceTarget : targetSource; + } + } + const sourceGapPoint = { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y }; + const targetGapPoint = { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y }; + const maxXDistance = Math.max(Math.abs(sourceGapPoint.x - points[0].x), Math.abs(targetGapPoint.x - points[0].x)); + const maxYDistance = Math.max(Math.abs(sourceGapPoint.y - points[0].y), Math.abs(targetGapPoint.y - points[0].y)); + // we want to place the label on the longest segment of the edge + if (maxXDistance >= maxYDistance) { + centerX = (sourceGapPoint.x + targetGapPoint.x) / 2; + centerY = points[0].y; + } + else { + centerX = points[0].x; + centerY = (sourceGapPoint.y + targetGapPoint.y) / 2; + } + } + const gappedSource = { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y }; + const gappedTarget = { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y }; + const pathPoints = [ + source, + // we only want to add the gapped source/target if they are different from the first/last point to avoid duplicates which can cause issues with the bends + ...(gappedSource.x !== points[0].x || gappedSource.y !== points[0].y ? [gappedSource] : []), + ...points, + ...(gappedTarget.x !== points[points.length - 1].x || gappedTarget.y !== points[points.length - 1].y + ? [gappedTarget] + : []), + target, + ]; + return [pathPoints, centerX, centerY, defaultOffsetX, defaultOffsetY]; +} +function getBend(a, b, c, size) { + const bendSize = Math.min(distance(a, b) / 2, distance(b, c) / 2, size); + const { x, y } = b; + // no bend + if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) { + return `L${x} ${y}`; + } + // first segment is horizontal + if (a.y === y) { + const xDir = a.x < c.x ? -1 : 1; + const yDir = a.y < c.y ? 1 : -1; + return `L ${x + bendSize * xDir},${y}Q ${x},${y} ${x},${y + bendSize * yDir}`; + } + const xDir = a.x < c.x ? 1 : -1; + const yDir = a.y < c.y ? -1 : 1; + return `L ${x},${y + bendSize * yDir}Q ${x},${y} ${x + bendSize * xDir},${y}`; +} +/** + * The `getSmoothStepPath` util returns everything you need to render a stepped path + * between two nodes. The `borderRadius` property can be used to choose how rounded + * the corners of those steps are. + * @public + * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path) + * and `offsetX`, `offsetY` between source handle and label. + * + * - `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. + * @example + * ```js + * const source = { x: 0, y: 20 }; + * const target = { x: 150, y: 100 }; + * + * const [path, labelX, labelY, offsetX, offsetY] = getSmoothStepPath({ + * sourceX: source.x, + * sourceY: source.y, + * sourcePosition: Position.Right, + * targetX: target.x, + * targetY: target.y, + * targetPosition: Position.Left, + * }); + * ``` + * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to work with multiple edge paths at once. + */ +function getSmoothStepPath({ sourceX, sourceY, sourcePosition = Position.Bottom, targetX, targetY, targetPosition = Position.Top, borderRadius = 5, centerX, centerY, offset = 20, stepPosition = 0.5, }) { + const [points, labelX, labelY, offsetX, offsetY] = getPoints({ + source: { x: sourceX, y: sourceY }, + sourcePosition, + target: { x: targetX, y: targetY }, + targetPosition, + center: { x: centerX, y: centerY }, + offset, + stepPosition, + }); + let path = `M${points[0].x} ${points[0].y}`; + for (let i = 1; i < points.length - 1; i++) { + path += getBend(points[i - 1], points[i], points[i + 1], borderRadius); + } + path += `L${points[points.length - 1].x} ${points[points.length - 1].y}`; + return [path, labelX, labelY, offsetX, offsetY]; +} + +function isNodeInitialized(node) { + return (node && + !!(node.internals.handleBounds || node.handles?.length) && + !!(node.measured.width || node.width || node.initialWidth)); +} +function getEdgePosition(params) { + const { sourceNode, targetNode } = params; + if (!isNodeInitialized(sourceNode) || !isNodeInitialized(targetNode)) { + return null; + } + const sourceHandleBounds = sourceNode.internals.handleBounds || toHandleBounds(sourceNode.handles); + const targetHandleBounds = targetNode.internals.handleBounds || toHandleBounds(targetNode.handles); + const sourceHandle = getHandle$1(sourceHandleBounds?.source ?? [], params.sourceHandle); + const targetHandle = getHandle$1( + // when connection type is loose we can define all handles as sources and connect source -> source + params.connectionMode === ConnectionMode.Strict + ? targetHandleBounds?.target ?? [] + : (targetHandleBounds?.target ?? []).concat(targetHandleBounds?.source ?? []), params.targetHandle); + if (!sourceHandle || !targetHandle) { + params.onError?.('008', errorMessages['error008'](!sourceHandle ? 'source' : 'target', { + id: params.id, + sourceHandle: params.sourceHandle, + targetHandle: params.targetHandle, + })); + return null; + } + const sourcePosition = sourceHandle?.position || Position.Bottom; + const targetPosition = targetHandle?.position || Position.Top; + const source = getHandlePosition(sourceNode, sourceHandle, sourcePosition); + const target = getHandlePosition(targetNode, targetHandle, targetPosition); + return { + sourceX: source.x, + sourceY: source.y, + targetX: target.x, + targetY: target.y, + sourcePosition, + targetPosition, + }; +} +function toHandleBounds(handles) { + if (!handles) { + return null; + } + const source = []; + const target = []; + for (const handle of handles) { + handle.width = handle.width ?? 1; + handle.height = handle.height ?? 1; + if (handle.type === 'source') { + source.push(handle); + } + else if (handle.type === 'target') { + target.push(handle); + } + } + return { + source, + target, + }; +} +function getHandlePosition(node, handle, fallbackPosition = Position.Left, center = false) { + const x = (handle?.x ?? 0) + node.internals.positionAbsolute.x; + const y = (handle?.y ?? 0) + node.internals.positionAbsolute.y; + const { width, height } = handle ?? getNodeDimensions(node); + if (center) { + return { x: x + width / 2, y: y + height / 2 }; + } + const position = handle?.position ?? fallbackPosition; + switch (position) { + case Position.Top: + return { x: x + width / 2, y }; + case Position.Right: + return { x: x + width, y: y + height / 2 }; + case Position.Bottom: + return { x: x + width / 2, y: y + height }; + case Position.Left: + return { x, y: y + height / 2 }; + } +} +function getHandle$1(bounds, handleId) { + if (!bounds) { + return null; + } + // if no handleId is given, we use the first handle, otherwise we check for the id + return (!handleId ? bounds[0] : bounds.find((d) => d.id === handleId)) || null; +} + +function getMarkerId(marker, id) { + if (!marker) { + return ''; + } + if (typeof marker === 'string') { + return marker; + } + const idPrefix = id ? `${id}__` : ''; + return `${idPrefix}${Object.keys(marker) + .sort() + .map((key) => `${key}=${marker[key]}`) + .join('&')}`; +} +function createMarkerIds(edges, { id, defaultColor, defaultMarkerStart, defaultMarkerEnd, }) { + const ids = new Set(); + return edges + .reduce((markers, edge) => { + [edge.markerStart || defaultMarkerStart, edge.markerEnd || defaultMarkerEnd].forEach((marker) => { + if (marker && typeof marker === 'object') { + const markerId = getMarkerId(marker, id); + if (!ids.has(markerId)) { + markers.push({ id: markerId, color: marker.color || defaultColor, ...marker }); + ids.add(markerId); + } + } + }); + return markers; + }, []) + .sort((a, b) => a.id.localeCompare(b.id)); +} + +function getNodeToolbarTransform(nodeRect, viewport, position, offset, align) { + let alignmentOffset = 0.5; + if (align === 'start') { + alignmentOffset = 0; + } + else if (align === 'end') { + alignmentOffset = 1; + } + /* + * position === Position.Top + * we set the x any y position of the toolbar based on the nodes position + */ + let pos = [ + (nodeRect.x + nodeRect.width * alignmentOffset) * viewport.zoom + viewport.x, + nodeRect.y * viewport.zoom + viewport.y - offset, + ]; + // and than shift it based on the alignment. The shift values are in %. + let shift = [-100 * alignmentOffset, -100]; + switch (position) { + case Position.Right: + pos = [ + (nodeRect.x + nodeRect.width) * viewport.zoom + viewport.x + offset, + (nodeRect.y + nodeRect.height * alignmentOffset) * viewport.zoom + viewport.y, + ]; + shift = [0, -100 * alignmentOffset]; + break; + case Position.Bottom: + pos[1] = (nodeRect.y + nodeRect.height) * viewport.zoom + viewport.y + offset; + shift[1] = 0; + break; + case Position.Left: + pos = [ + nodeRect.x * viewport.zoom + viewport.x - offset, + (nodeRect.y + nodeRect.height * alignmentOffset) * viewport.zoom + viewport.y, + ]; + shift = [-100, -100 * alignmentOffset]; + break; + } + return `translate(${pos[0]}px, ${pos[1]}px) translate(${shift[0]}%, ${shift[1]}%)`; +} + +const alignXToPercent = { + left: 0, + center: 50, + right: 100, +}; +const alignYToPercent = { + top: 0, + center: 50, + bottom: 100, +}; +function getEdgeToolbarTransform(x, y, zoom, alignX = 'center', alignY = 'center') { + return `translate(${x}px, ${y}px) scale(${1 / zoom}) translate(${-(alignXToPercent[alignX] ?? 50)}%, ${-(alignYToPercent[alignY] ?? 50)}%)`; +} + +const SELECTED_NODE_Z = 1000; +const ROOT_PARENT_Z_INCREMENT = 10; +const defaultOptions = { + nodeOrigin: [0, 0], + nodeExtent: infiniteExtent, + elevateNodesOnSelect: true, + zIndexMode: 'basic', + defaults: {}, +}; +const adoptUserNodesDefaultOptions = { + ...defaultOptions, + checkEquality: true, +}; +function mergeObjects(base, incoming) { + const result = { ...base }; + for (const key in incoming) { + if (incoming[key] !== undefined) { + // typecast is safe here, because we check for undefined + result[key] = incoming[key]; + } + } + return result; +} +function updateAbsolutePositions(nodeLookup, parentLookup, options) { + const _options = mergeObjects(defaultOptions, options); + for (const node of nodeLookup.values()) { + if (node.parentId) { + updateChildNode(node, nodeLookup, parentLookup, _options); + } + else { + const positionWithOrigin = getNodePositionWithOrigin(node, _options.nodeOrigin); + const extent = isCoordinateExtent(node.extent) ? node.extent : _options.nodeExtent; + const clampedPosition = clampPosition(positionWithOrigin, extent, getNodeDimensions(node)); + node.internals.positionAbsolute = clampedPosition; + } + } +} +function parseHandles(userNode, internalNode) { + if (!userNode.handles) { + return !userNode.measured ? undefined : internalNode?.internals.handleBounds; + } + const source = []; + const target = []; + for (const handle of userNode.handles) { + const handleBounds = { + id: handle.id, + width: handle.width ?? 1, + height: handle.height ?? 1, + nodeId: userNode.id, + x: handle.x, + y: handle.y, + position: handle.position, + type: handle.type, + }; + if (handle.type === 'source') { + source.push(handleBounds); + } + else if (handle.type === 'target') { + target.push(handleBounds); + } + } + return { + source, + target, + }; +} +function isManualZIndexMode(zIndexMode) { + return zIndexMode === 'manual'; +} +function adoptUserNodes(nodes, nodeLookup, parentLookup, options = {}) { + const _options = mergeObjects(adoptUserNodesDefaultOptions, options); + const rootParentIndex = { i: 0 }; + const tmpLookup = new Map(nodeLookup); + const selectedNodeZ = _options?.elevateNodesOnSelect && !isManualZIndexMode(_options.zIndexMode) ? SELECTED_NODE_Z : 0; + let nodesInitialized = nodes.length > 0; + let hasSelectedNodes = false; + nodeLookup.clear(); + parentLookup.clear(); + for (const userNode of nodes) { + let internalNode = tmpLookup.get(userNode.id); + if (_options.checkEquality && userNode === internalNode?.internals.userNode) { + nodeLookup.set(userNode.id, internalNode); + } + else { + const positionWithOrigin = getNodePositionWithOrigin(userNode, _options.nodeOrigin); + const extent = isCoordinateExtent(userNode.extent) ? userNode.extent : _options.nodeExtent; + const clampedPosition = clampPosition(positionWithOrigin, extent, getNodeDimensions(userNode)); + internalNode = { + ..._options.defaults, + ...userNode, + measured: { + width: userNode.measured?.width, + height: userNode.measured?.height, + }, + internals: { + positionAbsolute: clampedPosition, + // if user re-initializes the node or removes `measured` for whatever reason, we reset the handleBounds so that the node gets re-measured + handleBounds: parseHandles(userNode, internalNode), + z: calculateZ(userNode, selectedNodeZ, _options.zIndexMode), + userNode, + }, + }; + nodeLookup.set(userNode.id, internalNode); + } + if ((internalNode.measured === undefined || + internalNode.measured.width === undefined || + internalNode.measured.height === undefined) && + !internalNode.hidden) { + nodesInitialized = false; + } + if (userNode.parentId) { + updateChildNode(internalNode, nodeLookup, parentLookup, options, rootParentIndex); + } + hasSelectedNodes ||= userNode.selected ?? false; + } + return { nodesInitialized, hasSelectedNodes }; +} +function updateParentLookup(node, parentLookup) { + if (!node.parentId) { + return; + } + const childNodes = parentLookup.get(node.parentId); + if (childNodes) { + childNodes.set(node.id, node); + } + else { + parentLookup.set(node.parentId, new Map([[node.id, node]])); + } +} +/** + * Updates positionAbsolute and zIndex of a child node and the parentLookup. + */ +function updateChildNode(node, nodeLookup, parentLookup, options, rootParentIndex) { + const { elevateNodesOnSelect, nodeOrigin, nodeExtent, zIndexMode } = mergeObjects(defaultOptions, options); + const parentId = node.parentId; + const parentNode = nodeLookup.get(parentId); + if (!parentNode) { + console.warn(`Parent node ${parentId} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`); + return; + } + updateParentLookup(node, parentLookup); + // We just want to set the rootParentIndex for the first child + if (rootParentIndex && + !parentNode.parentId && + parentNode.internals.rootParentIndex === undefined && + zIndexMode === 'auto') { + parentNode.internals.rootParentIndex = ++rootParentIndex.i; + parentNode.internals.z = parentNode.internals.z + rootParentIndex.i * ROOT_PARENT_Z_INCREMENT; + } + // But we need to update rootParentIndex.i also when parent has not been updated + if (rootParentIndex && parentNode.internals.rootParentIndex !== undefined) { + rootParentIndex.i = parentNode.internals.rootParentIndex; + } + const selectedNodeZ = elevateNodesOnSelect && !isManualZIndexMode(zIndexMode) ? SELECTED_NODE_Z : 0; + const { x, y, z } = calculateChildXYZ(node, parentNode, nodeOrigin, nodeExtent, selectedNodeZ, zIndexMode); + const { positionAbsolute } = node.internals; + const positionChanged = x !== positionAbsolute.x || y !== positionAbsolute.y; + if (positionChanged || z !== node.internals.z) { + // we create a new object to mark the node as updated + nodeLookup.set(node.id, { + ...node, + internals: { + ...node.internals, + positionAbsolute: positionChanged ? { x, y } : positionAbsolute, + z, + }, + }); + } +} +function calculateZ(node, selectedNodeZ, zIndexMode) { + const zIndex = isNumeric(node.zIndex) ? node.zIndex : 0; + if (isManualZIndexMode(zIndexMode)) { + return zIndex; + } + return zIndex + (node.selected ? selectedNodeZ : 0); +} +function calculateChildXYZ(childNode, parentNode, nodeOrigin, nodeExtent, selectedNodeZ, zIndexMode) { + const { x: parentX, y: parentY } = parentNode.internals.positionAbsolute; + const childDimensions = getNodeDimensions(childNode); + const positionWithOrigin = getNodePositionWithOrigin(childNode, nodeOrigin); + const clampedPosition = isCoordinateExtent(childNode.extent) + ? clampPosition(positionWithOrigin, childNode.extent, childDimensions) + : positionWithOrigin; + let absolutePosition = clampPosition({ x: parentX + clampedPosition.x, y: parentY + clampedPosition.y }, nodeExtent, childDimensions); + if (childNode.extent === 'parent') { + absolutePosition = clampPositionToParent(absolutePosition, childDimensions, parentNode); + } + const childZ = calculateZ(childNode, selectedNodeZ, zIndexMode); + const parentZ = parentNode.internals.z ?? 0; + return { + x: absolutePosition.x, + y: absolutePosition.y, + z: parentZ >= childZ ? parentZ + 1 : childZ, + }; +} +function handleExpandParent(children, nodeLookup, parentLookup, nodeOrigin = [0, 0]) { + const changes = []; + const parentExpansions = new Map(); + // determine the expanded rectangle the child nodes would take for each parent + for (const child of children) { + const parent = nodeLookup.get(child.parentId); + if (!parent) { + continue; + } + const parentRect = parentExpansions.get(child.parentId)?.expandedRect ?? nodeToRect(parent); + const expandedRect = getBoundsOfRects(parentRect, child.rect); + parentExpansions.set(child.parentId, { expandedRect, parent }); + } + if (parentExpansions.size > 0) { + parentExpansions.forEach(({ expandedRect, parent }, parentId) => { + // determine the position & dimensions of the parent + const positionAbsolute = parent.internals.positionAbsolute; + const dimensions = getNodeDimensions(parent); + const origin = parent.origin ?? nodeOrigin; + // determine how much the parent expands in width and position + const xChange = expandedRect.x < positionAbsolute.x ? Math.round(Math.abs(positionAbsolute.x - expandedRect.x)) : 0; + const yChange = expandedRect.y < positionAbsolute.y ? Math.round(Math.abs(positionAbsolute.y - expandedRect.y)) : 0; + const newWidth = Math.max(dimensions.width, Math.round(expandedRect.width)); + const newHeight = Math.max(dimensions.height, Math.round(expandedRect.height)); + const widthChange = (newWidth - dimensions.width) * origin[0]; + const heightChange = (newHeight - dimensions.height) * origin[1]; + // We need to correct the position of the parent node if the origin is not [0,0] + if (xChange > 0 || yChange > 0 || widthChange || heightChange) { + changes.push({ + id: parentId, + type: 'position', + position: { + x: parent.position.x - xChange + widthChange, + y: parent.position.y - yChange + heightChange, + }, + }); + /* + * We move all child nodes in the oppsite direction + * so the x,y changes of the parent do not move the children + */ + parentLookup.get(parentId)?.forEach((childNode) => { + if (!children.some((child) => child.id === childNode.id)) { + changes.push({ + id: childNode.id, + type: 'position', + position: { + x: childNode.position.x + xChange, + y: childNode.position.y + yChange, + }, + }); + } + }); + } + // We need to correct the dimensions of the parent node if the origin is not [0,0] + if (dimensions.width < expandedRect.width || dimensions.height < expandedRect.height || xChange || yChange) { + changes.push({ + id: parentId, + type: 'dimensions', + setAttributes: true, + dimensions: { + width: newWidth + (xChange ? origin[0] * xChange - widthChange : 0), + height: newHeight + (yChange ? origin[1] * yChange - heightChange : 0), + }, + }); + } + }); + } + return changes; +} +function updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOrigin, nodeExtent, zIndexMode) { + const viewportNode = domNode?.querySelector('.xyflow__viewport'); + let updatedInternals = false; + if (!viewportNode) { + return { changes: [], updatedInternals }; + } + const changes = []; + const style = window.getComputedStyle(viewportNode); + const { m22: zoom } = new window.DOMMatrixReadOnly(style.transform); + // in this array we collect nodes, that might trigger changes (like expanding parent) + const parentExpandChildren = []; + for (const update of updates.values()) { + const node = nodeLookup.get(update.id); + if (!node) { + continue; + } + if (node.hidden) { + nodeLookup.set(node.id, { + ...node, + internals: { + ...node.internals, + handleBounds: undefined, + }, + }); + updatedInternals = true; + continue; + } + const dimensions = getDimensions(update.nodeElement); + const dimensionChanged = node.measured.width !== dimensions.width || node.measured.height !== dimensions.height; + const doUpdate = !!(dimensions.width && + dimensions.height && + (dimensionChanged || !node.internals.handleBounds || update.force)); + if (doUpdate) { + const nodeBounds = update.nodeElement.getBoundingClientRect(); + const extent = isCoordinateExtent(node.extent) ? node.extent : nodeExtent; + let { positionAbsolute } = node.internals; + if (node.parentId && node.extent === 'parent') { + const parentNode = nodeLookup.get(node.parentId); + if (parentNode) { + positionAbsolute = clampPositionToParent(positionAbsolute, dimensions, parentNode); + } + } + else if (extent) { + positionAbsolute = clampPosition(positionAbsolute, extent, dimensions); + } + const newNode = { + ...node, + measured: dimensions, + internals: { + ...node.internals, + positionAbsolute, + handleBounds: { + source: getHandleBounds('source', update.nodeElement, nodeBounds, zoom, node.id), + target: getHandleBounds('target', update.nodeElement, nodeBounds, zoom, node.id), + }, + }, + }; + nodeLookup.set(node.id, newNode); + if (node.parentId) { + updateChildNode(newNode, nodeLookup, parentLookup, { nodeOrigin, zIndexMode }); + } + updatedInternals = true; + if (dimensionChanged) { + changes.push({ + id: node.id, + type: 'dimensions', + dimensions, + }); + if (node.expandParent && node.parentId) { + parentExpandChildren.push({ + id: node.id, + parentId: node.parentId, + rect: nodeToRect(newNode, nodeOrigin), + }); + } + } + } + } + if (parentExpandChildren.length > 0) { + const parentExpandChanges = handleExpandParent(parentExpandChildren, nodeLookup, parentLookup, nodeOrigin); + changes.push(...parentExpandChanges); + } + return { changes, updatedInternals }; +} +async function panBy({ delta, panZoom, transform, translateExtent, width, height, }) { + if (!panZoom || (!delta.x && !delta.y)) { + return false; + } + const nextViewport = await panZoom.setViewportConstrained({ + x: transform[0] + delta.x, + y: transform[1] + delta.y, + zoom: transform[2], + }, [ + [0, 0], + [width, height], + ], translateExtent); + const transformChanged = !!nextViewport && + (nextViewport.x !== transform[0] || nextViewport.y !== transform[1] || nextViewport.k !== transform[2]); + return transformChanged; +} +/** + * this function adds the connection to the connectionLookup + * at the following keys: nodeId-type-handleId, nodeId-type and nodeId + * @param type type of the connection + * @param connection connection that should be added to the lookup + * @param connectionKey at which key the connection should be added + * @param connectionLookup reference to the connection lookup + * @param nodeId nodeId of the connection + * @param handleId handleId of the connection + */ +function addConnectionToLookup(type, connection, connectionKey, connectionLookup, nodeId, handleId) { + /* + * We add the connection to the connectionLookup at the following keys + * 1. nodeId, 2. nodeId-type, 3. nodeId-type-handleId + * If the key already exists, we add the connection to the existing map + */ + let key = nodeId; + const nodeMap = connectionLookup.get(key) || new Map(); + connectionLookup.set(key, nodeMap.set(connectionKey, connection)); + key = `${nodeId}-${type}`; + const typeMap = connectionLookup.get(key) || new Map(); + connectionLookup.set(key, typeMap.set(connectionKey, connection)); + if (handleId) { + key = `${nodeId}-${type}-${handleId}`; + const handleMap = connectionLookup.get(key) || new Map(); + connectionLookup.set(key, handleMap.set(connectionKey, connection)); + } +} +function updateConnectionLookup(connectionLookup, edgeLookup, edges) { + connectionLookup.clear(); + edgeLookup.clear(); + for (const edge of edges) { + const { source: sourceNode, target: targetNode, sourceHandle = null, targetHandle = null } = edge; + const connection = { edgeId: edge.id, source: sourceNode, target: targetNode, sourceHandle, targetHandle }; + const sourceKey = `${sourceNode}-${sourceHandle}--${targetNode}-${targetHandle}`; + const targetKey = `${targetNode}-${targetHandle}--${sourceNode}-${sourceHandle}`; + addConnectionToLookup('source', connection, targetKey, connectionLookup, sourceNode, sourceHandle); + addConnectionToLookup('target', connection, sourceKey, connectionLookup, targetNode, targetHandle); + edgeLookup.set(edge.id, edge); + } +} + +function shallowNodeData(a, b) { + if (a === null || b === null) { + return false; + } + const _a = Array.isArray(a) ? a : [a]; + const _b = Array.isArray(b) ? b : [b]; + if (_a.length !== _b.length) { + return false; + } + for (let i = 0; i < _a.length; i++) { + if (_a[i].id !== _b[i].id || _a[i].type !== _b[i].type || !Object.is(_a[i].data, _b[i].data)) { + return false; + } + } + return true; +} + +function isParentSelected(node, nodeLookup) { + if (!node.parentId) { + return false; + } + const parentNode = nodeLookup.get(node.parentId); + if (!parentNode) { + return false; + } + if (parentNode.selected) { + return true; + } + return isParentSelected(parentNode, nodeLookup); +} +function hasSelector(target, selector, domNode) { + let current = target; + do { + if (current?.matches?.(selector)) + return true; + if (current === domNode) + return false; + current = current?.parentElement; + } while (current); + return false; +} +// looks for all selected nodes and created a NodeDragItem for each of them +function getDragItems(nodeLookup, nodesDraggable, mousePos, nodeId) { + const dragItems = new Map(); + for (const [id, node] of nodeLookup) { + if ((node.selected || node.id === nodeId) && + (!node.parentId || !isParentSelected(node, nodeLookup)) && + (node.draggable || (nodesDraggable && typeof node.draggable === 'undefined'))) { + const internalNode = nodeLookup.get(id); + if (internalNode) { + dragItems.set(id, { + id, + position: internalNode.position || { x: 0, y: 0 }, + distance: { + x: mousePos.x - internalNode.internals.positionAbsolute.x, + y: mousePos.y - internalNode.internals.positionAbsolute.y, + }, + extent: internalNode.extent, + parentId: internalNode.parentId, + origin: internalNode.origin, + expandParent: internalNode.expandParent, + internals: { + positionAbsolute: internalNode.internals.positionAbsolute || { x: 0, y: 0 }, + }, + measured: { + width: internalNode.measured.width ?? 0, + height: internalNode.measured.height ?? 0, + }, + }); + } + } + } + return dragItems; +} +/* + * returns two params: + * 1. the dragged node (or the first of the list, if we are dragging a node selection) + * 2. array of selected nodes (for multi selections) + */ +function getEventHandlerParams({ nodeId, dragItems, nodeLookup, dragging = true, }) { + const nodesFromDragItems = []; + for (const [id, dragItem] of dragItems) { + const node = nodeLookup.get(id)?.internals.userNode; + if (node) { + nodesFromDragItems.push({ + ...node, + position: dragItem.position, + dragging, + }); + } + } + if (!nodeId) { + return [nodesFromDragItems[0], nodesFromDragItems]; + } + const node = nodeLookup.get(nodeId)?.internals.userNode; + return [ + !node + ? nodesFromDragItems[0] + : { + ...node, + position: dragItems.get(nodeId)?.position || node.position, + dragging, + }, + nodesFromDragItems, + ]; +} +/** + * If a selection is being dragged we want to apply the same snap offset to all nodes in the selection. + * This function calculates the snap offset based on the first node in the selection. + */ +function calculateSnapOffset({ dragItems, snapGrid, x, y, }) { + const refDragItem = dragItems.values().next().value; + if (!refDragItem) { + return null; + } + const refPos = { + x: x - refDragItem.distance.x, + y: y - refDragItem.distance.y, + }; + const refPosSnapped = snapPosition(refPos, snapGrid); + return { + x: refPosSnapped.x - refPos.x, + y: refPosSnapped.y - refPos.y, + }; +} + +function XYDrag({ onNodeMouseDown, getStoreItems, onDragStart, onDrag, onDragStop, }) { + let lastPos = { x: null, y: null }; + let autoPanId = 0; + let dragItems = new Map(); + let autoPanStarted = false; + let mousePosition = { x: 0, y: 0 }; + let containerBounds = null; + let dragStarted = false; + let d3Selection = null; + let abortDrag = false; // prevents unintentional dragging on multitouch + let nodePositionsChanged = false; + // we store the last drag event to be able to use it in the update function + let dragEvent = null; + // public functions + function update({ noDragClassName, handleSelector, domNode, isSelectable, nodeId, nodeClickDistance = 0, }) { + d3Selection = select(domNode); + function updateNodes({ x, y }) { + const { nodeLookup, nodeExtent, snapGrid, snapToGrid, nodeOrigin, onNodeDrag, onSelectionDrag, onError, updateNodePositions, } = getStoreItems(); + lastPos = { x, y }; + let hasChange = false; + const isMultiDrag = dragItems.size > 1; + const nodesBox = isMultiDrag && nodeExtent ? rectToBox(getInternalNodesBounds(dragItems)) : null; + const multiDragSnapOffset = isMultiDrag && snapToGrid + ? calculateSnapOffset({ + dragItems, + snapGrid, + x, + y, + }) + : null; + for (const [id, dragItem] of dragItems) { + /* + * if the node is not in the nodeLookup anymore, it was probably deleted while dragging + */ + if (!nodeLookup.has(id)) { + continue; + } + let nextPosition = { x: x - dragItem.distance.x, y: y - dragItem.distance.y }; + if (snapToGrid) { + nextPosition = multiDragSnapOffset + ? { + x: Math.round(nextPosition.x + multiDragSnapOffset.x), + y: Math.round(nextPosition.y + multiDragSnapOffset.y), + } + : snapPosition(nextPosition, snapGrid); + } + let adjustedNodeExtent = null; + if (isMultiDrag && nodeExtent && !dragItem.extent && nodesBox) { + const { positionAbsolute } = dragItem.internals; + const x1 = positionAbsolute.x - nodesBox.x + nodeExtent[0][0]; + const x2 = positionAbsolute.x + dragItem.measured.width - nodesBox.x2 + nodeExtent[1][0]; + const y1 = positionAbsolute.y - nodesBox.y + nodeExtent[0][1]; + const y2 = positionAbsolute.y + dragItem.measured.height - nodesBox.y2 + nodeExtent[1][1]; + adjustedNodeExtent = [ + [x1, y1], + [x2, y2], + ]; + } + const { position, positionAbsolute } = calculateNodePosition({ + nodeId: id, + nextPosition, + nodeLookup, + nodeExtent: adjustedNodeExtent ? adjustedNodeExtent : nodeExtent, + nodeOrigin, + onError, + }); + // we want to make sure that we only fire a change event when there is a change + hasChange = hasChange || dragItem.position.x !== position.x || dragItem.position.y !== position.y; + dragItem.position = position; + dragItem.internals.positionAbsolute = positionAbsolute; + } + nodePositionsChanged = nodePositionsChanged || hasChange; + if (!hasChange) { + return; + } + updateNodePositions(dragItems, true); + if (dragEvent && (onDrag || onNodeDrag || (!nodeId && onSelectionDrag))) { + const [currentNode, currentNodes] = getEventHandlerParams({ + nodeId, + dragItems, + nodeLookup, + }); + onDrag?.(dragEvent, dragItems, currentNode, currentNodes); + onNodeDrag?.(dragEvent, currentNode, currentNodes); + if (!nodeId) { + onSelectionDrag?.(dragEvent, currentNodes); + } + } + } + async function autoPan() { + if (!containerBounds) { + return; + } + const { transform, panBy, autoPanSpeed, autoPanOnNodeDrag } = getStoreItems(); + if (!autoPanOnNodeDrag) { + autoPanStarted = false; + cancelAnimationFrame(autoPanId); + return; + } + const [xMovement, yMovement] = calcAutoPan(mousePosition, containerBounds, autoPanSpeed); + if (xMovement !== 0 || yMovement !== 0) { + lastPos.x = (lastPos.x ?? 0) - xMovement / transform[2]; + lastPos.y = (lastPos.y ?? 0) - yMovement / transform[2]; + if (await panBy({ x: xMovement, y: yMovement })) { + updateNodes(lastPos); + } + } + autoPanId = requestAnimationFrame(autoPan); + } + function startDrag(event) { + const { nodeLookup, multiSelectionActive, nodesDraggable, transform, snapGrid, snapToGrid, selectNodesOnDrag, onNodeDragStart, onSelectionDragStart, unselectNodesAndEdges, } = getStoreItems(); + dragStarted = true; + if ((!selectNodesOnDrag || !isSelectable) && !multiSelectionActive && nodeId) { + if (!nodeLookup.get(nodeId)?.selected) { + // we need to reset selected nodes when selectNodesOnDrag=false + unselectNodesAndEdges(); + } + } + if (isSelectable && selectNodesOnDrag && nodeId) { + onNodeMouseDown?.(nodeId); + } + const pointerPos = getPointerPosition(event.sourceEvent, { transform, snapGrid, snapToGrid, containerBounds }); + lastPos = pointerPos; + dragItems = getDragItems(nodeLookup, nodesDraggable, pointerPos, nodeId); + if (dragItems.size > 0 && (onDragStart || onNodeDragStart || (!nodeId && onSelectionDragStart))) { + const [currentNode, currentNodes] = getEventHandlerParams({ + nodeId, + dragItems, + nodeLookup, + }); + onDragStart?.(event.sourceEvent, dragItems, currentNode, currentNodes); + onNodeDragStart?.(event.sourceEvent, currentNode, currentNodes); + if (!nodeId) { + onSelectionDragStart?.(event.sourceEvent, currentNodes); + } + } + } + const d3DragInstance = drag() + .clickDistance(nodeClickDistance) + .on('start', (event) => { + const { domNode, nodeDragThreshold, transform, snapGrid, snapToGrid } = getStoreItems(); + containerBounds = domNode?.getBoundingClientRect() || null; + abortDrag = false; + nodePositionsChanged = false; + dragEvent = event.sourceEvent; + if (nodeDragThreshold === 0) { + startDrag(event); + } + const pointerPos = getPointerPosition(event.sourceEvent, { transform, snapGrid, snapToGrid, containerBounds }); + lastPos = pointerPos; + mousePosition = getEventPosition(event.sourceEvent, containerBounds); + }) + .on('drag', (event) => { + const { autoPanOnNodeDrag, transform, snapGrid, snapToGrid, nodeDragThreshold, nodeLookup } = getStoreItems(); + const pointerPos = getPointerPosition(event.sourceEvent, { transform, snapGrid, snapToGrid, containerBounds }); + dragEvent = event.sourceEvent; + if ((event.sourceEvent.type === 'touchmove' && event.sourceEvent.touches.length > 1) || + // if user deletes a node while dragging, we need to abort the drag to prevent errors + (nodeId && !nodeLookup.has(nodeId))) { + abortDrag = true; + } + if (abortDrag) { + return; + } + if (!autoPanStarted && autoPanOnNodeDrag && dragStarted) { + autoPanStarted = true; + autoPan(); + } + if (!dragStarted) { + // Calculate distance in client coordinates for consistent drag threshold behavior across zoom levels + const currentMousePosition = getEventPosition(event.sourceEvent, containerBounds); + const x = currentMousePosition.x - mousePosition.x; + const y = currentMousePosition.y - mousePosition.y; + const distance = Math.sqrt(x * x + y * y); + if (distance > nodeDragThreshold) { + startDrag(event); + } + } + // skip events without movement + if ((lastPos.x !== pointerPos.xSnapped || lastPos.y !== pointerPos.ySnapped) && dragItems && dragStarted) { + mousePosition = getEventPosition(event.sourceEvent, containerBounds); + updateNodes(pointerPos); + } + }) + .on('end', (event) => { + if (!dragStarted || abortDrag) { + if (abortDrag && dragItems.size > 0) { + getStoreItems().updateNodePositions(dragItems, false); + } + return; + } + autoPanStarted = false; + dragStarted = false; + cancelAnimationFrame(autoPanId); + if (dragItems.size > 0) { + const { nodeLookup, updateNodePositions, onNodeDragStop, onSelectionDragStop } = getStoreItems(); + if (nodePositionsChanged) { + updateNodePositions(dragItems, false); + nodePositionsChanged = false; + } + if (onDragStop || onNodeDragStop || (!nodeId && onSelectionDragStop)) { + const [currentNode, currentNodes] = getEventHandlerParams({ + nodeId, + dragItems, + nodeLookup, + dragging: false, + }); + onDragStop?.(event.sourceEvent, dragItems, currentNode, currentNodes); + onNodeDragStop?.(event.sourceEvent, currentNode, currentNodes); + if (!nodeId) { + onSelectionDragStop?.(event.sourceEvent, currentNodes); + } + } + } + }) + .filter((event) => { + const target = event.target; + const isDraggable = !event.button && + (!noDragClassName || !hasSelector(target, `.${noDragClassName}`, domNode)) && + (!handleSelector || hasSelector(target, handleSelector, domNode)); + return isDraggable; + }); + d3Selection.call(d3DragInstance); + } + function destroy() { + d3Selection?.on('.drag', null); + } + return { + update, + destroy, + }; +} + +function getNodesWithinDistance(position, nodeLookup, distance) { + const nodes = []; + const rect = { + x: position.x - distance, + y: position.y - distance, + width: distance * 2, + height: distance * 2, + }; + for (const node of nodeLookup.values()) { + if (getOverlappingArea(rect, nodeToRect(node)) > 0) { + nodes.push(node); + } + } + return nodes; +} +/* + * this distance is used for the area around the user pointer + * while doing a connection for finding the closest nodes + */ +const ADDITIONAL_DISTANCE = 250; +function getClosestHandle(position, connectionRadius, nodeLookup, fromHandle) { + let closestHandles = []; + let minDistance = Infinity; + const closeNodes = getNodesWithinDistance(position, nodeLookup, connectionRadius + ADDITIONAL_DISTANCE); + for (const node of closeNodes) { + const allHandles = [...(node.internals.handleBounds?.source ?? []), ...(node.internals.handleBounds?.target ?? [])]; + for (const handle of allHandles) { + // if the handle is the same as the fromHandle we skip it + if (fromHandle.nodeId === handle.nodeId && fromHandle.type === handle.type && fromHandle.id === handle.id) { + continue; + } + // determine absolute position of the handle + const { x, y } = getHandlePosition(node, handle, handle.position, true); + const distance = Math.sqrt(Math.pow(x - position.x, 2) + Math.pow(y - position.y, 2)); + if (distance > connectionRadius) { + continue; + } + if (distance < minDistance) { + closestHandles = [{ ...handle, x, y }]; + minDistance = distance; + } + else if (distance === minDistance) { + // when multiple handles are on the same distance we collect all of them + closestHandles.push({ ...handle, x, y }); + } + } + } + if (!closestHandles.length) { + return null; + } + // when multiple handles overlay each other we prefer the opposite handle + if (closestHandles.length > 1) { + const oppositeHandleType = fromHandle.type === 'source' ? 'target' : 'source'; + return closestHandles.find((handle) => handle.type === oppositeHandleType) ?? closestHandles[0]; + } + return closestHandles[0]; +} +function getHandle(nodeId, handleType, handleId, nodeLookup, connectionMode, withAbsolutePosition = false) { + const node = nodeLookup.get(nodeId); + if (!node) { + return null; + } + const handles = connectionMode === 'strict' + ? node.internals.handleBounds?.[handleType] + : [...(node.internals.handleBounds?.source ?? []), ...(node.internals.handleBounds?.target ?? [])]; + const handle = (handleId ? handles?.find((h) => h.id === handleId) : handles?.[0]) ?? null; + return handle && withAbsolutePosition + ? { ...handle, ...getHandlePosition(node, handle, handle.position, true) } + : handle; +} +function getHandleType(edgeUpdaterType, handleDomNode) { + if (edgeUpdaterType) { + return edgeUpdaterType; + } + else if (handleDomNode?.classList.contains('target')) { + return 'target'; + } + else if (handleDomNode?.classList.contains('source')) { + return 'source'; + } + return null; +} +function isConnectionValid(isInsideConnectionRadius, isHandleValid) { + let isValid = null; + if (isHandleValid) { + isValid = true; + } + else if (isInsideConnectionRadius && !isHandleValid) { + isValid = false; + } + return isValid; +} + +const alwaysValid = () => true; +function onPointerDown(event, { connectionMode, connectionRadius, handleId, nodeId, edgeUpdaterType, isTarget, domNode, nodeLookup, lib, autoPanOnConnect, flowId, panBy, cancelConnection, onConnectStart, onConnect, onConnectEnd, isValidConnection = alwaysValid, onReconnectEnd, updateConnection, getTransform, getFromHandle, autoPanSpeed, dragThreshold = 1, handleDomNode, }) { + // when xyflow is used inside a shadow root we can't use document + const doc = getHostForElement(event.target); + let autoPanId = 0; + let closestHandle; + const { x, y } = getEventPosition(event); + const handleType = getHandleType(edgeUpdaterType, handleDomNode); + const containerBounds = domNode?.getBoundingClientRect(); + let connectionStarted = false; + if (!containerBounds || !handleType) { + return; + } + const fromHandleInternal = getHandle(nodeId, handleType, handleId, nodeLookup, connectionMode); + if (!fromHandleInternal) { + return; + } + let position = getEventPosition(event, containerBounds); + let autoPanStarted = false; + let connection = null; + let isValid = false; + let resultHandleDomNode = null; + // when the user is moving the mouse close to the edge of the canvas while connecting we move the canvas + function autoPan() { + if (!autoPanOnConnect || !containerBounds) { + return; + } + const [x, y] = calcAutoPan(position, containerBounds, autoPanSpeed); + panBy({ x, y }); + autoPanId = requestAnimationFrame(autoPan); + } + // Stays the same for all consecutive pointermove events + const fromHandle = { + ...fromHandleInternal, + nodeId, + type: handleType, + position: fromHandleInternal.position, + }; + const fromInternalNode = nodeLookup.get(nodeId); + const from = getHandlePosition(fromInternalNode, fromHandle, Position.Left, true); + let previousConnection = { + inProgress: true, + isValid: null, + from, + fromHandle, + fromPosition: fromHandle.position, + fromNode: fromInternalNode, + to: position, + toHandle: null, + toPosition: oppositePosition[fromHandle.position], + toNode: null, + pointer: position, + }; + function startConnection() { + connectionStarted = true; + updateConnection(previousConnection); + onConnectStart?.(event, { nodeId, handleId, handleType }); + } + if (dragThreshold === 0) { + startConnection(); + } + function onPointerMove(event) { + if (!connectionStarted) { + const { x: evtX, y: evtY } = getEventPosition(event); + const dx = evtX - x; + const dy = evtY - y; + const nextConnectionStarted = dx * dx + dy * dy > dragThreshold * dragThreshold; + if (!nextConnectionStarted) { + return; + } + startConnection(); + } + if (!getFromHandle() || !fromHandle) { + onPointerUp(event); + return; + } + const transform = getTransform(); + position = getEventPosition(event, containerBounds); + closestHandle = getClosestHandle(pointToRendererPoint(position, transform, false, [1, 1]), connectionRadius, nodeLookup, fromHandle); + if (!autoPanStarted) { + autoPan(); + autoPanStarted = true; + } + const result = isValidHandle(event, { + handle: closestHandle, + connectionMode, + fromNodeId: nodeId, + fromHandleId: handleId, + fromType: isTarget ? 'target' : 'source', + isValidConnection, + doc, + lib, + flowId, + nodeLookup, + }); + resultHandleDomNode = result.handleDomNode; + connection = result.connection; + isValid = isConnectionValid(!!closestHandle, result.isValid); + const fromInternalNode = nodeLookup.get(nodeId); + const from = fromInternalNode + ? getHandlePosition(fromInternalNode, fromHandle, Position.Left, true) + : previousConnection.from; + const newConnection = { + ...previousConnection, + from, + isValid, + to: result.toHandle && isValid + ? rendererPointToPoint({ x: result.toHandle.x, y: result.toHandle.y }, transform) + : position, + toHandle: result.toHandle, + toPosition: isValid && result.toHandle ? result.toHandle.position : oppositePosition[fromHandle.position], + toNode: result.toHandle ? nodeLookup.get(result.toHandle.nodeId) : null, + pointer: position, + }; + updateConnection(newConnection); + previousConnection = newConnection; + } + function onPointerUp(event) { + // Prevent multi-touch aborting connection + if ('touches' in event && event.touches.length > 0) { + return; + } + if (connectionStarted) { + if ((closestHandle || resultHandleDomNode) && connection && isValid) { + onConnect?.(connection); + } + /* + * it's important to get a fresh reference from the store here + * in order to get the latest state of onConnectEnd + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { inProgress, ...connectionState } = previousConnection; + const finalConnectionState = { + ...connectionState, + toPosition: previousConnection.toHandle ? previousConnection.toPosition : null, + }; + onConnectEnd?.(event, finalConnectionState); + if (edgeUpdaterType) { + onReconnectEnd?.(event, finalConnectionState); + } + } + cancelConnection(); + cancelAnimationFrame(autoPanId); + autoPanStarted = false; + isValid = false; + connection = null; + resultHandleDomNode = null; + doc.removeEventListener('mousemove', onPointerMove); + doc.removeEventListener('mouseup', onPointerUp); + doc.removeEventListener('touchmove', onPointerMove); + doc.removeEventListener('touchend', onPointerUp); + } + doc.addEventListener('mousemove', onPointerMove); + doc.addEventListener('mouseup', onPointerUp); + doc.addEventListener('touchmove', onPointerMove); + doc.addEventListener('touchend', onPointerUp); +} +// checks if and returns connection in form of an object { source: 123, target: 312 } +function isValidHandle(event, { handle, connectionMode, fromNodeId, fromHandleId, fromType, doc, lib, flowId, isValidConnection = alwaysValid, nodeLookup, }) { + const isTarget = fromType === 'target'; + const handleDomNode = handle + ? doc.querySelector(`.${lib}-flow__handle[data-id="${flowId}-${handle?.nodeId}-${handle?.id}-${handle?.type}"]`) + : null; + const { x, y } = getEventPosition(event); + const handleBelow = doc.elementFromPoint(x, y); + /* + * we always want to prioritize the handle below the mouse cursor over the closest distance handle, + * because it could be that the center of another handle is closer to the mouse pointer than the handle below the cursor + */ + const handleToCheck = handleBelow?.classList.contains(`${lib}-flow__handle`) ? handleBelow : handleDomNode; + const result = { + handleDomNode: handleToCheck, + isValid: false, + connection: null, + toHandle: null, + }; + if (handleToCheck) { + const handleType = getHandleType(undefined, handleToCheck); + const handleNodeId = handleToCheck.getAttribute('data-nodeid'); + const handleId = handleToCheck.getAttribute('data-handleid'); + const connectable = handleToCheck.classList.contains('connectable'); + const connectableEnd = handleToCheck.classList.contains('connectableend'); + if (!handleNodeId || !handleType) { + return result; + } + const connection = { + source: isTarget ? handleNodeId : fromNodeId, + sourceHandle: isTarget ? handleId : fromHandleId, + target: isTarget ? fromNodeId : handleNodeId, + targetHandle: isTarget ? fromHandleId : handleId, + }; + result.connection = connection; + const isConnectable = connectable && connectableEnd; + // in strict mode we don't allow target to target or source to source connections + const isValid = isConnectable && + (connectionMode === ConnectionMode.Strict + ? (isTarget && handleType === 'source') || (!isTarget && handleType === 'target') + : handleNodeId !== fromNodeId || handleId !== fromHandleId); + result.isValid = isValid && isValidConnection(connection); + result.toHandle = getHandle(handleNodeId, handleType, handleId, nodeLookup, connectionMode, true); + } + return result; +} +const XYHandle = { + onPointerDown, + isValid: isValidHandle, +}; + +function XYMinimap({ domNode, panZoom, getTransform, getViewScale }) { + const selection = select(domNode); + function update({ translateExtent, width, height, zoomStep = 1, pannable = true, zoomable = true, inversePan = false, }) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const zoomHandler = (event) => { + if (event.sourceEvent.type !== 'wheel' || !panZoom) { + return; + } + const transform = getTransform(); + const factor = event.sourceEvent.ctrlKey && isMacOs() ? 10 : 1; + const pinchDelta = -event.sourceEvent.deltaY * + (event.sourceEvent.deltaMode === 1 ? 0.05 : event.sourceEvent.deltaMode ? 1 : 0.002) * + zoomStep; + const nextZoom = transform[2] * Math.pow(2, pinchDelta * factor); + panZoom.scaleTo(nextZoom); + }; + let panStart = [0, 0]; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const panStartHandler = (event) => { + if (event.sourceEvent.type === 'mousedown' || event.sourceEvent.type === 'touchstart') { + panStart = [ + event.sourceEvent.clientX ?? event.sourceEvent.touches[0].clientX, + event.sourceEvent.clientY ?? event.sourceEvent.touches[0].clientY, + ]; + } + }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const panHandler = (event) => { + const transform = getTransform(); + if ((event.sourceEvent.type !== 'mousemove' && event.sourceEvent.type !== 'touchmove') || !panZoom) { + return; + } + const panCurrent = [ + event.sourceEvent.clientX ?? event.sourceEvent.touches[0].clientX, + event.sourceEvent.clientY ?? event.sourceEvent.touches[0].clientY, + ]; + const panDelta = [panCurrent[0] - panStart[0], panCurrent[1] - panStart[1]]; + panStart = panCurrent; + const moveScale = getViewScale() * Math.max(transform[2], Math.log(transform[2])) * (inversePan ? -1 : 1); + const position = { + x: transform[0] - panDelta[0] * moveScale, + y: transform[1] - panDelta[1] * moveScale, + }; + const extent = [ + [0, 0], + [width, height], + ]; + panZoom.setViewportConstrained({ + x: position.x, + y: position.y, + zoom: transform[2], + }, extent, translateExtent); + }; + const zoomAndPanHandler = zoom() + .on('start', panStartHandler) + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + .on('zoom', pannable ? panHandler : null) + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + .on('zoom.wheel', zoomable ? zoomHandler : null); + selection.call(zoomAndPanHandler, {}); + } + function destroy() { + selection.on('zoom', null); + } + return { + update, + destroy, + pointer, + }; +} + +/* eslint-disable @typescript-eslint/no-explicit-any */ +const transformToViewport = (transform) => ({ + x: transform.x, + y: transform.y, + zoom: transform.k, +}); +const viewportToTransform = ({ x, y, zoom }) => zoomIdentity.translate(x, y).scale(zoom); +const isWrappedWithClass = (event, className) => event.target.closest(`.${className}`); +const isRightClickPan = (panOnDrag, usedButton) => usedButton === 2 && Array.isArray(panOnDrag) && panOnDrag.includes(2); +// taken from d3-ease: https://github.com/d3/d3-ease/blob/main/src/cubic.js +const defaultEase = (t) => ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2; +const getD3Transition = (selection, duration = 0, ease = defaultEase, onEnd = () => { }) => { + const hasDuration = typeof duration === 'number' && duration > 0; + if (!hasDuration) { + onEnd(); + } + return hasDuration ? selection.transition().duration(duration).ease(ease).on('end', onEnd) : selection; +}; +const wheelDelta = (event) => { + const factor = event.ctrlKey && isMacOs() ? 10 : 1; + return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * factor; +}; + +function createPanOnScrollHandler({ zoomPanValues, noWheelClassName, d3Selection, d3Zoom, panOnScrollMode, panOnScrollSpeed, zoomOnPinch, onPanZoomStart, onPanZoom, onPanZoomEnd, }) { + return (event) => { + if (isWrappedWithClass(event, noWheelClassName)) { + if (event.ctrlKey) { + event.preventDefault(); // stop native page zoom for pinch zooming + } + return false; + } + event.preventDefault(); + event.stopImmediatePropagation(); + const currentZoom = d3Selection.property('__zoom').k || 1; + // macos sets ctrlKey=true for pinch gesture on a trackpad + if (event.ctrlKey && zoomOnPinch) { + const point = pointer(event); + const pinchDelta = wheelDelta(event); + const zoom = currentZoom * Math.pow(2, pinchDelta); + // @ts-ignore + d3Zoom.scaleTo(d3Selection, zoom, point, event); + return; + } + /* + * increase scroll speed in firefox + * firefox: deltaMode === 1; chrome: deltaMode === 0 + */ + const deltaNormalize = event.deltaMode === 1 ? 20 : 1; + let deltaX = panOnScrollMode === PanOnScrollMode.Vertical ? 0 : event.deltaX * deltaNormalize; + let deltaY = panOnScrollMode === PanOnScrollMode.Horizontal ? 0 : event.deltaY * deltaNormalize; + // this enables vertical scrolling with shift + scroll on windows + if (!isMacOs() && event.shiftKey && panOnScrollMode !== PanOnScrollMode.Vertical) { + deltaX = event.deltaY * deltaNormalize; + deltaY = 0; + } + d3Zoom.translateBy(d3Selection, -(deltaX / currentZoom) * panOnScrollSpeed, -(deltaY / currentZoom) * panOnScrollSpeed, + // @ts-ignore + { internal: true }); + const nextViewport = transformToViewport(d3Selection.property('__zoom')); + clearTimeout(zoomPanValues.panScrollTimeout); + /* + * for pan on scroll we need to handle the event calls on our own + * we can't use the start, zoom and end events from d3-zoom + * because start and move gets called on every scroll event and not once at the beginning + */ + if (!zoomPanValues.isPanScrolling) { + zoomPanValues.isPanScrolling = true; + onPanZoomStart?.(event, nextViewport); + } + else { + onPanZoom?.(event, nextViewport); + } + zoomPanValues.panScrollTimeout = setTimeout(() => { + onPanZoomEnd?.(event, nextViewport); + zoomPanValues.isPanScrolling = false; + }, 150); + }; +} +function createZoomOnScrollHandler({ noWheelClassName, preventScrolling, d3ZoomHandler }) { + return function (event, d) { + const isWheel = event.type === 'wheel'; + // we still want to enable pinch zooming even if preventScrolling is set to false + const preventZoom = !preventScrolling && isWheel && !event.ctrlKey; + const hasNoWheelClass = isWrappedWithClass(event, noWheelClassName); + // if user is pinch zooming above a nowheel element, we don't want the browser to zoom + if (event.ctrlKey && isWheel && hasNoWheelClass) { + event.preventDefault(); + } + if (preventZoom || hasNoWheelClass) { + return null; + } + event.preventDefault(); + d3ZoomHandler.call(this, event, d); + }; +} +function createPanZoomStartHandler({ zoomPanValues, onDraggingChange, onPanZoomStart }) { + return (event) => { + if (event.sourceEvent?.internal) { + return; + } + const viewport = transformToViewport(event.transform); + // we need to remember it here, because it's always 0 in the "zoom" event + zoomPanValues.mouseButton = event.sourceEvent?.button || 0; + zoomPanValues.isZoomingOrPanning = true; + zoomPanValues.prevViewport = viewport; + if (event.sourceEvent?.type === 'mousedown') { + onDraggingChange(true); + } + if (onPanZoomStart) { + onPanZoomStart?.(event.sourceEvent, viewport); + } + }; +} +function createPanZoomHandler({ zoomPanValues, panOnDrag, onPaneContextMenu, onTransformChange, onPanZoom, }) { + return (event) => { + zoomPanValues.usedRightMouseButton = !!(onPaneContextMenu && isRightClickPan(panOnDrag, zoomPanValues.mouseButton ?? 0)); + if (!event.sourceEvent?.sync) { + onTransformChange([event.transform.x, event.transform.y, event.transform.k]); + } + if (onPanZoom && !event.sourceEvent?.internal) { + onPanZoom?.(event.sourceEvent, transformToViewport(event.transform)); + } + }; +} +function createPanZoomEndHandler({ zoomPanValues, panOnDrag, panOnScroll, onDraggingChange, onPanZoomEnd, onPaneContextMenu, }) { + return (event) => { + if (event.sourceEvent?.internal) { + return; + } + zoomPanValues.isZoomingOrPanning = false; + if (onPaneContextMenu && + isRightClickPan(panOnDrag, zoomPanValues.mouseButton ?? 0) && + !zoomPanValues.usedRightMouseButton && + event.sourceEvent) { + onPaneContextMenu(event.sourceEvent); + } + zoomPanValues.usedRightMouseButton = false; + onDraggingChange(false); + if (onPanZoomEnd) { + const viewport = transformToViewport(event.transform); + zoomPanValues.prevViewport = viewport; + clearTimeout(zoomPanValues.timerId); + zoomPanValues.timerId = setTimeout(() => { + onPanZoomEnd?.(event.sourceEvent, viewport); + }, + // we need a setTimeout for panOnScroll to suppress multiple end events fired during scroll + panOnScroll ? 150 : 0); + } + }; +} + +/* eslint-disable @typescript-eslint/no-explicit-any */ +function createFilter({ zoomActivationKeyPressed, zoomOnScroll, zoomOnPinch, panOnDrag, panOnScroll, zoomOnDoubleClick, userSelectionActive, noWheelClassName, noPanClassName, lib, connectionInProgress, }) { + return (event) => { + const zoomScroll = zoomActivationKeyPressed || zoomOnScroll; + const pinchZoom = zoomOnPinch && event.ctrlKey; + const isWheelEvent = event.type === 'wheel'; + if (event.button === 1 && + event.type === 'mousedown' && + (isWrappedWithClass(event, `${lib}-flow__node`) || isWrappedWithClass(event, `${lib}-flow__edge`))) { + return true; + } + // if all interactions are disabled, we prevent all zoom events + if (!panOnDrag && !zoomScroll && !panOnScroll && !zoomOnDoubleClick && !zoomOnPinch) { + return false; + } + // during a selection we prevent all other interactions + if (userSelectionActive) { + return false; + } + // we want to disable pinch-zooming while making a connection + if (connectionInProgress && !isWheelEvent) { + return false; + } + // if the target element is inside an element with the nowheel class, we prevent zooming + if (isWrappedWithClass(event, noWheelClassName) && isWheelEvent) { + return false; + } + // if the target element is inside an element with the nopan class, we prevent panning + if (isWrappedWithClass(event, noPanClassName) && + (!isWheelEvent || (panOnScroll && isWheelEvent && !zoomActivationKeyPressed))) { + return false; + } + if (!zoomOnPinch && event.ctrlKey && isWheelEvent) { + return false; + } + if (!zoomOnPinch && event.type === 'touchstart' && event.touches?.length > 1) { + event.preventDefault(); // if you manage to start with 2 touches, we prevent native zoom + return false; + } + // when there is no scroll handling enabled, we prevent all wheel events + if (!zoomScroll && !panOnScroll && !pinchZoom && isWheelEvent) { + return false; + } + // if the pane is not movable, we prevent dragging it with mousestart or touchstart + if (!panOnDrag && (event.type === 'mousedown' || event.type === 'touchstart')) { + return false; + } + // if the pane is only movable using allowed clicks + if (Array.isArray(panOnDrag) && !panOnDrag.includes(event.button) && event.type === 'mousedown') { + return false; + } + // We only allow right clicks if pan on drag is set to right click + const buttonAllowed = (Array.isArray(panOnDrag) && panOnDrag.includes(event.button)) || !event.button || event.button <= 1; + // default filter for d3-zoom + return (!event.ctrlKey || isWheelEvent) && buttonAllowed; + }; +} + +function XYPanZoom({ domNode, minZoom, maxZoom, translateExtent, viewport, onPanZoom, onPanZoomStart, onPanZoomEnd, onDraggingChange, }) { + const zoomPanValues = { + isZoomingOrPanning: false, + usedRightMouseButton: false, + prevViewport: { }, + mouseButton: 0, + timerId: undefined, + panScrollTimeout: undefined, + isPanScrolling: false, + }; + const bbox = domNode.getBoundingClientRect(); + /* + * Cache the pane extent and refresh it from a ResizeObserver. Otherwise d3-zoom falls back to its + * defaultExtent, which reads clientWidth/clientHeight and forces a synchronous layout while panning + * and pinching. The observer is never disconnected on purpose: destroy() also runs to pause zooming + * during a user selection, so disconnecting there would leave the cache stale. It becomes unreachable + * and is garbage collected with the pane on unmount. + */ + let cachedExtent = [ + [0, 0], + [bbox.width, bbox.height], + ]; + const extentResizeObserver = typeof ResizeObserver !== 'undefined' + ? new ResizeObserver((entries) => { + const entry = entries[0]; + if (entry) { + cachedExtent = [ + [0, 0], + [entry.contentRect.width, entry.contentRect.height], + ]; + } + }) + : null; + extentResizeObserver?.observe(domNode); + const d3ZoomInstance = zoom() + .extent(() => cachedExtent) + .scaleExtent([minZoom, maxZoom]) + .translateExtent(translateExtent); + const d3Selection = select(domNode).call(d3ZoomInstance); + setViewportConstrained({ + x: viewport.x, + y: viewport.y, + zoom: clamp(viewport.zoom, minZoom, maxZoom), + }, [ + [0, 0], + [bbox.width, bbox.height], + ], translateExtent); + const d3ZoomHandler = d3Selection.on('wheel.zoom'); + const d3DblClickZoomHandler = d3Selection.on('dblclick.zoom'); + d3ZoomInstance.wheelDelta(wheelDelta); + async function setTransform(transform, options) { + if (d3Selection) { + return new Promise((resolve) => { + d3ZoomInstance?.interpolate(options?.interpolate === 'linear' ? interpolate : interpolateZoom).transform(getD3Transition(d3Selection, options?.duration, options?.ease, () => resolve(true)), transform); + }); + } + return false; + } + // public functions + function update({ noWheelClassName, noPanClassName, onPaneContextMenu, userSelectionActive, panOnScroll, panOnDrag, panOnScrollMode, panOnScrollSpeed, preventScrolling, zoomOnPinch, zoomOnScroll, zoomOnDoubleClick, zoomActivationKeyPressed, lib, onTransformChange, connectionInProgress, paneClickDistance, selectionOnDrag, }) { + if (userSelectionActive && !zoomPanValues.isZoomingOrPanning) { + destroy(); + } + const isPanOnScroll = panOnScroll && !zoomActivationKeyPressed && !userSelectionActive; + d3ZoomInstance.clickDistance(selectionOnDrag ? Infinity : !isNumeric(paneClickDistance) || paneClickDistance < 0 ? 0 : paneClickDistance); + const wheelHandler = isPanOnScroll + ? createPanOnScrollHandler({ + zoomPanValues, + noWheelClassName, + d3Selection, + d3Zoom: d3ZoomInstance, + panOnScrollMode, + panOnScrollSpeed, + zoomOnPinch, + onPanZoomStart, + onPanZoom, + onPanZoomEnd, + }) + : createZoomOnScrollHandler({ + noWheelClassName, + preventScrolling, + d3ZoomHandler, + }); + d3Selection.on('wheel.zoom', wheelHandler, { passive: false }); + // pan zoom start + const startHandler = createPanZoomStartHandler({ + zoomPanValues, + onDraggingChange, + onPanZoomStart, + }); + d3ZoomInstance.on('start', startHandler); + // pan zoom + const panZoomHandler = createPanZoomHandler({ + zoomPanValues, + panOnDrag, + onPaneContextMenu: !!onPaneContextMenu, + onPanZoom, + onTransformChange, + }); + d3ZoomInstance.on('zoom', panZoomHandler); + // pan zoom end + const panZoomEndHandler = createPanZoomEndHandler({ + zoomPanValues, + panOnDrag, + panOnScroll, + onPaneContextMenu, + onPanZoomEnd, + onDraggingChange, + }); + d3ZoomInstance.on('end', panZoomEndHandler); + const filter = createFilter({ + zoomActivationKeyPressed, + panOnDrag, + zoomOnScroll, + panOnScroll, + zoomOnDoubleClick, + zoomOnPinch, + userSelectionActive, + noPanClassName, + noWheelClassName, + lib, + connectionInProgress, + }); + d3ZoomInstance.filter(filter); + /* + * We cannot add zoomOnDoubleClick to the filter above because + * double tapping on touch screens circumvents the filter and + * dblclick.zoom is fired on the selection directly + */ + if (zoomOnDoubleClick) { + d3Selection.on('dblclick.zoom', d3DblClickZoomHandler); + } + else { + d3Selection.on('dblclick.zoom', null); + } + } + function destroy() { + d3ZoomInstance.on('zoom', null); + } + async function setViewportConstrained(viewport, extent, translateExtent) { + const nextTransform = viewportToTransform(viewport); + const contrainedTransform = d3ZoomInstance?.constrain()(nextTransform, extent, translateExtent); + if (contrainedTransform) { + await setTransform(contrainedTransform); + } + return contrainedTransform; + } + async function setViewport(viewport, options) { + const nextTransform = viewportToTransform(viewport); + await setTransform(nextTransform, options); + return nextTransform; + } + function syncViewport(viewport) { + if (d3Selection) { + const nextTransform = viewportToTransform(viewport); + const currentTransform = d3Selection.property('__zoom'); + if (currentTransform.k !== viewport.zoom || + currentTransform.x !== viewport.x || + currentTransform.y !== viewport.y) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + d3ZoomInstance?.transform(d3Selection, nextTransform, null, { sync: true }); + } + } + } + function getViewport() { + const transform = d3Selection ? zoomTransform(d3Selection.node()) : { x: 0, y: 0, k: 1 }; + return { x: transform.x, y: transform.y, zoom: transform.k }; + } + async function scaleTo(zoom, options) { + if (d3Selection) { + return new Promise((resolve) => { + d3ZoomInstance?.interpolate(options?.interpolate === 'linear' ? interpolate : interpolateZoom).scaleTo(getD3Transition(d3Selection, options?.duration, options?.ease, () => resolve(true)), zoom); + }); + } + return false; + } + async function scaleBy(factor, options) { + if (d3Selection) { + return new Promise((resolve) => { + d3ZoomInstance?.interpolate(options?.interpolate === 'linear' ? interpolate : interpolateZoom).scaleBy(getD3Transition(d3Selection, options?.duration, options?.ease, () => resolve(true)), factor); + }); + } + return false; + } + function setScaleExtent(scaleExtent) { + d3ZoomInstance?.scaleExtent(scaleExtent); + } + function setTranslateExtent(translateExtent) { + d3ZoomInstance?.translateExtent(translateExtent); + } + function setClickDistance(distance) { + const validDistance = !isNumeric(distance) || distance < 0 ? 0 : distance; + d3ZoomInstance?.clickDistance(validDistance); + } + return { + update, + destroy, + setViewport, + setViewportConstrained, + getViewport, + scaleTo, + scaleBy, + setScaleExtent, + setTranslateExtent, + syncViewport, + setClickDistance, + }; +} + +/** + * Used to determine the variant of the resize control + * + * @public + */ +var ResizeControlVariant; +(function (ResizeControlVariant) { + ResizeControlVariant["Line"] = "line"; + ResizeControlVariant["Handle"] = "handle"; +})(ResizeControlVariant || (ResizeControlVariant = {})); +const XY_RESIZER_HANDLE_POSITIONS = ['top-left', 'top-right', 'bottom-left', 'bottom-right']; +const XY_RESIZER_LINE_POSITIONS = ['top', 'right', 'bottom', 'left']; + +/** + * Get all connecting edges for a given set of nodes + * @param width - new width of the node + * @param prevWidth - previous width of the node + * @param height - new height of the node + * @param prevHeight - previous height of the node + * @param affectsX - whether to invert the resize direction for the x axis + * @param affectsY - whether to invert the resize direction for the y axis + * @returns array of two numbers representing the direction of the resize for each axis, 0 = no change, 1 = increase, -1 = decrease + */ +function getResizeDirection({ width, prevWidth, height, prevHeight, affectsX, affectsY, }) { + const deltaWidth = width - prevWidth; + const deltaHeight = height - prevHeight; + const direction = [deltaWidth > 0 ? 1 : deltaWidth < 0 ? -1 : 0, deltaHeight > 0 ? 1 : deltaHeight < 0 ? -1 : 0]; + if (deltaWidth && affectsX) { + direction[0] = direction[0] * -1; + } + if (deltaHeight && affectsY) { + direction[1] = direction[1] * -1; + } + return direction; +} +/** + * Parses the control position that is being dragged to dimensions that are being resized + * @param controlPosition - position of the control that is being dragged + * @returns isHorizontal, isVertical, affectsX, affectsY, + */ +function getControlDirection(controlPosition) { + const isHorizontal = controlPosition.includes('right') || controlPosition.includes('left'); + const isVertical = controlPosition.includes('bottom') || controlPosition.includes('top'); + const affectsX = controlPosition.includes('left'); + const affectsY = controlPosition.includes('top'); + return { + isHorizontal, + isVertical, + affectsX, + affectsY, + }; +} +function getLowerExtentClamp(lowerExtent, lowerBound) { + return Math.max(0, lowerBound - lowerExtent); +} +function getUpperExtentClamp(upperExtent, upperBound) { + return Math.max(0, upperExtent - upperBound); +} +function getSizeClamp(size, minSize, maxSize) { + return Math.max(0, minSize - size, size - maxSize); +} +function xor(a, b) { + return a ? !b : b; +} +/** + * Calculates new width & height and x & y of node after resize based on pointer position + * @description - Buckle up, this is a chunky one... If you want to determine the new dimensions of a node after a resize, + * you have to account for all possible restrictions: min/max width/height of the node, the maximum extent the node is allowed + * to move in (in this case: resize into) determined by the parent node, the minimal extent determined by child nodes + * with expandParent or extent: 'parent' set and oh yeah, these things also have to work with keepAspectRatio! + * The way this is done is by determining how much each of these restricting actually restricts the resize and then applying the + * strongest restriction. Because the resize affects x, y and width, height and width, height of a opposing side with keepAspectRatio, + * the resize amount is always kept in distX & distY amount (the distance in mouse movement) + * Instead of clamping each value, we first calculate the biggest 'clamp' (for the lack of a better name) and then apply it to all values. + * To complicate things nodeOrigin has to be taken into account as well. This is done by offsetting the nodes as if their origin is [0, 0], + * then calculating the restrictions as usual + * @param startValues - starting values of resize + * @param controlDirection - dimensions affected by the resize + * @param pointerPosition - the current pointer position corrected for snapping + * @param boundaries - minimum and maximum dimensions of the node + * @param keepAspectRatio - prevent changes of asprect ratio + * @returns x, y, width and height of the node after resize + */ +function getDimensionsAfterResize(startValues, controlDirection, pointerPosition, boundaries, keepAspectRatio, nodeOrigin, extent, childExtent) { + let { affectsX, affectsY } = controlDirection; + const { isHorizontal, isVertical } = controlDirection; + const isDiagonal = isHorizontal && isVertical; + const { xSnapped, ySnapped } = pointerPosition; + const { minWidth, maxWidth, minHeight, maxHeight } = boundaries; + const { x: startX, y: startY, width: startWidth, height: startHeight, aspectRatio } = startValues; + let distX = Math.floor(isHorizontal ? xSnapped - startValues.pointerX : 0); + let distY = Math.floor(isVertical ? ySnapped - startValues.pointerY : 0); + const newWidth = startWidth + (affectsX ? -distX : distX); + const newHeight = startHeight + (affectsY ? -distY : distY); + const originOffsetX = -nodeOrigin[0] * startWidth; + const originOffsetY = -nodeOrigin[1] * startHeight; + // Check if maxWidth, minWWidth, maxHeight, minHeight are restricting the resize + let clampX = getSizeClamp(newWidth, minWidth, maxWidth); + let clampY = getSizeClamp(newHeight, minHeight, maxHeight); + // Check if extent is restricting the resize + if (extent) { + let xExtentClamp = 0; + let yExtentClamp = 0; + if (affectsX && distX < 0) { + xExtentClamp = getLowerExtentClamp(startX + distX + originOffsetX, extent[0][0]); + } + else if (!affectsX && distX > 0) { + xExtentClamp = getUpperExtentClamp(startX + newWidth + originOffsetX, extent[1][0]); + } + if (affectsY && distY < 0) { + yExtentClamp = getLowerExtentClamp(startY + distY + originOffsetY, extent[0][1]); + } + else if (!affectsY && distY > 0) { + yExtentClamp = getUpperExtentClamp(startY + newHeight + originOffsetY, extent[1][1]); + } + clampX = Math.max(clampX, xExtentClamp); + clampY = Math.max(clampY, yExtentClamp); + } + // Check if the child extent is restricting the resize + if (childExtent) { + let xExtentClamp = 0; + let yExtentClamp = 0; + if (affectsX && distX > 0) { + xExtentClamp = getUpperExtentClamp(startX + distX, childExtent[0][0]); + } + else if (!affectsX && distX < 0) { + xExtentClamp = getLowerExtentClamp(startX + newWidth, childExtent[1][0]); + } + if (affectsY && distY > 0) { + yExtentClamp = getUpperExtentClamp(startY + distY, childExtent[0][1]); + } + else if (!affectsY && distY < 0) { + yExtentClamp = getLowerExtentClamp(startY + newHeight, childExtent[1][1]); + } + clampX = Math.max(clampX, xExtentClamp); + clampY = Math.max(clampY, yExtentClamp); + } + // Check if the aspect ratio resizing of the other side is restricting the resize + if (keepAspectRatio) { + if (isHorizontal) { + // Check if the max dimensions might be restricting the resize + const aspectHeightClamp = getSizeClamp(newWidth / aspectRatio, minHeight, maxHeight) * aspectRatio; + clampX = Math.max(clampX, aspectHeightClamp); + // Check if the extent is restricting the resize + if (extent) { + let aspectExtentClamp = 0; + if ((!affectsX && !affectsY) || (affectsX && !affectsY && isDiagonal)) { + aspectExtentClamp = + getUpperExtentClamp(startY + originOffsetY + newWidth / aspectRatio, extent[1][1]) * aspectRatio; + } + else { + aspectExtentClamp = + getLowerExtentClamp(startY + originOffsetY + (affectsX ? distX : -distX) / aspectRatio, extent[0][1]) * + aspectRatio; + } + clampX = Math.max(clampX, aspectExtentClamp); + } + // Check if the child extent is restricting the resize + if (childExtent) { + let aspectExtentClamp = 0; + if ((!affectsX && !affectsY) || (affectsX && !affectsY && isDiagonal)) { + aspectExtentClamp = getLowerExtentClamp(startY + newWidth / aspectRatio, childExtent[1][1]) * aspectRatio; + } + else { + aspectExtentClamp = + getUpperExtentClamp(startY + (affectsX ? distX : -distX) / aspectRatio, childExtent[0][1]) * aspectRatio; + } + clampX = Math.max(clampX, aspectExtentClamp); + } + } + // Do the same thing for vertical resizing + if (isVertical) { + const aspectWidthClamp = getSizeClamp(newHeight * aspectRatio, minWidth, maxWidth) / aspectRatio; + clampY = Math.max(clampY, aspectWidthClamp); + if (extent) { + let aspectExtentClamp = 0; + if ((!affectsX && !affectsY) || (affectsY && !affectsX && isDiagonal)) { + aspectExtentClamp = + getUpperExtentClamp(startX + newHeight * aspectRatio + originOffsetX, extent[1][0]) / aspectRatio; + } + else { + aspectExtentClamp = + getLowerExtentClamp(startX + (affectsY ? distY : -distY) * aspectRatio + originOffsetX, extent[0][0]) / + aspectRatio; + } + clampY = Math.max(clampY, aspectExtentClamp); + } + if (childExtent) { + let aspectExtentClamp = 0; + if ((!affectsX && !affectsY) || (affectsY && !affectsX && isDiagonal)) { + aspectExtentClamp = getLowerExtentClamp(startX + newHeight * aspectRatio, childExtent[1][0]) / aspectRatio; + } + else { + aspectExtentClamp = + getUpperExtentClamp(startX + (affectsY ? distY : -distY) * aspectRatio, childExtent[0][0]) / aspectRatio; + } + clampY = Math.max(clampY, aspectExtentClamp); + } + } + } + distY = distY + (distY < 0 ? clampY : -clampY); + distX = distX + (distX < 0 ? clampX : -clampX); + if (keepAspectRatio) { + if (isDiagonal) { + if (newWidth > newHeight * aspectRatio) { + distY = (xor(affectsX, affectsY) ? -distX : distX) / aspectRatio; + } + else { + distX = (xor(affectsX, affectsY) ? -distY : distY) * aspectRatio; + } + } + else { + if (isHorizontal) { + distY = distX / aspectRatio; + affectsY = affectsX; + } + else { + distX = distY * aspectRatio; + affectsX = affectsY; + } + } + } + const x = affectsX ? startX + distX : startX; + const y = affectsY ? startY + distY : startY; + return { + width: startWidth + (affectsX ? -distX : distX), + height: startHeight + (affectsY ? -distY : distY), + x: nodeOrigin[0] * distX * (!affectsX ? 1 : -1) + x, + y: nodeOrigin[1] * distY * (!affectsY ? 1 : -1) + y, + }; +} + +const initPrevValues = { width: 0, height: 0, x: 0, y: 0 }; +const initStartValues = { + ...initPrevValues, + pointerX: 0, + pointerY: 0, + aspectRatio: 1, +}; +function nodeToChildExtent(child, parent, nodeOrigin) { + const x = parent.position.x + child.position.x; + const y = parent.position.y + child.position.y; + const width = child.measured.width ?? 0; + const height = child.measured.height ?? 0; + const originOffsetX = nodeOrigin[0] * width; + const originOffsetY = nodeOrigin[1] * height; + return [ + [x - originOffsetX, y - originOffsetY], + [x + width - originOffsetX, y + height - originOffsetY], + ]; +} +function XYResizer({ domNode, nodeId, getStoreItems, onChange, onEnd }) { + const selection = select(domNode); + let params = { + controlDirection: getControlDirection('bottom-right'), + boundaries: { + minWidth: 0, + minHeight: 0, + maxWidth: Number.MAX_VALUE, + maxHeight: Number.MAX_VALUE, + }, + resizeDirection: undefined, + keepAspectRatio: false, + }; + function update({ controlPosition, boundaries, keepAspectRatio, resizeDirection, onResizeStart, onResize, onResizeEnd, shouldResize, }) { + let prevValues = { ...initPrevValues }; + let startValues = { ...initStartValues }; + params = { + boundaries, + resizeDirection, + keepAspectRatio, + controlDirection: getControlDirection(controlPosition), + }; + let node = undefined; + let containerBounds = null; + let childNodes = []; + let parentNode = undefined; // Needed to fix expandParent + let nodeExtent = undefined; + let childExtent = undefined; + // we only want to trigger onResizeEnd if onResize was actually called + let resizeDetected = false; + const dragHandler = drag() + .on('start', (event) => { + const { nodeLookup, transform, snapGrid, snapToGrid, nodeOrigin, paneDomNode } = getStoreItems(); + node = nodeLookup.get(nodeId); + if (!node) { + return; + } + containerBounds = paneDomNode?.getBoundingClientRect() ?? null; + const { xSnapped, ySnapped } = getPointerPosition(event.sourceEvent, { + transform, + snapGrid, + snapToGrid, + containerBounds, + }); + prevValues = { + width: node.measured.width ?? 0, + height: node.measured.height ?? 0, + x: node.position.x ?? 0, + y: node.position.y ?? 0, + }; + startValues = { + ...prevValues, + pointerX: xSnapped, + pointerY: ySnapped, + aspectRatio: prevValues.width / prevValues.height, + }; + parentNode = undefined; + nodeExtent = isCoordinateExtent(node.extent) ? node.extent : undefined; + if (node.parentId && (node.extent === 'parent' || node.expandParent)) { + parentNode = nodeLookup.get(node.parentId); + } + if (parentNode && node.extent === 'parent') { + nodeExtent = [ + [0, 0], + [parentNode.measured.width, parentNode.measured.height], + ]; + } + /* + * Collect all child nodes to correct their relative positions when top/left changes + * Determine largest minimal extent the parent node is allowed to resize to + */ + childNodes = []; + childExtent = undefined; + for (const [childId, child] of nodeLookup) { + if (child.parentId === nodeId) { + childNodes.push({ + id: childId, + position: { ...child.position }, + extent: child.extent, + }); + if (child.extent === 'parent' || child.expandParent) { + const extent = nodeToChildExtent(child, node, child.origin ?? nodeOrigin); + if (childExtent) { + childExtent = [ + [Math.min(extent[0][0], childExtent[0][0]), Math.min(extent[0][1], childExtent[0][1])], + [Math.max(extent[1][0], childExtent[1][0]), Math.max(extent[1][1], childExtent[1][1])], + ]; + } + else { + childExtent = extent; + } + } + } + } + onResizeStart?.(event, { ...prevValues }); + }) + .on('drag', (event) => { + const { transform, snapGrid, snapToGrid, nodeOrigin: storeNodeOrigin } = getStoreItems(); + const pointerPosition = getPointerPosition(event.sourceEvent, { + transform, + snapGrid, + snapToGrid, + containerBounds, + }); + const childChanges = []; + if (!node) { + return; + } + const { x: prevX, y: prevY, width: prevWidth, height: prevHeight } = prevValues; + const change = {}; + const nodeOrigin = node.origin ?? storeNodeOrigin; + const { width, height, x, y } = getDimensionsAfterResize(startValues, params.controlDirection, pointerPosition, params.boundaries, params.keepAspectRatio, nodeOrigin, nodeExtent, childExtent); + const isWidthChange = width !== prevWidth; + const isHeightChange = height !== prevHeight; + const isXPosChange = x !== prevX && isWidthChange; + const isYPosChange = y !== prevY && isHeightChange; + if (!isXPosChange && !isYPosChange && !isWidthChange && !isHeightChange) { + return; + } + if (isXPosChange || isYPosChange || nodeOrigin[0] === 1 || nodeOrigin[1] === 1) { + change.x = isXPosChange ? x : prevValues.x; + change.y = isYPosChange ? y : prevValues.y; + prevValues.x = change.x; + prevValues.y = change.y; + /* + * when top/left changes, correct the relative positions of child nodes + * so that they stay in the same position + */ + if (childNodes.length > 0) { + const xChange = x - prevX; + const yChange = y - prevY; + for (const childNode of childNodes) { + childNode.position = { + x: childNode.position.x - xChange + nodeOrigin[0] * (width - prevWidth), + y: childNode.position.y - yChange + nodeOrigin[1] * (height - prevHeight), + }; + childChanges.push(childNode); + } + } + } + if (isWidthChange || isHeightChange) { + change.width = + isWidthChange && (!params.resizeDirection || params.resizeDirection === 'horizontal') + ? width + : prevValues.width; + change.height = + isHeightChange && (!params.resizeDirection || params.resizeDirection === 'vertical') + ? height + : prevValues.height; + prevValues.width = change.width; + prevValues.height = change.height; + } + // Fix expandParent when resizing from top/left + if (parentNode && node.expandParent) { + const xLimit = nodeOrigin[0] * (change.width ?? 0); + if (change.x && change.x < xLimit) { + prevValues.x = xLimit; + startValues.x = startValues.x - (change.x - xLimit); + } + const yLimit = nodeOrigin[1] * (change.height ?? 0); + if (change.y && change.y < yLimit) { + prevValues.y = yLimit; + startValues.y = startValues.y - (change.y - yLimit); + } + } + const direction = getResizeDirection({ + width: prevValues.width, + prevWidth, + height: prevValues.height, + prevHeight, + affectsX: params.controlDirection.affectsX, + affectsY: params.controlDirection.affectsY, + }); + const nextValues = { ...prevValues, direction }; + const callResize = shouldResize?.(event, nextValues); + if (callResize === false) { + return; + } + resizeDetected = true; + onResize?.(event, nextValues); + onChange(change, childChanges); + }) + .on('end', (event) => { + if (!resizeDetected) { + return; + } + onResizeEnd?.(event, { ...prevValues }); + onEnd?.({ ...prevValues }); + resizeDetected = false; + }); + selection.call(dragHandler); + } + function destroy() { + selection.on('.drag', null); + } + return { + update, + destroy, + }; +} + +export { ConnectionLineType, ConnectionMode, MarkerType, PanOnScrollMode, Position, ResizeControlVariant, SelectionMode, XYDrag, XYHandle, XYMinimap, XYPanZoom, XYResizer, XY_RESIZER_HANDLE_POSITIONS, XY_RESIZER_LINE_POSITIONS, addEdge, adoptUserNodes, areConnectionMapsEqual, areSetsEqual, boxToRect, calcAutoPan, calculateNodePosition, clamp, clampPosition, clampPositionToParent, createDevWarn, createMarkerIds, defaultAriaLabelConfig, elementSelectionKeys, errorMessages, evaluateAbsolutePosition, fitViewport, getBezierEdgeCenter, getBezierPath, getBoundsOfBoxes, getBoundsOfRects, getConnectedEdges, getConnectionStatus, getDimensions, getEdgeCenter, getEdgeId, getEdgePosition, getEdgeToolbarTransform, getElementsToRemove, getElevatedEdgeZIndex, getEventPosition, getHandleBounds, getHandlePosition, getHostForElement, getIncomers, getInternalNodesBounds, getMarkerId, getNodeDimensions, getNodePositionWithOrigin, getNodeToolbarTransform, getNodesBounds, getNodesInside, getOutgoers, getOverlappingArea, getPointerPosition, getRectsOverlappingArea, getSmoothStepPath, getStraightPath, getViewportForBounds, handleConnectionChange, handleExpandParent, infiniteExtent, initialConnection, isCoordinateExtent, isEdgeBase, isEdgeVisible, isInputDOMNode, isInternalNodeBase, isMacOs, isManualZIndexMode, isMouseEvent, isNodeBase, isNumeric, isRectObject, mergeAriaLabelConfig, nodeHasDimensions, nodeToBox, nodeToRect, oppositePosition, panBy, pointToRendererPoint, reconnectEdge, rectToBox, rendererPointToPoint, shallowNodeData, snapPosition, updateAbsolutePositions, updateConnectionLookup, updateNodeInternals, withResolvers }; diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/index.mjs b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/index.mjs new file mode 100644 index 0000000000000000000000000000000000000000..ef024e428453d162f0709bbbc5e3a34d1dfbd107 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/index.mjs @@ -0,0 +1,3557 @@ +import { drag } from 'd3-drag'; +import { select, pointer } from 'd3-selection'; +import { zoom, zoomIdentity, zoomTransform } from 'd3-zoom'; +import { interpolateZoom, interpolate } from 'd3-interpolate'; + +const errorMessages = { + error001: (lib = 'react') => `Seems like you have not used ${lib === 'svelte' ? 'SvelteFlowProvider' : 'ReactFlowProvider'} as an ancestor. Help: https://${lib}flow.dev/error#001`, + error002: () => "It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.", + error003: (nodeType) => `Node type "${nodeType}" not found. Using fallback type "default".`, + error004: () => 'The parent container needs a width and a height to render the graph.', + error005: () => 'Only child nodes can use a parent extent.', + error006: () => "Can't create edge. An edge needs a source and a target.", + error007: (id) => `The old edge with id=${id} does not exist.`, + error009: (type) => `Marker type "${type}" doesn't exist.`, + error008: (handleType, { id, sourceHandle, targetHandle }) => `Couldn't create edge for ${handleType} handle id: "${handleType === 'source' ? sourceHandle : targetHandle}", edge id: ${id}.`, + error010: () => 'Handle: No node id found. Make sure to only use a Handle inside a custom Node.', + error011: (edgeType) => `Edge type "${edgeType}" not found. Using fallback type "default".`, + error012: (id) => `Node with id "${id}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`, + error013: (lib = 'react') => `It seems that you haven't loaded the styles. Please import '@xyflow/${lib}/dist/style.css' or base.css to make sure everything is working properly.`, + error014: () => 'useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.', + error015: () => 'It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs.', + error016: (id) => `Edge with id "${id}" does not exist, it may have been removed. This can happen when an edge is deleted before the "onEdgeClick" handler is called.`, +}; +const infiniteExtent = [ + [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY], + [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY], +]; +const elementSelectionKeys = ['Enter', ' ', 'Escape']; +const defaultAriaLabelConfig = { + 'node.a11yDescription.default': 'Press enter or space to select a node. Press delete to remove it and escape to cancel.', + 'node.a11yDescription.keyboardDisabled': 'Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.', + 'node.a11yDescription.ariaLiveMessage': ({ direction, x, y }) => `Moved selected node ${direction}. New position, x: ${x}, y: ${y}`, + 'edge.a11yDescription.default': 'Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.', + // Control elements + 'controls.ariaLabel': 'Control Panel', + 'controls.zoomIn.ariaLabel': 'Zoom In', + 'controls.zoomOut.ariaLabel': 'Zoom Out', + 'controls.fitView.ariaLabel': 'Fit View', + 'controls.interactive.ariaLabel': 'Toggle Interactivity', + // Mini map + 'minimap.ariaLabel': 'Mini Map', + // Handle + 'handle.ariaLabel': 'Handle', +}; + +/** + * The `ConnectionMode` is used to set the mode of connection between nodes. + * The `Strict` mode is the default one and only allows source to target edges. + * `Loose` mode allows source to source and target to target edges as well. + * + * @public + */ +var ConnectionMode; +(function (ConnectionMode) { + ConnectionMode["Strict"] = "strict"; + ConnectionMode["Loose"] = "loose"; +})(ConnectionMode || (ConnectionMode = {})); +/** + * This enum is used to set the different modes of panning the viewport when the + * user scrolls. The `Free` mode allows the user to pan in any direction by scrolling + * with a device like a trackpad. The `Vertical` and `Horizontal` modes restrict + * scroll panning to only the vertical or horizontal axis, respectively. + * + * @public + */ +var PanOnScrollMode; +(function (PanOnScrollMode) { + PanOnScrollMode["Free"] = "free"; + PanOnScrollMode["Vertical"] = "vertical"; + PanOnScrollMode["Horizontal"] = "horizontal"; +})(PanOnScrollMode || (PanOnScrollMode = {})); +var SelectionMode; +(function (SelectionMode) { + SelectionMode["Partial"] = "partial"; + SelectionMode["Full"] = "full"; +})(SelectionMode || (SelectionMode = {})); +const initialConnection = { + inProgress: false, + isValid: null, + from: null, + fromHandle: null, + fromPosition: null, + fromNode: null, + to: null, + toHandle: null, + toPosition: null, + toNode: null, + pointer: null, +}; + +/** + * If you set the `connectionLineType` prop on your [``](/api-reference/react-flow#connection-connectionLineType) + *component, it will dictate the style of connection line rendered when creating + *new edges. + * + * @public + * + * @remarks If you choose to render a custom connection line component, this value will be + *passed to your component as part of its [`ConnectionLineComponentProps`](/api-reference/types/connection-line-component-props). + */ +var ConnectionLineType; +(function (ConnectionLineType) { + ConnectionLineType["Bezier"] = "default"; + ConnectionLineType["Straight"] = "straight"; + ConnectionLineType["Step"] = "step"; + ConnectionLineType["SmoothStep"] = "smoothstep"; + ConnectionLineType["SimpleBezier"] = "simplebezier"; +})(ConnectionLineType || (ConnectionLineType = {})); +/** + * Edges may optionally have a marker on either end. The MarkerType type enumerates + * the options available to you when configuring a given marker. + * + * @public + */ +var MarkerType; +(function (MarkerType) { + MarkerType["Arrow"] = "arrow"; + MarkerType["ArrowClosed"] = "arrowclosed"; +})(MarkerType || (MarkerType = {})); + +/** + * While [`PanelPosition`](/api-reference/types/panel-position) can be used to place a + * component in the corners of a container, the `Position` enum is less precise and used + * primarily in relation to edges and handles. + * + * @public + */ +var Position; +(function (Position) { + Position["Left"] = "left"; + Position["Top"] = "top"; + Position["Right"] = "right"; + Position["Bottom"] = "bottom"; +})(Position || (Position = {})); +const oppositePosition = { + [Position.Left]: Position.Right, + [Position.Right]: Position.Left, + [Position.Top]: Position.Bottom, + [Position.Bottom]: Position.Top, +}; + +/** + * @internal + */ +function areConnectionMapsEqual(a, b) { + if (!a && !b) { + return true; + } + if (!a || !b || a.size !== b.size) { + return false; + } + if (!a.size && !b.size) { + return true; + } + for (const key of a.keys()) { + if (!b.has(key)) { + return false; + } + } + return true; +} +/** + * We call the callback for all connections in a that are not in b + * + * @internal + */ +function handleConnectionChange(a, b, cb) { + if (!cb) { + return; + } + const diff = []; + a.forEach((connection, key) => { + if (!b?.has(key)) { + diff.push(connection); + } + }); + if (diff.length) { + cb(diff); + } +} +function getConnectionStatus(isValid) { + return isValid === null ? null : isValid ? 'valid' : 'invalid'; +} + +/** + * Test whether an object is usable as an Edge + * @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 A boolean indicating whether the element is an Edge + */ +const isEdgeBase = (element) => !!element && typeof element === 'object' && 'id' in element && 'source' in element && 'target' in element; +/** + * Test whether an object is usable as a Node + * @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 A boolean indicating whether the element is an Node + */ +const isNodeBase = (element) => !!element && typeof element === 'object' && 'id' in element && 'position' in element && !('source' in element) && !('target' in element); +const isInternalNodeBase = (element) => !!element && typeof element === 'object' && 'id' in element && 'internals' in element && !('source' in element) && !('target' in element); +/** + * This util is used to tell you what nodes, if any, are connected to the given node + * as the _target_ of an edge. + * @public + * @param node - The node to get the connected nodes from. + * @param nodes - The array of all nodes. + * @param edges - The array of all edges. + * @returns An array of nodes that are connected over edges where the source is the given node. + * + * @example + * ```ts + *import { getOutgoers } from '@xyflow/react'; + * + *const nodes = []; + *const edges = []; + * + *const outgoers = getOutgoers( + * { id: '1', position: { x: 0, y: 0 }, data: { label: 'node' } }, + * nodes, + * edges, + *); + *``` + */ +const getOutgoers = (node, nodes, edges) => { + if (!node.id) { + return []; + } + const outgoerIds = new Set(); + edges.forEach((edge) => { + if (edge.source === node.id) { + outgoerIds.add(edge.target); + } + }); + return nodes.filter((n) => outgoerIds.has(n.id)); +}; +/** + * This util is used to tell you what nodes, if any, are connected to the given node + * as the _source_ of an edge. + * @public + * @param node - The node to get the connected nodes from. + * @param nodes - The array of all nodes. + * @param edges - The array of all edges. + * @returns An array of nodes that are connected over edges where the target is the given node. + * + * @example + * ```ts + *import { getIncomers } from '@xyflow/react'; + * + *const nodes = []; + *const edges = []; + * + *const incomers = getIncomers( + * { id: '1', position: { x: 0, y: 0 }, data: { label: 'node' } }, + * nodes, + * edges, + *); + *``` + */ +const getIncomers = (node, nodes, edges) => { + if (!node.id) { + return []; + } + const incomersIds = new Set(); + edges.forEach((edge) => { + if (edge.target === node.id) { + incomersIds.add(edge.source); + } + }); + return nodes.filter((n) => incomersIds.has(n.id)); +}; +const getNodePositionWithOrigin = (node, nodeOrigin = [0, 0]) => { + const { width, height } = getNodeDimensions(node); + const origin = node.origin ?? nodeOrigin; + const offsetX = width * origin[0]; + const offsetY = height * origin[1]; + return { + x: node.position.x - offsetX, + y: node.position.y - offsetY, + }; +}; +/** + * Returns the bounding box that contains all the given nodes in an array. This can + * be useful when combined with [`getViewportForBounds`](/api-reference/utils/get-viewport-for-bounds) + * to calculate the correct transform to fit the given nodes in a viewport. + * @public + * @remarks Useful when combined with {@link getViewportForBounds} to calculate the correct transform to fit the given nodes in a viewport. + * @param nodes - Nodes to calculate the bounds for. + * @returns Bounding box enclosing all nodes. + * + * @remarks This function was previously called `getRectOfNodes` + * + * @example + * ```js + *import { getNodesBounds } from '@xyflow/react'; + * + *const nodes = [ + * { + * id: 'a', + * position: { x: 0, y: 0 }, + * data: { label: 'a' }, + * width: 50, + * height: 25, + * }, + * { + * id: 'b', + * position: { x: 100, y: 100 }, + * data: { label: 'b' }, + * width: 50, + * height: 25, + * }, + *]; + * + *const bounds = getNodesBounds(nodes); + *``` + */ +const getNodesBounds = (nodes, params = { nodeOrigin: [0, 0] }) => { + if (process.env.NODE_ENV === 'development' && !params.nodeLookup) { + console.warn('Please use `getNodesBounds` from `useReactFlow`/`useSvelteFlow` hook to ensure correct values for sub flows. If not possible, you have to provide a nodeLookup to support sub flows.'); + } + if (nodes.length === 0) { + return { x: 0, y: 0, width: 0, height: 0 }; + } + const box = nodes.reduce((currBox, nodeOrId) => { + const isId = typeof nodeOrId === 'string'; + let currentNode = !params.nodeLookup && !isId ? nodeOrId : undefined; + if (params.nodeLookup) { + currentNode = isId + ? params.nodeLookup.get(nodeOrId) + : !isInternalNodeBase(nodeOrId) + ? params.nodeLookup.get(nodeOrId.id) + : nodeOrId; + } + const nodeBox = currentNode ? nodeToBox(currentNode, params.nodeOrigin) : { x: 0, y: 0, x2: 0, y2: 0 }; + return getBoundsOfBoxes(currBox, nodeBox); + }, { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity }); + return boxToRect(box); +}; +/** + * Determines a bounding box that contains all given nodes in an array + * @internal + */ +const getInternalNodesBounds = (nodeLookup, params = {}) => { + let box = { x: Infinity, y: Infinity, x2: -Infinity, y2: -Infinity }; + let hasVisibleNodes = false; + nodeLookup.forEach((node) => { + if (params.filter === undefined || params.filter(node)) { + box = getBoundsOfBoxes(box, nodeToBox(node)); + hasVisibleNodes = true; + } + }); + return hasVisibleNodes ? boxToRect(box) : { x: 0, y: 0, width: 0, height: 0 }; +}; +const getNodesInside = (nodes, rect, [tx, ty, tScale] = [0, 0, 1], partially = false, +// set excludeNonSelectableNodes if you want to pay attention to the nodes "selectable" attribute +excludeNonSelectableNodes = false) => { + // viewport in flow coordinates, as scalars to avoid a Rect allocation per node + const paneX = (rect.x - tx) / tScale; + const paneY = (rect.y - ty) / tScale; + const paneWidth = rect.width / tScale; + const paneHeight = rect.height / tScale; + const visibleNodes = []; + for (const node of nodes.values()) { + const { measured, selectable = true, hidden = false } = node; + if ((excludeNonSelectableNodes && !selectable) || hidden) { + continue; + } + const width = measured.width ?? node.width ?? node.initialWidth ?? 0; + const height = measured.height ?? node.height ?? node.initialHeight ?? 0; + const { x, y } = node.internals.positionAbsolute; + const overlappingArea = getRectsOverlappingArea(paneX, paneY, paneWidth, paneHeight, x, y, width, height); + const area = width * height; + const partiallyVisible = partially && overlappingArea > 0; + const forceInitialRender = !node.internals.handleBounds; + const isVisible = forceInitialRender || partiallyVisible || overlappingArea >= area; + if (isVisible || node.dragging) { + visibleNodes.push(node); + } + } + return visibleNodes; +}; +/** + * This utility filters an array of edges, keeping only those where either the source or target + * node is present in the given array of nodes. + * @public + * @param nodes - Nodes you want to get the connected edges for. + * @param edges - All edges. + * @returns Array of edges that connect any of the given nodes with each other. + * + * @example + * ```js + *import { getConnectedEdges } from '@xyflow/react'; + * + *const nodes = [ + * { id: 'a', position: { x: 0, y: 0 } }, + * { id: 'b', position: { x: 100, y: 0 } }, + *]; + * + *const edges = [ + * { id: 'a->c', source: 'a', target: 'c' }, + * { id: 'c->d', source: 'c', target: 'd' }, + *]; + * + *const connectedEdges = getConnectedEdges(nodes, edges); + * // => [{ id: 'a->c', source: 'a', target: 'c' }] + *``` + */ +const getConnectedEdges = (nodes, edges) => { + const nodeIds = new Set(); + nodes.forEach((node) => { + nodeIds.add(node.id); + }); + return edges.filter((edge) => nodeIds.has(edge.source) || nodeIds.has(edge.target)); +}; +function getFitViewNodes(nodeLookup, options) { + const fitViewNodes = new Map(); + const optionNodeIds = options?.nodes ? new Set(options.nodes.map((node) => node.id)) : null; + nodeLookup.forEach((n) => { + let isVisible; + if (options?.includeHiddenNodes) { + /* + * when hidden nodes are included they were never rendered, so they have no + * measured size. Fall back to the declared dimensions (same fallback as + * nodeToBox) so a hidden node with an intrinsic size still contributes to + * the fit bounds instead of being dropped by a measured-only check. (#5841) + */ + const { width, height } = getNodeDimensions(n); + isVisible = width > 0 && height > 0; + } + else { + isVisible = Boolean(n.measured.width && n.measured.height && !n.hidden); + } + if (isVisible && (!optionNodeIds || optionNodeIds.has(n.id))) { + fitViewNodes.set(n.id, n); + } + }); + return fitViewNodes; +} +async function fitViewport({ nodes, width, height, panZoom, minZoom, maxZoom }, options) { + if (nodes.size === 0) { + return true; + } + const nodesToFit = getFitViewNodes(nodes, options); + const bounds = getInternalNodesBounds(nodesToFit); + const viewport = getViewportForBounds(bounds, width, height, options?.minZoom ?? minZoom, options?.maxZoom ?? maxZoom, options?.padding ?? 0.1); + await panZoom.setViewport(viewport, { + duration: options?.duration, + ease: options?.ease, + interpolate: options?.interpolate, + }); + return true; +} +/** + * This function calculates the next position of a node, taking into account the node's extent, parent node, and origin. + * + * @internal + * @returns position, positionAbsolute + */ +function calculateNodePosition({ nodeId, nextPosition, nodeLookup, nodeOrigin = [0, 0], nodeExtent, onError, }) { + const node = nodeLookup.get(nodeId); + const parentNode = node.parentId ? nodeLookup.get(node.parentId) : undefined; + const { x: parentX, y: parentY } = parentNode ? parentNode.internals.positionAbsolute : { x: 0, y: 0 }; + const origin = node.origin ?? nodeOrigin; + let extent = node.extent || nodeExtent; + if (node.extent === 'parent' && !node.expandParent) { + if (!parentNode) { + onError?.('005', errorMessages['error005']()); + } + else { + const parentWidth = parentNode.measured.width; + const parentHeight = parentNode.measured.height; + if (parentWidth && parentHeight) { + extent = [ + [parentX, parentY], + [parentX + parentWidth, parentY + parentHeight], + ]; + } + } + } + else if (parentNode && isCoordinateExtent(node.extent)) { + extent = [ + [node.extent[0][0] + parentX, node.extent[0][1] + parentY], + [node.extent[1][0] + parentX, node.extent[1][1] + parentY], + ]; + } + const positionAbsolute = isCoordinateExtent(extent) + ? clampPosition(nextPosition, extent, node.measured) + : nextPosition; + if (node.measured.width === undefined || node.measured.height === undefined) { + onError?.('015', errorMessages['error015']()); + } + return { + position: { + x: positionAbsolute.x - parentX + (node.measured.width ?? 0) * origin[0], + y: positionAbsolute.y - parentY + (node.measured.height ?? 0) * origin[1], + }, + positionAbsolute, + }; +} +/** + * Pass in nodes & edges to delete, get arrays of nodes and edges that actually can be deleted + * @internal + * @param param.nodesToRemove - The nodes to remove + * @param param.edgesToRemove - The edges to remove + * @param param.nodes - All nodes + * @param param.edges - All edges + * @param param.onBeforeDelete - Callback to check which nodes and edges can be deleted + * @returns nodes: nodes that can be deleted, edges: edges that can be deleted + */ +async function getElementsToRemove({ nodesToRemove = [], edgesToRemove = [], nodes, edges, onBeforeDelete, }) { + const nodeIds = new Set(nodesToRemove.map((node) => node.id)); + const matchingNodes = []; + for (const node of nodes) { + if (node.deletable === false) { + continue; + } + const isIncluded = nodeIds.has(node.id); + const parentHit = !isIncluded && node.parentId && matchingNodes.find((n) => n.id === node.parentId); + if (isIncluded || parentHit) { + matchingNodes.push(node); + } + } + const edgeIds = new Set(edgesToRemove.map((edge) => edge.id)); + const deletableEdges = edges.filter((edge) => edge.deletable !== false); + const connectedEdges = getConnectedEdges(matchingNodes, deletableEdges); + const matchingEdges = connectedEdges; + for (const edge of deletableEdges) { + const isIncluded = edgeIds.has(edge.id); + if (isIncluded && !matchingEdges.find((e) => e.id === edge.id)) { + matchingEdges.push(edge); + } + } + if (!onBeforeDelete) { + return { + edges: matchingEdges, + nodes: matchingNodes, + }; + } + const onBeforeDeleteResult = await onBeforeDelete({ + nodes: matchingNodes, + edges: matchingEdges, + }); + if (typeof onBeforeDeleteResult === 'boolean') { + return onBeforeDeleteResult ? { edges: matchingEdges, nodes: matchingNodes } : { edges: [], nodes: [] }; + } + return onBeforeDeleteResult; +} + +const clamp = (val, min = 0, max = 1) => Math.min(Math.max(val, min), max); +const clampPosition = (position = { x: 0, y: 0 }, extent, dimensions) => ({ + x: clamp(position.x, extent[0][0], extent[1][0] - (dimensions?.width ?? 0)), + y: clamp(position.y, extent[0][1], extent[1][1] - (dimensions?.height ?? 0)), +}); +function clampPositionToParent(childPosition, childDimensions, parent) { + const { width: parentWidth, height: parentHeight } = getNodeDimensions(parent); + const { x: parentX, y: parentY } = parent.internals.positionAbsolute; + return clampPosition(childPosition, [ + [parentX, parentY], + [parentX + parentWidth, parentY + parentHeight], + ], childDimensions); +} +/** + * Calculates the velocity of panning when the mouse is close to the edge of the canvas + * @internal + * @param value - One dimensional poition of the mouse (x or y) + * @param min - Minimal position on canvas before panning starts + * @param max - Maximal position on canvas before panning starts + * @returns - A number between 0 and 1 that represents the velocity of panning + */ +const calcAutoPanVelocity = (value, min, max) => { + if (value < min) { + return clamp(Math.abs(value - min), 1, min) / min; + } + else if (value > max) { + return -clamp(Math.abs(value - max), 1, min) / min; + } + return 0; +}; +const calcAutoPan = (pos, bounds, speed = 15, distance = 40) => { + const xMovement = calcAutoPanVelocity(pos.x, distance, bounds.width - distance) * speed; + const yMovement = calcAutoPanVelocity(pos.y, distance, bounds.height - distance) * speed; + return [xMovement, yMovement]; +}; +const getBoundsOfBoxes = (box1, box2) => ({ + x: Math.min(box1.x, box2.x), + y: Math.min(box1.y, box2.y), + x2: Math.max(box1.x2, box2.x2), + y2: Math.max(box1.y2, box2.y2), +}); +const rectToBox = ({ x, y, width, height }) => ({ + x, + y, + x2: x + width, + y2: y + height, +}); +const boxToRect = ({ x, y, x2, y2 }) => ({ + x, + y, + width: x2 - x, + height: y2 - y, +}); +const nodeToRect = (node, nodeOrigin = [0, 0]) => { + const { x, y } = isInternalNodeBase(node) + ? node.internals.positionAbsolute + : getNodePositionWithOrigin(node, nodeOrigin); + return { + x, + y, + width: node.measured?.width ?? node.width ?? node.initialWidth ?? 0, + height: node.measured?.height ?? node.height ?? node.initialHeight ?? 0, + }; +}; +const nodeToBox = (node, nodeOrigin = [0, 0]) => { + const { x, y } = isInternalNodeBase(node) + ? node.internals.positionAbsolute + : getNodePositionWithOrigin(node, nodeOrigin); + return { + x, + y, + x2: x + (node.measured?.width ?? node.width ?? node.initialWidth ?? 0), + y2: y + (node.measured?.height ?? node.height ?? node.initialHeight ?? 0), + }; +}; +const getBoundsOfRects = (rect1, rect2) => boxToRect(getBoundsOfBoxes(rectToBox(rect1), rectToBox(rect2))); +const getRectsOverlappingArea = (aX, aY, aWidth, aHeight, bX, bY, bWidth, bHeight) => { + const xOverlap = Math.max(0, Math.min(aX + aWidth, bX + bWidth) - Math.max(aX, bX)); + const yOverlap = Math.max(0, Math.min(aY + aHeight, bY + bHeight) - Math.max(aY, bY)); + return Math.ceil(xOverlap * yOverlap); +}; +const getOverlappingArea = (rectA, rectB) => getRectsOverlappingArea(rectA.x, rectA.y, rectA.width, rectA.height, rectB.x, rectB.y, rectB.width, rectB.height); +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const isRectObject = (obj) => isNumeric(obj.width) && isNumeric(obj.height) && isNumeric(obj.x) && isNumeric(obj.y); +/* eslint-disable-next-line @typescript-eslint/no-explicit-any */ +const isNumeric = (n) => !isNaN(n) && isFinite(n); +const createDevWarn = (lib, helpUrl) => (id, message) => { + if (process.env.NODE_ENV === 'development') { + console.warn(`[${lib}]: ${message} Help: ${helpUrl}error#${id}`); + } +}; +const snapPosition = (position, snapGrid = [1, 1]) => { + return { + x: snapGrid[0] * Math.round(position.x / snapGrid[0]), + y: snapGrid[1] * Math.round(position.y / snapGrid[1]), + }; +}; +const pointToRendererPoint = ({ x, y }, [tx, ty, tScale], snapToGrid = false, snapGrid = [1, 1]) => { + const position = { + x: (x - tx) / tScale, + y: (y - ty) / tScale, + }; + return snapToGrid ? snapPosition(position, snapGrid) : position; +}; +const rendererPointToPoint = ({ x, y }, [tx, ty, tScale]) => { + return { + x: x * tScale + tx, + y: y * tScale + ty, + }; +}; +/** + * Parses a single padding value to a number + * @internal + * @param padding - Padding to parse + * @param viewport - Width or height of the viewport + * @returns The padding in pixels + */ +function parsePadding(padding, viewport) { + if (typeof padding === 'number') { + return Math.floor((viewport - viewport / (1 + padding)) * 0.5); + } + if (typeof padding === 'string' && padding.endsWith('px')) { + const paddingValue = parseFloat(padding); + if (!Number.isNaN(paddingValue)) { + return Math.floor(paddingValue); + } + } + if (typeof padding === 'string' && padding.endsWith('%')) { + const paddingValue = parseFloat(padding); + if (!Number.isNaN(paddingValue)) { + return Math.floor(viewport * paddingValue * 0.01); + } + } + console.error(`The padding value "${padding}" is invalid. Please provide a number or a string with a valid unit (px or %).`); + return 0; +} +/** + * Parses the paddings to an object with top, right, bottom, left, x and y paddings + * @internal + * @param padding - Padding to parse + * @param width - Width of the viewport + * @param height - Height of the viewport + * @returns An object with the paddings in pixels + */ +function parsePaddings(padding, width, height) { + if (typeof padding === 'string' || typeof padding === 'number') { + const paddingY = parsePadding(padding, height); + const paddingX = parsePadding(padding, width); + return { + top: paddingY, + right: paddingX, + bottom: paddingY, + left: paddingX, + x: paddingX * 2, + y: paddingY * 2, + }; + } + if (typeof padding === 'object') { + const top = parsePadding(padding.top ?? padding.y ?? 0, height); + const bottom = parsePadding(padding.bottom ?? padding.y ?? 0, height); + const left = parsePadding(padding.left ?? padding.x ?? 0, width); + const right = parsePadding(padding.right ?? padding.x ?? 0, width); + return { top, right, bottom, left, x: left + right, y: top + bottom }; + } + return { top: 0, right: 0, bottom: 0, left: 0, x: 0, y: 0 }; +} +/** + * Calculates the resulting paddings if the new viewport is applied + * @internal + * @param bounds - Bounds to fit inside viewport + * @param x - X position of the viewport + * @param y - Y position of the viewport + * @param zoom - Zoom level of the viewport + * @param width - Width of the viewport + * @param height - Height of the viewport + * @returns An object with the minimum padding required to fit the bounds inside the viewport + */ +function calculateAppliedPaddings(bounds, x, y, zoom, width, height) { + const { x: left, y: top } = rendererPointToPoint(bounds, [x, y, zoom]); + const { x: boundRight, y: boundBottom } = rendererPointToPoint({ x: bounds.x + bounds.width, y: bounds.y + bounds.height }, [x, y, zoom]); + const right = width - boundRight; + const bottom = height - boundBottom; + return { + left: Math.floor(left), + top: Math.floor(top), + right: Math.floor(right), + bottom: Math.floor(bottom), + }; +} +/** + * Returns a viewport that encloses the given bounds with padding. + * @public + * @remarks You can determine bounds of nodes with {@link getNodesBounds} and {@link getBoundsOfRects} + * @param bounds - Bounds to fit inside viewport. + * @param width - Width of the viewport. + * @param height - Height of the viewport. + * @param minZoom - Minimum zoom level of the resulting viewport. + * @param maxZoom - Maximum zoom level of the resulting viewport. + * @param padding - Padding around the bounds. + * @returns A transformed {@link Viewport} that encloses the given bounds which you can pass to e.g. {@link setViewport}. + * @example + * const { x, y, zoom } = getViewportForBounds( + * { x: 0, y: 0, width: 100, height: 100}, + * 1200, 800, 0.5, 2); + */ +const getViewportForBounds = (bounds, width, height, minZoom, maxZoom, padding) => { + // First we resolve all the paddings to actual pixel values + const p = parsePaddings(padding, width, height); + const xZoom = (width - p.x) / bounds.width; + const yZoom = (height - p.y) / bounds.height; + // We calculate the new x, y, zoom for a centered view + const zoom = Math.min(xZoom, yZoom); + const clampedZoom = clamp(zoom, minZoom, maxZoom); + const boundsCenterX = bounds.x + bounds.width / 2; + const boundsCenterY = bounds.y + bounds.height / 2; + const x = width / 2 - boundsCenterX * clampedZoom; + const y = height / 2 - boundsCenterY * clampedZoom; + // Then we calculate the minimum padding, to respect asymmetric paddings + const newPadding = calculateAppliedPaddings(bounds, x, y, clampedZoom, width, height); + // We only want to have an offset if the newPadding is smaller than the required padding + const offset = { + left: Math.min(newPadding.left - p.left, 0), + top: Math.min(newPadding.top - p.top, 0), + right: Math.min(newPadding.right - p.right, 0), + bottom: Math.min(newPadding.bottom - p.bottom, 0), + }; + return { + x: x - offset.left + offset.right, + y: y - offset.top + offset.bottom, + zoom: clampedZoom, + }; +}; +const isMacOs = () => typeof navigator !== 'undefined' && navigator?.userAgent?.indexOf('Mac') >= 0; +function isCoordinateExtent(extent) { + return extent !== undefined && extent !== null && extent !== 'parent'; +} +function getNodeDimensions(node) { + return { + width: node.measured?.width ?? node.width ?? node.initialWidth ?? 0, + height: node.measured?.height ?? node.height ?? node.initialHeight ?? 0, + }; +} +function nodeHasDimensions(node) { + return ((node.measured?.width ?? node.width ?? node.initialWidth) !== undefined && + (node.measured?.height ?? node.height ?? node.initialHeight) !== undefined); +} +/** + * Convert child position to absolute position + * + * @internal + * @param position + * @param parentId + * @param nodeLookup + * @param nodeOrigin + * @returns an internal node with an absolute position + */ +function evaluateAbsolutePosition(position, dimensions = { width: 0, height: 0 }, parentId, nodeLookup, nodeOrigin) { + const positionAbsolute = { ...position }; + const parent = nodeLookup.get(parentId); + if (parent) { + const origin = parent.origin || nodeOrigin; + positionAbsolute.x += parent.internals.positionAbsolute.x - (dimensions.width ?? 0) * origin[0]; + positionAbsolute.y += parent.internals.positionAbsolute.y - (dimensions.height ?? 0) * origin[1]; + } + return positionAbsolute; +} +function areSetsEqual(a, b) { + if (a.size !== b.size) { + return false; + } + for (const item of a) { + if (!b.has(item)) { + return false; + } + } + return true; +} +/** + * Polyfill for Promise.withResolvers until we can use it in all browsers + * @internal + */ +function withResolvers() { + let resolve; + let reject; + const promise = new Promise((res, rej) => { + resolve = res; + reject = rej; + }); + return { promise, resolve, reject }; +} +function mergeAriaLabelConfig(partial) { + return { ...defaultAriaLabelConfig, ...(partial || {}) }; +} + +function getPointerPosition(event, { snapGrid = [0, 0], snapToGrid = false, transform, containerBounds }) { + const { x, y } = getEventPosition(event); + const pointerPos = pointToRendererPoint({ x: x - (containerBounds?.left ?? 0), y: y - (containerBounds?.top ?? 0) }, transform); + const { x: xSnapped, y: ySnapped } = snapToGrid ? snapPosition(pointerPos, snapGrid) : pointerPos; + // we need the snapped position in order to be able to skip unnecessary drag events + return { + xSnapped, + ySnapped, + ...pointerPos, + }; +} +const getDimensions = (node) => ({ + width: node.offsetWidth, + height: node.offsetHeight, +}); +const getHostForElement = (element) => element?.getRootNode?.() || window?.document; +const inputTags = ['INPUT', 'SELECT', 'TEXTAREA']; +function isInputDOMNode(event) { + // using composed path for handling shadow dom + const target = (event.composedPath?.()?.[0] || event.target); + if (target?.nodeType !== 1 /* Node.ELEMENT_NODE */) + return false; + const isInput = inputTags.includes(target.nodeName) || target.hasAttribute('contenteditable'); + // when an input field is focused we don't want to trigger deletion or movement of nodes + return isInput || !!target.closest('.nokey'); +} +const isMouseEvent = (event) => 'clientX' in event; +const getEventPosition = (event, bounds) => { + const isMouse = isMouseEvent(event); + const evtX = isMouse ? event.clientX : event.touches?.[0].clientX; + const evtY = isMouse ? event.clientY : event.touches?.[0].clientY; + return { + x: evtX - (bounds?.left ?? 0), + y: evtY - (bounds?.top ?? 0), + }; +}; +/* + * The handle bounds are calculated relative to the node element. + * We store them in the internals object of the node in order to avoid + * unnecessary recalculations. + */ +const getHandleBounds = (type, nodeElement, nodeBounds, zoom, nodeId) => { + const handles = nodeElement.querySelectorAll(`.${type}`); + if (!handles || !handles.length) { + return null; + } + return Array.from(handles).map((handle) => { + const handleBounds = handle.getBoundingClientRect(); + return { + id: handle.getAttribute('data-handleid'), + type, + nodeId, + position: handle.getAttribute('data-handlepos'), + x: (handleBounds.left - nodeBounds.left) / zoom, + y: (handleBounds.top - nodeBounds.top) / zoom, + ...getDimensions(handle), + }; + }); +}; + +function getBezierEdgeCenter({ sourceX, sourceY, targetX, targetY, sourceControlX, sourceControlY, targetControlX, targetControlY, }) { + /* + * cubic bezier t=0.5 mid point, not the actual mid point, but easy to calculate + * https://stackoverflow.com/questions/67516101/how-to-find-distance-mid-point-of-bezier-curve + */ + const centerX = sourceX * 0.125 + sourceControlX * 0.375 + targetControlX * 0.375 + targetX * 0.125; + const centerY = sourceY * 0.125 + sourceControlY * 0.375 + targetControlY * 0.375 + targetY * 0.125; + const offsetX = Math.abs(centerX - sourceX); + const offsetY = Math.abs(centerY - sourceY); + return [centerX, centerY, offsetX, offsetY]; +} +function calculateControlOffset(distance, curvature) { + if (distance >= 0) { + return 0.5 * distance; + } + return curvature * 25 * Math.sqrt(-distance); +} +function getControlWithCurvature({ pos, x1, y1, x2, y2, c }) { + switch (pos) { + case Position.Left: + return [x1 - calculateControlOffset(x1 - x2, c), y1]; + case Position.Right: + return [x1 + calculateControlOffset(x2 - x1, c), y1]; + case Position.Top: + return [x1, y1 - calculateControlOffset(y1 - y2, c)]; + case Position.Bottom: + return [x1, y1 + calculateControlOffset(y2 - y1, c)]; + } +} +/** + * The `getBezierPath` util returns everything you need to render a bezier edge + *between two nodes. + * @public + * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path) + * and `offsetX`, `offsetY` between source handle and label. + * - `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. + * @example + * ```js + * const source = { x: 0, y: 20 }; + * const target = { x: 150, y: 100 }; + * + * const [path, labelX, labelY, offsetX, offsetY] = getBezierPath({ + * sourceX: source.x, + * sourceY: source.y, + * sourcePosition: Position.Right, + * targetX: target.x, + * targetY: target.y, + * targetPosition: Position.Left, + *}); + *``` + * + * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to + *work with multiple edge paths at once. + */ +function getBezierPath({ sourceX, sourceY, sourcePosition = Position.Bottom, targetX, targetY, targetPosition = Position.Top, curvature = 0.25, }) { + const [sourceControlX, sourceControlY] = getControlWithCurvature({ + pos: sourcePosition, + x1: sourceX, + y1: sourceY, + x2: targetX, + y2: targetY, + c: curvature, + }); + const [targetControlX, targetControlY] = getControlWithCurvature({ + pos: targetPosition, + x1: targetX, + y1: targetY, + x2: sourceX, + y2: sourceY, + c: curvature, + }); + 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, + ]; +} + +// this is used for straight edges and simple smoothstep edges (LTR, RTL, BTT, TTB) +function getEdgeCenter({ sourceX, sourceY, targetX, targetY, }) { + const xOffset = Math.abs(targetX - sourceX) / 2; + const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset; + const yOffset = Math.abs(targetY - sourceY) / 2; + const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset; + return [centerX, centerY, xOffset, yOffset]; +} +/** + * Returns the z-index for an edge based on the node it connects and whether it is selected. + * By default, edges are rendered below nodes. This behaviour is different for edges that are + * connected to nodes with a parent, as they are rendered above the parent node. + */ +function getElevatedEdgeZIndex({ sourceNode, targetNode, selected = false, zIndex = 0, elevateOnSelect = false, zIndexMode = 'basic', }) { + if (zIndexMode === 'manual') { + return zIndex; + } + const edgeZ = elevateOnSelect && selected ? zIndex + 1000 : zIndex; + const nodeZ = Math.max(sourceNode.parentId || (elevateOnSelect && sourceNode.selected) ? sourceNode.internals.z : 0, targetNode.parentId || (elevateOnSelect && targetNode.selected) ? targetNode.internals.z : 0); + return edgeZ + nodeZ; +} +function isEdgeVisible({ sourceNode, targetNode, width, height, transform }) { + const edgeBox = getBoundsOfBoxes(nodeToBox(sourceNode), nodeToBox(targetNode)); + if (edgeBox.x === edgeBox.x2) { + edgeBox.x2 += 1; + } + if (edgeBox.y === edgeBox.y2) { + edgeBox.y2 += 1; + } + const viewRect = { + x: -transform[0] / transform[2], + y: -transform[1] / transform[2], + width: width / transform[2], + height: height / transform[2], + }; + return getOverlappingArea(viewRect, boxToRect(edgeBox)) > 0; +} +/** + * The default edge ID generator function. Generates an ID based on the source, target, and handles. + * @public + * @param params - The connection or edge to generate an ID for. + * @returns The generated edge ID. + */ +const getEdgeId = ({ source, sourceHandle, target, targetHandle }) => `xy-edge__${source}${sourceHandle || ''}-${target}${targetHandle || ''}`; +const connectionExists = (edge, edges) => { + return edges.some((el) => el.source === edge.source && + el.target === edge.target && + (el.sourceHandle === edge.sourceHandle || (!el.sourceHandle && !edge.sourceHandle)) && + (el.targetHandle === edge.targetHandle || (!el.targetHandle && !edge.targetHandle))); +}; +/** + * This util is a convenience function to add a new Edge to an array of edges. It also performs some validation to make sure you don't add an invalid edge or duplicate an existing one. + * @public + * @param edgeParams - Either an `Edge` or a `Connection` you want to add. + * @param edges - The array of all current edges. + * @param options - Optional configuration object. + * @returns A new array of edges with the new edge added. + * + * @remarks If an edge with the same `target` and `source` already exists (and the same + *`targetHandle` and `sourceHandle` if those are set), then this util won't add + *a new edge even if the `id` property is different. + * + */ +const addEdge = (edgeParams, edges, options = {}) => { + if (!edgeParams.source || !edgeParams.target) { + options.onError?.('006', errorMessages['error006']()); + return edges; + } + const edgeIdGenerator = options.getEdgeId || getEdgeId; + let edge; + if (isEdgeBase(edgeParams)) { + edge = { ...edgeParams }; + } + else { + edge = { + ...edgeParams, + id: edgeIdGenerator(edgeParams), + }; + } + if (connectionExists(edge, edges)) { + return edges; + } + if (edge.sourceHandle === null) { + delete edge.sourceHandle; + } + if (edge.targetHandle === null) { + delete edge.targetHandle; + } + return edges.concat(edge); +}; +/** + * A handy utility to update an existing [`Edge`](/api-reference/types/edge) with new properties. + *This searches your edge array for an edge with a matching `id` and updates its + *properties with the connection you provide. + * @public + * @param oldEdge - The edge you want to update. + * @param newConnection - The new connection you want to update the edge with. + * @param edges - The array of all current edges. + * @returns The updated edges array. + * + * @example + * ```js + *const onReconnect = useCallback( + * (oldEdge: Edge, newConnection: Connection) => setEdges((els) => reconnectEdge(oldEdge, newConnection, els)),[]); + *``` + */ +const reconnectEdge = (oldEdge, newConnection, edges, options = { shouldReplaceId: true }) => { + const { id: oldEdgeId, ...rest } = oldEdge; + if (!newConnection.source || !newConnection.target) { + options.onError?.('006', errorMessages['error006']()); + return edges; + } + const foundEdge = edges.find((e) => e.id === oldEdge.id); + if (!foundEdge) { + options.onError?.('007', errorMessages['error007'](oldEdgeId)); + return edges; + } + const edgeIdGenerator = options.getEdgeId || getEdgeId; + // Remove old edge and create the new edge with parameters of old edge. + const edge = { + ...rest, + id: options.shouldReplaceId ? edgeIdGenerator(newConnection) : oldEdgeId, + source: newConnection.source, + target: newConnection.target, + sourceHandle: newConnection.sourceHandle, + targetHandle: newConnection.targetHandle, + }; + return edges.filter((e) => e.id !== oldEdgeId).concat(edge); +}; + +/** + * Calculates the straight line path between two points. + * @public + * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path) + * and `offsetX`, `offsetY` between source handle and label. + * + * - `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. + * @example + * ```js + * const source = { x: 0, y: 20 }; + * const target = { x: 150, y: 100 }; + * + * const [path, labelX, labelY, offsetX, offsetY] = getStraightPath({ + * sourceX: source.x, + * sourceY: source.y, + * sourcePosition: Position.Right, + * targetX: target.x, + * targetY: target.y, + * targetPosition: Position.Left, + * }); + * ``` + * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to work with multiple edge paths at once. + */ +function getStraightPath({ sourceX, sourceY, targetX, targetY, }) { + const [labelX, labelY, offsetX, offsetY] = getEdgeCenter({ + sourceX, + sourceY, + targetX, + targetY, + }); + return [`M ${sourceX},${sourceY}L ${targetX},${targetY}`, labelX, labelY, offsetX, offsetY]; +} + +const handleDirections = { + [Position.Left]: { x: -1, y: 0 }, + [Position.Right]: { x: 1, y: 0 }, + [Position.Top]: { x: 0, y: -1 }, + [Position.Bottom]: { x: 0, y: 1 }, +}; +const getDirection = ({ source, sourcePosition = Position.Bottom, target, }) => { + if (sourcePosition === Position.Left || sourcePosition === Position.Right) { + return source.x < target.x ? { x: 1, y: 0 } : { x: -1, y: 0 }; + } + return source.y < target.y ? { x: 0, y: 1 } : { x: 0, y: -1 }; +}; +const distance = (a, b) => Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2)); +/* + * With this function we try to mimic an orthogonal edge routing behaviour + * It's not as good as a real orthogonal edge routing, but it's faster and good enough as a default for step and smooth step edges + */ +function getPoints({ source, sourcePosition = Position.Bottom, target, targetPosition = Position.Top, center, offset, stepPosition, }) { + const sourceDir = handleDirections[sourcePosition]; + const targetDir = handleDirections[targetPosition]; + const sourceGapped = { x: source.x + sourceDir.x * offset, y: source.y + sourceDir.y * offset }; + const targetGapped = { x: target.x + targetDir.x * offset, y: target.y + targetDir.y * offset }; + const dir = getDirection({ + source: sourceGapped, + sourcePosition, + target: targetGapped, + }); + const dirAccessor = dir.x !== 0 ? 'x' : 'y'; + const currDir = dir[dirAccessor]; + let points = []; + let centerX, centerY; + const sourceGapOffset = { x: 0, y: 0 }; + const targetGapOffset = { x: 0, y: 0 }; + const [, , defaultOffsetX, defaultOffsetY] = getEdgeCenter({ + sourceX: source.x, + sourceY: source.y, + targetX: target.x, + targetY: target.y, + }); + // opposite handle positions, default case + if (sourceDir[dirAccessor] * targetDir[dirAccessor] === -1) { + if (dirAccessor === 'x') { + // Primary direction is horizontal, so stepPosition affects X coordinate + centerX = center.x ?? sourceGapped.x + (targetGapped.x - sourceGapped.x) * stepPosition; + centerY = center.y ?? (sourceGapped.y + targetGapped.y) / 2; + } + else { + // Primary direction is vertical, so stepPosition affects Y coordinate + centerX = center.x ?? (sourceGapped.x + targetGapped.x) / 2; + centerY = center.y ?? sourceGapped.y + (targetGapped.y - sourceGapped.y) * stepPosition; + } + /* + * ---> + * | + * >--- + */ + const verticalSplit = [ + { x: centerX, y: sourceGapped.y }, + { x: centerX, y: targetGapped.y }, + ]; + /* + * | + * --- + * | + */ + const horizontalSplit = [ + { x: sourceGapped.x, y: centerY }, + { x: targetGapped.x, y: centerY }, + ]; + if (sourceDir[dirAccessor] === currDir) { + points = dirAccessor === 'x' ? verticalSplit : horizontalSplit; + } + else { + points = dirAccessor === 'x' ? horizontalSplit : verticalSplit; + } + } + else { + // sourceTarget means we take x from source and y from target, targetSource is the opposite + const sourceTarget = [{ x: sourceGapped.x, y: targetGapped.y }]; + const targetSource = [{ x: targetGapped.x, y: sourceGapped.y }]; + // this handles edges with same handle positions + if (dirAccessor === 'x') { + points = sourceDir.x === currDir ? targetSource : sourceTarget; + } + else { + points = sourceDir.y === currDir ? sourceTarget : targetSource; + } + if (sourcePosition === targetPosition) { + const diff = Math.abs(source[dirAccessor] - target[dirAccessor]); + // if an edge goes from right to right for example (sourcePosition === targetPosition) and the distance between source.x and target.x is less than the offset, the added point and the gapped source/target will overlap. This leads to a weird edge path. To avoid this we add a gapOffset to the source/target + if (diff <= offset) { + const gapOffset = Math.min(offset - 1, offset - diff); + if (sourceDir[dirAccessor] === currDir) { + sourceGapOffset[dirAccessor] = (sourceGapped[dirAccessor] > source[dirAccessor] ? -1 : 1) * gapOffset; + } + else { + targetGapOffset[dirAccessor] = (targetGapped[dirAccessor] > target[dirAccessor] ? -1 : 1) * gapOffset; + } + } + } + // these are conditions for handling mixed handle positions like Right -> Bottom for example + if (sourcePosition !== targetPosition) { + const dirAccessorOpposite = dirAccessor === 'x' ? 'y' : 'x'; + const isSameDir = sourceDir[dirAccessor] === targetDir[dirAccessorOpposite]; + const sourceGtTargetOppo = sourceGapped[dirAccessorOpposite] > targetGapped[dirAccessorOpposite]; + const sourceLtTargetOppo = sourceGapped[dirAccessorOpposite] < targetGapped[dirAccessorOpposite]; + const flipSourceTarget = (sourceDir[dirAccessor] === 1 && ((!isSameDir && sourceGtTargetOppo) || (isSameDir && sourceLtTargetOppo))) || + (sourceDir[dirAccessor] !== 1 && ((!isSameDir && sourceLtTargetOppo) || (isSameDir && sourceGtTargetOppo))); + if (flipSourceTarget) { + points = dirAccessor === 'x' ? sourceTarget : targetSource; + } + } + const sourceGapPoint = { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y }; + const targetGapPoint = { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y }; + const maxXDistance = Math.max(Math.abs(sourceGapPoint.x - points[0].x), Math.abs(targetGapPoint.x - points[0].x)); + const maxYDistance = Math.max(Math.abs(sourceGapPoint.y - points[0].y), Math.abs(targetGapPoint.y - points[0].y)); + // we want to place the label on the longest segment of the edge + if (maxXDistance >= maxYDistance) { + centerX = (sourceGapPoint.x + targetGapPoint.x) / 2; + centerY = points[0].y; + } + else { + centerX = points[0].x; + centerY = (sourceGapPoint.y + targetGapPoint.y) / 2; + } + } + const gappedSource = { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y }; + const gappedTarget = { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y }; + const pathPoints = [ + source, + // we only want to add the gapped source/target if they are different from the first/last point to avoid duplicates which can cause issues with the bends + ...(gappedSource.x !== points[0].x || gappedSource.y !== points[0].y ? [gappedSource] : []), + ...points, + ...(gappedTarget.x !== points[points.length - 1].x || gappedTarget.y !== points[points.length - 1].y + ? [gappedTarget] + : []), + target, + ]; + return [pathPoints, centerX, centerY, defaultOffsetX, defaultOffsetY]; +} +function getBend(a, b, c, size) { + const bendSize = Math.min(distance(a, b) / 2, distance(b, c) / 2, size); + const { x, y } = b; + // no bend + if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) { + return `L${x} ${y}`; + } + // first segment is horizontal + if (a.y === y) { + const xDir = a.x < c.x ? -1 : 1; + const yDir = a.y < c.y ? 1 : -1; + return `L ${x + bendSize * xDir},${y}Q ${x},${y} ${x},${y + bendSize * yDir}`; + } + const xDir = a.x < c.x ? 1 : -1; + const yDir = a.y < c.y ? -1 : 1; + return `L ${x},${y + bendSize * yDir}Q ${x},${y} ${x + bendSize * xDir},${y}`; +} +/** + * The `getSmoothStepPath` util returns everything you need to render a stepped path + * between two nodes. The `borderRadius` property can be used to choose how rounded + * the corners of those steps are. + * @public + * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path) + * and `offsetX`, `offsetY` between source handle and label. + * + * - `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. + * @example + * ```js + * const source = { x: 0, y: 20 }; + * const target = { x: 150, y: 100 }; + * + * const [path, labelX, labelY, offsetX, offsetY] = getSmoothStepPath({ + * sourceX: source.x, + * sourceY: source.y, + * sourcePosition: Position.Right, + * targetX: target.x, + * targetY: target.y, + * targetPosition: Position.Left, + * }); + * ``` + * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to work with multiple edge paths at once. + */ +function getSmoothStepPath({ sourceX, sourceY, sourcePosition = Position.Bottom, targetX, targetY, targetPosition = Position.Top, borderRadius = 5, centerX, centerY, offset = 20, stepPosition = 0.5, }) { + const [points, labelX, labelY, offsetX, offsetY] = getPoints({ + source: { x: sourceX, y: sourceY }, + sourcePosition, + target: { x: targetX, y: targetY }, + targetPosition, + center: { x: centerX, y: centerY }, + offset, + stepPosition, + }); + let path = `M${points[0].x} ${points[0].y}`; + for (let i = 1; i < points.length - 1; i++) { + path += getBend(points[i - 1], points[i], points[i + 1], borderRadius); + } + path += `L${points[points.length - 1].x} ${points[points.length - 1].y}`; + return [path, labelX, labelY, offsetX, offsetY]; +} + +function isNodeInitialized(node) { + return (node && + !!(node.internals.handleBounds || node.handles?.length) && + !!(node.measured.width || node.width || node.initialWidth)); +} +function getEdgePosition(params) { + const { sourceNode, targetNode } = params; + if (!isNodeInitialized(sourceNode) || !isNodeInitialized(targetNode)) { + return null; + } + const sourceHandleBounds = sourceNode.internals.handleBounds || toHandleBounds(sourceNode.handles); + const targetHandleBounds = targetNode.internals.handleBounds || toHandleBounds(targetNode.handles); + const sourceHandle = getHandle$1(sourceHandleBounds?.source ?? [], params.sourceHandle); + const targetHandle = getHandle$1( + // when connection type is loose we can define all handles as sources and connect source -> source + params.connectionMode === ConnectionMode.Strict + ? targetHandleBounds?.target ?? [] + : (targetHandleBounds?.target ?? []).concat(targetHandleBounds?.source ?? []), params.targetHandle); + if (!sourceHandle || !targetHandle) { + params.onError?.('008', errorMessages['error008'](!sourceHandle ? 'source' : 'target', { + id: params.id, + sourceHandle: params.sourceHandle, + targetHandle: params.targetHandle, + })); + return null; + } + const sourcePosition = sourceHandle?.position || Position.Bottom; + const targetPosition = targetHandle?.position || Position.Top; + const source = getHandlePosition(sourceNode, sourceHandle, sourcePosition); + const target = getHandlePosition(targetNode, targetHandle, targetPosition); + return { + sourceX: source.x, + sourceY: source.y, + targetX: target.x, + targetY: target.y, + sourcePosition, + targetPosition, + }; +} +function toHandleBounds(handles) { + if (!handles) { + return null; + } + const source = []; + const target = []; + for (const handle of handles) { + handle.width = handle.width ?? 1; + handle.height = handle.height ?? 1; + if (handle.type === 'source') { + source.push(handle); + } + else if (handle.type === 'target') { + target.push(handle); + } + } + return { + source, + target, + }; +} +function getHandlePosition(node, handle, fallbackPosition = Position.Left, center = false) { + const x = (handle?.x ?? 0) + node.internals.positionAbsolute.x; + const y = (handle?.y ?? 0) + node.internals.positionAbsolute.y; + const { width, height } = handle ?? getNodeDimensions(node); + if (center) { + return { x: x + width / 2, y: y + height / 2 }; + } + const position = handle?.position ?? fallbackPosition; + switch (position) { + case Position.Top: + return { x: x + width / 2, y }; + case Position.Right: + return { x: x + width, y: y + height / 2 }; + case Position.Bottom: + return { x: x + width / 2, y: y + height }; + case Position.Left: + return { x, y: y + height / 2 }; + } +} +function getHandle$1(bounds, handleId) { + if (!bounds) { + return null; + } + // if no handleId is given, we use the first handle, otherwise we check for the id + return (!handleId ? bounds[0] : bounds.find((d) => d.id === handleId)) || null; +} + +function getMarkerId(marker, id) { + if (!marker) { + return ''; + } + if (typeof marker === 'string') { + return marker; + } + const idPrefix = id ? `${id}__` : ''; + return `${idPrefix}${Object.keys(marker) + .sort() + .map((key) => `${key}=${marker[key]}`) + .join('&')}`; +} +function createMarkerIds(edges, { id, defaultColor, defaultMarkerStart, defaultMarkerEnd, }) { + const ids = new Set(); + return edges + .reduce((markers, edge) => { + [edge.markerStart || defaultMarkerStart, edge.markerEnd || defaultMarkerEnd].forEach((marker) => { + if (marker && typeof marker === 'object') { + const markerId = getMarkerId(marker, id); + if (!ids.has(markerId)) { + markers.push({ id: markerId, color: marker.color || defaultColor, ...marker }); + ids.add(markerId); + } + } + }); + return markers; + }, []) + .sort((a, b) => a.id.localeCompare(b.id)); +} + +function getNodeToolbarTransform(nodeRect, viewport, position, offset, align) { + let alignmentOffset = 0.5; + if (align === 'start') { + alignmentOffset = 0; + } + else if (align === 'end') { + alignmentOffset = 1; + } + /* + * position === Position.Top + * we set the x any y position of the toolbar based on the nodes position + */ + let pos = [ + (nodeRect.x + nodeRect.width * alignmentOffset) * viewport.zoom + viewport.x, + nodeRect.y * viewport.zoom + viewport.y - offset, + ]; + // and than shift it based on the alignment. The shift values are in %. + let shift = [-100 * alignmentOffset, -100]; + switch (position) { + case Position.Right: + pos = [ + (nodeRect.x + nodeRect.width) * viewport.zoom + viewport.x + offset, + (nodeRect.y + nodeRect.height * alignmentOffset) * viewport.zoom + viewport.y, + ]; + shift = [0, -100 * alignmentOffset]; + break; + case Position.Bottom: + pos[1] = (nodeRect.y + nodeRect.height) * viewport.zoom + viewport.y + offset; + shift[1] = 0; + break; + case Position.Left: + pos = [ + nodeRect.x * viewport.zoom + viewport.x - offset, + (nodeRect.y + nodeRect.height * alignmentOffset) * viewport.zoom + viewport.y, + ]; + shift = [-100, -100 * alignmentOffset]; + break; + } + return `translate(${pos[0]}px, ${pos[1]}px) translate(${shift[0]}%, ${shift[1]}%)`; +} + +const alignXToPercent = { + left: 0, + center: 50, + right: 100, +}; +const alignYToPercent = { + top: 0, + center: 50, + bottom: 100, +}; +function getEdgeToolbarTransform(x, y, zoom, alignX = 'center', alignY = 'center') { + return `translate(${x}px, ${y}px) scale(${1 / zoom}) translate(${-(alignXToPercent[alignX] ?? 50)}%, ${-(alignYToPercent[alignY] ?? 50)}%)`; +} + +const SELECTED_NODE_Z = 1000; +const ROOT_PARENT_Z_INCREMENT = 10; +const defaultOptions = { + nodeOrigin: [0, 0], + nodeExtent: infiniteExtent, + elevateNodesOnSelect: true, + zIndexMode: 'basic', + defaults: {}, +}; +const adoptUserNodesDefaultOptions = { + ...defaultOptions, + checkEquality: true, +}; +function mergeObjects(base, incoming) { + const result = { ...base }; + for (const key in incoming) { + if (incoming[key] !== undefined) { + // typecast is safe here, because we check for undefined + result[key] = incoming[key]; + } + } + return result; +} +function updateAbsolutePositions(nodeLookup, parentLookup, options) { + const _options = mergeObjects(defaultOptions, options); + for (const node of nodeLookup.values()) { + if (node.parentId) { + updateChildNode(node, nodeLookup, parentLookup, _options); + } + else { + const positionWithOrigin = getNodePositionWithOrigin(node, _options.nodeOrigin); + const extent = isCoordinateExtent(node.extent) ? node.extent : _options.nodeExtent; + const clampedPosition = clampPosition(positionWithOrigin, extent, getNodeDimensions(node)); + node.internals.positionAbsolute = clampedPosition; + } + } +} +function parseHandles(userNode, internalNode) { + if (!userNode.handles) { + return !userNode.measured ? undefined : internalNode?.internals.handleBounds; + } + const source = []; + const target = []; + for (const handle of userNode.handles) { + const handleBounds = { + id: handle.id, + width: handle.width ?? 1, + height: handle.height ?? 1, + nodeId: userNode.id, + x: handle.x, + y: handle.y, + position: handle.position, + type: handle.type, + }; + if (handle.type === 'source') { + source.push(handleBounds); + } + else if (handle.type === 'target') { + target.push(handleBounds); + } + } + return { + source, + target, + }; +} +function isManualZIndexMode(zIndexMode) { + return zIndexMode === 'manual'; +} +function adoptUserNodes(nodes, nodeLookup, parentLookup, options = {}) { + const _options = mergeObjects(adoptUserNodesDefaultOptions, options); + const rootParentIndex = { i: 0 }; + const tmpLookup = new Map(nodeLookup); + const selectedNodeZ = _options?.elevateNodesOnSelect && !isManualZIndexMode(_options.zIndexMode) ? SELECTED_NODE_Z : 0; + let nodesInitialized = nodes.length > 0; + let hasSelectedNodes = false; + nodeLookup.clear(); + parentLookup.clear(); + for (const userNode of nodes) { + let internalNode = tmpLookup.get(userNode.id); + if (_options.checkEquality && userNode === internalNode?.internals.userNode) { + nodeLookup.set(userNode.id, internalNode); + } + else { + const positionWithOrigin = getNodePositionWithOrigin(userNode, _options.nodeOrigin); + const extent = isCoordinateExtent(userNode.extent) ? userNode.extent : _options.nodeExtent; + const clampedPosition = clampPosition(positionWithOrigin, extent, getNodeDimensions(userNode)); + internalNode = { + ..._options.defaults, + ...userNode, + measured: { + width: userNode.measured?.width, + height: userNode.measured?.height, + }, + internals: { + positionAbsolute: clampedPosition, + // if user re-initializes the node or removes `measured` for whatever reason, we reset the handleBounds so that the node gets re-measured + handleBounds: parseHandles(userNode, internalNode), + z: calculateZ(userNode, selectedNodeZ, _options.zIndexMode), + userNode, + }, + }; + nodeLookup.set(userNode.id, internalNode); + } + if ((internalNode.measured === undefined || + internalNode.measured.width === undefined || + internalNode.measured.height === undefined) && + !internalNode.hidden) { + nodesInitialized = false; + } + if (userNode.parentId) { + updateChildNode(internalNode, nodeLookup, parentLookup, options, rootParentIndex); + } + hasSelectedNodes ||= userNode.selected ?? false; + } + return { nodesInitialized, hasSelectedNodes }; +} +function updateParentLookup(node, parentLookup) { + if (!node.parentId) { + return; + } + const childNodes = parentLookup.get(node.parentId); + if (childNodes) { + childNodes.set(node.id, node); + } + else { + parentLookup.set(node.parentId, new Map([[node.id, node]])); + } +} +/** + * Updates positionAbsolute and zIndex of a child node and the parentLookup. + */ +function updateChildNode(node, nodeLookup, parentLookup, options, rootParentIndex) { + const { elevateNodesOnSelect, nodeOrigin, nodeExtent, zIndexMode } = mergeObjects(defaultOptions, options); + const parentId = node.parentId; + const parentNode = nodeLookup.get(parentId); + if (!parentNode) { + console.warn(`Parent node ${parentId} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`); + return; + } + updateParentLookup(node, parentLookup); + // We just want to set the rootParentIndex for the first child + if (rootParentIndex && + !parentNode.parentId && + parentNode.internals.rootParentIndex === undefined && + zIndexMode === 'auto') { + parentNode.internals.rootParentIndex = ++rootParentIndex.i; + parentNode.internals.z = parentNode.internals.z + rootParentIndex.i * ROOT_PARENT_Z_INCREMENT; + } + // But we need to update rootParentIndex.i also when parent has not been updated + if (rootParentIndex && parentNode.internals.rootParentIndex !== undefined) { + rootParentIndex.i = parentNode.internals.rootParentIndex; + } + const selectedNodeZ = elevateNodesOnSelect && !isManualZIndexMode(zIndexMode) ? SELECTED_NODE_Z : 0; + const { x, y, z } = calculateChildXYZ(node, parentNode, nodeOrigin, nodeExtent, selectedNodeZ, zIndexMode); + const { positionAbsolute } = node.internals; + const positionChanged = x !== positionAbsolute.x || y !== positionAbsolute.y; + if (positionChanged || z !== node.internals.z) { + // we create a new object to mark the node as updated + nodeLookup.set(node.id, { + ...node, + internals: { + ...node.internals, + positionAbsolute: positionChanged ? { x, y } : positionAbsolute, + z, + }, + }); + } +} +function calculateZ(node, selectedNodeZ, zIndexMode) { + const zIndex = isNumeric(node.zIndex) ? node.zIndex : 0; + if (isManualZIndexMode(zIndexMode)) { + return zIndex; + } + return zIndex + (node.selected ? selectedNodeZ : 0); +} +function calculateChildXYZ(childNode, parentNode, nodeOrigin, nodeExtent, selectedNodeZ, zIndexMode) { + const { x: parentX, y: parentY } = parentNode.internals.positionAbsolute; + const childDimensions = getNodeDimensions(childNode); + const positionWithOrigin = getNodePositionWithOrigin(childNode, nodeOrigin); + const clampedPosition = isCoordinateExtent(childNode.extent) + ? clampPosition(positionWithOrigin, childNode.extent, childDimensions) + : positionWithOrigin; + let absolutePosition = clampPosition({ x: parentX + clampedPosition.x, y: parentY + clampedPosition.y }, nodeExtent, childDimensions); + if (childNode.extent === 'parent') { + absolutePosition = clampPositionToParent(absolutePosition, childDimensions, parentNode); + } + const childZ = calculateZ(childNode, selectedNodeZ, zIndexMode); + const parentZ = parentNode.internals.z ?? 0; + return { + x: absolutePosition.x, + y: absolutePosition.y, + z: parentZ >= childZ ? parentZ + 1 : childZ, + }; +} +function handleExpandParent(children, nodeLookup, parentLookup, nodeOrigin = [0, 0]) { + const changes = []; + const parentExpansions = new Map(); + // determine the expanded rectangle the child nodes would take for each parent + for (const child of children) { + const parent = nodeLookup.get(child.parentId); + if (!parent) { + continue; + } + const parentRect = parentExpansions.get(child.parentId)?.expandedRect ?? nodeToRect(parent); + const expandedRect = getBoundsOfRects(parentRect, child.rect); + parentExpansions.set(child.parentId, { expandedRect, parent }); + } + if (parentExpansions.size > 0) { + parentExpansions.forEach(({ expandedRect, parent }, parentId) => { + // determine the position & dimensions of the parent + const positionAbsolute = parent.internals.positionAbsolute; + const dimensions = getNodeDimensions(parent); + const origin = parent.origin ?? nodeOrigin; + // determine how much the parent expands in width and position + const xChange = expandedRect.x < positionAbsolute.x ? Math.round(Math.abs(positionAbsolute.x - expandedRect.x)) : 0; + const yChange = expandedRect.y < positionAbsolute.y ? Math.round(Math.abs(positionAbsolute.y - expandedRect.y)) : 0; + const newWidth = Math.max(dimensions.width, Math.round(expandedRect.width)); + const newHeight = Math.max(dimensions.height, Math.round(expandedRect.height)); + const widthChange = (newWidth - dimensions.width) * origin[0]; + const heightChange = (newHeight - dimensions.height) * origin[1]; + // We need to correct the position of the parent node if the origin is not [0,0] + if (xChange > 0 || yChange > 0 || widthChange || heightChange) { + changes.push({ + id: parentId, + type: 'position', + position: { + x: parent.position.x - xChange + widthChange, + y: parent.position.y - yChange + heightChange, + }, + }); + /* + * We move all child nodes in the oppsite direction + * so the x,y changes of the parent do not move the children + */ + parentLookup.get(parentId)?.forEach((childNode) => { + if (!children.some((child) => child.id === childNode.id)) { + changes.push({ + id: childNode.id, + type: 'position', + position: { + x: childNode.position.x + xChange, + y: childNode.position.y + yChange, + }, + }); + } + }); + } + // We need to correct the dimensions of the parent node if the origin is not [0,0] + if (dimensions.width < expandedRect.width || dimensions.height < expandedRect.height || xChange || yChange) { + changes.push({ + id: parentId, + type: 'dimensions', + setAttributes: true, + dimensions: { + width: newWidth + (xChange ? origin[0] * xChange - widthChange : 0), + height: newHeight + (yChange ? origin[1] * yChange - heightChange : 0), + }, + }); + } + }); + } + return changes; +} +function updateNodeInternals(updates, nodeLookup, parentLookup, domNode, nodeOrigin, nodeExtent, zIndexMode) { + const viewportNode = domNode?.querySelector('.xyflow__viewport'); + let updatedInternals = false; + if (!viewportNode) { + return { changes: [], updatedInternals }; + } + const changes = []; + const style = window.getComputedStyle(viewportNode); + const { m22: zoom } = new window.DOMMatrixReadOnly(style.transform); + // in this array we collect nodes, that might trigger changes (like expanding parent) + const parentExpandChildren = []; + for (const update of updates.values()) { + const node = nodeLookup.get(update.id); + if (!node) { + continue; + } + if (node.hidden) { + nodeLookup.set(node.id, { + ...node, + internals: { + ...node.internals, + handleBounds: undefined, + }, + }); + updatedInternals = true; + continue; + } + const dimensions = getDimensions(update.nodeElement); + const dimensionChanged = node.measured.width !== dimensions.width || node.measured.height !== dimensions.height; + const doUpdate = !!(dimensions.width && + dimensions.height && + (dimensionChanged || !node.internals.handleBounds || update.force)); + if (doUpdate) { + const nodeBounds = update.nodeElement.getBoundingClientRect(); + const extent = isCoordinateExtent(node.extent) ? node.extent : nodeExtent; + let { positionAbsolute } = node.internals; + if (node.parentId && node.extent === 'parent') { + const parentNode = nodeLookup.get(node.parentId); + if (parentNode) { + positionAbsolute = clampPositionToParent(positionAbsolute, dimensions, parentNode); + } + } + else if (extent) { + positionAbsolute = clampPosition(positionAbsolute, extent, dimensions); + } + const newNode = { + ...node, + measured: dimensions, + internals: { + ...node.internals, + positionAbsolute, + handleBounds: { + source: getHandleBounds('source', update.nodeElement, nodeBounds, zoom, node.id), + target: getHandleBounds('target', update.nodeElement, nodeBounds, zoom, node.id), + }, + }, + }; + nodeLookup.set(node.id, newNode); + if (node.parentId) { + updateChildNode(newNode, nodeLookup, parentLookup, { nodeOrigin, zIndexMode }); + } + updatedInternals = true; + if (dimensionChanged) { + changes.push({ + id: node.id, + type: 'dimensions', + dimensions, + }); + if (node.expandParent && node.parentId) { + parentExpandChildren.push({ + id: node.id, + parentId: node.parentId, + rect: nodeToRect(newNode, nodeOrigin), + }); + } + } + } + } + if (parentExpandChildren.length > 0) { + const parentExpandChanges = handleExpandParent(parentExpandChildren, nodeLookup, parentLookup, nodeOrigin); + changes.push(...parentExpandChanges); + } + return { changes, updatedInternals }; +} +async function panBy({ delta, panZoom, transform, translateExtent, width, height, }) { + if (!panZoom || (!delta.x && !delta.y)) { + return false; + } + const nextViewport = await panZoom.setViewportConstrained({ + x: transform[0] + delta.x, + y: transform[1] + delta.y, + zoom: transform[2], + }, [ + [0, 0], + [width, height], + ], translateExtent); + const transformChanged = !!nextViewport && + (nextViewport.x !== transform[0] || nextViewport.y !== transform[1] || nextViewport.k !== transform[2]); + return transformChanged; +} +/** + * this function adds the connection to the connectionLookup + * at the following keys: nodeId-type-handleId, nodeId-type and nodeId + * @param type type of the connection + * @param connection connection that should be added to the lookup + * @param connectionKey at which key the connection should be added + * @param connectionLookup reference to the connection lookup + * @param nodeId nodeId of the connection + * @param handleId handleId of the connection + */ +function addConnectionToLookup(type, connection, connectionKey, connectionLookup, nodeId, handleId) { + /* + * We add the connection to the connectionLookup at the following keys + * 1. nodeId, 2. nodeId-type, 3. nodeId-type-handleId + * If the key already exists, we add the connection to the existing map + */ + let key = nodeId; + const nodeMap = connectionLookup.get(key) || new Map(); + connectionLookup.set(key, nodeMap.set(connectionKey, connection)); + key = `${nodeId}-${type}`; + const typeMap = connectionLookup.get(key) || new Map(); + connectionLookup.set(key, typeMap.set(connectionKey, connection)); + if (handleId) { + key = `${nodeId}-${type}-${handleId}`; + const handleMap = connectionLookup.get(key) || new Map(); + connectionLookup.set(key, handleMap.set(connectionKey, connection)); + } +} +function updateConnectionLookup(connectionLookup, edgeLookup, edges) { + connectionLookup.clear(); + edgeLookup.clear(); + for (const edge of edges) { + const { source: sourceNode, target: targetNode, sourceHandle = null, targetHandle = null } = edge; + const connection = { edgeId: edge.id, source: sourceNode, target: targetNode, sourceHandle, targetHandle }; + const sourceKey = `${sourceNode}-${sourceHandle}--${targetNode}-${targetHandle}`; + const targetKey = `${targetNode}-${targetHandle}--${sourceNode}-${sourceHandle}`; + addConnectionToLookup('source', connection, targetKey, connectionLookup, sourceNode, sourceHandle); + addConnectionToLookup('target', connection, sourceKey, connectionLookup, targetNode, targetHandle); + edgeLookup.set(edge.id, edge); + } +} + +function shallowNodeData(a, b) { + if (a === null || b === null) { + return false; + } + const _a = Array.isArray(a) ? a : [a]; + const _b = Array.isArray(b) ? b : [b]; + if (_a.length !== _b.length) { + return false; + } + for (let i = 0; i < _a.length; i++) { + if (_a[i].id !== _b[i].id || _a[i].type !== _b[i].type || !Object.is(_a[i].data, _b[i].data)) { + return false; + } + } + return true; +} + +function isParentSelected(node, nodeLookup) { + if (!node.parentId) { + return false; + } + const parentNode = nodeLookup.get(node.parentId); + if (!parentNode) { + return false; + } + if (parentNode.selected) { + return true; + } + return isParentSelected(parentNode, nodeLookup); +} +function hasSelector(target, selector, domNode) { + let current = target; + do { + if (current?.matches?.(selector)) + return true; + if (current === domNode) + return false; + current = current?.parentElement; + } while (current); + return false; +} +// looks for all selected nodes and created a NodeDragItem for each of them +function getDragItems(nodeLookup, nodesDraggable, mousePos, nodeId) { + const dragItems = new Map(); + for (const [id, node] of nodeLookup) { + if ((node.selected || node.id === nodeId) && + (!node.parentId || !isParentSelected(node, nodeLookup)) && + (node.draggable || (nodesDraggable && typeof node.draggable === 'undefined'))) { + const internalNode = nodeLookup.get(id); + if (internalNode) { + dragItems.set(id, { + id, + position: internalNode.position || { x: 0, y: 0 }, + distance: { + x: mousePos.x - internalNode.internals.positionAbsolute.x, + y: mousePos.y - internalNode.internals.positionAbsolute.y, + }, + extent: internalNode.extent, + parentId: internalNode.parentId, + origin: internalNode.origin, + expandParent: internalNode.expandParent, + internals: { + positionAbsolute: internalNode.internals.positionAbsolute || { x: 0, y: 0 }, + }, + measured: { + width: internalNode.measured.width ?? 0, + height: internalNode.measured.height ?? 0, + }, + }); + } + } + } + return dragItems; +} +/* + * returns two params: + * 1. the dragged node (or the first of the list, if we are dragging a node selection) + * 2. array of selected nodes (for multi selections) + */ +function getEventHandlerParams({ nodeId, dragItems, nodeLookup, dragging = true, }) { + const nodesFromDragItems = []; + for (const [id, dragItem] of dragItems) { + const node = nodeLookup.get(id)?.internals.userNode; + if (node) { + nodesFromDragItems.push({ + ...node, + position: dragItem.position, + dragging, + }); + } + } + if (!nodeId) { + return [nodesFromDragItems[0], nodesFromDragItems]; + } + const node = nodeLookup.get(nodeId)?.internals.userNode; + return [ + !node + ? nodesFromDragItems[0] + : { + ...node, + position: dragItems.get(nodeId)?.position || node.position, + dragging, + }, + nodesFromDragItems, + ]; +} +/** + * If a selection is being dragged we want to apply the same snap offset to all nodes in the selection. + * This function calculates the snap offset based on the first node in the selection. + */ +function calculateSnapOffset({ dragItems, snapGrid, x, y, }) { + const refDragItem = dragItems.values().next().value; + if (!refDragItem) { + return null; + } + const refPos = { + x: x - refDragItem.distance.x, + y: y - refDragItem.distance.y, + }; + const refPosSnapped = snapPosition(refPos, snapGrid); + return { + x: refPosSnapped.x - refPos.x, + y: refPosSnapped.y - refPos.y, + }; +} + +function XYDrag({ onNodeMouseDown, getStoreItems, onDragStart, onDrag, onDragStop, }) { + let lastPos = { x: null, y: null }; + let autoPanId = 0; + let dragItems = new Map(); + let autoPanStarted = false; + let mousePosition = { x: 0, y: 0 }; + let containerBounds = null; + let dragStarted = false; + let d3Selection = null; + let abortDrag = false; // prevents unintentional dragging on multitouch + let nodePositionsChanged = false; + // we store the last drag event to be able to use it in the update function + let dragEvent = null; + // public functions + function update({ noDragClassName, handleSelector, domNode, isSelectable, nodeId, nodeClickDistance = 0, }) { + d3Selection = select(domNode); + function updateNodes({ x, y }) { + const { nodeLookup, nodeExtent, snapGrid, snapToGrid, nodeOrigin, onNodeDrag, onSelectionDrag, onError, updateNodePositions, } = getStoreItems(); + lastPos = { x, y }; + let hasChange = false; + const isMultiDrag = dragItems.size > 1; + const nodesBox = isMultiDrag && nodeExtent ? rectToBox(getInternalNodesBounds(dragItems)) : null; + const multiDragSnapOffset = isMultiDrag && snapToGrid + ? calculateSnapOffset({ + dragItems, + snapGrid, + x, + y, + }) + : null; + for (const [id, dragItem] of dragItems) { + /* + * if the node is not in the nodeLookup anymore, it was probably deleted while dragging + */ + if (!nodeLookup.has(id)) { + continue; + } + let nextPosition = { x: x - dragItem.distance.x, y: y - dragItem.distance.y }; + if (snapToGrid) { + nextPosition = multiDragSnapOffset + ? { + x: Math.round(nextPosition.x + multiDragSnapOffset.x), + y: Math.round(nextPosition.y + multiDragSnapOffset.y), + } + : snapPosition(nextPosition, snapGrid); + } + let adjustedNodeExtent = null; + if (isMultiDrag && nodeExtent && !dragItem.extent && nodesBox) { + const { positionAbsolute } = dragItem.internals; + const x1 = positionAbsolute.x - nodesBox.x + nodeExtent[0][0]; + const x2 = positionAbsolute.x + dragItem.measured.width - nodesBox.x2 + nodeExtent[1][0]; + const y1 = positionAbsolute.y - nodesBox.y + nodeExtent[0][1]; + const y2 = positionAbsolute.y + dragItem.measured.height - nodesBox.y2 + nodeExtent[1][1]; + adjustedNodeExtent = [ + [x1, y1], + [x2, y2], + ]; + } + const { position, positionAbsolute } = calculateNodePosition({ + nodeId: id, + nextPosition, + nodeLookup, + nodeExtent: adjustedNodeExtent ? adjustedNodeExtent : nodeExtent, + nodeOrigin, + onError, + }); + // we want to make sure that we only fire a change event when there is a change + hasChange = hasChange || dragItem.position.x !== position.x || dragItem.position.y !== position.y; + dragItem.position = position; + dragItem.internals.positionAbsolute = positionAbsolute; + } + nodePositionsChanged = nodePositionsChanged || hasChange; + if (!hasChange) { + return; + } + updateNodePositions(dragItems, true); + if (dragEvent && (onDrag || onNodeDrag || (!nodeId && onSelectionDrag))) { + const [currentNode, currentNodes] = getEventHandlerParams({ + nodeId, + dragItems, + nodeLookup, + }); + onDrag?.(dragEvent, dragItems, currentNode, currentNodes); + onNodeDrag?.(dragEvent, currentNode, currentNodes); + if (!nodeId) { + onSelectionDrag?.(dragEvent, currentNodes); + } + } + } + async function autoPan() { + if (!containerBounds) { + return; + } + const { transform, panBy, autoPanSpeed, autoPanOnNodeDrag } = getStoreItems(); + if (!autoPanOnNodeDrag) { + autoPanStarted = false; + cancelAnimationFrame(autoPanId); + return; + } + const [xMovement, yMovement] = calcAutoPan(mousePosition, containerBounds, autoPanSpeed); + if (xMovement !== 0 || yMovement !== 0) { + lastPos.x = (lastPos.x ?? 0) - xMovement / transform[2]; + lastPos.y = (lastPos.y ?? 0) - yMovement / transform[2]; + if (await panBy({ x: xMovement, y: yMovement })) { + updateNodes(lastPos); + } + } + autoPanId = requestAnimationFrame(autoPan); + } + function startDrag(event) { + const { nodeLookup, multiSelectionActive, nodesDraggable, transform, snapGrid, snapToGrid, selectNodesOnDrag, onNodeDragStart, onSelectionDragStart, unselectNodesAndEdges, } = getStoreItems(); + dragStarted = true; + if ((!selectNodesOnDrag || !isSelectable) && !multiSelectionActive && nodeId) { + if (!nodeLookup.get(nodeId)?.selected) { + // we need to reset selected nodes when selectNodesOnDrag=false + unselectNodesAndEdges(); + } + } + if (isSelectable && selectNodesOnDrag && nodeId) { + onNodeMouseDown?.(nodeId); + } + const pointerPos = getPointerPosition(event.sourceEvent, { transform, snapGrid, snapToGrid, containerBounds }); + lastPos = pointerPos; + dragItems = getDragItems(nodeLookup, nodesDraggable, pointerPos, nodeId); + if (dragItems.size > 0 && (onDragStart || onNodeDragStart || (!nodeId && onSelectionDragStart))) { + const [currentNode, currentNodes] = getEventHandlerParams({ + nodeId, + dragItems, + nodeLookup, + }); + onDragStart?.(event.sourceEvent, dragItems, currentNode, currentNodes); + onNodeDragStart?.(event.sourceEvent, currentNode, currentNodes); + if (!nodeId) { + onSelectionDragStart?.(event.sourceEvent, currentNodes); + } + } + } + const d3DragInstance = drag() + .clickDistance(nodeClickDistance) + .on('start', (event) => { + const { domNode, nodeDragThreshold, transform, snapGrid, snapToGrid } = getStoreItems(); + containerBounds = domNode?.getBoundingClientRect() || null; + abortDrag = false; + nodePositionsChanged = false; + dragEvent = event.sourceEvent; + if (nodeDragThreshold === 0) { + startDrag(event); + } + const pointerPos = getPointerPosition(event.sourceEvent, { transform, snapGrid, snapToGrid, containerBounds }); + lastPos = pointerPos; + mousePosition = getEventPosition(event.sourceEvent, containerBounds); + }) + .on('drag', (event) => { + const { autoPanOnNodeDrag, transform, snapGrid, snapToGrid, nodeDragThreshold, nodeLookup } = getStoreItems(); + const pointerPos = getPointerPosition(event.sourceEvent, { transform, snapGrid, snapToGrid, containerBounds }); + dragEvent = event.sourceEvent; + if ((event.sourceEvent.type === 'touchmove' && event.sourceEvent.touches.length > 1) || + // if user deletes a node while dragging, we need to abort the drag to prevent errors + (nodeId && !nodeLookup.has(nodeId))) { + abortDrag = true; + } + if (abortDrag) { + return; + } + if (!autoPanStarted && autoPanOnNodeDrag && dragStarted) { + autoPanStarted = true; + autoPan(); + } + if (!dragStarted) { + // Calculate distance in client coordinates for consistent drag threshold behavior across zoom levels + const currentMousePosition = getEventPosition(event.sourceEvent, containerBounds); + const x = currentMousePosition.x - mousePosition.x; + const y = currentMousePosition.y - mousePosition.y; + const distance = Math.sqrt(x * x + y * y); + if (distance > nodeDragThreshold) { + startDrag(event); + } + } + // skip events without movement + if ((lastPos.x !== pointerPos.xSnapped || lastPos.y !== pointerPos.ySnapped) && dragItems && dragStarted) { + mousePosition = getEventPosition(event.sourceEvent, containerBounds); + updateNodes(pointerPos); + } + }) + .on('end', (event) => { + if (!dragStarted || abortDrag) { + if (abortDrag && dragItems.size > 0) { + getStoreItems().updateNodePositions(dragItems, false); + } + return; + } + autoPanStarted = false; + dragStarted = false; + cancelAnimationFrame(autoPanId); + if (dragItems.size > 0) { + const { nodeLookup, updateNodePositions, onNodeDragStop, onSelectionDragStop } = getStoreItems(); + if (nodePositionsChanged) { + updateNodePositions(dragItems, false); + nodePositionsChanged = false; + } + if (onDragStop || onNodeDragStop || (!nodeId && onSelectionDragStop)) { + const [currentNode, currentNodes] = getEventHandlerParams({ + nodeId, + dragItems, + nodeLookup, + dragging: false, + }); + onDragStop?.(event.sourceEvent, dragItems, currentNode, currentNodes); + onNodeDragStop?.(event.sourceEvent, currentNode, currentNodes); + if (!nodeId) { + onSelectionDragStop?.(event.sourceEvent, currentNodes); + } + } + } + }) + .filter((event) => { + const target = event.target; + const isDraggable = !event.button && + (!noDragClassName || !hasSelector(target, `.${noDragClassName}`, domNode)) && + (!handleSelector || hasSelector(target, handleSelector, domNode)); + return isDraggable; + }); + d3Selection.call(d3DragInstance); + } + function destroy() { + d3Selection?.on('.drag', null); + } + return { + update, + destroy, + }; +} + +function getNodesWithinDistance(position, nodeLookup, distance) { + const nodes = []; + const rect = { + x: position.x - distance, + y: position.y - distance, + width: distance * 2, + height: distance * 2, + }; + for (const node of nodeLookup.values()) { + if (getOverlappingArea(rect, nodeToRect(node)) > 0) { + nodes.push(node); + } + } + return nodes; +} +/* + * this distance is used for the area around the user pointer + * while doing a connection for finding the closest nodes + */ +const ADDITIONAL_DISTANCE = 250; +function getClosestHandle(position, connectionRadius, nodeLookup, fromHandle) { + let closestHandles = []; + let minDistance = Infinity; + const closeNodes = getNodesWithinDistance(position, nodeLookup, connectionRadius + ADDITIONAL_DISTANCE); + for (const node of closeNodes) { + const allHandles = [...(node.internals.handleBounds?.source ?? []), ...(node.internals.handleBounds?.target ?? [])]; + for (const handle of allHandles) { + // if the handle is the same as the fromHandle we skip it + if (fromHandle.nodeId === handle.nodeId && fromHandle.type === handle.type && fromHandle.id === handle.id) { + continue; + } + // determine absolute position of the handle + const { x, y } = getHandlePosition(node, handle, handle.position, true); + const distance = Math.sqrt(Math.pow(x - position.x, 2) + Math.pow(y - position.y, 2)); + if (distance > connectionRadius) { + continue; + } + if (distance < minDistance) { + closestHandles = [{ ...handle, x, y }]; + minDistance = distance; + } + else if (distance === minDistance) { + // when multiple handles are on the same distance we collect all of them + closestHandles.push({ ...handle, x, y }); + } + } + } + if (!closestHandles.length) { + return null; + } + // when multiple handles overlay each other we prefer the opposite handle + if (closestHandles.length > 1) { + const oppositeHandleType = fromHandle.type === 'source' ? 'target' : 'source'; + return closestHandles.find((handle) => handle.type === oppositeHandleType) ?? closestHandles[0]; + } + return closestHandles[0]; +} +function getHandle(nodeId, handleType, handleId, nodeLookup, connectionMode, withAbsolutePosition = false) { + const node = nodeLookup.get(nodeId); + if (!node) { + return null; + } + const handles = connectionMode === 'strict' + ? node.internals.handleBounds?.[handleType] + : [...(node.internals.handleBounds?.source ?? []), ...(node.internals.handleBounds?.target ?? [])]; + const handle = (handleId ? handles?.find((h) => h.id === handleId) : handles?.[0]) ?? null; + return handle && withAbsolutePosition + ? { ...handle, ...getHandlePosition(node, handle, handle.position, true) } + : handle; +} +function getHandleType(edgeUpdaterType, handleDomNode) { + if (edgeUpdaterType) { + return edgeUpdaterType; + } + else if (handleDomNode?.classList.contains('target')) { + return 'target'; + } + else if (handleDomNode?.classList.contains('source')) { + return 'source'; + } + return null; +} +function isConnectionValid(isInsideConnectionRadius, isHandleValid) { + let isValid = null; + if (isHandleValid) { + isValid = true; + } + else if (isInsideConnectionRadius && !isHandleValid) { + isValid = false; + } + return isValid; +} + +const alwaysValid = () => true; +function onPointerDown(event, { connectionMode, connectionRadius, handleId, nodeId, edgeUpdaterType, isTarget, domNode, nodeLookup, lib, autoPanOnConnect, flowId, panBy, cancelConnection, onConnectStart, onConnect, onConnectEnd, isValidConnection = alwaysValid, onReconnectEnd, updateConnection, getTransform, getFromHandle, autoPanSpeed, dragThreshold = 1, handleDomNode, }) { + // when xyflow is used inside a shadow root we can't use document + const doc = getHostForElement(event.target); + let autoPanId = 0; + let closestHandle; + const { x, y } = getEventPosition(event); + const handleType = getHandleType(edgeUpdaterType, handleDomNode); + const containerBounds = domNode?.getBoundingClientRect(); + let connectionStarted = false; + if (!containerBounds || !handleType) { + return; + } + const fromHandleInternal = getHandle(nodeId, handleType, handleId, nodeLookup, connectionMode); + if (!fromHandleInternal) { + return; + } + let position = getEventPosition(event, containerBounds); + let autoPanStarted = false; + let connection = null; + let isValid = false; + let resultHandleDomNode = null; + // when the user is moving the mouse close to the edge of the canvas while connecting we move the canvas + function autoPan() { + if (!autoPanOnConnect || !containerBounds) { + return; + } + const [x, y] = calcAutoPan(position, containerBounds, autoPanSpeed); + panBy({ x, y }); + autoPanId = requestAnimationFrame(autoPan); + } + // Stays the same for all consecutive pointermove events + const fromHandle = { + ...fromHandleInternal, + nodeId, + type: handleType, + position: fromHandleInternal.position, + }; + const fromInternalNode = nodeLookup.get(nodeId); + const from = getHandlePosition(fromInternalNode, fromHandle, Position.Left, true); + let previousConnection = { + inProgress: true, + isValid: null, + from, + fromHandle, + fromPosition: fromHandle.position, + fromNode: fromInternalNode, + to: position, + toHandle: null, + toPosition: oppositePosition[fromHandle.position], + toNode: null, + pointer: position, + }; + function startConnection() { + connectionStarted = true; + updateConnection(previousConnection); + onConnectStart?.(event, { nodeId, handleId, handleType }); + } + if (dragThreshold === 0) { + startConnection(); + } + function onPointerMove(event) { + if (!connectionStarted) { + const { x: evtX, y: evtY } = getEventPosition(event); + const dx = evtX - x; + const dy = evtY - y; + const nextConnectionStarted = dx * dx + dy * dy > dragThreshold * dragThreshold; + if (!nextConnectionStarted) { + return; + } + startConnection(); + } + if (!getFromHandle() || !fromHandle) { + onPointerUp(event); + return; + } + const transform = getTransform(); + position = getEventPosition(event, containerBounds); + closestHandle = getClosestHandle(pointToRendererPoint(position, transform, false, [1, 1]), connectionRadius, nodeLookup, fromHandle); + if (!autoPanStarted) { + autoPan(); + autoPanStarted = true; + } + const result = isValidHandle(event, { + handle: closestHandle, + connectionMode, + fromNodeId: nodeId, + fromHandleId: handleId, + fromType: isTarget ? 'target' : 'source', + isValidConnection, + doc, + lib, + flowId, + nodeLookup, + }); + resultHandleDomNode = result.handleDomNode; + connection = result.connection; + isValid = isConnectionValid(!!closestHandle, result.isValid); + const fromInternalNode = nodeLookup.get(nodeId); + const from = fromInternalNode + ? getHandlePosition(fromInternalNode, fromHandle, Position.Left, true) + : previousConnection.from; + const newConnection = { + ...previousConnection, + from, + isValid, + to: result.toHandle && isValid + ? rendererPointToPoint({ x: result.toHandle.x, y: result.toHandle.y }, transform) + : position, + toHandle: result.toHandle, + toPosition: isValid && result.toHandle ? result.toHandle.position : oppositePosition[fromHandle.position], + toNode: result.toHandle ? nodeLookup.get(result.toHandle.nodeId) : null, + pointer: position, + }; + updateConnection(newConnection); + previousConnection = newConnection; + } + function onPointerUp(event) { + // Prevent multi-touch aborting connection + if ('touches' in event && event.touches.length > 0) { + return; + } + if (connectionStarted) { + if ((closestHandle || resultHandleDomNode) && connection && isValid) { + onConnect?.(connection); + } + /* + * it's important to get a fresh reference from the store here + * in order to get the latest state of onConnectEnd + */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { inProgress, ...connectionState } = previousConnection; + const finalConnectionState = { + ...connectionState, + toPosition: previousConnection.toHandle ? previousConnection.toPosition : null, + }; + onConnectEnd?.(event, finalConnectionState); + if (edgeUpdaterType) { + onReconnectEnd?.(event, finalConnectionState); + } + } + cancelConnection(); + cancelAnimationFrame(autoPanId); + autoPanStarted = false; + isValid = false; + connection = null; + resultHandleDomNode = null; + doc.removeEventListener('mousemove', onPointerMove); + doc.removeEventListener('mouseup', onPointerUp); + doc.removeEventListener('touchmove', onPointerMove); + doc.removeEventListener('touchend', onPointerUp); + } + doc.addEventListener('mousemove', onPointerMove); + doc.addEventListener('mouseup', onPointerUp); + doc.addEventListener('touchmove', onPointerMove); + doc.addEventListener('touchend', onPointerUp); +} +// checks if and returns connection in form of an object { source: 123, target: 312 } +function isValidHandle(event, { handle, connectionMode, fromNodeId, fromHandleId, fromType, doc, lib, flowId, isValidConnection = alwaysValid, nodeLookup, }) { + const isTarget = fromType === 'target'; + const handleDomNode = handle + ? doc.querySelector(`.${lib}-flow__handle[data-id="${flowId}-${handle?.nodeId}-${handle?.id}-${handle?.type}"]`) + : null; + const { x, y } = getEventPosition(event); + const handleBelow = doc.elementFromPoint(x, y); + /* + * we always want to prioritize the handle below the mouse cursor over the closest distance handle, + * because it could be that the center of another handle is closer to the mouse pointer than the handle below the cursor + */ + const handleToCheck = handleBelow?.classList.contains(`${lib}-flow__handle`) ? handleBelow : handleDomNode; + const result = { + handleDomNode: handleToCheck, + isValid: false, + connection: null, + toHandle: null, + }; + if (handleToCheck) { + const handleType = getHandleType(undefined, handleToCheck); + const handleNodeId = handleToCheck.getAttribute('data-nodeid'); + const handleId = handleToCheck.getAttribute('data-handleid'); + const connectable = handleToCheck.classList.contains('connectable'); + const connectableEnd = handleToCheck.classList.contains('connectableend'); + if (!handleNodeId || !handleType) { + return result; + } + const connection = { + source: isTarget ? handleNodeId : fromNodeId, + sourceHandle: isTarget ? handleId : fromHandleId, + target: isTarget ? fromNodeId : handleNodeId, + targetHandle: isTarget ? fromHandleId : handleId, + }; + result.connection = connection; + const isConnectable = connectable && connectableEnd; + // in strict mode we don't allow target to target or source to source connections + const isValid = isConnectable && + (connectionMode === ConnectionMode.Strict + ? (isTarget && handleType === 'source') || (!isTarget && handleType === 'target') + : handleNodeId !== fromNodeId || handleId !== fromHandleId); + result.isValid = isValid && isValidConnection(connection); + result.toHandle = getHandle(handleNodeId, handleType, handleId, nodeLookup, connectionMode, true); + } + return result; +} +const XYHandle = { + onPointerDown, + isValid: isValidHandle, +}; + +function XYMinimap({ domNode, panZoom, getTransform, getViewScale }) { + const selection = select(domNode); + function update({ translateExtent, width, height, zoomStep = 1, pannable = true, zoomable = true, inversePan = false, }) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const zoomHandler = (event) => { + if (event.sourceEvent.type !== 'wheel' || !panZoom) { + return; + } + const transform = getTransform(); + const factor = event.sourceEvent.ctrlKey && isMacOs() ? 10 : 1; + const pinchDelta = -event.sourceEvent.deltaY * + (event.sourceEvent.deltaMode === 1 ? 0.05 : event.sourceEvent.deltaMode ? 1 : 0.002) * + zoomStep; + const nextZoom = transform[2] * Math.pow(2, pinchDelta * factor); + panZoom.scaleTo(nextZoom); + }; + let panStart = [0, 0]; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const panStartHandler = (event) => { + if (event.sourceEvent.type === 'mousedown' || event.sourceEvent.type === 'touchstart') { + panStart = [ + event.sourceEvent.clientX ?? event.sourceEvent.touches[0].clientX, + event.sourceEvent.clientY ?? event.sourceEvent.touches[0].clientY, + ]; + } + }; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const panHandler = (event) => { + const transform = getTransform(); + if ((event.sourceEvent.type !== 'mousemove' && event.sourceEvent.type !== 'touchmove') || !panZoom) { + return; + } + const panCurrent = [ + event.sourceEvent.clientX ?? event.sourceEvent.touches[0].clientX, + event.sourceEvent.clientY ?? event.sourceEvent.touches[0].clientY, + ]; + const panDelta = [panCurrent[0] - panStart[0], panCurrent[1] - panStart[1]]; + panStart = panCurrent; + const moveScale = getViewScale() * Math.max(transform[2], Math.log(transform[2])) * (inversePan ? -1 : 1); + const position = { + x: transform[0] - panDelta[0] * moveScale, + y: transform[1] - panDelta[1] * moveScale, + }; + const extent = [ + [0, 0], + [width, height], + ]; + panZoom.setViewportConstrained({ + x: position.x, + y: position.y, + zoom: transform[2], + }, extent, translateExtent); + }; + const zoomAndPanHandler = zoom() + .on('start', panStartHandler) + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + .on('zoom', pannable ? panHandler : null) + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + .on('zoom.wheel', zoomable ? zoomHandler : null); + selection.call(zoomAndPanHandler, {}); + } + function destroy() { + selection.on('zoom', null); + } + return { + update, + destroy, + pointer, + }; +} + +/* eslint-disable @typescript-eslint/no-explicit-any */ +const transformToViewport = (transform) => ({ + x: transform.x, + y: transform.y, + zoom: transform.k, +}); +const viewportToTransform = ({ x, y, zoom }) => zoomIdentity.translate(x, y).scale(zoom); +const isWrappedWithClass = (event, className) => event.target.closest(`.${className}`); +const isRightClickPan = (panOnDrag, usedButton) => usedButton === 2 && Array.isArray(panOnDrag) && panOnDrag.includes(2); +// taken from d3-ease: https://github.com/d3/d3-ease/blob/main/src/cubic.js +const defaultEase = (t) => ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2; +const getD3Transition = (selection, duration = 0, ease = defaultEase, onEnd = () => { }) => { + const hasDuration = typeof duration === 'number' && duration > 0; + if (!hasDuration) { + onEnd(); + } + return hasDuration ? selection.transition().duration(duration).ease(ease).on('end', onEnd) : selection; +}; +const wheelDelta = (event) => { + const factor = event.ctrlKey && isMacOs() ? 10 : 1; + return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * factor; +}; + +function createPanOnScrollHandler({ zoomPanValues, noWheelClassName, d3Selection, d3Zoom, panOnScrollMode, panOnScrollSpeed, zoomOnPinch, onPanZoomStart, onPanZoom, onPanZoomEnd, }) { + return (event) => { + if (isWrappedWithClass(event, noWheelClassName)) { + if (event.ctrlKey) { + event.preventDefault(); // stop native page zoom for pinch zooming + } + return false; + } + event.preventDefault(); + event.stopImmediatePropagation(); + const currentZoom = d3Selection.property('__zoom').k || 1; + // macos sets ctrlKey=true for pinch gesture on a trackpad + if (event.ctrlKey && zoomOnPinch) { + const point = pointer(event); + const pinchDelta = wheelDelta(event); + const zoom = currentZoom * Math.pow(2, pinchDelta); + // @ts-ignore + d3Zoom.scaleTo(d3Selection, zoom, point, event); + return; + } + /* + * increase scroll speed in firefox + * firefox: deltaMode === 1; chrome: deltaMode === 0 + */ + const deltaNormalize = event.deltaMode === 1 ? 20 : 1; + let deltaX = panOnScrollMode === PanOnScrollMode.Vertical ? 0 : event.deltaX * deltaNormalize; + let deltaY = panOnScrollMode === PanOnScrollMode.Horizontal ? 0 : event.deltaY * deltaNormalize; + // this enables vertical scrolling with shift + scroll on windows + if (!isMacOs() && event.shiftKey && panOnScrollMode !== PanOnScrollMode.Vertical) { + deltaX = event.deltaY * deltaNormalize; + deltaY = 0; + } + d3Zoom.translateBy(d3Selection, -(deltaX / currentZoom) * panOnScrollSpeed, -(deltaY / currentZoom) * panOnScrollSpeed, + // @ts-ignore + { internal: true }); + const nextViewport = transformToViewport(d3Selection.property('__zoom')); + clearTimeout(zoomPanValues.panScrollTimeout); + /* + * for pan on scroll we need to handle the event calls on our own + * we can't use the start, zoom and end events from d3-zoom + * because start and move gets called on every scroll event and not once at the beginning + */ + if (!zoomPanValues.isPanScrolling) { + zoomPanValues.isPanScrolling = true; + onPanZoomStart?.(event, nextViewport); + } + else { + onPanZoom?.(event, nextViewport); + } + zoomPanValues.panScrollTimeout = setTimeout(() => { + onPanZoomEnd?.(event, nextViewport); + zoomPanValues.isPanScrolling = false; + }, 150); + }; +} +function createZoomOnScrollHandler({ noWheelClassName, preventScrolling, d3ZoomHandler }) { + return function (event, d) { + const isWheel = event.type === 'wheel'; + // we still want to enable pinch zooming even if preventScrolling is set to false + const preventZoom = !preventScrolling && isWheel && !event.ctrlKey; + const hasNoWheelClass = isWrappedWithClass(event, noWheelClassName); + // if user is pinch zooming above a nowheel element, we don't want the browser to zoom + if (event.ctrlKey && isWheel && hasNoWheelClass) { + event.preventDefault(); + } + if (preventZoom || hasNoWheelClass) { + return null; + } + event.preventDefault(); + d3ZoomHandler.call(this, event, d); + }; +} +function createPanZoomStartHandler({ zoomPanValues, onDraggingChange, onPanZoomStart }) { + return (event) => { + if (event.sourceEvent?.internal) { + return; + } + const viewport = transformToViewport(event.transform); + // we need to remember it here, because it's always 0 in the "zoom" event + zoomPanValues.mouseButton = event.sourceEvent?.button || 0; + zoomPanValues.isZoomingOrPanning = true; + zoomPanValues.prevViewport = viewport; + if (event.sourceEvent?.type === 'mousedown') { + onDraggingChange(true); + } + if (onPanZoomStart) { + onPanZoomStart?.(event.sourceEvent, viewport); + } + }; +} +function createPanZoomHandler({ zoomPanValues, panOnDrag, onPaneContextMenu, onTransformChange, onPanZoom, }) { + return (event) => { + zoomPanValues.usedRightMouseButton = !!(onPaneContextMenu && isRightClickPan(panOnDrag, zoomPanValues.mouseButton ?? 0)); + if (!event.sourceEvent?.sync) { + onTransformChange([event.transform.x, event.transform.y, event.transform.k]); + } + if (onPanZoom && !event.sourceEvent?.internal) { + onPanZoom?.(event.sourceEvent, transformToViewport(event.transform)); + } + }; +} +function createPanZoomEndHandler({ zoomPanValues, panOnDrag, panOnScroll, onDraggingChange, onPanZoomEnd, onPaneContextMenu, }) { + return (event) => { + if (event.sourceEvent?.internal) { + return; + } + zoomPanValues.isZoomingOrPanning = false; + if (onPaneContextMenu && + isRightClickPan(panOnDrag, zoomPanValues.mouseButton ?? 0) && + !zoomPanValues.usedRightMouseButton && + event.sourceEvent) { + onPaneContextMenu(event.sourceEvent); + } + zoomPanValues.usedRightMouseButton = false; + onDraggingChange(false); + if (onPanZoomEnd) { + const viewport = transformToViewport(event.transform); + zoomPanValues.prevViewport = viewport; + clearTimeout(zoomPanValues.timerId); + zoomPanValues.timerId = setTimeout(() => { + onPanZoomEnd?.(event.sourceEvent, viewport); + }, + // we need a setTimeout for panOnScroll to suppress multiple end events fired during scroll + panOnScroll ? 150 : 0); + } + }; +} + +/* eslint-disable @typescript-eslint/no-explicit-any */ +function createFilter({ zoomActivationKeyPressed, zoomOnScroll, zoomOnPinch, panOnDrag, panOnScroll, zoomOnDoubleClick, userSelectionActive, noWheelClassName, noPanClassName, lib, connectionInProgress, }) { + return (event) => { + const zoomScroll = zoomActivationKeyPressed || zoomOnScroll; + const pinchZoom = zoomOnPinch && event.ctrlKey; + const isWheelEvent = event.type === 'wheel'; + if (event.button === 1 && + event.type === 'mousedown' && + (isWrappedWithClass(event, `${lib}-flow__node`) || isWrappedWithClass(event, `${lib}-flow__edge`))) { + return true; + } + // if all interactions are disabled, we prevent all zoom events + if (!panOnDrag && !zoomScroll && !panOnScroll && !zoomOnDoubleClick && !zoomOnPinch) { + return false; + } + // during a selection we prevent all other interactions + if (userSelectionActive) { + return false; + } + // we want to disable pinch-zooming while making a connection + if (connectionInProgress && !isWheelEvent) { + return false; + } + // if the target element is inside an element with the nowheel class, we prevent zooming + if (isWrappedWithClass(event, noWheelClassName) && isWheelEvent) { + return false; + } + // if the target element is inside an element with the nopan class, we prevent panning + if (isWrappedWithClass(event, noPanClassName) && + (!isWheelEvent || (panOnScroll && isWheelEvent && !zoomActivationKeyPressed))) { + return false; + } + if (!zoomOnPinch && event.ctrlKey && isWheelEvent) { + return false; + } + if (!zoomOnPinch && event.type === 'touchstart' && event.touches?.length > 1) { + event.preventDefault(); // if you manage to start with 2 touches, we prevent native zoom + return false; + } + // when there is no scroll handling enabled, we prevent all wheel events + if (!zoomScroll && !panOnScroll && !pinchZoom && isWheelEvent) { + return false; + } + // if the pane is not movable, we prevent dragging it with mousestart or touchstart + if (!panOnDrag && (event.type === 'mousedown' || event.type === 'touchstart')) { + return false; + } + // if the pane is only movable using allowed clicks + if (Array.isArray(panOnDrag) && !panOnDrag.includes(event.button) && event.type === 'mousedown') { + return false; + } + // We only allow right clicks if pan on drag is set to right click + const buttonAllowed = (Array.isArray(panOnDrag) && panOnDrag.includes(event.button)) || !event.button || event.button <= 1; + // default filter for d3-zoom + return (!event.ctrlKey || isWheelEvent) && buttonAllowed; + }; +} + +function XYPanZoom({ domNode, minZoom, maxZoom, translateExtent, viewport, onPanZoom, onPanZoomStart, onPanZoomEnd, onDraggingChange, }) { + const zoomPanValues = { + isZoomingOrPanning: false, + usedRightMouseButton: false, + prevViewport: { }, + mouseButton: 0, + timerId: undefined, + panScrollTimeout: undefined, + isPanScrolling: false, + }; + const bbox = domNode.getBoundingClientRect(); + /* + * Cache the pane extent and refresh it from a ResizeObserver. Otherwise d3-zoom falls back to its + * defaultExtent, which reads clientWidth/clientHeight and forces a synchronous layout while panning + * and pinching. The observer is never disconnected on purpose: destroy() also runs to pause zooming + * during a user selection, so disconnecting there would leave the cache stale. It becomes unreachable + * and is garbage collected with the pane on unmount. + */ + let cachedExtent = [ + [0, 0], + [bbox.width, bbox.height], + ]; + const extentResizeObserver = typeof ResizeObserver !== 'undefined' + ? new ResizeObserver((entries) => { + const entry = entries[0]; + if (entry) { + cachedExtent = [ + [0, 0], + [entry.contentRect.width, entry.contentRect.height], + ]; + } + }) + : null; + extentResizeObserver?.observe(domNode); + const d3ZoomInstance = zoom() + .extent(() => cachedExtent) + .scaleExtent([minZoom, maxZoom]) + .translateExtent(translateExtent); + const d3Selection = select(domNode).call(d3ZoomInstance); + setViewportConstrained({ + x: viewport.x, + y: viewport.y, + zoom: clamp(viewport.zoom, minZoom, maxZoom), + }, [ + [0, 0], + [bbox.width, bbox.height], + ], translateExtent); + const d3ZoomHandler = d3Selection.on('wheel.zoom'); + const d3DblClickZoomHandler = d3Selection.on('dblclick.zoom'); + d3ZoomInstance.wheelDelta(wheelDelta); + async function setTransform(transform, options) { + if (d3Selection) { + return new Promise((resolve) => { + d3ZoomInstance?.interpolate(options?.interpolate === 'linear' ? interpolate : interpolateZoom).transform(getD3Transition(d3Selection, options?.duration, options?.ease, () => resolve(true)), transform); + }); + } + return false; + } + // public functions + function update({ noWheelClassName, noPanClassName, onPaneContextMenu, userSelectionActive, panOnScroll, panOnDrag, panOnScrollMode, panOnScrollSpeed, preventScrolling, zoomOnPinch, zoomOnScroll, zoomOnDoubleClick, zoomActivationKeyPressed, lib, onTransformChange, connectionInProgress, paneClickDistance, selectionOnDrag, }) { + if (userSelectionActive && !zoomPanValues.isZoomingOrPanning) { + destroy(); + } + const isPanOnScroll = panOnScroll && !zoomActivationKeyPressed && !userSelectionActive; + d3ZoomInstance.clickDistance(selectionOnDrag ? Infinity : !isNumeric(paneClickDistance) || paneClickDistance < 0 ? 0 : paneClickDistance); + const wheelHandler = isPanOnScroll + ? createPanOnScrollHandler({ + zoomPanValues, + noWheelClassName, + d3Selection, + d3Zoom: d3ZoomInstance, + panOnScrollMode, + panOnScrollSpeed, + zoomOnPinch, + onPanZoomStart, + onPanZoom, + onPanZoomEnd, + }) + : createZoomOnScrollHandler({ + noWheelClassName, + preventScrolling, + d3ZoomHandler, + }); + d3Selection.on('wheel.zoom', wheelHandler, { passive: false }); + // pan zoom start + const startHandler = createPanZoomStartHandler({ + zoomPanValues, + onDraggingChange, + onPanZoomStart, + }); + d3ZoomInstance.on('start', startHandler); + // pan zoom + const panZoomHandler = createPanZoomHandler({ + zoomPanValues, + panOnDrag, + onPaneContextMenu: !!onPaneContextMenu, + onPanZoom, + onTransformChange, + }); + d3ZoomInstance.on('zoom', panZoomHandler); + // pan zoom end + const panZoomEndHandler = createPanZoomEndHandler({ + zoomPanValues, + panOnDrag, + panOnScroll, + onPaneContextMenu, + onPanZoomEnd, + onDraggingChange, + }); + d3ZoomInstance.on('end', panZoomEndHandler); + const filter = createFilter({ + zoomActivationKeyPressed, + panOnDrag, + zoomOnScroll, + panOnScroll, + zoomOnDoubleClick, + zoomOnPinch, + userSelectionActive, + noPanClassName, + noWheelClassName, + lib, + connectionInProgress, + }); + d3ZoomInstance.filter(filter); + /* + * We cannot add zoomOnDoubleClick to the filter above because + * double tapping on touch screens circumvents the filter and + * dblclick.zoom is fired on the selection directly + */ + if (zoomOnDoubleClick) { + d3Selection.on('dblclick.zoom', d3DblClickZoomHandler); + } + else { + d3Selection.on('dblclick.zoom', null); + } + } + function destroy() { + d3ZoomInstance.on('zoom', null); + } + async function setViewportConstrained(viewport, extent, translateExtent) { + const nextTransform = viewportToTransform(viewport); + const contrainedTransform = d3ZoomInstance?.constrain()(nextTransform, extent, translateExtent); + if (contrainedTransform) { + await setTransform(contrainedTransform); + } + return contrainedTransform; + } + async function setViewport(viewport, options) { + const nextTransform = viewportToTransform(viewport); + await setTransform(nextTransform, options); + return nextTransform; + } + function syncViewport(viewport) { + if (d3Selection) { + const nextTransform = viewportToTransform(viewport); + const currentTransform = d3Selection.property('__zoom'); + if (currentTransform.k !== viewport.zoom || + currentTransform.x !== viewport.x || + currentTransform.y !== viewport.y) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + d3ZoomInstance?.transform(d3Selection, nextTransform, null, { sync: true }); + } + } + } + function getViewport() { + const transform = d3Selection ? zoomTransform(d3Selection.node()) : { x: 0, y: 0, k: 1 }; + return { x: transform.x, y: transform.y, zoom: transform.k }; + } + async function scaleTo(zoom, options) { + if (d3Selection) { + return new Promise((resolve) => { + d3ZoomInstance?.interpolate(options?.interpolate === 'linear' ? interpolate : interpolateZoom).scaleTo(getD3Transition(d3Selection, options?.duration, options?.ease, () => resolve(true)), zoom); + }); + } + return false; + } + async function scaleBy(factor, options) { + if (d3Selection) { + return new Promise((resolve) => { + d3ZoomInstance?.interpolate(options?.interpolate === 'linear' ? interpolate : interpolateZoom).scaleBy(getD3Transition(d3Selection, options?.duration, options?.ease, () => resolve(true)), factor); + }); + } + return false; + } + function setScaleExtent(scaleExtent) { + d3ZoomInstance?.scaleExtent(scaleExtent); + } + function setTranslateExtent(translateExtent) { + d3ZoomInstance?.translateExtent(translateExtent); + } + function setClickDistance(distance) { + const validDistance = !isNumeric(distance) || distance < 0 ? 0 : distance; + d3ZoomInstance?.clickDistance(validDistance); + } + return { + update, + destroy, + setViewport, + setViewportConstrained, + getViewport, + scaleTo, + scaleBy, + setScaleExtent, + setTranslateExtent, + syncViewport, + setClickDistance, + }; +} + +/** + * Used to determine the variant of the resize control + * + * @public + */ +var ResizeControlVariant; +(function (ResizeControlVariant) { + ResizeControlVariant["Line"] = "line"; + ResizeControlVariant["Handle"] = "handle"; +})(ResizeControlVariant || (ResizeControlVariant = {})); +const XY_RESIZER_HANDLE_POSITIONS = ['top-left', 'top-right', 'bottom-left', 'bottom-right']; +const XY_RESIZER_LINE_POSITIONS = ['top', 'right', 'bottom', 'left']; + +/** + * Get all connecting edges for a given set of nodes + * @param width - new width of the node + * @param prevWidth - previous width of the node + * @param height - new height of the node + * @param prevHeight - previous height of the node + * @param affectsX - whether to invert the resize direction for the x axis + * @param affectsY - whether to invert the resize direction for the y axis + * @returns array of two numbers representing the direction of the resize for each axis, 0 = no change, 1 = increase, -1 = decrease + */ +function getResizeDirection({ width, prevWidth, height, prevHeight, affectsX, affectsY, }) { + const deltaWidth = width - prevWidth; + const deltaHeight = height - prevHeight; + const direction = [deltaWidth > 0 ? 1 : deltaWidth < 0 ? -1 : 0, deltaHeight > 0 ? 1 : deltaHeight < 0 ? -1 : 0]; + if (deltaWidth && affectsX) { + direction[0] = direction[0] * -1; + } + if (deltaHeight && affectsY) { + direction[1] = direction[1] * -1; + } + return direction; +} +/** + * Parses the control position that is being dragged to dimensions that are being resized + * @param controlPosition - position of the control that is being dragged + * @returns isHorizontal, isVertical, affectsX, affectsY, + */ +function getControlDirection(controlPosition) { + const isHorizontal = controlPosition.includes('right') || controlPosition.includes('left'); + const isVertical = controlPosition.includes('bottom') || controlPosition.includes('top'); + const affectsX = controlPosition.includes('left'); + const affectsY = controlPosition.includes('top'); + return { + isHorizontal, + isVertical, + affectsX, + affectsY, + }; +} +function getLowerExtentClamp(lowerExtent, lowerBound) { + return Math.max(0, lowerBound - lowerExtent); +} +function getUpperExtentClamp(upperExtent, upperBound) { + return Math.max(0, upperExtent - upperBound); +} +function getSizeClamp(size, minSize, maxSize) { + return Math.max(0, minSize - size, size - maxSize); +} +function xor(a, b) { + return a ? !b : b; +} +/** + * Calculates new width & height and x & y of node after resize based on pointer position + * @description - Buckle up, this is a chunky one... If you want to determine the new dimensions of a node after a resize, + * you have to account for all possible restrictions: min/max width/height of the node, the maximum extent the node is allowed + * to move in (in this case: resize into) determined by the parent node, the minimal extent determined by child nodes + * with expandParent or extent: 'parent' set and oh yeah, these things also have to work with keepAspectRatio! + * The way this is done is by determining how much each of these restricting actually restricts the resize and then applying the + * strongest restriction. Because the resize affects x, y and width, height and width, height of a opposing side with keepAspectRatio, + * the resize amount is always kept in distX & distY amount (the distance in mouse movement) + * Instead of clamping each value, we first calculate the biggest 'clamp' (for the lack of a better name) and then apply it to all values. + * To complicate things nodeOrigin has to be taken into account as well. This is done by offsetting the nodes as if their origin is [0, 0], + * then calculating the restrictions as usual + * @param startValues - starting values of resize + * @param controlDirection - dimensions affected by the resize + * @param pointerPosition - the current pointer position corrected for snapping + * @param boundaries - minimum and maximum dimensions of the node + * @param keepAspectRatio - prevent changes of asprect ratio + * @returns x, y, width and height of the node after resize + */ +function getDimensionsAfterResize(startValues, controlDirection, pointerPosition, boundaries, keepAspectRatio, nodeOrigin, extent, childExtent) { + let { affectsX, affectsY } = controlDirection; + const { isHorizontal, isVertical } = controlDirection; + const isDiagonal = isHorizontal && isVertical; + const { xSnapped, ySnapped } = pointerPosition; + const { minWidth, maxWidth, minHeight, maxHeight } = boundaries; + const { x: startX, y: startY, width: startWidth, height: startHeight, aspectRatio } = startValues; + let distX = Math.floor(isHorizontal ? xSnapped - startValues.pointerX : 0); + let distY = Math.floor(isVertical ? ySnapped - startValues.pointerY : 0); + const newWidth = startWidth + (affectsX ? -distX : distX); + const newHeight = startHeight + (affectsY ? -distY : distY); + const originOffsetX = -nodeOrigin[0] * startWidth; + const originOffsetY = -nodeOrigin[1] * startHeight; + // Check if maxWidth, minWWidth, maxHeight, minHeight are restricting the resize + let clampX = getSizeClamp(newWidth, minWidth, maxWidth); + let clampY = getSizeClamp(newHeight, minHeight, maxHeight); + // Check if extent is restricting the resize + if (extent) { + let xExtentClamp = 0; + let yExtentClamp = 0; + if (affectsX && distX < 0) { + xExtentClamp = getLowerExtentClamp(startX + distX + originOffsetX, extent[0][0]); + } + else if (!affectsX && distX > 0) { + xExtentClamp = getUpperExtentClamp(startX + newWidth + originOffsetX, extent[1][0]); + } + if (affectsY && distY < 0) { + yExtentClamp = getLowerExtentClamp(startY + distY + originOffsetY, extent[0][1]); + } + else if (!affectsY && distY > 0) { + yExtentClamp = getUpperExtentClamp(startY + newHeight + originOffsetY, extent[1][1]); + } + clampX = Math.max(clampX, xExtentClamp); + clampY = Math.max(clampY, yExtentClamp); + } + // Check if the child extent is restricting the resize + if (childExtent) { + let xExtentClamp = 0; + let yExtentClamp = 0; + if (affectsX && distX > 0) { + xExtentClamp = getUpperExtentClamp(startX + distX, childExtent[0][0]); + } + else if (!affectsX && distX < 0) { + xExtentClamp = getLowerExtentClamp(startX + newWidth, childExtent[1][0]); + } + if (affectsY && distY > 0) { + yExtentClamp = getUpperExtentClamp(startY + distY, childExtent[0][1]); + } + else if (!affectsY && distY < 0) { + yExtentClamp = getLowerExtentClamp(startY + newHeight, childExtent[1][1]); + } + clampX = Math.max(clampX, xExtentClamp); + clampY = Math.max(clampY, yExtentClamp); + } + // Check if the aspect ratio resizing of the other side is restricting the resize + if (keepAspectRatio) { + if (isHorizontal) { + // Check if the max dimensions might be restricting the resize + const aspectHeightClamp = getSizeClamp(newWidth / aspectRatio, minHeight, maxHeight) * aspectRatio; + clampX = Math.max(clampX, aspectHeightClamp); + // Check if the extent is restricting the resize + if (extent) { + let aspectExtentClamp = 0; + if ((!affectsX && !affectsY) || (affectsX && !affectsY && isDiagonal)) { + aspectExtentClamp = + getUpperExtentClamp(startY + originOffsetY + newWidth / aspectRatio, extent[1][1]) * aspectRatio; + } + else { + aspectExtentClamp = + getLowerExtentClamp(startY + originOffsetY + (affectsX ? distX : -distX) / aspectRatio, extent[0][1]) * + aspectRatio; + } + clampX = Math.max(clampX, aspectExtentClamp); + } + // Check if the child extent is restricting the resize + if (childExtent) { + let aspectExtentClamp = 0; + if ((!affectsX && !affectsY) || (affectsX && !affectsY && isDiagonal)) { + aspectExtentClamp = getLowerExtentClamp(startY + newWidth / aspectRatio, childExtent[1][1]) * aspectRatio; + } + else { + aspectExtentClamp = + getUpperExtentClamp(startY + (affectsX ? distX : -distX) / aspectRatio, childExtent[0][1]) * aspectRatio; + } + clampX = Math.max(clampX, aspectExtentClamp); + } + } + // Do the same thing for vertical resizing + if (isVertical) { + const aspectWidthClamp = getSizeClamp(newHeight * aspectRatio, minWidth, maxWidth) / aspectRatio; + clampY = Math.max(clampY, aspectWidthClamp); + if (extent) { + let aspectExtentClamp = 0; + if ((!affectsX && !affectsY) || (affectsY && !affectsX && isDiagonal)) { + aspectExtentClamp = + getUpperExtentClamp(startX + newHeight * aspectRatio + originOffsetX, extent[1][0]) / aspectRatio; + } + else { + aspectExtentClamp = + getLowerExtentClamp(startX + (affectsY ? distY : -distY) * aspectRatio + originOffsetX, extent[0][0]) / + aspectRatio; + } + clampY = Math.max(clampY, aspectExtentClamp); + } + if (childExtent) { + let aspectExtentClamp = 0; + if ((!affectsX && !affectsY) || (affectsY && !affectsX && isDiagonal)) { + aspectExtentClamp = getLowerExtentClamp(startX + newHeight * aspectRatio, childExtent[1][0]) / aspectRatio; + } + else { + aspectExtentClamp = + getUpperExtentClamp(startX + (affectsY ? distY : -distY) * aspectRatio, childExtent[0][0]) / aspectRatio; + } + clampY = Math.max(clampY, aspectExtentClamp); + } + } + } + distY = distY + (distY < 0 ? clampY : -clampY); + distX = distX + (distX < 0 ? clampX : -clampX); + if (keepAspectRatio) { + if (isDiagonal) { + if (newWidth > newHeight * aspectRatio) { + distY = (xor(affectsX, affectsY) ? -distX : distX) / aspectRatio; + } + else { + distX = (xor(affectsX, affectsY) ? -distY : distY) * aspectRatio; + } + } + else { + if (isHorizontal) { + distY = distX / aspectRatio; + affectsY = affectsX; + } + else { + distX = distY * aspectRatio; + affectsX = affectsY; + } + } + } + const x = affectsX ? startX + distX : startX; + const y = affectsY ? startY + distY : startY; + return { + width: startWidth + (affectsX ? -distX : distX), + height: startHeight + (affectsY ? -distY : distY), + x: nodeOrigin[0] * distX * (!affectsX ? 1 : -1) + x, + y: nodeOrigin[1] * distY * (!affectsY ? 1 : -1) + y, + }; +} + +const initPrevValues = { width: 0, height: 0, x: 0, y: 0 }; +const initStartValues = { + ...initPrevValues, + pointerX: 0, + pointerY: 0, + aspectRatio: 1, +}; +function nodeToChildExtent(child, parent, nodeOrigin) { + const x = parent.position.x + child.position.x; + const y = parent.position.y + child.position.y; + const width = child.measured.width ?? 0; + const height = child.measured.height ?? 0; + const originOffsetX = nodeOrigin[0] * width; + const originOffsetY = nodeOrigin[1] * height; + return [ + [x - originOffsetX, y - originOffsetY], + [x + width - originOffsetX, y + height - originOffsetY], + ]; +} +function XYResizer({ domNode, nodeId, getStoreItems, onChange, onEnd }) { + const selection = select(domNode); + let params = { + controlDirection: getControlDirection('bottom-right'), + boundaries: { + minWidth: 0, + minHeight: 0, + maxWidth: Number.MAX_VALUE, + maxHeight: Number.MAX_VALUE, + }, + resizeDirection: undefined, + keepAspectRatio: false, + }; + function update({ controlPosition, boundaries, keepAspectRatio, resizeDirection, onResizeStart, onResize, onResizeEnd, shouldResize, }) { + let prevValues = { ...initPrevValues }; + let startValues = { ...initStartValues }; + params = { + boundaries, + resizeDirection, + keepAspectRatio, + controlDirection: getControlDirection(controlPosition), + }; + let node = undefined; + let containerBounds = null; + let childNodes = []; + let parentNode = undefined; // Needed to fix expandParent + let nodeExtent = undefined; + let childExtent = undefined; + // we only want to trigger onResizeEnd if onResize was actually called + let resizeDetected = false; + const dragHandler = drag() + .on('start', (event) => { + const { nodeLookup, transform, snapGrid, snapToGrid, nodeOrigin, paneDomNode } = getStoreItems(); + node = nodeLookup.get(nodeId); + if (!node) { + return; + } + containerBounds = paneDomNode?.getBoundingClientRect() ?? null; + const { xSnapped, ySnapped } = getPointerPosition(event.sourceEvent, { + transform, + snapGrid, + snapToGrid, + containerBounds, + }); + prevValues = { + width: node.measured.width ?? 0, + height: node.measured.height ?? 0, + x: node.position.x ?? 0, + y: node.position.y ?? 0, + }; + startValues = { + ...prevValues, + pointerX: xSnapped, + pointerY: ySnapped, + aspectRatio: prevValues.width / prevValues.height, + }; + parentNode = undefined; + nodeExtent = isCoordinateExtent(node.extent) ? node.extent : undefined; + if (node.parentId && (node.extent === 'parent' || node.expandParent)) { + parentNode = nodeLookup.get(node.parentId); + } + if (parentNode && node.extent === 'parent') { + nodeExtent = [ + [0, 0], + [parentNode.measured.width, parentNode.measured.height], + ]; + } + /* + * Collect all child nodes to correct their relative positions when top/left changes + * Determine largest minimal extent the parent node is allowed to resize to + */ + childNodes = []; + childExtent = undefined; + for (const [childId, child] of nodeLookup) { + if (child.parentId === nodeId) { + childNodes.push({ + id: childId, + position: { ...child.position }, + extent: child.extent, + }); + if (child.extent === 'parent' || child.expandParent) { + const extent = nodeToChildExtent(child, node, child.origin ?? nodeOrigin); + if (childExtent) { + childExtent = [ + [Math.min(extent[0][0], childExtent[0][0]), Math.min(extent[0][1], childExtent[0][1])], + [Math.max(extent[1][0], childExtent[1][0]), Math.max(extent[1][1], childExtent[1][1])], + ]; + } + else { + childExtent = extent; + } + } + } + } + onResizeStart?.(event, { ...prevValues }); + }) + .on('drag', (event) => { + const { transform, snapGrid, snapToGrid, nodeOrigin: storeNodeOrigin } = getStoreItems(); + const pointerPosition = getPointerPosition(event.sourceEvent, { + transform, + snapGrid, + snapToGrid, + containerBounds, + }); + const childChanges = []; + if (!node) { + return; + } + const { x: prevX, y: prevY, width: prevWidth, height: prevHeight } = prevValues; + const change = {}; + const nodeOrigin = node.origin ?? storeNodeOrigin; + const { width, height, x, y } = getDimensionsAfterResize(startValues, params.controlDirection, pointerPosition, params.boundaries, params.keepAspectRatio, nodeOrigin, nodeExtent, childExtent); + const isWidthChange = width !== prevWidth; + const isHeightChange = height !== prevHeight; + const isXPosChange = x !== prevX && isWidthChange; + const isYPosChange = y !== prevY && isHeightChange; + if (!isXPosChange && !isYPosChange && !isWidthChange && !isHeightChange) { + return; + } + if (isXPosChange || isYPosChange || nodeOrigin[0] === 1 || nodeOrigin[1] === 1) { + change.x = isXPosChange ? x : prevValues.x; + change.y = isYPosChange ? y : prevValues.y; + prevValues.x = change.x; + prevValues.y = change.y; + /* + * when top/left changes, correct the relative positions of child nodes + * so that they stay in the same position + */ + if (childNodes.length > 0) { + const xChange = x - prevX; + const yChange = y - prevY; + for (const childNode of childNodes) { + childNode.position = { + x: childNode.position.x - xChange + nodeOrigin[0] * (width - prevWidth), + y: childNode.position.y - yChange + nodeOrigin[1] * (height - prevHeight), + }; + childChanges.push(childNode); + } + } + } + if (isWidthChange || isHeightChange) { + change.width = + isWidthChange && (!params.resizeDirection || params.resizeDirection === 'horizontal') + ? width + : prevValues.width; + change.height = + isHeightChange && (!params.resizeDirection || params.resizeDirection === 'vertical') + ? height + : prevValues.height; + prevValues.width = change.width; + prevValues.height = change.height; + } + // Fix expandParent when resizing from top/left + if (parentNode && node.expandParent) { + const xLimit = nodeOrigin[0] * (change.width ?? 0); + if (change.x && change.x < xLimit) { + prevValues.x = xLimit; + startValues.x = startValues.x - (change.x - xLimit); + } + const yLimit = nodeOrigin[1] * (change.height ?? 0); + if (change.y && change.y < yLimit) { + prevValues.y = yLimit; + startValues.y = startValues.y - (change.y - yLimit); + } + } + const direction = getResizeDirection({ + width: prevValues.width, + prevWidth, + height: prevValues.height, + prevHeight, + affectsX: params.controlDirection.affectsX, + affectsY: params.controlDirection.affectsY, + }); + const nextValues = { ...prevValues, direction }; + const callResize = shouldResize?.(event, nextValues); + if (callResize === false) { + return; + } + resizeDetected = true; + onResize?.(event, nextValues); + onChange(change, childChanges); + }) + .on('end', (event) => { + if (!resizeDetected) { + return; + } + onResizeEnd?.(event, { ...prevValues }); + onEnd?.({ ...prevValues }); + resizeDetected = false; + }); + selection.call(dragHandler); + } + function destroy() { + selection.on('.drag', null); + } + return { + update, + destroy, + }; +} + +export { ConnectionLineType, ConnectionMode, MarkerType, PanOnScrollMode, Position, ResizeControlVariant, SelectionMode, XYDrag, XYHandle, XYMinimap, XYPanZoom, XYResizer, XY_RESIZER_HANDLE_POSITIONS, XY_RESIZER_LINE_POSITIONS, addEdge, adoptUserNodes, areConnectionMapsEqual, areSetsEqual, boxToRect, calcAutoPan, calculateNodePosition, clamp, clampPosition, clampPositionToParent, createDevWarn, createMarkerIds, defaultAriaLabelConfig, elementSelectionKeys, errorMessages, evaluateAbsolutePosition, fitViewport, getBezierEdgeCenter, getBezierPath, getBoundsOfBoxes, getBoundsOfRects, getConnectedEdges, getConnectionStatus, getDimensions, getEdgeCenter, getEdgeId, getEdgePosition, getEdgeToolbarTransform, getElementsToRemove, getElevatedEdgeZIndex, getEventPosition, getHandleBounds, getHandlePosition, getHostForElement, getIncomers, getInternalNodesBounds, getMarkerId, getNodeDimensions, getNodePositionWithOrigin, getNodeToolbarTransform, getNodesBounds, getNodesInside, getOutgoers, getOverlappingArea, getPointerPosition, getRectsOverlappingArea, getSmoothStepPath, getStraightPath, getViewportForBounds, handleConnectionChange, handleExpandParent, infiniteExtent, initialConnection, isCoordinateExtent, isEdgeBase, isEdgeVisible, isInputDOMNode, isInternalNodeBase, isMacOs, isManualZIndexMode, isMouseEvent, isNodeBase, isNumeric, isRectObject, mergeAriaLabelConfig, nodeHasDimensions, nodeToBox, nodeToRect, oppositePosition, panBy, pointToRendererPoint, reconnectEdge, rectToBox, rendererPointToPoint, shallowNodeData, snapPosition, updateAbsolutePositions, updateConnectionLookup, updateNodeInternals, withResolvers }; diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/changes.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/changes.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2a81cdaa7a5c2246cf8824d55d66b2c1e4480128 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/changes.d.ts @@ -0,0 +1,64 @@ +import type { XYPosition, Dimensions, NodeBase, EdgeBase } from '.'; +export type NodeDimensionChange = { + id: string; + type: 'dimensions'; + dimensions?: Dimensions; + resizing?: boolean; + setAttributes?: boolean | 'width' | 'height'; +}; +export type NodePositionChange = { + id: string; + type: 'position'; + position?: XYPosition; + positionAbsolute?: XYPosition; + dragging?: boolean; +}; +export type NodeSelectionChange = { + id: string; + type: 'select'; + selected: boolean; +}; +export type NodeRemoveChange = { + id: string; + type: 'remove'; +}; +export type NodeAddChange = { + item: NodeType; + type: 'add'; + index?: number; +}; +export type NodeReplaceChange = { + id: string; + item: NodeType; + type: 'replace'; +}; +/** + * The [`onNodesChange`](/api-reference/react-flow#on-nodes-change) callback takes + *an array of `NodeChange` objects that you should use to update your flow's state. + *The `NodeChange` type is a union of six different object types that represent that + *various ways an node can change in a flow. + * @public + */ +export type NodeChange = NodeDimensionChange | NodePositionChange | NodeSelectionChange | NodeRemoveChange | NodeAddChange | NodeReplaceChange; +export type EdgeSelectionChange = NodeSelectionChange; +export type EdgeRemoveChange = NodeRemoveChange; +export type EdgeAddChange = { + item: EdgeType; + type: 'add'; + index?: number; +}; +export type EdgeReplaceChange = { + id: string; + item: EdgeType; + type: 'replace'; +}; +/** + * The [`onEdgesChange`](/api-reference/react-flow#on-edges-change) callback takes + *an array of `EdgeChange` objects that you should use to update your flow's state. + *The `EdgeChange` type is a union of four different object types that represent that + *various ways an edge can change in a flow. + * + * @public + */ +export type EdgeChange = EdgeSelectionChange | EdgeRemoveChange | EdgeAddChange | EdgeReplaceChange; +//# sourceMappingURL=changes.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/changes.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/changes.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..cdded21626789a21fff699499795c574e9276352 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/changes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../../src/types/changes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC;AAEpE,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,IAAI;IAChE,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,IAAI;IACpE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,IACvD,mBAAmB,GACnB,kBAAkB,GAClB,mBAAmB,GACnB,gBAAgB,GAChB,aAAa,CAAC,QAAQ,CAAC,GACvB,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAEhC,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACtD,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAChD,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,IAAI;IAChE,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,IAAI;IACpE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,IACvD,mBAAmB,GACnB,gBAAgB,GAChB,aAAa,CAAC,QAAQ,CAAC,GACvB,iBAAiB,CAAC,QAAQ,CAAC,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/edges.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/edges.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee065c05c4a9a033e0d9a2c1ae748ce7e2f334d8 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/edges.d.ts @@ -0,0 +1,140 @@ +import { Position } from './utils'; +export type EdgeBase = Record, EdgeType extends string | undefined = string | undefined> = { + /** Unique id of an edge. */ + id: string; + /** Type of edge defined in `edgeTypes`. */ + type?: EdgeType; + /** Id of source node. */ + source: string; + /** Id of target node. */ + target: string; + /** Id of source handle, only needed if there are multiple handles per node. */ + sourceHandle?: string | null; + /** Id of target handle, only needed if there are multiple handles per node. */ + targetHandle?: string | null; + animated?: boolean; + hidden?: boolean; + deletable?: boolean; + selectable?: boolean; + /** Arbitrary data passed to an edge. */ + data?: EdgeData; + selected?: boolean; + /** + * Set the marker on the beginning of an edge. + * @example 'arrow', 'arrowclosed' or custom marker + */ + markerStart?: EdgeMarkerType; + /** + * Set the marker on the end of an edge. + * @example 'arrow', 'arrowclosed' or custom marker + */ + markerEnd?: EdgeMarkerType; + zIndex?: number; + ariaLabel?: string; + /** + * ReactFlow renders an invisible path around each edge to make them easier to click or tap on. + * This property sets the width of that invisible path. + */ + interactionWidth?: number; +}; +export type SmoothStepPathOptions = { + offset?: number; + borderRadius?: number; + stepPosition?: number; +}; +export type StepPathOptions = { + offset?: number; +}; +export type BezierPathOptions = { + curvature?: number; +}; +/** + * @inline + */ +export type DefaultEdgeOptionsBase = Omit; +/** + * If you set the `connectionLineType` prop on your [``](/api-reference/react-flow#connection-connectionLineType) + *component, it will dictate the style of connection line rendered when creating + *new edges. + * + * @public + * + * @remarks If you choose to render a custom connection line component, this value will be + *passed to your component as part of its [`ConnectionLineComponentProps`](/api-reference/types/connection-line-component-props). + */ +export declare enum ConnectionLineType { + Bezier = "default", + Straight = "straight", + Step = "step", + SmoothStep = "smoothstep", + SimpleBezier = "simplebezier" +} +/** + * Edges can optionally have markers at the start and end of an edge. The `EdgeMarker` + *type is used to configure those markers! Check the docs for [`MarkerType`](/api-reference/types/marker-type) + *for details on what types of edge marker are available. + * + * @public + */ +export type EdgeMarker = { + type: MarkerType | `${MarkerType}`; + color?: string | null; + width?: number; + height?: number; + markerUnits?: string; + orient?: string; + strokeWidth?: number; +}; +export type EdgeMarkerType = string | EdgeMarker; +/** + * Edges may optionally have a marker on either end. The MarkerType type enumerates + * the options available to you when configuring a given marker. + * + * @public + */ +export declare enum MarkerType { + Arrow = "arrow", + ArrowClosed = "arrowclosed" +} +export type MarkerProps = EdgeMarker & { + id: string; +}; +/** + * @inline + */ +export type EdgePosition = { + sourceX: number; + sourceY: number; + targetX: number; + targetY: number; + sourcePosition: Position; + targetPosition: Position; +}; +export type EdgeLookup = Map; +export type EdgeToolbarBaseProps = { + /** + * The `x` position of the edge toolbar. + */ + x: number; + /** + * The `y` position of the edge toolbar. + */ + y: number; + /** If `true`, edge toolbar is visible even if edge is not selected. + * @default false + */ + isVisible?: boolean; + /** + * Align the vertical toolbar position relative to the passed x position. + * @default "center" + * @example 'left', 'center', 'right' + */ + alignX?: 'left' | 'center' | 'right'; + /** + * Align the horizontal toolbar position relative to the passed y position. + * @default "center" + * @example 'top', 'center', 'bottom' + */ + alignY?: 'top' | 'center' | 'bottom'; +}; +//# sourceMappingURL=edges.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/edges.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/edges.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..673054db0352e4dab016e236dce64044529a1a2e --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/edges.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"edges.d.ts","sourceRoot":"","sources":["../../src/types/edges.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/general.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/general.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..6c63417ff50903af8eecd0af4392334024a93677 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/general.d.ts @@ -0,0 +1,314 @@ +import type { Selection as D3Selection } from 'd3-selection'; +import type { D3DragEvent, SubjectPosition } from 'd3-drag'; +import type { ZoomBehavior } from 'd3-zoom'; +import type { XYPosition, Rect, Position } from './utils'; +import type { InternalNodeBase, NodeBase, NodeDragItem } from './nodes'; +import type { Handle, HandleType } from './handles'; +import { PanZoomInstance } from './panzoom'; +import { EdgeBase } from '..'; +export type Project = (position: XYPosition) => XYPosition; +/** + * This type is used to define the `onMove` handler. + */ +export type OnMove = (event: MouseEvent | TouchEvent | null, viewport: Viewport) => void; +export type OnMoveStart = OnMove; +export type OnMoveEnd = OnMove; +/** + * @inline + */ +export type ZoomInOut = (options?: ViewportHelperFunctionOptions) => Promise; +/** + * @inline + */ +export type ZoomTo = (zoomLevel: number, options?: ViewportHelperFunctionOptions) => Promise; +/** + * @inline + */ +export type GetZoom = () => number; +/** + * @inline + */ +export type GetViewport = () => Viewport; +/** + * The `SetViewport` function is used to set the viewport of the flow. + * + * @inline + * @param viewport - The viewport to set. + * @param options - Optional parameters to control the animation and easing of the viewport change. + */ +export type SetViewport = (viewport: Viewport, options?: ViewportHelperFunctionOptions) => Promise; +/** + * The `SetCenter` function is used to set the center of the flow viewport to a specific position + * + * @inline + * @param x - x coordinate + * @param y - y coordinate + * @param options - Optional parameters to control the animation and easing of the viewport change. + */ +export type SetCenter = (x: number, y: number, options?: SetCenterOptions) => Promise; +/** + * The `FitBounds` function is used to fit the flow viewport to the bounds of the nodes. + * + * @inline + * @param bounds - The bounds to fit the viewport to. + * @param options - Optional parameters to control the animation and easing of the viewport change. + */ +export type FitBounds = (bounds: Rect, options?: FitBoundsOptions) => Promise; +/** + * The `Connection` type is the basic minimal description of an [`Edge`](/api-reference/types/edge) + * between two nodes. The [`addEdge`](/api-reference/utils/add-edge) util can be used to upgrade + * a `Connection` to an [`Edge`](/api-reference/types/edge). + * + * @public + */ +export type Connection = { + /** The id of the node this connection originates from. */ + source: string; + /** The id of the node this connection terminates at. */ + target: string; + /** When not `null`, the id of the handle on the source node that this connection originates from. */ + sourceHandle: string | null; + /** When not `null`, the id of the handle on the target node that this connection terminates at. */ + targetHandle: string | null; +}; +/** + * The `HandleConnection` type is an extension of a basic [Connection](/api-reference/types/connection) that includes the `edgeId`. + */ +export type HandleConnection = Connection & { + edgeId: string; +}; +/** + * The `NodeConnection` type is an extension of a basic [Connection](/api-reference/types/connection) that includes the `edgeId`. + * + */ +export type NodeConnection = Connection & { + edgeId: string; +}; +export type UseNodeConnectionsParams = { + /** ID of the node, filled in automatically if used inside custom node. */ + id?: string; + /** Gets called when a connection is established. */ + onConnect?: (connections: HandleConnection[]) => void; + /** Gets called when a connection is removed. */ + onDisconnect?: (connections: HandleConnection[]) => void; +} & ({ + /** What type of handle connections do you want to observe? */ + handleType: HandleType; + /** Filter by handle id (this is only needed if the node has multiple handles of the same type). Requires `handleType` to be set. */ + handleId?: string; +} | { + handleType?: HandleType; + handleId?: never; +}); +/** + * The `ConnectionMode` is used to set the mode of connection between nodes. + * The `Strict` mode is the default one and only allows source to target edges. + * `Loose` mode allows source to source and target to target edges as well. + * + * @public + */ +export declare enum ConnectionMode { + Strict = "strict", + Loose = "loose" +} +export type OnConnectStartParams = { + nodeId: string | null; + handleId: string | null; + handleType: HandleType | null; +}; +export type OnConnectStart = (event: MouseEvent | TouchEvent, params: OnConnectStartParams) => void; +export type OnConnect = (connection: Connection) => void; +export type OnConnectEnd = (event: MouseEvent | TouchEvent, connectionState: FinalConnectionState>) => void; +export type OnReconnect = (oldEdge: EdgeType, newConnection: Connection) => void; +export type OnReconnectStart = (event: MouseEvent | TouchEvent, edge: EdgeType, handleType: HandleType) => void; +export type OnReconnectEnd = (event: MouseEvent | TouchEvent, edge: EdgeType, handleType: HandleType, connectionState: FinalConnectionState>) => void; +export type IsValidConnection = (edge: EdgeType | Connection) => boolean; +/** + * @inline + */ +export type FitViewParamsBase = { + nodes: Map>; + width: number; + height: number; + panZoom: PanZoomInstance; + minZoom: number; + maxZoom: number; +}; +export type PaddingUnit = 'px' | '%'; +export type PaddingWithUnit = `${number}${PaddingUnit}` | number; +export type Padding = PaddingWithUnit | { + top?: PaddingWithUnit; + right?: PaddingWithUnit; + bottom?: PaddingWithUnit; + left?: PaddingWithUnit; + x?: PaddingWithUnit; + y?: PaddingWithUnit; +}; +/** + * @inline + */ +export type FitViewOptionsBase = { + padding?: Padding; + includeHiddenNodes?: boolean; + minZoom?: number; + maxZoom?: number; + duration?: number; + ease?: (t: number) => number; + interpolate?: 'smooth' | 'linear'; + nodes?: (NodeType | { + id: string; + })[]; +}; +/** + * Internally, React Flow maintains a coordinate system that is independent of the + * rest of the page. The `Viewport` type tells you where in that system your flow + * is currently being display at and how zoomed in or out it is. + * + * @public + * @remarks A `Transform` has the same properties as the viewport, but they represent + * different things. Make sure you don't get them muddled up or things will start + * to look weird! + * + */ +export type Viewport = { + x: number; + y: number; + zoom: number; +}; +export type KeyCode = string | Array; +export type SnapGrid = [number, number]; +/** + * This enum is used to set the different modes of panning the viewport when the + * user scrolls. The `Free` mode allows the user to pan in any direction by scrolling + * with a device like a trackpad. The `Vertical` and `Horizontal` modes restrict + * scroll panning to only the vertical or horizontal axis, respectively. + * + * @public + */ +export declare enum PanOnScrollMode { + Free = "free", + Vertical = "vertical", + Horizontal = "horizontal" +} +/** + * @inline + */ +export type ViewportHelperFunctionOptions = { + duration?: number; + ease?: (t: number) => number; + interpolate?: 'smooth' | 'linear'; +}; +/** + * @inline + */ +export type SetCenterOptions = ViewportHelperFunctionOptions & { + zoom?: number; +}; +/** + * @inline + */ +export type FitBoundsOptions = ViewportHelperFunctionOptions & { + padding?: number; +}; +export type OnViewportChange = (viewport: Viewport) => void; +export type D3ZoomInstance = ZoomBehavior; +export type D3SelectionInstance = D3Selection; +export type D3ZoomHandler = (this: Element, event: any, d: unknown) => void; +export type UpdateNodeInternals = (nodeId: string | string[]) => void; +/** + * This type is mostly used to help position things on top of the flow viewport. For + * example both the [``](/api-reference/components/minimap) and + * [``](/api-reference/components/controls) components take a `position` + * prop of this type. + * + * @public + */ +export type PanelPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right' | 'center-left' | 'center-right'; +export type ProOptions = { + account?: string; + hideAttribution: boolean; +}; +export type UseDragEvent = D3DragEvent; +export declare enum SelectionMode { + Partial = "partial", + Full = "full" +} +export type SelectionRect = Rect & { + startX: number; + startY: number; +}; +export type OnError = (id: string, message: string) => void; +export type UpdateNodePositions = (dragItems: Map, dragging?: boolean) => void; +export type PanBy = (delta: XYPosition) => Promise; +export declare const initialConnection: NoConnection; +export type NoConnection = { + inProgress: false; + isValid: null; + from: null; + fromHandle: null; + fromPosition: null; + fromNode: null; + to: null; + toHandle: null; + toPosition: null; + toNode: null; + pointer: null; +}; +export type ConnectionInProgress = { + /** Indicates whether a connection is currently in progress. */ + inProgress: true; + /** + * If an ongoing connection is above a handle or inside the connection radius, this will be `true` + * or `false`, otherwise `null`. + */ + isValid: boolean | null; + /** Returns the xy start position or `null` if no connection is in progress. */ + from: XYPosition; + /** Returns the start handle or `null` if no connection is in progress. */ + fromHandle: Handle; + /** Returns the side (called position) of the start handle or `null` if no connection is in progress. */ + fromPosition: Position; + /** Returns the start node or `null` if no connection is in progress. */ + fromNode: NodeType; + /** Returns the xy end position or `null` if no connection is in progress. */ + to: XYPosition; + /** Returns the end handle or `null` if no connection is in progress. */ + toHandle: Handle | null; + /** Returns the side (called position) of the end handle or `null` if no connection is in progress. */ + toPosition: Position; + /** Returns the end node or `null` if no connection is in progress. */ + toNode: NodeType | null; + /** Returns the pointer position or `null` if no connection is in progress. */ + pointer: XYPosition; +}; +/** + * The `ConnectionState` type bundles all information about an ongoing connection. + * It is returned by the [`useConnection`](/api-reference/hooks/use-connection) hook. + * + * @public + */ +export type ConnectionState = ConnectionInProgress | NoConnection; +export type FinalConnectionState = (Omit, 'inProgress' | 'toPosition'> & { + toPosition: Position | null; +}) | Omit; +export type UpdateConnection = (params: ConnectionState) => void; +export type ColorModeClass = 'light' | 'dark'; +export type ColorMode = ColorModeClass | 'system'; +export type ConnectionLookup = Map>; +export type OnBeforeDeleteBase = ({ nodes, edges, }: { + nodes: NodeType[]; + edges: EdgeType[]; +}) => Promise; +/** + * The `ZIndexMode` type is used to define how z-indexing is calculated for nodes and edges. + * `auto` mode will automatically manage z-indexing for selections and sub flows. + * `basic` mode will only manage z-indexing for selections. + * `manual` mode does not apply any automatic z-indexing. + * + * @public + */ +export type ZIndexMode = 'auto' | 'basic' | 'manual'; +//# sourceMappingURL=general.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/general.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/general.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..ac2b93753a26861e98b66b266c422b387277ae0f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/general.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../src/types/general.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/handles.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/handles.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..920a7da040b5ea74fe4d4b2f84d354c5f6d9bfa1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/handles.d.ts @@ -0,0 +1,58 @@ +import type { Position, IsValidConnection } from '.'; +/** + * @inline + */ +export type HandleType = 'source' | 'target'; +export type Handle = { + id?: string | null; + nodeId: string; + x: number; + y: number; + position: Position; + type: HandleType; + width: number; + height: number; +}; +export type HandleProps = { + /** + * Type of the handle. + * @default "source" + */ + type: HandleType; + /** + * The position of the handle relative to the node. In a horizontal flow source handles are + * typically `Position.Right` and in a vertical flow they are typically `Position.Top`. + * @default Position.Top + * @example Position.Top, Position.Right, Position.Bottom, Position.Left + */ + position: Position; + /** + * Should you be able to connect to/from this handle. + * @default true + */ + isConnectable?: boolean; + /** + * Dictates whether a connection can start from this handle. + * @default true + */ + isConnectableStart?: boolean; + /** + * Dictates whether a connection can end on this handle. + * @default true + */ + isConnectableEnd?: boolean; + /** + * Called when a connection is dragged to this handle. You can use this callback to perform some + * custom validation logic based on the connection target and source, for example. Where possible, + * we recommend you move this logic to the `isValidConnection` prop on the main ReactFlow + * component for performance reasons. + * @remarks connection becomes an edge if isValidConnection returns true + */ + isValidConnection?: IsValidConnection; + /** + * Id of the handle. + * @remarks optional if there is only one handle of this type + */ + id?: string | null; +}; +//# sourceMappingURL=handles.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/handles.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/handles.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..8e3d12cfda241a269df24bf56739f52c05f2e86a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/handles.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"handles.d.ts","sourceRoot":"","sources":["../../src/types/handles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,GAAG,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7C,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB;;;OAGG;IACH,IAAI,EAAE,UAAU,CAAC;IACjB;;;;;OAKG;IACH,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..1a0bc5bf5e8553031f6c728d1e90df377d7e1973 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/index.d.ts @@ -0,0 +1,8 @@ +export * from './changes'; +export * from './general'; +export * from './nodes'; +export * from './edges'; +export * from './handles'; +export * from './utils'; +export * from './panzoom'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..cb2e3787430fe37bf6df10665ac31ca6fa504ced --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/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,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,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+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/nodes.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/nodes.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..54d7c86c50bdc0c8a5eb6709a1ee5bc15fe73f63 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/nodes.d.ts @@ -0,0 +1,157 @@ +import type { XYPosition, Position, CoordinateExtent, Handle } from '.'; +import { Optional } from '../utils/types'; +/** + * Framework independent node data structure. + * + * @inline + * @typeParam NodeData - type of the node data + * @typeParam NodeType - type of the node + */ +export type NodeBase = Record, NodeType extends string | undefined = string | undefined> = { + /** Unique id of a node. */ + id: string; + /** + * Position of a node on the pane. + * @example { x: 0, y: 0 } + */ + position: XYPosition; + /** Arbitrary data passed to a node. */ + data: NodeData; + /** + * Only relevant for default, source, target nodeType. Controls source position. + * @example 'right', 'left', 'top', 'bottom' + */ + sourcePosition?: Position; + /** + * Only relevant for default, source, target nodeType. Controls target position. + * @example 'right', 'left', 'top', 'bottom' + */ + targetPosition?: Position; + /** Whether or not the node should be visible on the canvas. */ + hidden?: boolean; + selected?: boolean; + /** Whether or not the node is currently being dragged. */ + dragging?: boolean; + /** Whether or not the node is able to be dragged. */ + draggable?: boolean; + selectable?: boolean; + connectable?: boolean; + deletable?: boolean; + /** + * A class name that can be applied to elements inside the node that allows those elements to act + * as drag handles, letting the user drag the node by clicking and dragging on those elements. + */ + dragHandle?: string; + width?: number; + height?: number; + initialWidth?: number; + initialHeight?: number; + /** Parent node id, used for creating sub-flows. */ + parentId?: string; + zIndex?: number; + /** + * Boundary a node can be moved in. + * @example 'parent' or [[0, 0], [100, 100]] + */ + extent?: 'parent' | CoordinateExtent | null; + /** + * When `true`, the parent node will automatically expand if this node is dragged to the edge of + * the parent node's bounds. + */ + expandParent?: boolean; + ariaLabel?: string; + /** + * Origin of the node relative to its position. + * @example + * [0.5, 0.5] // centers the node + * [0, 0] // top left + * [1, 1] // bottom right + */ + origin?: NodeOrigin; + handles?: NodeHandle[]; + measured?: { + width?: number; + height?: number; + }; +} & (undefined extends NodeType ? { + /** Type of node defined in nodeTypes */ + type?: string | undefined; +} : { + /** Type of node defined in nodeTypes */ + type: NodeType; +}); +export type InternalNodeBase = Omit & { + measured: { + width?: number; + height?: number; + }; + internals: { + positionAbsolute: XYPosition; + z: number; + rootParentIndex?: number; + /** + * Holds a reference to the original node object provided by the user. + * Used as an optimization to avoid certain operations. + */ + userNode: NodeType; + handleBounds?: NodeHandleBounds; + bounds?: NodeBounds; + }; +}; +/** + * The node data structure that gets used for the custom nodes props. + * + * @public + */ +export type NodeProps = Pick & Required> & { + /** Whether a node is connectable or not. */ + isConnectable: boolean; + /** Position absolute x value. */ + positionAbsoluteX: number; + /** Position absolute y value. */ + positionAbsoluteY: number; +}; +export type NodeHandleBounds = { + source: Handle[] | null; + target: Handle[] | null; +}; +export type InternalNodeUpdate = { + id: string; + nodeElement: HTMLDivElement; + force?: boolean; +}; +export type NodeBounds = XYPosition & { + width: number | null; + height: number | null; +}; +export type NodeDragItem = { + id: string; + position: XYPosition; + distance: XYPosition; + measured: { + width: number; + height: number; + }; + internals: { + positionAbsolute: XYPosition; + }; +} & Pick; +/** + * The origin of a Node determines how it is placed relative to its own coordinates. + * `[0, 0]` places it at the top left corner, `[0.5, 0.5]` right in the center and + * `[1, 1]` at the bottom right of its position. + * + * @public + */ +export type NodeOrigin = [number, number]; +export type OnSelectionDrag = (event: MouseEvent, nodes: NodeType[]) => void; +/** + * Type for the handles of a node + * + * @public + */ +export type NodeHandle = Omit, 'nodeId'>; +export type Align = 'center' | 'start' | 'end'; +export type NodeLookup = Map; +export type ParentLookup = Map>; +//# sourceMappingURL=nodes.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/nodes.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/nodes.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..704fcdce3b5c7c0a0e4eb63e6e220bc0909f19b2 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/nodes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/types/nodes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/panzoom.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/panzoom.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..9d7ed07b3ec077a2f62a8a9cf711bfc958042cae --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/panzoom.d.ts @@ -0,0 +1,55 @@ +import type { ZoomTransform } from 'd3-zoom'; +import { PanOnScrollMode, type CoordinateExtent, type Transform, type Viewport } from './'; +export type OnDraggingChange = (dragging: boolean) => void; +export type OnTransformChange = (transform: Transform) => void; +export type PanZoomParams = { + domNode: Element; + minZoom: number; + maxZoom: number; + viewport: Viewport; + translateExtent: CoordinateExtent; + onDraggingChange: OnDraggingChange; + onPanZoomStart?: OnPanZoom; + onPanZoom?: OnPanZoom; + onPanZoomEnd?: OnPanZoom; +}; +export type PanZoomTransformOptions = { + duration?: number; + ease?: (t: number) => number; + interpolate?: 'smooth' | 'linear'; +}; +export type OnPanZoom = (event: MouseEvent | TouchEvent | null, viewport: Viewport) => void; +export type PanZoomUpdateOptions = { + noWheelClassName: string; + noPanClassName: string; + onPaneContextMenu?: (event: MouseEvent) => void; + preventScrolling: boolean; + panOnScroll: boolean; + panOnDrag: boolean | number[]; + panOnScrollMode: PanOnScrollMode; + panOnScrollSpeed: number; + userSelectionActive: boolean; + zoomOnPinch: boolean; + zoomOnScroll: boolean; + zoomOnDoubleClick: boolean; + zoomActivationKeyPressed: boolean; + lib: string; + onTransformChange: OnTransformChange; + connectionInProgress: boolean; + paneClickDistance: number; + selectionOnDrag?: boolean; +}; +export type PanZoomInstance = { + update: (params: PanZoomUpdateOptions) => void; + destroy: () => void; + getViewport: () => Viewport; + setViewport: (viewport: Viewport, options?: PanZoomTransformOptions) => Promise; + setViewportConstrained: (viewport: Viewport, extent: CoordinateExtent, translateExtent: CoordinateExtent) => Promise; + setScaleExtent: (scaleExtent: [number, number]) => void; + setTranslateExtent: (translateExtent: CoordinateExtent) => void; + scaleTo: (scale: number, options?: PanZoomTransformOptions) => Promise; + scaleBy: (factor: number, options?: PanZoomTransformOptions) => Promise; + syncViewport: (viewport: Viewport) => void; + setClickDistance: (distance: number) => void; +}; +//# sourceMappingURL=panzoom.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/panzoom.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/panzoom.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..0c074dff4f3b55fa67249e0e56c92d5b626b617e --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/panzoom.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"panzoom.d.ts","sourceRoot":"","sources":["../../src/types/panzoom.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/utils.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b476a704155652237ef04f16b894b294ce2cded7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/utils.d.ts @@ -0,0 +1,61 @@ +/** + * While [`PanelPosition`](/api-reference/types/panel-position) can be used to place a + * component in the corners of a container, the `Position` enum is less precise and used + * primarily in relation to edges and handles. + * + * @public + */ +export declare enum Position { + Left = "left", + Top = "top", + Right = "right", + Bottom = "bottom" +} +export declare const oppositePosition: { + left: Position; + right: Position; + top: Position; + bottom: Position; +}; +/** + * All positions are stored in an object with x and y coordinates. + * + * @public + */ +export type XYPosition = { + x: number; + y: number; +}; +export type XYZPosition = XYPosition & { + z: number; +}; +export type Dimensions = { + width: number; + height: number; +}; +export type Rect = Dimensions & XYPosition; +export type Box = XYPosition & { + x2: number; + y2: number; +}; +export type Transform = [number, number, number]; +/** + * A coordinate extent represents two points in a coordinate system: one in the top + * left corner and one in the bottom right corner. It is used to represent the + * bounds of nodes in the flow or the bounds of the viewport. + * + * @public + * + * @remarks Props that expect a `CoordinateExtent` usually default to `[[-∞, -∞], [+∞, +∞]]` + * to represent an unbounded extent. + */ +export type CoordinateExtent = [[number, number], [number, number]]; +/** + * Using Pick with a union type (e.g. `NodeType`) will merge every property type along all union members. + * See https://github.com/microsoft/TypeScript/issues/28339#issuecomment-463577347 + * Note: Currently you are able to Pick properties that are not in the type without error. + */ +export type DistributivePick = T extends unknown ? { + [P in Extract]: T[P]; +} : never; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/utils.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/utils.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..8e6c1489865d3978c2801257eea280eb7204f586 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/types/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/types/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,oBAAY,QAAQ;IAClB,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAED,eAAO,MAAM,gBAAgB;;;;;CAK5B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG;IAAE,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,UAAU,GAAG,UAAU,CAAC;AAE3C,MAAM,MAAM,GAAG,GAAG,UAAU,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEpE;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,OAAO,GAAG;KAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,KAAK,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/connections.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/connections.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..03dc064be3d1e181f4a9ba9d1e9e799a24ec3461 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/connections.d.ts @@ -0,0 +1,13 @@ +import { HandleConnection } from '../types'; +/** + * @internal + */ +export declare function areConnectionMapsEqual(a?: Map, b?: Map): boolean; +/** + * We call the callback for all connections in a that are not in b + * + * @internal + */ +export declare function handleConnectionChange(a: Map, b: Map, cb?: (diff: HandleConnection[]) => void): void; +export declare function getConnectionStatus(isValid: boolean | null): "valid" | "invalid" | null; +//# sourceMappingURL=connections.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/connections.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/connections.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..0688bcfa217998c288da2725581322bf12f475e3 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/connections.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../../src/utils/connections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,WAoB1G;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAChC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAChC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,IAAI,QAiBxC;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,8BAE1D"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/dom.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/dom.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..8677d651a51d62f63cfa24cbbf84cd4347b07485 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/dom.d.ts @@ -0,0 +1,21 @@ +import type { Transform, XYPosition, SnapGrid, Dimensions, Handle } from '../types'; +export type GetPointerPositionParams = { + transform: Transform; + snapGrid?: SnapGrid; + snapToGrid?: boolean; + containerBounds: DOMRect | null; +}; +export declare function getPointerPosition(event: MouseEvent | TouchEvent, { snapGrid, snapToGrid, transform, containerBounds }: GetPointerPositionParams): XYPosition & { + xSnapped: number; + ySnapped: number; +}; +export declare const getDimensions: (node: HTMLDivElement) => Dimensions; +export declare const getHostForElement: (element: HTMLElement | EventTarget | null) => Document | ShadowRoot; +export declare function isInputDOMNode(event: KeyboardEvent): boolean; +export declare const isMouseEvent: (event: MouseEvent | TouchEvent) => event is MouseEvent; +export declare const getEventPosition: (event: MouseEvent | TouchEvent, bounds?: DOMRect) => { + x: number; + y: number; +}; +export declare const getHandleBounds: (type: "source" | "target", nodeElement: HTMLDivElement, nodeBounds: DOMRect, zoom: number, nodeId: string) => Handle[] | null; +//# sourceMappingURL=dom.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/dom.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/dom.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..f5b657e7011dec4bfe4bc8c3466591ea66b0e595 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/dom.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../src/utils/dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAY,MAAM,EAAE,MAAM,UAAU,CAAC;AAG9F,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,GAAG,UAAU,EAC9B,EAAE,QAAiB,EAAE,UAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,wBAAwB,GAC9F,UAAU,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAcrD;AAED,eAAO,MAAM,aAAa,GAAI,MAAM,cAAc,KAAG,UAGnD,CAAC;AAEH,eAAO,MAAM,iBAAiB,GAAI,SAAS,WAAW,GAAG,WAAW,GAAG,IAAI,KAAG,QAAQ,GAAG,UACiB,CAAC;AAI3G,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAQ5D;AAED,eAAO,MAAM,YAAY,GAAI,OAAO,UAAU,GAAG,UAAU,KAAG,KAAK,IAAI,UAAgC,CAAC;AAExG,eAAO,MAAM,gBAAgB,GAAI,OAAO,UAAU,GAAG,UAAU,EAAE,SAAS,OAAO;;;CAShF,CAAC;AAOF,eAAO,MAAM,eAAe,GAC1B,MAAM,QAAQ,GAAG,QAAQ,EACzB,aAAa,cAAc,EAC3B,YAAY,OAAO,EACnB,MAAM,MAAM,EACZ,QAAQ,MAAM,KACb,MAAM,EAAE,GAAG,IAoBb,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edge-toolbar.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edge-toolbar.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4177b20ccdd2ff56a50382de7945b09615ecfa17 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edge-toolbar.d.ts @@ -0,0 +1,2 @@ +export declare function getEdgeToolbarTransform(x: number, y: number, zoom: number, alignX?: 'left' | 'center' | 'right', alignY?: 'top' | 'center' | 'bottom'): string; +//# sourceMappingURL=edge-toolbar.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edge-toolbar.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edge-toolbar.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..103bce3aed30e19f8b6e54cef7d220dd07428a09 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edge-toolbar.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"edge-toolbar.d.ts","sourceRoot":"","sources":["../../src/utils/edge-toolbar.ts"],"names":[],"mappings":"AAYA,wBAAgB,uBAAuB,CACrC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAM,GAAG,QAAQ,GAAG,OAAkB,EAC9C,MAAM,GAAE,KAAK,GAAG,QAAQ,GAAG,QAAmB,GAC7C,MAAM,CAIR"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/bezier-edge.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/bezier-edge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2df99ce8ad58a78bf66d380087f1c64f0c840074 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/bezier-edge.d.ts @@ -0,0 +1,77 @@ +import { Position } from '../../types'; +export type GetBezierPathParams = { + /** The `x` position of the source handle. */ + sourceX: number; + /** The `y` position of the source handle. */ + sourceY: number; + /** + * The position of the source handle. + * @default Position.Bottom + */ + sourcePosition?: Position; + /** The `x` position of the target handle. */ + targetX: number; + /** The `y` position of the target handle. */ + targetY: number; + /** + * The position of the target handle. + * @default Position.Top + */ + targetPosition?: Position; + /** + * The curvature of the bezier edge. + * @default 0.25 + */ + curvature?: number; +}; +export type GetControlWithCurvatureParams = { + pos: Position; + x1: number; + y1: number; + x2: number; + y2: number; + c: number; +}; +export declare function getBezierEdgeCenter({ sourceX, sourceY, targetX, targetY, sourceControlX, sourceControlY, targetControlX, targetControlY, }: { + sourceX: number; + sourceY: number; + targetX: number; + targetY: number; + sourceControlX: number; + sourceControlY: number; + targetControlX: number; + targetControlY: number; +}): [number, number, number, number]; +/** + * The `getBezierPath` util returns everything you need to render a bezier edge + *between two nodes. + * @public + * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path) + * and `offsetX`, `offsetY` between source handle and label. + * - `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. + * @example + * ```js + * const source = { x: 0, y: 20 }; + * const target = { x: 150, y: 100 }; + * + * const [path, labelX, labelY, offsetX, offsetY] = getBezierPath({ + * sourceX: source.x, + * sourceY: source.y, + * sourcePosition: Position.Right, + * targetX: target.x, + * targetY: target.y, + * targetPosition: Position.Left, + *}); + *``` + * + * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to + *work with multiple edge paths at once. + */ +export declare function getBezierPath({ sourceX, sourceY, sourcePosition, targetX, targetY, targetPosition, curvature, }: GetBezierPathParams): [path: string, labelX: number, labelY: number, offsetX: number, offsetY: number]; +//# sourceMappingURL=bezier-edge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/bezier-edge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/bezier-edge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..6ecc89b8db24cb949d893f78ce32205a18c20d99 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/bezier-edge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"bezier-edge.d.ts","sourceRoot":"","sources":["../../../src/utils/edges/bezier-edge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,MAAM,mBAAmB,GAAG;IAChC,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,GAAG,EAAE,QAAQ,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,GACf,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAWnC;AAuBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,OAAO,EACP,cAAgC,EAChC,OAAO,EACP,OAAO,EACP,cAA6B,EAC7B,SAAgB,GACjB,EAAE,mBAAmB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAmCxG"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/general.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/general.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..11d58963a9bd9b62877b5561d4dc92b03e12f7e4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/general.d.ts @@ -0,0 +1,100 @@ +import { Connection, InternalNodeBase, Transform, EdgeBase, ZIndexMode } from '../..'; +import type { OnError } from '../../types/general'; +export declare function getEdgeCenter({ sourceX, sourceY, targetX, targetY, }: { + sourceX: number; + sourceY: number; + targetX: number; + targetY: number; +}): [number, number, number, number]; +export type GetEdgeZIndexParams = { + sourceNode: InternalNodeBase; + targetNode: InternalNodeBase; + selected?: boolean; + zIndex?: number; + elevateOnSelect?: boolean; + zIndexMode?: ZIndexMode; +}; +/** + * Returns the z-index for an edge based on the node it connects and whether it is selected. + * By default, edges are rendered below nodes. This behaviour is different for edges that are + * connected to nodes with a parent, as they are rendered above the parent node. + */ +export declare function getElevatedEdgeZIndex({ sourceNode, targetNode, selected, zIndex, elevateOnSelect, zIndexMode, }: GetEdgeZIndexParams): number; +type IsEdgeVisibleParams = { + sourceNode: InternalNodeBase; + targetNode: InternalNodeBase; + width: number; + height: number; + transform: Transform; +}; +export declare function isEdgeVisible({ sourceNode, targetNode, width, height, transform }: IsEdgeVisibleParams): boolean; +/** + * Type for a custom edge ID generator function. + * @public + */ +export type GetEdgeId = (params: Connection | EdgeBase) => string; +/** + * The default edge ID generator function. Generates an ID based on the source, target, and handles. + * @public + * @param params - The connection or edge to generate an ID for. + * @returns The generated edge ID. + */ +export declare const getEdgeId: ({ source, sourceHandle, target, targetHandle }: Connection | EdgeBase) => string; +export type AddEdgeOptions = { + /** + * Custom function to generate edge IDs. If not provided, the default `getEdgeId` function is used. + */ + getEdgeId?: GetEdgeId; + /** + * Called when edge validation fails. If not provided, a default dev warning is used. + */ + onError?: OnError; +}; +/** + * This util is a convenience function to add a new Edge to an array of edges. It also performs some validation to make sure you don't add an invalid edge or duplicate an existing one. + * @public + * @param edgeParams - Either an `Edge` or a `Connection` you want to add. + * @param edges - The array of all current edges. + * @param options - Optional configuration object. + * @returns A new array of edges with the new edge added. + * + * @remarks If an edge with the same `target` and `source` already exists (and the same + *`targetHandle` and `sourceHandle` if those are set), then this util won't add + *a new edge even if the `id` property is different. + * + */ +export declare const addEdge: (edgeParams: EdgeType | Connection, edges: EdgeType[], options?: AddEdgeOptions) => EdgeType[]; +export type ReconnectEdgeOptions = { + /** + * Should the id of the old edge be replaced with the new connection id. + * @default true + */ + shouldReplaceId?: boolean; + /** + * Custom function to generate edge IDs. If not provided, the default `getEdgeId` function is used. + */ + getEdgeId?: GetEdgeId; + /** + * Called when edge validation fails. If not provided, a default dev warning is used. + */ + onError?: OnError; +}; +/** + * A handy utility to update an existing [`Edge`](/api-reference/types/edge) with new properties. + *This searches your edge array for an edge with a matching `id` and updates its + *properties with the connection you provide. + * @public + * @param oldEdge - The edge you want to update. + * @param newConnection - The new connection you want to update the edge with. + * @param edges - The array of all current edges. + * @returns The updated edges array. + * + * @example + * ```js + *const onReconnect = useCallback( + * (oldEdge: Edge, newConnection: Connection) => setEdges((els) => reconnectEdge(oldEdge, newConnection, els)),[]); + *``` + */ +export declare const reconnectEdge: (oldEdge: EdgeType, newConnection: Connection, edges: EdgeType[], options?: ReconnectEdgeOptions) => EdgeType[]; +export {}; +//# sourceMappingURL=general.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/general.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/general.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..c241052ffcd93759148901074a70babd0baff34a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/general.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../../src/utils/edges/general.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAA6B,QAAQ,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACjH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAInD,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,GACR,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAQnC;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,UAAU,EACV,UAAU,EACV,QAAgB,EAChB,MAAU,EACV,eAAuB,EACvB,UAAoB,GACrB,EAAE,mBAAmB,GAAG,MAAM,CAY9B;AAED,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,mBAAmB,GAAG,OAAO,CAmBhH;AAED;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,KAAK,MAAM,CAAC;AAElE;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,gDAAgD,UAAU,GAAG,QAAQ,KAAG,MACxB,CAAC;AAY3E,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,OAAO,GAAI,QAAQ,SAAS,QAAQ,EAC/C,YAAY,QAAQ,GAAG,UAAU,EACjC,OAAO,QAAQ,EAAE,EACjB,UAAS,cAAmB,KAC3B,QAAQ,EAgCV,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,SAAS,QAAQ,EACrD,SAAS,QAAQ,EACjB,eAAe,UAAU,EACzB,OAAO,QAAQ,EAAE,EACjB,UAAS,oBAAgD,KACxD,QAAQ,EA8BV,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..668a084212dd086e3eaabdc652181fefbd1e4cda --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/index.d.ts @@ -0,0 +1,6 @@ +export * from './bezier-edge'; +export * from './straight-edge'; +export * from './smoothstep-edge'; +export * from './general'; +export * from './positions'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..0efd8299cb6d78821cb0c33c87bbf4ab4da6cd3c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/edges/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/positions.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/positions.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..e0687d3137ab63a073b53ec2f907057c766fc33d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/positions.d.ts @@ -0,0 +1,17 @@ +import { EdgePosition } from '../../types/edges'; +import { ConnectionMode, OnError } from '../../types/general'; +import { InternalNodeBase } from '../../types/nodes'; +import { Position, XYPosition } from '../../types/utils'; +import { Handle } from '../../types'; +export type GetEdgePositionParams = { + id: string; + sourceNode: InternalNodeBase; + sourceHandle: string | null; + targetNode: InternalNodeBase; + targetHandle: string | null; + connectionMode: ConnectionMode; + onError?: OnError; +}; +export declare function getEdgePosition(params: GetEdgePositionParams): EdgePosition | null; +export declare function getHandlePosition(node: InternalNodeBase, handle: Handle | null, fallbackPosition?: Position, center?: boolean): XYPosition; +//# sourceMappingURL=positions.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/positions.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/positions.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..ac5deb6aebf827684de916fff46ae838a44a28f6 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/positions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"positions.d.ts","sourceRoot":"","sources":["../../../src/utils/edges/positions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAc,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,gBAAgB,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAUF,wBAAgB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CA6ClF;AA2BD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,gBAAgB,GAAE,QAAwB,EAC1C,MAAM,UAAQ,GACb,UAAU,CAqBZ"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/smoothstep-edge.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/smoothstep-edge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..7e9f7ddd70836ee43107f8ae772e5b1db022077c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/smoothstep-edge.d.ts @@ -0,0 +1,66 @@ +import { Position } from '../../types'; +export interface GetSmoothStepPathParams { + /** The `x` position of the source handle. */ + sourceX: number; + /** The `y` position of the source handle. */ + sourceY: number; + /** + * The position of the source handle. + * @default Position.Bottom + */ + sourcePosition?: Position; + /** The `x` position of the target handle. */ + targetX: number; + /** The `y` position of the target handle. */ + targetY: number; + /** + * The position of the target handle. + * @default Position.Top + */ + targetPosition?: Position; + /** @default 5 */ + borderRadius?: number; + centerX?: number; + centerY?: number; + /** @default 20 */ + offset?: number; + /** + * Controls where the bend occurs along the path. + * 0 = at source, 1 = at target, 0.5 = midpoint + * @default 0.5 + */ + stepPosition?: number; +} +/** + * The `getSmoothStepPath` util returns everything you need to render a stepped path + * between two nodes. The `borderRadius` property can be used to choose how rounded + * the corners of those steps are. + * @public + * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path) + * and `offsetX`, `offsetY` between source handle and label. + * + * - `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. + * @example + * ```js + * const source = { x: 0, y: 20 }; + * const target = { x: 150, y: 100 }; + * + * const [path, labelX, labelY, offsetX, offsetY] = getSmoothStepPath({ + * sourceX: source.x, + * sourceY: source.y, + * sourcePosition: Position.Right, + * targetX: target.x, + * targetY: target.y, + * targetPosition: Position.Left, + * }); + * ``` + * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to work with multiple edge paths at once. + */ +export declare function getSmoothStepPath({ sourceX, sourceY, sourcePosition, targetX, targetY, targetPosition, borderRadius, centerX, centerY, offset, stepPosition, }: GetSmoothStepPathParams): [path: string, labelX: number, labelY: number, offsetX: number, offsetY: number]; +//# sourceMappingURL=smoothstep-edge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/smoothstep-edge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/smoothstep-edge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..3f20acbdc8905a34c1d391f4639d0a2f9eac022a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/smoothstep-edge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"smoothstep-edge.d.ts","sourceRoot":"","sources":["../../../src/utils/edges/smoothstep-edge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAmB,MAAM,aAAa,CAAC;AAExD,MAAM,WAAW,uBAAuB;IACtC,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,iBAAiB;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAwMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,OAAO,EACP,cAAgC,EAChC,OAAO,EACP,OAAO,EACP,cAA6B,EAC7B,YAAgB,EAChB,OAAO,EACP,OAAO,EACP,MAAW,EACX,YAAkB,GACnB,EAAE,uBAAuB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAoB5G"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/straight-edge.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/straight-edge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..bbb609bb30679e63f9c1a756c7c553caf8245698 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/straight-edge.d.ts @@ -0,0 +1,41 @@ +export type GetStraightPathParams = { + /** The `x` position of the source handle. */ + sourceX: number; + /** The `y` position of the source handle. */ + sourceY: number; + /** The `x` position of the target handle. */ + targetX: number; + /** The `y` position of the target handle. */ + targetY: number; +}; +/** + * Calculates the straight line path between two points. + * @public + * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path) + * and `offsetX`, `offsetY` between source handle and label. + * + * - `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. + * @example + * ```js + * const source = { x: 0, y: 20 }; + * const target = { x: 150, y: 100 }; + * + * const [path, labelX, labelY, offsetX, offsetY] = getStraightPath({ + * sourceX: source.x, + * sourceY: source.y, + * sourcePosition: Position.Right, + * targetX: target.x, + * targetY: target.y, + * targetPosition: Position.Left, + * }); + * ``` + * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to work with multiple edge paths at once. + */ +export declare function getStraightPath({ sourceX, sourceY, targetX, targetY, }: GetStraightPathParams): [path: string, labelX: number, labelY: number, offsetX: number, offsetY: number]; +//# sourceMappingURL=straight-edge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/straight-edge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/straight-edge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..b25ad6627b20dd3e9d5ee0694d63738de7e821fc --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/edges/straight-edge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"straight-edge.d.ts","sourceRoot":"","sources":["../../../src/utils/edges/straight-edge.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,qBAAqB,GAAG;IAClC,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,GACR,EAAE,qBAAqB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAS1G"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/general.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/general.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..75675713278f5e66cbd59c84ddf8f4ee5e470747 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/general.d.ts @@ -0,0 +1,86 @@ +import type { Dimensions, XYPosition, CoordinateExtent, Box, Rect, NodeBase, NodeOrigin, SnapGrid, Transform, InternalNodeBase, NodeLookup, Padding } from '../types'; +import { type Viewport } from '../types'; +import { type AriaLabelConfig } from '../constants'; +export declare const clamp: (val: number, min?: number, max?: number) => number; +export declare const clampPosition: (position: XYPosition | undefined, extent: CoordinateExtent, dimensions: Partial) => { + x: number; + y: number; +}; +export declare function clampPositionToParent(childPosition: XYPosition, childDimensions: Dimensions, parent: InternalNodeBase): { + x: number; + y: number; +}; +export declare const calcAutoPan: (pos: XYPosition, bounds: Dimensions, speed?: number, distance?: number) => number[]; +export declare const getBoundsOfBoxes: (box1: Box, box2: Box) => Box; +export declare const rectToBox: ({ x, y, width, height }: Rect) => Box; +export declare const boxToRect: ({ x, y, x2, y2 }: Box) => Rect; +export declare const nodeToRect: (node: InternalNodeBase | NodeBase, nodeOrigin?: NodeOrigin) => Rect; +export declare const nodeToBox: (node: InternalNodeBase | NodeBase, nodeOrigin?: NodeOrigin) => Box; +export declare const getBoundsOfRects: (rect1: Rect, rect2: Rect) => Rect; +export declare const getRectsOverlappingArea: (aX: number, aY: number, aWidth: number, aHeight: number, bX: number, bY: number, bWidth: number, bHeight: number) => number; +export declare const getOverlappingArea: (rectA: Rect, rectB: Rect) => number; +export declare const isRectObject: (obj: any) => obj is Rect; +export declare const isNumeric: (n: any) => n is number; +export declare const createDevWarn: (lib: string, helpUrl: string) => (id: string, message: string) => void; +export declare const snapPosition: (position: XYPosition, snapGrid?: SnapGrid) => XYPosition; +export declare const pointToRendererPoint: ({ x, y }: XYPosition, [tx, ty, tScale]: Transform, snapToGrid?: boolean, snapGrid?: SnapGrid) => XYPosition; +export declare const rendererPointToPoint: ({ x, y }: XYPosition, [tx, ty, tScale]: Transform) => XYPosition; +/** + * Returns a viewport that encloses the given bounds with padding. + * @public + * @remarks You can determine bounds of nodes with {@link getNodesBounds} and {@link getBoundsOfRects} + * @param bounds - Bounds to fit inside viewport. + * @param width - Width of the viewport. + * @param height - Height of the viewport. + * @param minZoom - Minimum zoom level of the resulting viewport. + * @param maxZoom - Maximum zoom level of the resulting viewport. + * @param padding - Padding around the bounds. + * @returns A transformed {@link Viewport} that encloses the given bounds which you can pass to e.g. {@link setViewport}. + * @example + * const { x, y, zoom } = getViewportForBounds( + * { x: 0, y: 0, width: 100, height: 100}, + * 1200, 800, 0.5, 2); + */ +export declare const getViewportForBounds: (bounds: Rect, width: number, height: number, minZoom: number, maxZoom: number, padding: Padding) => Viewport; +export declare const isMacOs: () => boolean; +export declare function isCoordinateExtent(extent?: CoordinateExtent | 'parent' | null): extent is CoordinateExtent; +export declare function getNodeDimensions(node: { + measured?: { + width?: number; + height?: number; + }; + width?: number; + height?: number; + initialWidth?: number; + initialHeight?: number; +}): { + width: number; + height: number; +}; +export declare function nodeHasDimensions(node: NodeType): boolean; +/** + * Convert child position to absolute position + * + * @internal + * @param position + * @param parentId + * @param nodeLookup + * @param nodeOrigin + * @returns an internal node with an absolute position + */ +export declare function evaluateAbsolutePosition(position: XYPosition, dimensions: { + width?: number; + height?: number; +} | undefined, parentId: string, nodeLookup: NodeLookup, nodeOrigin: NodeOrigin): XYPosition; +export declare function areSetsEqual(a: Set, b: Set): boolean; +/** + * Polyfill for Promise.withResolvers until we can use it in all browsers + * @internal + */ +export declare function withResolvers(): { + promise: Promise; + resolve: (value: T | PromiseLike) => void; + reject: (reason?: unknown) => void; +}; +export declare function mergeAriaLabelConfig(partial?: Partial): AriaLabelConfig; +//# sourceMappingURL=general.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/general.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/general.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..54a083a1017d4194a9616a583e7e0477889974f1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/general.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../src/utils/general.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/graph.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/graph.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4970bc7ce16fbff9d608bdbcbdc66da0d0c6c0f4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/graph.d.ts @@ -0,0 +1,191 @@ +import { type Transform, type XYPosition, type Rect, type NodeOrigin, type NodeBase, type EdgeBase, type FitViewParamsBase, type FitViewOptionsBase, CoordinateExtent, OnError, OnBeforeDeleteBase, NodeLookup, InternalNodeBase, NodeDragItem } from '../types'; +/** + * Test whether an object is usable as an Edge + * @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 A boolean indicating whether the element is an Edge + */ +export declare const isEdgeBase: (element: unknown) => element is EdgeType; +/** + * Test whether an object is usable as a Node + * @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 A boolean indicating whether the element is an Node + */ +export declare const isNodeBase: (element: unknown) => element is NodeType; +export declare const isInternalNodeBase: (element: unknown) => element is NodeType; +/** + * This util is used to tell you what nodes, if any, are connected to the given node + * as the _target_ of an edge. + * @public + * @param node - The node to get the connected nodes from. + * @param nodes - The array of all nodes. + * @param edges - The array of all edges. + * @returns An array of nodes that are connected over edges where the source is the given node. + * + * @example + * ```ts + *import { getOutgoers } from '@xyflow/react'; + * + *const nodes = []; + *const edges = []; + * + *const outgoers = getOutgoers( + * { id: '1', position: { x: 0, y: 0 }, data: { label: 'node' } }, + * nodes, + * edges, + *); + *``` + */ +export declare const getOutgoers: (node: NodeType | { + id: string; +}, nodes: NodeType[], edges: EdgeType[]) => NodeType[]; +/** + * This util is used to tell you what nodes, if any, are connected to the given node + * as the _source_ of an edge. + * @public + * @param node - The node to get the connected nodes from. + * @param nodes - The array of all nodes. + * @param edges - The array of all edges. + * @returns An array of nodes that are connected over edges where the target is the given node. + * + * @example + * ```ts + *import { getIncomers } from '@xyflow/react'; + * + *const nodes = []; + *const edges = []; + * + *const incomers = getIncomers( + * { id: '1', position: { x: 0, y: 0 }, data: { label: 'node' } }, + * nodes, + * edges, + *); + *``` + */ +export declare const getIncomers: (node: NodeType | { + id: string; +}, nodes: NodeType[], edges: EdgeType[]) => NodeType[]; +export declare const getNodePositionWithOrigin: (node: NodeBase, nodeOrigin?: NodeOrigin) => XYPosition; +export type GetNodesBoundsParams = { + /** + * Origin of the nodes: `[0, 0]` for top-left, `[0.5, 0.5]` for center. + * @default [0, 0] + */ + nodeOrigin?: NodeOrigin; + nodeLookup?: NodeLookup>; +}; +/** + * Returns the bounding box that contains all the given nodes in an array. This can + * be useful when combined with [`getViewportForBounds`](/api-reference/utils/get-viewport-for-bounds) + * to calculate the correct transform to fit the given nodes in a viewport. + * @public + * @remarks Useful when combined with {@link getViewportForBounds} to calculate the correct transform to fit the given nodes in a viewport. + * @param nodes - Nodes to calculate the bounds for. + * @returns Bounding box enclosing all nodes. + * + * @remarks This function was previously called `getRectOfNodes` + * + * @example + * ```js + *import { getNodesBounds } from '@xyflow/react'; + * + *const nodes = [ + * { + * id: 'a', + * position: { x: 0, y: 0 }, + * data: { label: 'a' }, + * width: 50, + * height: 25, + * }, + * { + * id: 'b', + * position: { x: 100, y: 100 }, + * data: { label: 'b' }, + * width: 50, + * height: 25, + * }, + *]; + * + *const bounds = getNodesBounds(nodes); + *``` + */ +export declare const getNodesBounds: (nodes: (NodeType | InternalNodeBase | string)[], params?: GetNodesBoundsParams) => Rect; +export type GetInternalNodesBoundsParams = { + useRelativePosition?: boolean; + filter?: (node: NodeType) => boolean; +}; +/** + * Determines a bounding box that contains all given nodes in an array + * @internal + */ +export declare const getInternalNodesBounds: (nodeLookup: Map, params?: GetInternalNodesBoundsParams) => Rect; +export declare const getNodesInside: (nodes: Map>, rect: Rect, [tx, ty, tScale]?: Transform, partially?: boolean, excludeNonSelectableNodes?: boolean) => InternalNodeBase[]; +/** + * This utility filters an array of edges, keeping only those where either the source or target + * node is present in the given array of nodes. + * @public + * @param nodes - Nodes you want to get the connected edges for. + * @param edges - All edges. + * @returns Array of edges that connect any of the given nodes with each other. + * + * @example + * ```js + *import { getConnectedEdges } from '@xyflow/react'; + * + *const nodes = [ + * { id: 'a', position: { x: 0, y: 0 } }, + * { id: 'b', position: { x: 100, y: 0 } }, + *]; + * + *const edges = [ + * { id: 'a->c', source: 'a', target: 'c' }, + * { id: 'c->d', source: 'c', target: 'd' }, + *]; + * + *const connectedEdges = getConnectedEdges(nodes, edges); + * // => [{ id: 'a->c', source: 'a', target: 'c' }] + *``` + */ +export declare const getConnectedEdges: (nodes: NodeType[], edges: EdgeType[]) => EdgeType[]; +export declare function fitViewport, Options extends FitViewOptionsBase>({ nodes, width, height, panZoom, minZoom, maxZoom }: Params, options?: Omit): Promise; +/** + * This function calculates the next position of a node, taking into account the node's extent, parent node, and origin. + * + * @internal + * @returns position, positionAbsolute + */ +export declare function calculateNodePosition({ nodeId, nextPosition, nodeLookup, nodeOrigin, nodeExtent, onError, }: { + nodeId: string; + nextPosition: XYPosition; + nodeLookup: NodeLookup>; + nodeOrigin?: NodeOrigin; + nodeExtent?: CoordinateExtent; + onError?: OnError; +}): { + position: XYPosition; + positionAbsolute: XYPosition; +}; +/** + * Pass in nodes & edges to delete, get arrays of nodes and edges that actually can be deleted + * @internal + * @param param.nodesToRemove - The nodes to remove + * @param param.edgesToRemove - The edges to remove + * @param param.nodes - All nodes + * @param param.edges - All edges + * @param param.onBeforeDelete - Callback to check which nodes and edges can be deleted + * @returns nodes: nodes that can be deleted, edges: edges that can be deleted + */ +export declare function getElementsToRemove({ nodesToRemove, edgesToRemove, nodes, edges, onBeforeDelete, }: { + nodesToRemove: Partial[]; + edgesToRemove: Partial[]; + nodes: NodeType[]; + edges: EdgeType[]; + onBeforeDelete?: OnBeforeDeleteBase; +}): Promise<{ + nodes: NodeType[]; + edges: EdgeType[]; +}>; +//# sourceMappingURL=graph.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/graph.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/graph.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..d7ebd47e40d869ae84e19127d51a90777bbb8e07 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/graph.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/utils/graph.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2f7dd1ddc9ead152454c13a8e078785cb899ac94 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/index.d.ts @@ -0,0 +1,12 @@ +export * from './connections'; +export * from './dom'; +export * from './edges'; +export * from './graph'; +export * from './general'; +export * from './marker'; +export * from './node-toolbar'; +export * from './edge-toolbar'; +export * from './store'; +export * from './types'; +export * from './shallow-node-data'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..999b5c12ff85494e946f82877c237ccbd00bb2f5 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/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,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/marker.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/marker.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f343552b489111f149f3ddd7700007d3b52c87c2 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/marker.d.ts @@ -0,0 +1,9 @@ +import type { EdgeBase, EdgeMarkerType, MarkerProps } from '../types'; +export declare function getMarkerId(marker: EdgeMarkerType | undefined, id?: string | null): string; +export declare function createMarkerIds(edges: EdgeBase[], { id, defaultColor, defaultMarkerStart, defaultMarkerEnd, }: { + id?: string | null; + defaultColor?: string | null; + defaultMarkerStart?: EdgeMarkerType; + defaultMarkerEnd?: EdgeMarkerType; +}): MarkerProps[]; +//# sourceMappingURL=marker.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/marker.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/marker.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..edea605e3cc6bdd9bd588f5ff43ce866c3231265 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/marker.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"marker.d.ts","sourceRoot":"","sources":["../../src/utils/marker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAc,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAElF,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAe1F;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,QAAQ,EAAE,EACjB,EACE,EAAE,EACF,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,GACjB,EAAE;IACD,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kBAAkB,CAAC,EAAE,cAAc,CAAC;IACpC,gBAAgB,CAAC,EAAE,cAAc,CAAC;CACnC,iBAmBF"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/node-toolbar.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/node-toolbar.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d687f1005d2a2b670a9ce114eb18aeadaf4adb05 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/node-toolbar.d.ts @@ -0,0 +1,3 @@ +import { Position, type Rect, type Viewport, type Align } from '../'; +export declare function getNodeToolbarTransform(nodeRect: Rect, viewport: Viewport, position: Position, offset: number, align: Align): string; +//# sourceMappingURL=node-toolbar.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/node-toolbar.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/node-toolbar.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..35bada631ced6caed1814e7c9fa799178f07083f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/node-toolbar.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"node-toolbar.d.ts","sourceRoot":"","sources":["../../src/utils/node-toolbar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,KAAK,CAAC;AAErE,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,IAAI,EACd,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,GACX,MAAM,CA0CR"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/shallow-node-data.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/shallow-node-data.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f3fcf5bcb48d806ec76c1f4b40b9b5bd4398170c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/shallow-node-data.d.ts @@ -0,0 +1,5 @@ +import { NodeBase } from '../types'; +type NodeData = Pick; +export declare function shallowNodeData(a: NodeData | NodeData[] | null, b: NodeData | NodeData[] | null): boolean; +export {}; +//# sourceMappingURL=shallow-node-data.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/shallow-node-data.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/shallow-node-data.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..3555e643b11ea953598ae5950d023fb574e0ccc5 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/shallow-node-data.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"shallow-node-data.d.ts","sourceRoot":"","sources":["../../src/utils/shallow-node-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,KAAK,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;AAEvD,wBAAgB,eAAe,CAAC,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,IAAI,WAmB/F"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/store.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/store.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..148f7f9a707f0f5ee5dde853532de8b52d10a775 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/store.d.ts @@ -0,0 +1,34 @@ +import { ZIndexMode } from '..'; +import { NodeBase, CoordinateExtent, InternalNodeUpdate, NodeOrigin, PanZoomInstance, Transform, XYPosition, ConnectionLookup, EdgeBase, EdgeLookup, InternalNodeBase, NodeLookup, NodeDimensionChange, NodePositionChange, ParentLookup } from '../types'; +import { ParentExpandChild } from './types'; +export declare function updateAbsolutePositions(nodeLookup: NodeLookup>, parentLookup: ParentLookup>, options?: UpdateNodesOptions): void; +type UpdateNodesOptions = { + nodeOrigin?: NodeOrigin; + nodeExtent?: CoordinateExtent; + elevateNodesOnSelect?: boolean; + defaults?: Partial; + zIndexMode?: ZIndexMode; + checkEquality?: boolean; +}; +export declare function isManualZIndexMode(zIndexMode?: ZIndexMode): boolean; +type AdoptUserNodesReturn = { + nodesInitialized: boolean; + hasSelectedNodes: boolean; +}; +export declare function adoptUserNodes(nodes: NodeType[], nodeLookup: NodeLookup>, parentLookup: ParentLookup>, options?: UpdateNodesOptions): AdoptUserNodesReturn; +export declare function handleExpandParent(children: ParentExpandChild[], nodeLookup: NodeLookup, parentLookup: ParentLookup, nodeOrigin?: NodeOrigin): (NodeDimensionChange | NodePositionChange)[]; +export declare function updateNodeInternals(updates: Map, nodeLookup: NodeLookup, parentLookup: ParentLookup, domNode: HTMLElement | null, nodeOrigin?: NodeOrigin, nodeExtent?: CoordinateExtent, zIndexMode?: ZIndexMode): { + changes: (NodeDimensionChange | NodePositionChange)[]; + updatedInternals: boolean; +}; +export declare function panBy({ delta, panZoom, transform, translateExtent, width, height, }: { + delta: XYPosition; + panZoom: PanZoomInstance | null; + transform: Transform; + translateExtent: CoordinateExtent; + width: number; + height: number; +}): Promise; +export declare function updateConnectionLookup(connectionLookup: ConnectionLookup, edgeLookup: EdgeLookup, edges: EdgeBase[]): void; +export {}; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/store.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/store.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..be34e7eb0a534af6b79e062018f0700c14cbfdec --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/utils/store.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/types.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/types.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b9dd11163103d76e68ebc5c713a44840622979ad --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/types.d.ts @@ -0,0 +1,8 @@ +import { Rect } from '../types'; +export type Optional = Pick, K> & Omit; +export type ParentExpandChild = { + id: string; + parentId: string; + rect: Rect; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/types.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/types.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..c0f6120942411bbdbe76271759c2aff27378aa62 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/utils/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,iBAAiB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/XYDrag.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/XYDrag.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..5f7214378e97e191fb31b1084136e8c42731baa6 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/XYDrag.d.ts @@ -0,0 +1,57 @@ +import type { NodeBase, NodeDragItem, EdgeBase, CoordinateExtent, NodeOrigin, OnError, SnapGrid, Transform, PanBy, OnSelectionDrag, UpdateNodePositions, InternalNodeBase } from '../types'; +export type OnDrag = (event: MouseEvent, dragItems: Map, node: NodeType, nodes: NodeType[]) => void; +type OnNodeDrag = (e: MouseEvent | TouchEvent, node: NodeType, nodes: NodeType[]) => void | undefined; +type FlowGraph = { + nodes: NodeType[]; + edges: EdgeType[]; +}; +type StoreItems = { + nodes: NodeType[]; + nodeLookup: Map>; + edges: EdgeType[]; + nodeExtent: CoordinateExtent; + snapGrid: SnapGrid; + snapToGrid: boolean; + nodeOrigin: NodeOrigin; + multiSelectionActive: boolean; + domNode?: Element | null; + transform: Transform; + autoPanOnNodeDrag: boolean; + nodesDraggable: boolean; + selectNodesOnDrag: boolean; + nodeDragThreshold: number; + panBy: PanBy; + unselectNodesAndEdges: (params?: Partial>) => void; + onError?: OnError; + onNodeDragStart?: OnNodeDrag; + onNodeDrag?: OnNodeDrag; + onNodeDragStop?: OnNodeDrag; + onSelectionDragStart?: OnSelectionDrag; + onSelectionDrag?: OnSelectionDrag; + onSelectionDragStop?: OnSelectionDrag; + updateNodePositions: UpdateNodePositions>; + autoPanSpeed?: number; +}; +export type XYDragParams = { + getStoreItems: () => StoreItems; + onDragStart?: OnDrag; + onDrag?: OnDrag; + onDragStop?: OnDrag; + onNodeMouseDown?: (id: string) => void; + autoPanSpeed?: number; +}; +export type XYDragInstance = { + update: (params: DragUpdateParams) => void; + destroy: () => void; +}; +export type DragUpdateParams = { + noDragClassName?: string; + handleSelector?: string; + isSelectable?: boolean; + nodeId?: string; + domNode: Element; + nodeClickDistance?: number; +}; +export declare function XYDrag({ onNodeMouseDown, getStoreItems, onDragStart, onDrag, onDragStop, }: XYDragParams): XYDragInstance; +export {}; +//# sourceMappingURL=XYDrag.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/XYDrag.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/XYDrag.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..5d27cd69f440ebbd4005975eda4154a01dc9c291 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/XYDrag.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"XYDrag.d.ts","sourceRoot":"","sources":["../../src/xydrag/XYDrag.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..48955a544c804f69a415417537d36af5838aff2d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/index.d.ts @@ -0,0 +1,2 @@ +export * from './XYDrag'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..6f23db8352102902788207dbafaaf55971543dc9 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/xydrag/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/utils.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..9581077a4d4b0f9644072830dd41e018cba7545b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/utils.d.ts @@ -0,0 +1,24 @@ +import { type NodeDragItem, type XYPosition, InternalNodeBase, NodeBase, NodeLookup, SnapGrid } from '../types'; +export declare function isParentSelected(node: NodeType, nodeLookup: NodeLookup): boolean; +export declare function hasSelector(target: Element | EventTarget | null, selector: string, domNode: Element): boolean; +export declare function getDragItems(nodeLookup: Map>, nodesDraggable: boolean, mousePos: XYPosition, nodeId?: string): Map; +export declare function getEventHandlerParams({ nodeId, dragItems, nodeLookup, dragging, }: { + nodeId?: string; + dragItems: Map; + nodeLookup: Map>; + dragging?: boolean; +}): [NodeType, NodeType[]]; +/** + * If a selection is being dragged we want to apply the same snap offset to all nodes in the selection. + * This function calculates the snap offset based on the first node in the selection. + */ +export declare function calculateSnapOffset({ dragItems, snapGrid, x, y, }: { + dragItems: Map; + snapGrid: SnapGrid; + x: number; + y: number; +}): { + x: number; + y: number; +} | null; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/utils.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/utils.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..a44bbf93e7cd18d87a4d93f22ec1ab781d027f19 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xydrag/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/xydrag/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGhH,wBAAgB,gBAAgB,CAAC,QAAQ,SAAS,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAgB3G;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAU7G;AAGD,wBAAgB,YAAY,CAAC,QAAQ,SAAS,QAAQ,EACpD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EACnD,cAAc,EAAE,OAAO,EACvB,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE,MAAM,GACd,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAoC3B;AAOD,wBAAgB,qBAAqB,CAAC,QAAQ,SAAS,QAAQ,EAAE,EAC/D,MAAM,EACN,SAAS,EACT,UAAU,EACV,QAAe,GAChB,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACrC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CA+BzB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,QAAQ,EACR,CAAC,EACD,CAAC,GACF,EAAE;IACD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACrC,QAAQ,EAAE,QAAQ,CAAC;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;;;SAiBA"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/XYHandle.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/XYHandle.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..1f5d45dae65ac946f386c1e5afad4c4eb18348ef --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/XYHandle.d.ts @@ -0,0 +1,3 @@ +import { XYHandleInstance } from './types'; +export declare const XYHandle: XYHandleInstance; +//# sourceMappingURL=XYHandle.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/XYHandle.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/XYHandle.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..cc5abf290d3c4f89382a4c5e5638451fd71d8614 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/XYHandle.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"XYHandle.d.ts","sourceRoot":"","sources":["../../src/xyhandle/XYHandle.ts"],"names":[],"mappings":"AAqBA,OAAO,EAA8C,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA6SvF,eAAO,MAAM,QAAQ,EAAE,gBAGtB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..15994ac1ce8237edee93b02d5d33f144d6a28b57 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/index.d.ts @@ -0,0 +1,2 @@ +export * from './XYHandle'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..a74366aebc1e8b9278caad97df3b4209c67953ba --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/xyhandle/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/types.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/types.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..01c735d191fd7a26e727f8f39592079ef58c5a27 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/types.d.ts @@ -0,0 +1,50 @@ +import { ConnectionMode, type Connection, type OnConnect, type OnConnectStart, type HandleType, type PanBy, type Transform, type Handle, type OnConnectEnd, type UpdateConnection, type IsValidConnection, NodeLookup, FinalConnectionState, NodeBase, InternalNodeBase, EdgeBase } from '../types'; +export type OnPointerDownParams = { + autoPanOnConnect: boolean; + connectionMode: ConnectionMode; + connectionRadius: number; + domNode: HTMLDivElement | null; + handleId: string | null; + nodeId: string; + isTarget: boolean; + nodeLookup: NodeLookup>; + lib: string; + flowId: string | null; + edgeUpdaterType?: HandleType; + updateConnection: UpdateConnection>; + panBy: PanBy; + cancelConnection: () => void; + onConnectStart?: OnConnectStart; + onConnect?: OnConnect; + onConnectEnd?: OnConnectEnd; + isValidConnection?: IsValidConnection; + onReconnectEnd?: (evt: MouseEvent | TouchEvent, connectionState: FinalConnectionState>) => void; + getTransform: () => Transform; + getFromHandle: () => Handle | null; + autoPanSpeed?: number; + dragThreshold?: number; + handleDomNode: Element; +}; +export type IsValidParams = { + handle: Pick | null; + connectionMode: ConnectionMode; + fromNodeId: string; + fromHandleId: string | null; + fromType: HandleType; + isValidConnection?: IsValidConnection; + doc: Document | ShadowRoot; + lib: string; + flowId: string | null; + nodeLookup: NodeLookup>; +}; +export type XYHandleInstance = { + onPointerDown: (event: MouseEvent | TouchEvent, params: OnPointerDownParams) => void; + isValid: (event: MouseEvent | TouchEvent, params: IsValidParams) => Result; +}; +export type Result = { + handleDomNode: Element | null; + isValid: boolean; + connection: Connection | null; + toHandle: Handle | null; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/types.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/types.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..e05bc0040a7a125b73a6d8a4e7127e0c690cc74d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/xyhandle/types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/utils.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..e14f65589efe59d506e36d0887be6d1ebc42fb80 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/utils.d.ts @@ -0,0 +1,10 @@ +import type { HandleType, XYPosition, Handle, NodeLookup, ConnectionMode } from '../types'; +export declare function getClosestHandle(position: XYPosition, connectionRadius: number, nodeLookup: NodeLookup, fromHandle: { + nodeId: string; + type: HandleType; + id?: string | null; +}): Handle | null; +export declare function getHandle(nodeId: string, handleType: HandleType, handleId: string | null, nodeLookup: NodeLookup, connectionMode: ConnectionMode, withAbsolutePosition?: boolean): Handle | null; +export declare function getHandleType(edgeUpdaterType: HandleType | undefined, handleDomNode: Element | null): HandleType | null; +export declare function isConnectionValid(isInsideConnectionRadius: boolean, isHandleValid: boolean): boolean | null; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/utils.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/utils.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..18c448a13df8c83b3ca849af941ad2d607bb8d72 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyhandle/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/xyhandle/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAoB,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AA0B7G,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,UAAU,EACpB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACnE,MAAM,GAAG,IAAI,CA2Cf;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,oBAAoB,UAAQ,GAC3B,MAAM,GAAG,IAAI,CAef;AAED,wBAAgB,aAAa,CAC3B,eAAe,EAAE,UAAU,GAAG,SAAS,EACvC,aAAa,EAAE,OAAO,GAAG,IAAI,GAC5B,UAAU,GAAG,IAAI,CAUnB;AAED,wBAAgB,iBAAiB,CAAC,wBAAwB,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,kBAU1F"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyminimap/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyminimap/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b881bdfc0c10e421f230622e14d08fea38d164df --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyminimap/index.d.ts @@ -0,0 +1,28 @@ +import { pointer } from 'd3-selection'; +import type { CoordinateExtent, PanZoomInstance, Transform } from '../types'; +export type XYMinimapInstance = { + update: (params: XYMinimapUpdate) => void; + destroy: () => void; + pointer: typeof pointer; +}; +export type XYMinimapParams = { + panZoom: PanZoomInstance; + domNode: Element; + getTransform: () => Transform; + getViewScale: () => number; +}; +export type XYMinimapUpdate = { + translateExtent: CoordinateExtent; + width: number; + height: number; + inversePan?: boolean; + zoomStep?: number; + pannable?: boolean; + zoomable?: boolean; +}; +export declare function XYMinimap({ domNode, panZoom, getTransform, getViewScale }: XYMinimapParams): { + update: ({ translateExtent, width, height, zoomStep, pannable, zoomable, inversePan, }: XYMinimapUpdate) => void; + destroy: () => void; + pointer: typeof pointer; +}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyminimap/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyminimap/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..2ef52ced2a0c9106330b61e24b9000f65f64c1d4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyminimap/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/xyminimap/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,OAAO,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG7E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,SAAS,CAAC;IAC9B,YAAY,EAAE,MAAM,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,eAAe,EAAE,gBAAgB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,eAAe;4FAWtF,eAAe;;;EAqFnB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/XYPanZoom.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/XYPanZoom.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4e98a1a620da3edd1dfea863341e12e789fb28be --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/XYPanZoom.d.ts @@ -0,0 +1,12 @@ +import { type Viewport, PanZoomParams, PanZoomInstance } from '../types'; +export type ZoomPanValues = { + isZoomingOrPanning: boolean; + usedRightMouseButton: boolean; + prevViewport: Viewport; + mouseButton: number; + timerId: ReturnType | undefined; + panScrollTimeout: ReturnType | undefined; + isPanScrolling: boolean; +}; +export declare function XYPanZoom({ domNode, minZoom, maxZoom, translateExtent, viewport, onPanZoom, onPanZoomStart, onPanZoomEnd, onDraggingChange, }: PanZoomParams): PanZoomInstance; +//# sourceMappingURL=XYPanZoom.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/XYPanZoom.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/XYPanZoom.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..6bb0bc748769d2c26c0c5992688504bbf67a4ccf --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/XYPanZoom.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"XYPanZoom.d.ts","sourceRoot":"","sources":["../../src/xypanzoom/XYPanZoom.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,QAAQ,EAGb,aAAa,EACb,eAAe,EAChB,MAAM,UAAU,CAAC;AAclB,MAAM,MAAM,aAAa,GAAG;IAC1B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,YAAY,EAAE,QAAQ,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,SAAS,CAAC;IACnD,gBAAgB,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,SAAS,CAAC;IAC5D,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,OAAO,EACP,OAAO,EACP,eAAe,EACf,QAAQ,EACR,SAAS,EACT,cAAc,EACd,YAAY,EACZ,gBAAgB,GACjB,EAAE,aAAa,GAAG,eAAe,CA0RjC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/eventhandler.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/eventhandler.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..42ee4f427270c9678783dd5e8037cc9403678137 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/eventhandler.d.ts @@ -0,0 +1,46 @@ +import type { D3ZoomEvent } from 'd3-zoom'; +import { PanOnScrollMode, type D3SelectionInstance, type D3ZoomHandler, type D3ZoomInstance, type OnPanZoom, type OnDraggingChange, type OnTransformChange } from '../types'; +import { ZoomPanValues } from './XYPanZoom'; +export type PanOnScrollParams = { + zoomPanValues: ZoomPanValues; + noWheelClassName: string; + d3Selection: D3SelectionInstance; + d3Zoom: D3ZoomInstance; + panOnScrollMode: PanOnScrollMode; + panOnScrollSpeed: number; + zoomOnPinch: boolean; + onPanZoomStart?: OnPanZoom; + onPanZoom?: OnPanZoom; + onPanZoomEnd?: OnPanZoom; +}; +export type ZoomOnScrollParams = { + noWheelClassName: string; + preventScrolling: boolean; + d3ZoomHandler: D3ZoomHandler; +}; +export type PanZoomStartParams = { + zoomPanValues: ZoomPanValues; + onDraggingChange: OnDraggingChange; + onPanZoomStart?: OnPanZoom; +}; +export type PanZoomParams = { + zoomPanValues: ZoomPanValues; + panOnDrag: boolean | number[]; + onPaneContextMenu: boolean; + onTransformChange: OnTransformChange; + onPanZoom?: OnPanZoom; +}; +export type PanZoomEndParams = { + zoomPanValues: ZoomPanValues; + panOnDrag: boolean | number[]; + panOnScroll: boolean; + onDraggingChange: (isDragging: boolean) => void; + onPanZoomEnd?: OnPanZoom; + onPaneContextMenu?: (event: any) => void; +}; +export declare function createPanOnScrollHandler({ zoomPanValues, noWheelClassName, d3Selection, d3Zoom, panOnScrollMode, panOnScrollSpeed, zoomOnPinch, onPanZoomStart, onPanZoom, onPanZoomEnd, }: PanOnScrollParams): (event: any) => false | undefined; +export declare function createZoomOnScrollHandler({ noWheelClassName, preventScrolling, d3ZoomHandler }: ZoomOnScrollParams): (this: Element, event: any, d: unknown) => null | undefined; +export declare function createPanZoomStartHandler({ zoomPanValues, onDraggingChange, onPanZoomStart }: PanZoomStartParams): (event: D3ZoomEvent) => void; +export declare function createPanZoomHandler({ zoomPanValues, panOnDrag, onPaneContextMenu, onTransformChange, onPanZoom, }: PanZoomParams): (event: D3ZoomEvent) => void; +export declare function createPanZoomEndHandler({ zoomPanValues, panOnDrag, panOnScroll, onDraggingChange, onPanZoomEnd, onPaneContextMenu, }: PanZoomEndParams): (event: D3ZoomEvent) => void; +//# sourceMappingURL=eventhandler.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/eventhandler.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/eventhandler.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..650b80879f69ffe210752626d3d8624dd52582c5 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/eventhandler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"eventhandler.d.ts","sourceRoot":"","sources":["../../src/xypanzoom/eventhandler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,OAAO,EACL,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,mBAAmB,CAAC;IACjC,MAAM,EAAE,cAAc,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;IAC9B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAC1C,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EACvC,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,MAAM,EACN,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,SAAS,EACT,YAAY,GACb,EAAE,iBAAiB,IACV,OAAO,GAAG,uBAoEnB;AAED,wBAAgB,yBAAyB,CAAC,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,EAAE,kBAAkB,IAChG,MAAM,OAAO,EAAE,OAAO,GAAG,EAAE,GAAG,OAAO,sBAmBvD;AAED,wBAAgB,yBAAyB,CAAC,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,EAAE,kBAAkB,IACvG,OAAO,WAAW,CAAC,cAAc,EAAE,GAAG,CAAC,UAoBhD;AAED,wBAAgB,oBAAoB,CAAC,EACnC,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,GACV,EAAE,aAAa,IACN,OAAO,WAAW,CAAC,cAAc,EAAE,GAAG,CAAC,UAahD;AAED,wBAAgB,uBAAuB,CAAC,EACtC,aAAa,EACb,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,GAClB,EAAE,gBAAgB,IACT,OAAO,WAAW,CAAC,cAAc,EAAE,GAAG,CAAC,UAiChD"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/filter.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/filter.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..502a5890fde1761f41353a0d534d10eefc00b9d1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/filter.d.ts @@ -0,0 +1,15 @@ +export type FilterParams = { + zoomActivationKeyPressed: boolean; + zoomOnScroll: boolean; + zoomOnPinch: boolean; + panOnDrag: boolean | number[]; + panOnScroll: boolean; + zoomOnDoubleClick: boolean; + userSelectionActive: boolean; + noWheelClassName: string; + noPanClassName: string; + lib: string; + connectionInProgress: boolean; +}; +export declare function createFilter({ zoomActivationKeyPressed, zoomOnScroll, zoomOnPinch, panOnDrag, panOnScroll, zoomOnDoubleClick, userSelectionActive, noWheelClassName, noPanClassName, lib, connectionInProgress, }: FilterParams): (event: any) => boolean; +//# sourceMappingURL=filter.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/filter.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/filter.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..439297e670ded4fa982376368a8341db918a4855 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/filter.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/xypanzoom/filter.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG;IACzB,wBAAwB,EAAE,OAAO,CAAC;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,oBAAoB,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,wBAAwB,EACxB,YAAY,EACZ,WAAW,EACX,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,GAAG,EACH,oBAAoB,GACrB,EAAE,YAAY,IACL,OAAO,GAAG,KAAG,OAAO,CAwE7B"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..eaeb1d643db8f12041d5c33df2d0858856d0fbcd --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/index.d.ts @@ -0,0 +1,2 @@ +export * from './XYPanZoom'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..b4758d78fc3ae45f49fa70a13588e4b9d55d3cca --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/xypanzoom/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/utils.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebddee33d4dc4ecbcfbf58829d636d7ec0911206 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/utils.d.ts @@ -0,0 +1,9 @@ +import { type ZoomTransform } from 'd3-zoom'; +import { type D3SelectionInstance, type Viewport } from '../types'; +export declare const transformToViewport: (transform: ZoomTransform) => Viewport; +export declare const viewportToTransform: ({ x, y, zoom }: Viewport) => ZoomTransform; +export declare const isWrappedWithClass: (event: any, className: string | undefined) => any; +export declare const isRightClickPan: (panOnDrag: boolean | number[], usedButton: number) => boolean; +export declare const getD3Transition: (selection: D3SelectionInstance, duration?: number, ease?: (t: number) => number, onEnd?: () => void) => D3SelectionInstance | import("d3-transition").Transition; +export declare const wheelDelta: (event: any) => number; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/utils.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/utils.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..6f3e367e858e39c006a8d04e856fcdc48e4c6e4d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xypanzoom/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/xypanzoom/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,SAAS,CAAC;AAI3D,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGnE,eAAO,MAAM,mBAAmB,GAAI,WAAW,aAAa,KAAG,QAI7D,CAAC;AAEH,eAAO,MAAM,mBAAmB,GAAI,gBAAgB,QAAQ,KAAG,aACrB,CAAC;AAE3C,eAAO,MAAM,kBAAkB,GAAI,OAAO,GAAG,EAAE,WAAW,MAAM,GAAG,SAAS,QAA0C,CAAC;AAEvH,eAAO,MAAM,eAAe,GAAI,WAAW,OAAO,GAAG,MAAM,EAAE,EAAE,YAAY,MAAM,YACV,CAAC;AAKxE,eAAO,MAAM,eAAe,GAAI,WAAW,mBAAmB,EAAE,iBAAY,EAAE,WAFtD,MAAM,WAEkE,EAAE,kBAAgB,gGAQjH,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,OAAO,GAAG,WAIpC,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/XYResizer.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/XYResizer.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..1d57d2c9cf504579121d813265ee7f1d89a58810 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/XYResizer.d.ts @@ -0,0 +1,49 @@ +import type { NodeBase, NodeLookup, NodeOrigin, Transform, XYPosition } from '../types'; +import type { OnResize, OnResizeEnd, OnResizeStart, ShouldResize, ControlPosition, ResizeControlDirection } from './types'; +export type XYResizerChange = { + x?: number; + y?: number; + width?: number; + height?: number; +}; +export type XYResizerChildChange = { + id: string; + position: XYPosition; + extent?: NodeBase['extent']; +}; +type XYResizerParams = { + domNode: HTMLDivElement; + nodeId: string; + getStoreItems: () => { + nodeLookup: NodeLookup; + transform: Transform; + snapGrid?: [number, number]; + snapToGrid: boolean; + nodeOrigin: NodeOrigin; + paneDomNode: HTMLDivElement | null; + }; + onChange: (changes: XYResizerChange, childChanges: XYResizerChildChange[]) => void; + onEnd?: (change: Required) => void; +}; +type XYResizerUpdateParams = { + controlPosition: ControlPosition; + boundaries: { + minWidth: number; + minHeight: number; + maxWidth: number; + maxHeight: number; + }; + keepAspectRatio: boolean; + resizeDirection?: ResizeControlDirection; + onResizeStart: OnResizeStart | undefined; + onResize: OnResize | undefined; + onResizeEnd: OnResizeEnd | undefined; + shouldResize: ShouldResize | undefined; +}; +export type XYResizerInstance = { + update: (params: XYResizerUpdateParams) => void; + destroy: () => void; +}; +export declare function XYResizer({ domNode, nodeId, getStoreItems, onChange, onEnd }: XYResizerParams): XYResizerInstance; +export {}; +//# sourceMappingURL=XYResizer.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/XYResizer.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/XYResizer.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..fa6c4d0bfaaa50964dcf3dec665345eb2afcba7c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/XYResizer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"XYResizer.d.ts","sourceRoot":"","sources":["../../src/xyresizer/XYResizer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACX,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EACV,QAAQ,EACR,WAAW,EACX,aAAa,EAEb,YAAY,EACZ,eAAe,EACf,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAWjB,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,UAAU,CAAC;IACrB,MAAM,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;CAC7B,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM;QACnB,UAAU,EAAE,UAAU,CAAC;QACvB,SAAS,EAAE,SAAS,CAAC;QACrB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,UAAU,EAAE,OAAO,CAAC;QACpB,UAAU,EAAE,UAAU,CAAC;QACvB,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC;KACpC,CAAC;IACF,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAE,KAAK,IAAI,CAAC;IACnF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;CACrD,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,eAAe,EAAE,eAAe,CAAC;IACjC,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IACzC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/B,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAgBF,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,eAAe,GAAG,iBAAiB,CAgQjH"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b26a0e63d809de49f438b14d6b5a2ea2c619290b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/index.d.ts @@ -0,0 +1,3 @@ +export * from './types'; +export * from './XYResizer'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..aa841ae79ee6cda669427e724540b26f1b9d85e8 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/xyresizer/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/types.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/types.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..cb4166dae02095aebff3a63561f35d51605a6d19 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/types.d.ts @@ -0,0 +1,59 @@ +import type { D3DragEvent, SubjectPosition } from 'd3-drag'; +/** + * @public + * @inline + */ +export type ResizeParams = { + x: number; + y: number; + width: number; + height: number; +}; +export type ResizeParamsWithDirection = ResizeParams & { + direction: number[]; +}; +/** + * Used to determine the control line position of the NodeResizer + * + * @public + * @inline + */ +export type ControlLinePosition = 'top' | 'bottom' | 'left' | 'right'; +/** + * Used to determine the control position of the NodeResizer + * + * @public + * @inline + */ +export type ControlPosition = ControlLinePosition | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; +/** + * Used to determine the variant of the resize control + * + * @public + */ +export declare enum ResizeControlVariant { + Line = "line", + Handle = "handle" +} +/** + * The direction the user can resize the node. + * @public + * @inline + */ +export type ResizeControlDirection = 'horizontal' | 'vertical'; +export declare const XY_RESIZER_HANDLE_POSITIONS: ControlPosition[]; +export declare const XY_RESIZER_LINE_POSITIONS: ControlLinePosition[]; +type OnResizeHandler = (event: ResizeDragEvent, params: Params) => Result; +export type ResizeDragEvent = D3DragEvent; +/** + * Callback to determine if node should resize + * + * @inline + * @public + */ +export type ShouldResize = OnResizeHandler; +export type OnResizeStart = OnResizeHandler; +export type OnResize = OnResizeHandler; +export type OnResizeEnd = OnResizeHandler; +export {}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/types.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/types.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..0eb6ffb722e1848bc231f977c4c0c087eb9aa3b8 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/xyresizer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,YAAY,GAAG;IACrD,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,CAAC;AAE9G;;;;GAIG;AACH,oBAAY,oBAAoB;IAC9B,IAAI,SAAS;IACb,MAAM,WAAW;CAClB;AAED;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE/D,eAAO,MAAM,2BAA2B,EAAE,eAAe,EAA6D,CAAC;AACvH,eAAO,MAAM,yBAAyB,EAAE,mBAAmB,EAAuC,CAAC;AAEnG,KAAK,eAAe,CAAC,MAAM,GAAG,YAAY,EAAE,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;AAChH,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,cAAc,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;AAEjF;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,eAAe,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;AAC/E,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC;AAC5C,MAAM,MAAM,QAAQ,GAAG,eAAe,CAAC,yBAAyB,CAAC,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/utils.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..24a7f40773f55e88d43c15db78c04a39ff27e2b7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/utils.d.ts @@ -0,0 +1,76 @@ +import { CoordinateExtent, NodeOrigin } from '../types'; +import { getPointerPosition } from '../utils'; +import { ControlPosition } from './types'; +type GetResizeDirectionParams = { + width: number; + prevWidth: number; + height: number; + prevHeight: number; + affectsX: boolean; + affectsY: boolean; +}; +/** + * Get all connecting edges for a given set of nodes + * @param width - new width of the node + * @param prevWidth - previous width of the node + * @param height - new height of the node + * @param prevHeight - previous height of the node + * @param affectsX - whether to invert the resize direction for the x axis + * @param affectsY - whether to invert the resize direction for the y axis + * @returns array of two numbers representing the direction of the resize for each axis, 0 = no change, 1 = increase, -1 = decrease + */ +export declare function getResizeDirection({ width, prevWidth, height, prevHeight, affectsX, affectsY, }: GetResizeDirectionParams): number[]; +/** + * Parses the control position that is being dragged to dimensions that are being resized + * @param controlPosition - position of the control that is being dragged + * @returns isHorizontal, isVertical, affectsX, affectsY, + */ +export declare function getControlDirection(controlPosition: ControlPosition): { + isHorizontal: boolean; + isVertical: boolean; + affectsX: boolean; + affectsY: boolean; +}; +type PrevValues = { + width: number; + height: number; + x: number; + y: number; +}; +type StartValues = PrevValues & { + pointerX: number; + pointerY: number; + aspectRatio: number; +}; +/** + * Calculates new width & height and x & y of node after resize based on pointer position + * @description - Buckle up, this is a chunky one... If you want to determine the new dimensions of a node after a resize, + * you have to account for all possible restrictions: min/max width/height of the node, the maximum extent the node is allowed + * to move in (in this case: resize into) determined by the parent node, the minimal extent determined by child nodes + * with expandParent or extent: 'parent' set and oh yeah, these things also have to work with keepAspectRatio! + * The way this is done is by determining how much each of these restricting actually restricts the resize and then applying the + * strongest restriction. Because the resize affects x, y and width, height and width, height of a opposing side with keepAspectRatio, + * the resize amount is always kept in distX & distY amount (the distance in mouse movement) + * Instead of clamping each value, we first calculate the biggest 'clamp' (for the lack of a better name) and then apply it to all values. + * To complicate things nodeOrigin has to be taken into account as well. This is done by offsetting the nodes as if their origin is [0, 0], + * then calculating the restrictions as usual + * @param startValues - starting values of resize + * @param controlDirection - dimensions affected by the resize + * @param pointerPosition - the current pointer position corrected for snapping + * @param boundaries - minimum and maximum dimensions of the node + * @param keepAspectRatio - prevent changes of asprect ratio + * @returns x, y, width and height of the node after resize + */ +export declare function getDimensionsAfterResize(startValues: StartValues, controlDirection: ReturnType, pointerPosition: ReturnType, boundaries: { + minWidth: number; + maxWidth: number; + minHeight: number; + maxHeight: number; +}, keepAspectRatio: boolean, nodeOrigin: NodeOrigin, extent?: CoordinateExtent, childExtent?: CoordinateExtent): { + width: number; + height: number; + x: number; + y: number; +}; +export {}; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/utils.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/utils.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..870b9c60cc2042d73af1dfe6d25044bbcafb9835 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/esm/xyresizer/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/xyresizer/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,KAAK,wBAAwB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,SAAS,EACT,MAAM,EACN,UAAU,EACV,QAAQ,EACR,QAAQ,GACT,EAAE,wBAAwB,YAc1B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,eAAe;;;;;EAYnE;AAED,KAAK,UAAU,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,KAAK,WAAW,GAAG,UAAU,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAkBF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EACxD,eAAe,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,EACtD,UAAU,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EACxF,eAAe,EAAE,OAAO,EACxB,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,gBAAgB,EACzB,WAAW,CAAC,EAAE,gBAAgB;;;;;EA8J/B"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/constants.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/constants.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..c38fe581563900cca2bdafc8311f3e9e1a175fad --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/constants.d.ts @@ -0,0 +1,44 @@ +import { CoordinateExtent, HandleType } from './types'; +export declare const errorMessages: { + error001: (lib?: string) => string; + error002: () => string; + error003: (nodeType: string) => string; + error004: () => string; + error005: () => string; + error006: () => string; + error007: (id: string) => string; + error009: (type: string) => string; + error008: (handleType: HandleType, { id, sourceHandle, targetHandle }: { + id: string; + sourceHandle: string | null; + targetHandle: string | null; + }) => string; + error010: () => string; + error011: (edgeType: string) => string; + error012: (id: string) => string; + error013: (lib?: string) => string; + error014: () => string; + error015: () => string; + error016: (id: string) => string; +}; +export declare const infiniteExtent: CoordinateExtent; +export declare const elementSelectionKeys: string[]; +export declare const defaultAriaLabelConfig: { + 'node.a11yDescription.default': string; + 'node.a11yDescription.keyboardDisabled': string; + 'node.a11yDescription.ariaLiveMessage': ({ direction, x, y }: { + direction: string; + x: number; + y: number; + }) => string; + 'edge.a11yDescription.default': string; + 'controls.ariaLabel': string; + 'controls.zoomIn.ariaLabel': string; + 'controls.zoomOut.ariaLabel': string; + 'controls.fitView.ariaLabel': string; + 'controls.interactive.ariaLabel': string; + 'minimap.ariaLabel': string; + 'handle.ariaLabel': string; +}; +export type AriaLabelConfig = typeof defaultAriaLabelConfig; +//# sourceMappingURL=constants.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/constants.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/constants.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..45d4d505361eb5a73f514150d2ee034419b4e055 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/constants.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEvD,eAAO,MAAM,aAAa;qBACR,MAAM;;yBAID,MAAM;;;;mBAIZ,MAAM;qBACJ,MAAM;2BAET,UAAU,sCACc;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;;yBAMzF,MAAM;mBACZ,MAAM;qBAEL,MAAM;;;mBAMP,MAAM;CAEtB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,gBAG5B,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAA2B,CAAC;AAE7D,eAAO,MAAM,sBAAsB;;;kEAK6B;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;CAiB1G,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,OAAO,sBAAsB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..74847ff6f2b8aa67bb7e1c82eceef48a941fc30f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/index.d.ts @@ -0,0 +1,9 @@ +export * from './constants'; +export * from './types'; +export * from './utils'; +export * from './xydrag'; +export * from './xyhandle'; +export * from './xyminimap'; +export * from './xypanzoom'; +export * from './xyresizer'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..804a5e32ca250ff5f2b59df01572bdfa4eb00603 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/index.js b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/index.js new file mode 100644 index 0000000000000000000000000000000000000000..88bf45d8706c45776d04cb17653ad025e37ec6be --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/index.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).XYFlowSystem={})}(this,function(t){"use strict";const e={error001:(t="react")=>`Seems like you have not used ${"svelte"===t?"SvelteFlowProvider":"ReactFlowProvider"} as an ancestor. Help: https://${t}flow.dev/error#001`,error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:t=>`Node type "${t}" not found. Using fallback type "default".`,error004:()=>"The parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:t=>`The old edge with id=${t} does not exist.`,error009:t=>`Marker type "${t}" doesn't exist.`,error008:(t,{id:e,sourceHandle:n,targetHandle:o})=>`Couldn't create edge for ${t} handle id: "${"source"===t?n:o}", edge id: ${e}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:t=>`Edge type "${t}" not found. Using fallback type "default".`,error012:t=>`Node with id "${t}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(t="react")=>`It seems that you haven't loaded the styles. Please import '@xyflow/${t}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>"useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.",error015:()=>"It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs.",error016:t=>`Edge with id "${t}" does not exist, it may have been removed. This can happen when an edge is deleted before the "onEdgeClick" handler is called.`},n=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],o={"node.a11yDescription.default":"Press enter or space to select a node. Press delete to remove it and escape to cancel.","node.a11yDescription.keyboardDisabled":"Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.","node.a11yDescription.ariaLiveMessage":({direction:t,x:e,y:n})=>`Moved selected node ${t}. New position, x: ${e}, y: ${n}`,"edge.a11yDescription.default":"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.","controls.ariaLabel":"Control Panel","controls.zoomIn.ariaLabel":"Zoom In","controls.zoomOut.ariaLabel":"Zoom Out","controls.fitView.ariaLabel":"Fit View","controls.interactive.ariaLabel":"Toggle Interactivity","minimap.ariaLabel":"Mini Map","handle.ariaLabel":"Handle"};var r,i,a;t.ConnectionMode=void 0,(r=t.ConnectionMode||(t.ConnectionMode={})).Strict="strict",r.Loose="loose",t.PanOnScrollMode=void 0,(i=t.PanOnScrollMode||(t.PanOnScrollMode={})).Free="free",i.Vertical="vertical",i.Horizontal="horizontal",t.SelectionMode=void 0,(a=t.SelectionMode||(t.SelectionMode={})).Partial="partial",a.Full="full";var s,u,c;t.ConnectionLineType=void 0,(s=t.ConnectionLineType||(t.ConnectionLineType={})).Bezier="default",s.Straight="straight",s.Step="step",s.SmoothStep="smoothstep",s.SimpleBezier="simplebezier",t.MarkerType=void 0,(u=t.MarkerType||(t.MarkerType={})).Arrow="arrow",u.ArrowClosed="arrowclosed",t.Position=void 0,(c=t.Position||(t.Position={})).Left="left",c.Top="top",c.Right="right",c.Bottom="bottom";const l={[t.Position.Left]:t.Position.Right,[t.Position.Right]:t.Position.Left,[t.Position.Top]:t.Position.Bottom,[t.Position.Bottom]:t.Position.Top};const h=t=>!!t&&"object"==typeof t&&"id"in t&&"source"in t&&"target"in t,d=t=>!!t&&"object"==typeof t&&"id"in t&&"internals"in t&&!("source"in t)&&!("target"in t),f=(t,e=[0,0])=>{const{width:n,height:o}=B(t),r=t.origin??e,i=n*r[0],a=o*r[1];return{x:t.position.x-i,y:t.position.y-a}},p=(t,e={})=>{let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0},o=!1;return t.forEach(t=>{(void 0===e.filter||e.filter(t))&&(n=b(n,z(t)),o=!0)}),o?P(n):{x:0,y:0,width:0,height:0}},g=(t,e)=>{const n=new Set;return t.forEach(t=>{n.add(t.id)}),e.filter(t=>n.has(t.source)||n.has(t.target))};function m({nodeId:t,nextPosition:n,nodeLookup:o,nodeOrigin:r=[0,0],nodeExtent:i,onError:a}){const s=o.get(t),u=s.parentId?o.get(s.parentId):void 0,{x:c,y:l}=u?u.internals.positionAbsolute:{x:0,y:0},h=s.origin??r;let d=s.extent||i;if("parent"!==s.extent||s.expandParent)u&&H(s.extent)&&(d=[[s.extent[0][0]+c,s.extent[0][1]+l],[s.extent[1][0]+c,s.extent[1][1]+l]]);else if(u){const t=u.measured.width,e=u.measured.height;t&&e&&(d=[[c,l],[c+t,l+e]])}else a?.("005",e.error005());const f=H(d)?v(n,d,s.measured):n;return void 0!==s.measured.width&&void 0!==s.measured.height||a?.("015",e.error015()),{position:{x:f.x-c+(s.measured.width??0)*h[0],y:f.y-l+(s.measured.height??0)*h[1]},positionAbsolute:f}}const y=(t,e=0,n=1)=>Math.min(Math.max(t,e),n),v=(t={x:0,y:0},e,n)=>({x:y(t.x,e[0][0],e[1][0]-(n?.width??0)),y:y(t.y,e[0][1],e[1][1]-(n?.height??0))});function x(t,e,n){const{width:o,height:r}=B(n),{x:i,y:a}=n.internals.positionAbsolute;return v(t,[[i,a],[i+o,a+r]],e)}const w=(t,e,n)=>tn?-y(Math.abs(t-n),1,e)/e:0,_=(t,e,n=15,o=40)=>[w(t.x,o,e.width-o)*n,w(t.y,o,e.height-o)*n],b=(t,e)=>({x:Math.min(t.x,e.x),y:Math.min(t.y,e.y),x2:Math.max(t.x2,e.x2),y2:Math.max(t.y2,e.y2)}),M=({x:t,y:e,width:n,height:o})=>({x:t,y:e,x2:t+n,y2:e+o}),P=({x:t,y:e,x2:n,y2:o})=>({x:t,y:e,width:n-t,height:o-e}),E=(t,e=[0,0])=>{const{x:n,y:o}=d(t)?t.internals.positionAbsolute:f(t,e);return{x:n,y:o,width:t.measured?.width??t.width??t.initialWidth??0,height:t.measured?.height??t.height??t.initialHeight??0}},z=(t,e=[0,0])=>{const{x:n,y:o}=d(t)?t.internals.positionAbsolute:f(t,e);return{x:n,y:o,x2:n+(t.measured?.width??t.width??t.initialWidth??0),y2:o+(t.measured?.height??t.height??t.initialHeight??0)}},N=(t,e)=>P(b(M(t),M(e))),S=(t,e,n,o,r,i,a,s)=>{const u=Math.max(0,Math.min(t+n,r+a)-Math.max(t,r)),c=Math.max(0,Math.min(e+o,i+s)-Math.max(e,i));return Math.ceil(u*c)},k=(t,e)=>S(t.x,t.y,t.width,t.height,e.x,e.y,e.width,e.height),I=t=>!isNaN(t)&&isFinite(t),A=(t,e=[1,1])=>({x:e[0]*Math.round(t.x/e[0]),y:e[1]*Math.round(t.y/e[1])}),T=({x:t,y:e},[n,o,r],i=!1,a=[1,1])=>{const s={x:(t-n)/r,y:(e-o)/r};return i?A(s,a):s},$=({x:t,y:e},[n,o,r])=>({x:t*r+n,y:e*r+o});function C(t,e){if("number"==typeof t)return Math.floor(.5*(e-e/(1+t)));if("string"==typeof t&&t.endsWith("px")){const e=parseFloat(t);if(!Number.isNaN(e))return Math.floor(e)}if("string"==typeof t&&t.endsWith("%")){const n=parseFloat(t);if(!Number.isNaN(n))return Math.floor(e*n*.01)}return console.error(`The padding value "${t}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}const O=(t,e,n,o,r,i)=>{const a=function(t,e,n){if("string"==typeof t||"number"==typeof t){const o=C(t,n),r=C(t,e);return{top:o,right:r,bottom:o,left:r,x:2*r,y:2*o}}if("object"==typeof t){const o=C(t.top??t.y??0,n),r=C(t.bottom??t.y??0,n),i=C(t.left??t.x??0,e),a=C(t.right??t.x??0,e);return{top:o,right:a,bottom:r,left:i,x:i+a,y:o+r}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}(i,e,n),s=(e-a.x)/t.width,u=(n-a.y)/t.height,c=Math.min(s,u),l=y(c,o,r),h=e/2-(t.x+t.width/2)*l,d=n/2-(t.y+t.height/2)*l,f=function(t,e,n,o,r,i){const{x:a,y:s}=$(t,[e,n,o]),{x:u,y:c}=$({x:t.x+t.width,y:t.y+t.height},[e,n,o]),l=r-u,h=i-c;return{left:Math.floor(a),top:Math.floor(s),right:Math.floor(l),bottom:Math.floor(h)}}(t,h,d,l,e,n),p=Math.min(f.left-a.left,0),g=Math.min(f.top-a.top,0);return{x:h-p+Math.min(f.right-a.right,0),y:d-g+Math.min(f.bottom-a.bottom,0),zoom:l}},D=()=>"undefined"!=typeof navigator&&navigator?.userAgent?.indexOf("Mac")>=0;function H(t){return null!=t&&"parent"!==t}function B(t){return{width:t.measured?.width??t.width??t.initialWidth??0,height:t.measured?.height??t.height??t.initialHeight??0}}function R(t,{snapGrid:e=[0,0],snapToGrid:n=!1,transform:o,containerBounds:r}){const{x:i,y:a}=q(t),s=T({x:i-(r?.left??0),y:a-(r?.top??0)},o),{x:u,y:c}=n?A(s,e):s;return{xSnapped:u,ySnapped:c,...s}}const L=t=>({width:t.offsetWidth,height:t.offsetHeight}),X=t=>t?.getRootNode?.()||window?.document,Y=["INPUT","SELECT","TEXTAREA"];const V=t=>"clientX"in t,q=(t,e)=>{const n=V(t),o=n?t.clientX:t.touches?.[0].clientX,r=n?t.clientY:t.touches?.[0].clientY;return{x:o-(e?.left??0),y:r-(e?.top??0)}},Z=(t,e,n,o,r)=>{const i=e.querySelectorAll(`.${t}`);return i&&i.length?Array.from(i).map(e=>{const i=e.getBoundingClientRect();return{id:e.getAttribute("data-handleid"),type:t,nodeId:r,position:e.getAttribute("data-handlepos"),x:(i.left-n.left)/o,y:(i.top-n.top)/o,...L(e)}}):null};function G({sourceX:t,sourceY:e,targetX:n,targetY:o,sourceControlX:r,sourceControlY:i,targetControlX:a,targetControlY:s}){const u=.125*t+.375*r+.375*a+.125*n,c=.125*e+.375*i+.375*s+.125*o;return[u,c,Math.abs(u-t),Math.abs(c-e)]}function j(t,e){return t>=0?.5*t:25*e*Math.sqrt(-t)}function W({pos:e,x1:n,y1:o,x2:r,y2:i,c:a}){switch(e){case t.Position.Left:return[n-j(n-r,a),o];case t.Position.Right:return[n+j(r-n,a),o];case t.Position.Top:return[n,o-j(o-i,a)];case t.Position.Bottom:return[n,o+j(i-o,a)]}}function F({sourceX:t,sourceY:e,targetX:n,targetY:o}){const r=Math.abs(n-t)/2,i=n`xy-edge__${t}${e||""}-${n}${o||""}`;const U={[t.Position.Left]:{x:-1,y:0},[t.Position.Right]:{x:1,y:0},[t.Position.Top]:{x:0,y:-1},[t.Position.Bottom]:{x:0,y:1}},Q=(t,e)=>Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2));function J({source:e,sourcePosition:n=t.Position.Bottom,target:o,targetPosition:r=t.Position.Top,center:i,offset:a,stepPosition:s}){const u=U[n],c=U[r],l={x:e.x+u.x*a,y:e.y+u.y*a},h={x:o.x+c.x*a,y:o.y+c.y*a},d=(({source:e,sourcePosition:n=t.Position.Bottom,target:o})=>n===t.Position.Left||n===t.Position.Right?e.xe[f]?-1:1)*n:x[f]=(h[f]>o[f]?-1:1)*n}}if(n!==r){const e="x"===f?"y":"x",n=u[f]===c[e],o=l[e]>h[e],r=l[e]=Math.max(Math.abs(s.y-y[0].y),Math.abs(d.y-y[0].y))?(g=(s.x+d.x)/2,m=y[0].y):(g=y[0].x,m=(s.y+d.y)/2)}const b={x:l.x+v.x,y:l.y+v.y},M={x:h.x+x.x,y:h.y+x.y};return[[e,...b.x!==y[0].x||b.y!==y[0].y?[b]:[],...y,...M.x!==y[y.length-1].x||M.y!==y[y.length-1].y?[M]:[],o],g,m,w,_]}function tt(t,e,n,o){const r=Math.min(Q(t,e)/2,Q(e,n)/2,o),{x:i,y:a}=e;if(t.x===i&&i===n.x||t.y===a&&a===n.y)return`L${i} ${a}`;if(t.y===a){return`L ${i+r*(t.xt.id===e):t[0])||null}function it(t,e){if(!t)return"";if("string"==typeof t)return t;return`${e?`${e}__`:""}${Object.keys(t).sort().map(e=>`${e}=${t[e]}`).join("&")}`}const at={left:0,center:50,right:100},st={top:0,center:50,bottom:100};const ut={nodeOrigin:[0,0],nodeExtent:n,elevateNodesOnSelect:!0,zIndexMode:"basic",defaults:{}},ct={...ut,checkEquality:!0};function lt(t,e){const n={...t};for(const t in e)void 0!==e[t]&&(n[t]=e[t]);return n}function ht(t,e){if(!t.handles)return t.measured?e?.internals.handleBounds:void 0;const n=[],o=[];for(const e of t.handles){const r={id:e.id,width:e.width??1,height:e.height??1,nodeId:t.id,x:e.x,y:e.y,position:e.position,type:e.type};"source"===e.type?n.push(r):"target"===e.type&&o.push(r)}return{source:n,target:o}}function dt(t){return"manual"===t}function ft(t,e,n,o,r){const{elevateNodesOnSelect:i,nodeOrigin:a,nodeExtent:s,zIndexMode:u}=lt(ut,o),c=t.parentId,l=e.get(c);if(!l)return void console.warn(`Parent node ${c} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);!function(t,e){if(!t.parentId)return;const n=e.get(t.parentId);n?n.set(t.id,t):e.set(t.parentId,new Map([[t.id,t]]))}(t,n),r&&!l.parentId&&void 0===l.internals.rootParentIndex&&"auto"===u&&(l.internals.rootParentIndex=++r.i,l.internals.z=l.internals.z+10*r.i),r&&void 0!==l.internals.rootParentIndex&&(r.i=l.internals.rootParentIndex);const h=i&&!dt(u)?1e3:0,{x:d,y:p,z:g}=function(t,e,n,o,r,i){const{x:a,y:s}=e.internals.positionAbsolute,u=B(t),c=f(t,n),l=H(t.extent)?v(c,t.extent,u):c;let h=v({x:a+l.x,y:s+l.y},o,u);"parent"===t.extent&&(h=x(h,u,e));const d=pt(t,r,i),p=e.internals.z??0;return{x:h.x,y:h.y,z:p>=d?p+1:d}}(t,l,a,s,h,u),{positionAbsolute:m}=t.internals,y=d!==m.x||p!==m.y;(y||g!==t.internals.z)&&e.set(t.id,{...t,internals:{...t.internals,positionAbsolute:y?{x:d,y:p}:m,z:g}})}function pt(t,e,n){const o=I(t.zIndex)?t.zIndex:0;return dt(n)?o:o+(t.selected?e:0)}function gt(t,e,n,o=[0,0]){const r=[],i=new Map;for(const n of t){const t=e.get(n.parentId);if(!t)continue;const o=i.get(n.parentId)?.expandedRect??E(t),r=N(o,n.rect);i.set(n.parentId,{expandedRect:r,parent:t})}return i.size>0&&i.forEach(({expandedRect:e,parent:i},a)=>{const s=i.internals.positionAbsolute,u=B(i),c=i.origin??o,l=e.x0||h>0||p||g)&&(r.push({id:a,type:"position",position:{x:i.position.x-l+p,y:i.position.y-h+g}}),n.get(a)?.forEach(e=>{t.some(t=>t.id===e.id)||r.push({id:e.id,type:"position",position:{x:e.position.x+l,y:e.position.y+h}})})),(u.width{}};function vt(){for(var t,e=0,n=arguments.length,o={};e=0&&(e=t.slice(n+1),t=t.slice(0,n)),t&&!o.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}})),a=-1,s=i.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++a0)for(var n,o,r=new Array(n),i=0;i=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),Mt.hasOwnProperty(e)?{space:Mt[e],local:t}:t}function Et(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===bt&&e.documentElement.namespaceURI===bt?e.createElement(t):e.createElementNS(n,t)}}function zt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Nt(t){var e=Pt(t);return(e.local?zt:Et)(e)}function St(){}function kt(t){return null==t?St:function(){return this.querySelector(t)}}function It(){return[]}function At(t){return null==t?It:function(){return this.querySelectorAll(t)}}function Tt(t){return function(){return null==(e=t.apply(this,arguments))?[]:Array.isArray(e)?e:Array.from(e);var e}}function $t(t){return function(){return this.matches(t)}}function Ct(t){return function(e){return e.matches(t)}}var Ot=Array.prototype.find;function Dt(){return this.firstElementChild}var Ht=Array.prototype.filter;function Bt(){return Array.from(this.children)}function Rt(t){return new Array(t.length)}function Lt(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function Xt(t,e,n,o,r,i){for(var a,s=0,u=e.length,c=i.length;se?1:t>=e?0:NaN}function Gt(t){return function(){this.removeAttribute(t)}}function jt(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Wt(t,e){return function(){this.setAttribute(t,e)}}function Ft(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Kt(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function Ut(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function Qt(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Jt(t){return function(){this.style.removeProperty(t)}}function te(t,e,n){return function(){this.style.setProperty(t,e,n)}}function ee(t,e,n){return function(){var o=e.apply(this,arguments);null==o?this.style.removeProperty(t):this.style.setProperty(t,o,n)}}function ne(t,e){return t.style.getPropertyValue(e)||Qt(t).getComputedStyle(t,null).getPropertyValue(e)}function oe(t){return function(){delete this[t]}}function re(t,e){return function(){this[t]=e}}function ie(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function ae(t){return t.trim().split(/^|\s+/)}function se(t){return t.classList||new ue(t)}function ue(t){this._node=t,this._names=ae(t.getAttribute("class")||"")}function ce(t,e){for(var n=se(t),o=-1,r=e.length;++o=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Ae=[null];function Te(t,e){this._groups=t,this._parents=e}function $e(){return new Te([[document.documentElement]],Ae)}function Ce(t){return"string"==typeof t?new Te([[document.querySelector(t)]],[document.documentElement]):new Te([[t]],Ae)}function Oe(t,e){if(t=function(t){let e;for(;e=t.sourceEvent;)t=e;return t}(t),void 0===e&&(e=t.currentTarget),e){var n=e.ownerSVGElement||e;if(n.createSVGPoint){var o=n.createSVGPoint();return o.x=t.clientX,o.y=t.clientY,[(o=o.matrixTransform(e.getScreenCTM().inverse())).x,o.y]}if(e.getBoundingClientRect){var r=e.getBoundingClientRect();return[t.clientX-r.left-e.clientLeft,t.clientY-r.top-e.clientTop]}}return[t.pageX,t.pageY]}Te.prototype=$e.prototype={constructor:Te,select:function(t){"function"!=typeof t&&(t=kt(t));for(var e=this._groups,n=e.length,o=new Array(n),r=0;r=_&&(_=w+1);!(x=y[_])&&++_=0;)(o=r[i])&&(a&&4^o.compareDocumentPosition(a)&&a.parentNode.insertBefore(o,a),a=o);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=Zt);for(var n=this._groups,o=n.length,r=new Array(o),i=0;i1?this.each((null==e?Jt:"function"==typeof e?ee:te)(t,e,null==n?"":n)):ne(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?oe:"function"==typeof e?ie:re)(t,e)):this.node()[t]},classed:function(t,e){var n=ae(t+"");if(arguments.length<2){for(var o=se(this.node()),r=-1,i=n.length;++r=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}})}(t+""),a=i.length;if(!(arguments.length<2)){for(s=e?Ne:ze,o=0;o()=>t;function Ve(t,{sourceEvent:e,subject:n,target:o,identifier:r,active:i,x:a,y:s,dx:u,dy:c,dispatch:l}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:o,enumerable:!0,configurable:!0},identifier:{value:r,enumerable:!0,configurable:!0},active:{value:i,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:u,enumerable:!0,configurable:!0},dy:{value:c,enumerable:!0,configurable:!0},_:{value:l}})}function qe(t){return!t.ctrlKey&&!t.button}function Ze(){return this.parentNode}function Ge(t,e){return null==e?{x:t.x,y:t.y}:e}function je(){return navigator.maxTouchPoints||"ontouchstart"in this}function We(){var t,e,n,o,r=qe,i=Ze,a=Ge,s=je,u={},c=vt("start","drag","end"),l=0,h=0;function d(t){t.on("mousedown.drag",f).filter(s).on("touchstart.drag",m).on("touchmove.drag",y,De).on("touchend.drag touchcancel.drag",v).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function f(a,s){if(!o&&r.call(this,a,s)){var u=x(this,i.call(this,a,s),a,s,"mouse");u&&(Ce(a.view).on("mousemove.drag",p,He).on("mouseup.drag",g,He),Le(a.view),Be(a),n=!1,t=a.clientX,e=a.clientY,u("start",a))}}function p(o){if(Re(o),!n){var r=o.clientX-t,i=o.clientY-e;n=r*r+i*i>h}u.mouse("drag",o)}function g(t){Ce(t.view).on("mousemove.drag mouseup.drag",null),Xe(t.view,n),Re(t),u.mouse("end",t)}function m(t,e){if(r.call(this,t,e)){var n,o,a=t.changedTouches,s=i.call(this,t,e),u=a.length;for(n=0;n0&&o.push(t);return o}(t,n,e+250);for(const n of a){const a=[...n.internals.handleBounds?.source??[],...n.internals.handleBounds?.target??[]];for(const s of a){if(o.nodeId===s.nodeId&&o.type===s.type&&o.id===s.id)continue;const{x:a,y:u}=ot(n,s,s.position,!0),c=Math.sqrt(Math.pow(a-t.x,2)+Math.pow(u-t.y,2));c>e||(c1){const t="source"===o.type?"target":"source";return r.find(e=>e.type===t)??r[0]}return r[0]}function Je(t,e,n,o,r,i=!1){const a=o.get(t);if(!a)return null;const s="strict"===r?a.internals.handleBounds?.[e]:[...a.internals.handleBounds?.source??[],...a.internals.handleBounds?.target??[]],u=(n?s?.find(t=>t.id===n):s?.[0])??null;return u&&i?{...u,...ot(a,u,u.position,!0)}:u}function tn(t,e){return t||(e?.classList.contains("target")?"target":e?.classList.contains("source")?"source":null)}const en=()=>!0;function nn(e,{handle:n,connectionMode:o,fromNodeId:r,fromHandleId:i,fromType:a,doc:s,lib:u,flowId:c,isValidConnection:l=en,nodeLookup:h}){const d="target"===a,f=n?s.querySelector(`.${u}-flow__handle[data-id="${c}-${n?.nodeId}-${n?.id}-${n?.type}"]`):null,{x:p,y:g}=q(e),m=s.elementFromPoint(p,g),y=m?.classList.contains(`${u}-flow__handle`)?m:f,v={handleDomNode:y,isValid:!1,connection:null,toHandle:null};if(y){const e=tn(void 0,y),n=y.getAttribute("data-nodeid"),a=y.getAttribute("data-handleid"),s=y.classList.contains("connectable"),u=y.classList.contains("connectableend");if(!n||!e)return v;const c={source:d?n:r,sourceHandle:d?a:i,target:d?r:n,targetHandle:d?i:a};v.connection=c;const f=s&&u&&(o===t.ConnectionMode.Strict?d&&"source"===e||!d&&"target"===e:n!==r||a!==i);v.isValid=f&&l(c),v.toHandle=Je(n,e,a,h,o,!0)}return v}const on={onPointerDown:function(e,{connectionMode:n,connectionRadius:o,handleId:r,nodeId:i,edgeUpdaterType:a,isTarget:s,domNode:u,nodeLookup:c,lib:h,autoPanOnConnect:d,flowId:f,panBy:p,cancelConnection:g,onConnectStart:m,onConnect:y,onConnectEnd:v,isValidConnection:x=en,onReconnectEnd:w,updateConnection:b,getTransform:M,getFromHandle:P,autoPanSpeed:E,dragThreshold:z=1,handleDomNode:N}){const S=X(e.target);let k,I=0;const{x:A,y:C}=q(e),O=tn(a,N),D=u?.getBoundingClientRect();let H=!1;if(!D||!O)return;const B=Je(i,O,r,c,n);if(!B)return;let R=q(e,D),L=!1,Y=null,V=!1,Z=null;function G(){if(!d||!D)return;const[t,e]=_(R,D,E);p({x:t,y:e}),I=requestAnimationFrame(G)}const j={...B,nodeId:i,type:O,position:B.position},W=c.get(i);let F={inProgress:!0,isValid:null,from:ot(W,j,t.Position.Left,!0),fromHandle:j,fromPosition:j.position,fromNode:W,to:R,toHandle:null,toPosition:l[j.position],toNode:null,pointer:R};function K(){H=!0,b(F),m?.(e,{nodeId:i,handleId:r,handleType:O})}function U(e){if(!H){const{x:t,y:n}=q(e),o=t-A,r=n-C;if(!(o*o+r*r>z*z))return;K()}if(!P()||!j)return void Q(e);const a=M();R=q(e,D),k=Qe(T(R,a,!1,[1,1]),o,c,j),L||(G(),L=!0);const u=nn(e,{handle:k,connectionMode:n,fromNodeId:i,fromHandleId:r,fromType:s?"target":"source",isValidConnection:x,doc:S,lib:h,flowId:f,nodeLookup:c});Z=u.handleDomNode,Y=u.connection,V=function(t,e){let n=null;return e?n=!0:t&&!e&&(n=!1),n}(!!k,u.isValid);const d=c.get(i),p=d?ot(d,j,t.Position.Left,!0):F.from,g={...F,from:p,isValid:V,to:u.toHandle&&V?$({x:u.toHandle.x,y:u.toHandle.y},a):R,toHandle:u.toHandle,toPosition:V&&u.toHandle?u.toHandle.position:l[j.position],toNode:u.toHandle?c.get(u.toHandle.nodeId):null,pointer:R};b(g),F=g}function Q(t){if(!("touches"in t&&t.touches.length>0)){if(H){(k||Z)&&Y&&V&&y?.(Y);const{inProgress:e,...n}=F,o={...n,toPosition:F.toHandle?F.toPosition:null};v?.(t,o),a&&w?.(t,o)}g(),cancelAnimationFrame(I),L=!1,V=!1,Y=null,Z=null,S.removeEventListener("mousemove",U),S.removeEventListener("mouseup",Q),S.removeEventListener("touchmove",U),S.removeEventListener("touchend",Q)}}0===z&&K(),S.addEventListener("mousemove",U),S.addEventListener("mouseup",Q),S.addEventListener("touchmove",U),S.addEventListener("touchend",Q)},isValid:nn};function rn(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function an(t,e){var n=Object.create(t.prototype);for(var o in e)n[o]=e[o];return n}function sn(){}var un=.7,cn=1/un,ln="\\s*([+-]?\\d+)\\s*",hn="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",dn="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",fn=/^#([0-9a-f]{3,8})$/,pn=new RegExp(`^rgb\\(${ln},${ln},${ln}\\)$`),gn=new RegExp(`^rgb\\(${dn},${dn},${dn}\\)$`),mn=new RegExp(`^rgba\\(${ln},${ln},${ln},${hn}\\)$`),yn=new RegExp(`^rgba\\(${dn},${dn},${dn},${hn}\\)$`),vn=new RegExp(`^hsl\\(${hn},${dn},${dn}\\)$`),xn=new RegExp(`^hsla\\(${hn},${dn},${dn},${hn}\\)$`),wn={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function _n(){return this.rgb().formatHex()}function bn(){return this.rgb().formatRgb()}function Mn(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=fn.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?Pn(e):3===n?new Nn(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?En(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?En(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=pn.exec(t))?new Nn(e[1],e[2],e[3],1):(e=gn.exec(t))?new Nn(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=mn.exec(t))?En(e[1],e[2],e[3],e[4]):(e=yn.exec(t))?En(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=vn.exec(t))?$n(e[1],e[2]/100,e[3]/100,1):(e=xn.exec(t))?$n(e[1],e[2]/100,e[3]/100,e[4]):wn.hasOwnProperty(t)?Pn(wn[t]):"transparent"===t?new Nn(NaN,NaN,NaN,0):null}function Pn(t){return new Nn(t>>16&255,t>>8&255,255&t,1)}function En(t,e,n,o){return o<=0&&(t=e=n=NaN),new Nn(t,e,n,o)}function zn(t,e,n,o){return 1===arguments.length?((r=t)instanceof sn||(r=Mn(r)),r?new Nn((r=r.rgb()).r,r.g,r.b,r.opacity):new Nn):new Nn(t,e,n,null==o?1:o);var r}function Nn(t,e,n,o){this.r=+t,this.g=+e,this.b=+n,this.opacity=+o}function Sn(){return`#${Tn(this.r)}${Tn(this.g)}${Tn(this.b)}`}function kn(){const t=In(this.opacity);return`${1===t?"rgb(":"rgba("}${An(this.r)}, ${An(this.g)}, ${An(this.b)}${1===t?")":`, ${t})`}`}function In(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function An(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Tn(t){return((t=An(t))<16?"0":"")+t.toString(16)}function $n(t,e,n,o){return o<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new On(t,e,n,o)}function Cn(t){if(t instanceof On)return new On(t.h,t.s,t.l,t.opacity);if(t instanceof sn||(t=Mn(t)),!t)return new On;if(t instanceof On)return t;var e=(t=t.rgb()).r/255,n=t.g/255,o=t.b/255,r=Math.min(e,n,o),i=Math.max(e,n,o),a=NaN,s=i-r,u=(i+r)/2;return s?(a=e===i?(n-o)/s+6*(n0&&u<1?0:a,new On(a,s,u,t.opacity)}function On(t,e,n,o){this.h=+t,this.s=+e,this.l=+n,this.opacity=+o}function Dn(t){return(t=(t||0)%360)<0?t+360:t}function Hn(t){return Math.max(0,Math.min(1,t||0))}function Bn(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}rn(sn,Mn,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:_n,formatHex:_n,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Cn(this).formatHsl()},formatRgb:bn,toString:bn}),rn(Nn,zn,an(sn,{brighter(t){return t=null==t?cn:Math.pow(cn,t),new Nn(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?un:Math.pow(un,t),new Nn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Nn(An(this.r),An(this.g),An(this.b),In(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Sn,formatHex:Sn,formatHex8:function(){return`#${Tn(this.r)}${Tn(this.g)}${Tn(this.b)}${Tn(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:kn,toString:kn})),rn(On,function(t,e,n,o){return 1===arguments.length?Cn(t):new On(t,e,n,null==o?1:o)},an(sn,{brighter(t){return t=null==t?cn:Math.pow(cn,t),new On(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?un:Math.pow(un,t),new On(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,o=n+(n<.5?n:1-n)*e,r=2*n-o;return new Nn(Bn(t>=240?t-240:t+120,r,o),Bn(t,r,o),Bn(t<120?t+240:t-120,r,o),this.opacity)},clamp(){return new On(Dn(this.h),Hn(this.s),Hn(this.l),In(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=In(this.opacity);return`${1===t?"hsl(":"hsla("}${Dn(this.h)}, ${100*Hn(this.s)}%, ${100*Hn(this.l)}%${1===t?")":`, ${t})`}`}}));var Rn=t=>()=>t;function Ln(t){return 1===(t=+t)?Xn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(o){return Math.pow(t+o*e,n)}}(e,n,t):Rn(isNaN(e)?n:e)}}function Xn(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):Rn(isNaN(t)?e:t)}var Yn=function t(e){var n=Ln(e);function o(t,e){var o=n((t=zn(t)).r,(e=zn(e)).r),r=n(t.g,e.g),i=n(t.b,e.b),a=Xn(t.opacity,e.opacity);return function(e){return t.r=o(e),t.g=r(e),t.b=i(e),t.opacity=a(e),t+""}}return o.gamma=t,o}(1);function Vn(t,e){e||(e=[]);var n,o=t?Math.min(e.length,t.length):0,r=e.slice();return function(i){for(n=0;ni&&(r=e.slice(i,r),s[a]?s[a]+=r:s[++a]=r),(n=n[0])===(o=o[0])?s[a]?s[a]+=o:s[++a]=o:(s[++a]=null,u.push({i:a,x:Gn(n,o)})),i=Fn.lastIndex;return i180?e+=360:e-t>180&&(t+=360),i.push({i:n.push(r(n)+"rotate(",null,o)-2,x:Gn(t,e)})):e&&n.push(r(n)+"rotate("+e+o)}(i.rotate,a.rotate,s,u),function(t,e,n,i){t!==e?i.push({i:n.push(r(n)+"skewX(",null,o)-2,x:Gn(t,e)}):e&&n.push(r(n)+"skewX("+e+o)}(i.skewX,a.skewX,s,u),function(t,e,n,o,i,a){if(t!==n||e!==o){var s=i.push(r(i)+"scale(",null,",",null,")");a.push({i:s-4,x:Gn(t,n)},{i:s-2,x:Gn(e,o)})}else 1===n&&1===o||i.push(r(i)+"scale("+n+","+o+")")}(i.scaleX,i.scaleY,a.scaleX,a.scaleY,s,u),i=a=null,function(t){for(var e,n=-1,o=u.length;++n=0&&e._call.call(void 0,t),e=e._next;--co}()}finally{co=0,function(){var t,e,n=ao,o=1/0;for(;n;)n._call?(o>n._time&&(o=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:ao=e);so=t,Po(o)}(),po=0}}function Mo(){var t=mo.now(),e=t-fo;e>1e3&&(go-=e,fo=t)}function Po(t){co||(lo&&(lo=clearTimeout(lo)),t-po>24?(t<1/0&&(lo=setTimeout(bo,t-mo.now()-go)),ho&&(ho=clearInterval(ho))):(ho||(fo=mo.now(),ho=setInterval(Mo,1e3)),co=1,yo(bo)))}function Eo(t,e,n){var o=new wo;return e=null==e?0:+e,o.restart(n=>{o.stop(),t(n+e)},e,n),o}wo.prototype=_o.prototype={constructor:wo,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?vo():+n)+(null==e?0:+e),this._next||so===this||(so?so._next=this:ao=this,so=this),this._call=t,this._time=n,Po()},stop:function(){this._call&&(this._call=null,this._time=1/0,Po())}};var zo=vt("start","end","cancel","interrupt"),No=[];function So(t,e,n,o,r,i){var a=t.__transition;if(a){if(n in a)return}else t.__transition={};!function(t,e,n){var o,r=t.__transition;function i(t){n.state=1,n.timer.restart(a,n.delay,n.time),n.delay<=t&&a(t-n.delay)}function a(i){var c,l,h,d;if(1!==n.state)return u();for(c in r)if((d=r[c]).name===n.name){if(3===d.state)return Eo(a);4===d.state?(d.state=6,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete r[c]):+c0)throw new Error("too late; already scheduled");return n}function Io(t,e){var n=Ao(t,e);if(n.state>3)throw new Error("too late; already running");return n}function Ao(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function To(t,e){var n,o,r,i=t.__transition,a=!0;if(i){for(r in e=null==e?null:e+"",i)(n=i[r]).name===e?(o=n.state>2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(o?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete i[r]):a=!1;a&&delete t.__transition}}function $o(t,e){var n,o;return function(){var r=Io(this,t),i=r.tween;if(i!==n)for(var a=0,s=(o=n=i).length;a=0&&(t=t.slice(0,e)),!t||"start"===t})}(e)?ko:Io;return function(){var a=i(this,t),s=a.on;s!==o&&(r=(o=s).copy()).on(e,n),a.on=r}}(n,t,e))},attr:function(t,e){var n=Pt(t),o="transform"===n?ro:Do;return this.attrTween(t,"function"==typeof e?(n.local?Yo:Xo)(n,o,Oo(this,"attr."+t,e)):null==e?(n.local?Bo:Ho)(n):(n.local?Lo:Ro)(n,o,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var o=Pt(t);return this.tween(n,(o.local?Vo:qo)(o,e))},style:function(t,e,n){var o="transform"==(t+="")?oo:Do;return null==e?this.styleTween(t,function(t,e){var n,o,r;return function(){var i=ne(this,t),a=(this.style.removeProperty(t),ne(this,t));return i===a?null:i===n&&a===o?r:r=e(n=i,o=a)}}(t,o)).on("end.style."+t,Ko(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var o,r,i;return function(){var a=ne(this,t),s=n(this),u=s+"";return null==s&&(this.style.removeProperty(t),u=s=ne(this,t)),a===u?null:a===o&&u===r?i:(r=u,i=e(o=a,s))}}(t,o,Oo(this,"style."+t,e))).each(function(t,e){var n,o,r,i,a="style."+e,s="end."+a;return function(){var u=Io(this,t),c=u.on,l=null==u.value[a]?i||(i=Ko(e)):void 0;c===n&&r===l||(o=(n=c).copy()).on(s,r=l),u.on=o}}(this._id,t)):this.styleTween(t,function(t,e,n){var o,r,i=n+"";return function(){var a=ne(this,t);return a===i?null:a===o?r:r=e(o=a,n)}}(t,o,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var o="style."+(t+="");if(arguments.length<2)return(o=this.tween(o))&&o._value;if(null==e)return this.tween(o,null);if("function"!=typeof e)throw new Error;return this.tween(o,function(t,e,n){var o,r;function i(){var i=e.apply(this,arguments);return i!==r&&(o=(r=i)&&function(t,e,n){return function(o){this.style.setProperty(t,e.call(this,o),n)}}(t,i,n)),o}return i._value=e,i}(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(Oo(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,function(t){var e,n;function o(){var o=t.apply(this,arguments);return o!==n&&(e=(n=o)&&function(t){return function(e){this.textContent=t.call(this,e)}}(o)),e}return o._value=t,o}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var o,r=Ao(this.node(),n).tween,i=0,a=r.length;i()=>t;function rr(t,{sourceEvent:e,target:n,transform:o,dispatch:r}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:o,enumerable:!0,configurable:!0},_:{value:r}})}function ir(t,e,n){this.k=t,this.x=e,this.y=n}ir.prototype={constructor:ir,scale:function(t){return 1===t?this:new ir(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new ir(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var ar=new ir(1,0,0);function sr(t){for(;!t.__zoom;)if(!(t=t.parentNode))return ar;return t.__zoom}function ur(t){t.stopImmediatePropagation()}function cr(t){t.preventDefault(),t.stopImmediatePropagation()}function lr(t){return!(t.ctrlKey&&"wheel"!==t.type||t.button)}function hr(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function dr(){return this.__zoom||ar}function fr(t){return-t.deltaY*(1===t.deltaMode?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function pr(){return navigator.maxTouchPoints||"ontouchstart"in this}function gr(t,e,n){var o=t.invertX(e[0][0])-n[0][0],r=t.invertX(e[1][0])-n[1][0],i=t.invertY(e[0][1])-n[0][1],a=t.invertY(e[1][1])-n[1][1];return t.translate(r>o?(o+r)/2:Math.min(0,o)||Math.max(0,r),a>i?(i+a)/2:Math.min(0,i)||Math.max(0,a))}function mr(){var t,e,n,o=lr,r=hr,i=gr,a=fr,s=pr,u=[0,1/0],c=[[-1/0,-1/0],[1/0,1/0]],l=250,h=uo,d=vt("start","zoom","end"),f=0,p=10;function g(t){t.property("__zoom",dr).on("wheel.zoom",b,{passive:!1}).on("mousedown.zoom",M).on("dblclick.zoom",P).filter(s).on("touchstart.zoom",E).on("touchmove.zoom",z).on("touchend.zoom touchcancel.zoom",N).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function m(t,e){return(e=Math.max(u[0],Math.min(u[1],e)))===t.k?t:new ir(e,t.x,t.y)}function y(t,e,n){var o=e[0]-n[0]*t.k,r=e[1]-n[1]*t.k;return o===t.x&&r===t.y?t:new ir(t.k,o,r)}function v(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function x(t,e,n,o){t.on("start.zoom",function(){w(this,arguments).event(o).start()}).on("interrupt.zoom end.zoom",function(){w(this,arguments).event(o).end()}).tween("zoom",function(){var t=this,i=arguments,a=w(t,i).event(o),s=r.apply(t,i),u=null==n?v(s):"function"==typeof n?n.apply(t,i):n,c=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),l=t.__zoom,d="function"==typeof e?e.apply(t,i):e,f=h(l.invert(u).concat(c/l.k),d.invert(u).concat(c/d.k));return function(t){if(1===t)t=d;else{var e=f(t),n=c/e[2];t=new ir(n,u[0]-e[0]*n,u[1]-e[1]*n)}a.zoom(null,t)}})}function w(t,e,n){return!n&&t.__zooming||new _(t,e)}function _(t,e){this.that=t,this.args=e,this.active=0,this.sourceEvent=null,this.extent=r.apply(t,e),this.taps=0}function b(t,...e){if(o.apply(this,arguments)){var n=w(this,e).event(t),r=this.__zoom,s=Math.max(u[0],Math.min(u[1],r.k*Math.pow(2,a.apply(this,arguments)))),l=Oe(t);if(n.wheel)n.mouse[0][0]===l[0]&&n.mouse[0][1]===l[1]||(n.mouse[1]=r.invert(n.mouse[0]=l)),clearTimeout(n.wheel);else{if(r.k===s)return;n.mouse=[l,r.invert(l)],To(this),n.start()}cr(t),n.wheel=setTimeout(function(){n.wheel=null,n.end()},150),n.zoom("mouse",i(y(m(r,s),n.mouse[0],n.mouse[1]),n.extent,c))}}function M(t,...e){if(!n&&o.apply(this,arguments)){var r=t.currentTarget,a=w(this,e,!0).event(t),s=Ce(t.view).on("mousemove.zoom",function(t){if(cr(t),!a.moved){var e=t.clientX-l,n=t.clientY-h;a.moved=e*e+n*n>f}a.event(t).zoom("mouse",i(y(a.that.__zoom,a.mouse[0]=Oe(t,r),a.mouse[1]),a.extent,c))},!0).on("mouseup.zoom",function(t){s.on("mousemove.zoom mouseup.zoom",null),Xe(t.view,a.moved),cr(t),a.event(t).end()},!0),u=Oe(t,r),l=t.clientX,h=t.clientY;Le(t.view),ur(t),a.mouse=[u,this.__zoom.invert(u)],To(this),a.start()}}function P(t,...e){if(o.apply(this,arguments)){var n=this.__zoom,a=Oe(t.changedTouches?t.changedTouches[0]:t,this),s=n.invert(a),u=n.k*(t.shiftKey?.5:2),h=i(y(m(n,u),a,s),r.apply(this,e),c);cr(t),l>0?Ce(this).transition().duration(l).call(x,h,a,t):Ce(this).call(g.transform,h,a,t)}}function E(n,...r){if(o.apply(this,arguments)){var i,a,s,u,c=n.touches,l=c.length,h=w(this,r,n.changedTouches.length===l).event(n);for(ur(n),a=0;a({x:t.x,y:t.y,zoom:t.k}),vr=({x:t,y:e,zoom:n})=>ar.translate(t,e).scale(n),xr=(t,e)=>t.target.closest(`.${e}`),wr=(t,e)=>2===e&&Array.isArray(t)&&t.includes(2),_r=t=>((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2,br=(t,e=0,n=_r,o=()=>{})=>{const r="number"==typeof e&&e>0;return r||o(),r?t.transition().duration(e).ease(n).on("end",o):t},Mr=t=>{const e=t.ctrlKey&&D()?10:1;return-t.deltaY*(1===t.deltaMode?.05:t.deltaMode?1:.002)*e};var Pr;t.ResizeControlVariant=void 0,(Pr=t.ResizeControlVariant||(t.ResizeControlVariant={})).Line="line",Pr.Handle="handle";function Er(t){return{isHorizontal:t.includes("right")||t.includes("left"),isVertical:t.includes("bottom")||t.includes("top"),affectsX:t.includes("left"),affectsY:t.includes("top")}}function zr(t,e){return Math.max(0,e-t)}function Nr(t,e){return Math.max(0,t-e)}function Sr(t,e,n){return Math.max(0,e-t,t-n)}function kr(t,e){return t?!e:e}const Ir={width:0,height:0,x:0,y:0},Ar={...Ir,pointerX:0,pointerY:0,aspectRatio:1};function Tr(t,e,n){const o=e.position.x+t.position.x,r=e.position.y+t.position.y,i=t.measured.width??0,a=t.measured.height??0,s=n[0]*i,u=n[1]*a;return[[o-s,r-u],[o+i-s,r+a-u]]}t.XYDrag=function({onNodeMouseDown:t,getStoreItems:e,onDragStart:n,onDrag:o,onDragStop:r}){let i={x:null,y:null},a=0,s=new Map,u=!1,c={x:0,y:0},l=null,h=!1,d=null,f=!1,g=!1,y=null;return{update:function({noDragClassName:v,handleSelector:x,domNode:w,isSelectable:b,nodeId:P,nodeClickDistance:E=0}){function z({x:t,y:n}){const{nodeLookup:r,nodeExtent:a,snapGrid:u,snapToGrid:c,nodeOrigin:l,onNodeDrag:h,onSelectionDrag:d,onError:f,updateNodePositions:v}=e();i={x:t,y:n};let x=!1;const w=s.size>1,_=w&&a?M(p(s)):null,b=w&&c?function({dragItems:t,snapGrid:e,x:n,y:o}){const r=t.values().next().value;if(!r)return null;const i={x:n-r.distance.x,y:o-r.distance.y},a=A(i,e);return{x:a.x-i.x,y:a.y-i.y}}({dragItems:s,snapGrid:u,x:t,y:n}):null;for(const[e,o]of s){if(!r.has(e))continue;let i={x:t-o.distance.x,y:n-o.distance.y};c&&(i=b?{x:Math.round(i.x+b.x),y:Math.round(i.y+b.y)}:A(i,u));let s=null;if(w&&a&&!o.extent&&_){const{positionAbsolute:t}=o.internals,e=t.x-_.x+a[0][0],n=t.x+o.measured.width-_.x2+a[1][0];s=[[e,t.y-_.y+a[0][1]],[n,t.y+o.measured.height-_.y2+a[1][1]]]}const{position:h,positionAbsolute:d}=m({nodeId:e,nextPosition:i,nodeLookup:r,nodeExtent:s||a,nodeOrigin:l,onError:f});x=x||o.position.x!==h.x||o.position.y!==h.y,o.position=h,o.internals.positionAbsolute=d}if(g=g||x,x&&(v(s,!0),y&&(o||h||!P&&d))){const[t,e]=Ue({nodeId:P,dragItems:s,nodeLookup:r});o?.(y,s,t,e),h?.(y,t,e),P||d?.(y,e)}}async function N(){if(!l)return;const{transform:t,panBy:n,autoPanSpeed:o,autoPanOnNodeDrag:r}=e();if(!r)return u=!1,void cancelAnimationFrame(a);const[s,h]=_(c,l,o);0===s&&0===h||(i.x=(i.x??0)-s/t[2],i.y=(i.y??0)-h/t[2],await n({x:s,y:h})&&z(i)),a=requestAnimationFrame(N)}function S(o){const{nodeLookup:r,multiSelectionActive:a,nodesDraggable:u,transform:c,snapGrid:d,snapToGrid:f,selectNodesOnDrag:p,onNodeDragStart:g,onSelectionDragStart:m,unselectNodesAndEdges:y}=e();h=!0,p&&b||a||!P||r.get(P)?.selected||y(),b&&p&&P&&t?.(P);const v=R(o.sourceEvent,{transform:c,snapGrid:d,snapToGrid:f,containerBounds:l});if(i=v,s=function(t,e,n,o){const r=new Map;for(const[i,a]of t)if((a.selected||a.id===o)&&(!a.parentId||!Fe(a,t))&&(a.draggable||e&&void 0===a.draggable)){const e=t.get(i);e&&r.set(i,{id:i,position:e.position||{x:0,y:0},distance:{x:n.x-e.internals.positionAbsolute.x,y:n.y-e.internals.positionAbsolute.y},extent:e.extent,parentId:e.parentId,origin:e.origin,expandParent:e.expandParent,internals:{positionAbsolute:e.internals.positionAbsolute||{x:0,y:0}},measured:{width:e.measured.width??0,height:e.measured.height??0}})}return r}(r,u,v,P),s.size>0&&(n||g||!P&&m)){const[t,e]=Ue({nodeId:P,dragItems:s,nodeLookup:r});n?.(o.sourceEvent,s,t,e),g?.(o.sourceEvent,t,e),P||m?.(o.sourceEvent,e)}}d=Ce(w);const k=We().clickDistance(E).on("start",t=>{const{domNode:n,nodeDragThreshold:o,transform:r,snapGrid:a,snapToGrid:s}=e();l=n?.getBoundingClientRect()||null,f=!1,g=!1,y=t.sourceEvent,0===o&&S(t);const u=R(t.sourceEvent,{transform:r,snapGrid:a,snapToGrid:s,containerBounds:l});i=u,c=q(t.sourceEvent,l)}).on("drag",t=>{const{autoPanOnNodeDrag:n,transform:o,snapGrid:r,snapToGrid:a,nodeDragThreshold:d,nodeLookup:p}=e(),g=R(t.sourceEvent,{transform:o,snapGrid:r,snapToGrid:a,containerBounds:l});if(y=t.sourceEvent,("touchmove"===t.sourceEvent.type&&t.sourceEvent.touches.length>1||P&&!p.has(P))&&(f=!0),!f){if(!u&&n&&h&&(u=!0,N()),!h){const e=q(t.sourceEvent,l),n=e.x-c.x,o=e.y-c.y;Math.sqrt(n*n+o*o)>d&&S(t)}(i.x!==g.xSnapped||i.y!==g.ySnapped)&&s&&h&&(c=q(t.sourceEvent,l),z(g))}}).on("end",t=>{if(h&&!f){if(u=!1,h=!1,cancelAnimationFrame(a),s.size>0){const{nodeLookup:n,updateNodePositions:o,onNodeDragStop:i,onSelectionDragStop:a}=e();if(g&&(o(s,!1),g=!1),r||i||!P&&a){const[e,o]=Ue({nodeId:P,dragItems:s,nodeLookup:n,dragging:!1});r?.(t.sourceEvent,s,e,o),i?.(t.sourceEvent,e,o),P||a?.(t.sourceEvent,o)}}}else f&&s.size>0&&e().updateNodePositions(s,!1)}).filter(t=>{const e=t.target;return!t.button&&(!v||!Ke(e,`.${v}`,w))&&(!x||Ke(e,x,w))});d.call(k)},destroy:function(){d?.on(".drag",null)}}},t.XYHandle=on,t.XYMinimap=function({domNode:t,panZoom:e,getTransform:n,getViewScale:o}){const r=Ce(t);return{update:function({translateExtent:t,width:i,height:a,zoomStep:s=1,pannable:u=!0,zoomable:c=!0,inversePan:l=!1}){let h=[0,0];const d=mr().on("start",t=>{"mousedown"!==t.sourceEvent.type&&"touchstart"!==t.sourceEvent.type||(h=[t.sourceEvent.clientX??t.sourceEvent.touches[0].clientX,t.sourceEvent.clientY??t.sourceEvent.touches[0].clientY])}).on("zoom",u?r=>{const s=n();if("mousemove"!==r.sourceEvent.type&&"touchmove"!==r.sourceEvent.type||!e)return;const u=[r.sourceEvent.clientX??r.sourceEvent.touches[0].clientX,r.sourceEvent.clientY??r.sourceEvent.touches[0].clientY],c=[u[0]-h[0],u[1]-h[1]];h=u;const d=o()*Math.max(s[2],Math.log(s[2]))*(l?-1:1),f={x:s[0]-c[0]*d,y:s[1]-c[1]*d},p=[[0,0],[i,a]];e.setViewportConstrained({x:f.x,y:f.y,zoom:s[2]},p,t)}:null).on("zoom.wheel",c?t=>{if("wheel"!==t.sourceEvent.type||!e)return;const o=n(),r=t.sourceEvent.ctrlKey&&D()?10:1,i=-t.sourceEvent.deltaY*(1===t.sourceEvent.deltaMode?.05:t.sourceEvent.deltaMode?1:.002)*s,a=o[2]*Math.pow(2,i*r);e.scaleTo(a)}:null);r.call(d,{})},destroy:function(){r.on("zoom",null)},pointer:Oe}},t.XYPanZoom=function({domNode:e,minZoom:n,maxZoom:o,translateExtent:r,viewport:i,onPanZoom:a,onPanZoomStart:s,onPanZoomEnd:u,onDraggingChange:c}){const l={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},h=e.getBoundingClientRect();let d=[[0,0],[h.width,h.height]];const f="undefined"!=typeof ResizeObserver?new ResizeObserver(t=>{const e=t[0];e&&(d=[[0,0],[e.contentRect.width,e.contentRect.height]])}):null;f?.observe(e);const p=mr().extent(()=>d).scaleExtent([n,o]).translateExtent(r),g=Ce(e).call(p);_({x:i.x,y:i.y,zoom:y(i.zoom,n,o)},[[0,0],[h.width,h.height]],r);const m=g.on("wheel.zoom"),v=g.on("dblclick.zoom");async function x(t,e){return!!g&&new Promise(n=>{p?.interpolate("linear"===e?.interpolate?Un:uo).transform(br(g,e?.duration,e?.ease,()=>n(!0)),t)})}function w(){p.on("zoom",null)}async function _(t,e,n){const o=vr(t),r=p?.constrain()(o,e,n);return r&&await x(r),r}return p.wheelDelta(Mr),{update:function({noWheelClassName:e,noPanClassName:n,onPaneContextMenu:o,userSelectionActive:r,panOnScroll:i,panOnDrag:h,panOnScrollMode:d,panOnScrollSpeed:f,preventScrolling:y,zoomOnPinch:x,zoomOnScroll:_,zoomOnDoubleClick:b,zoomActivationKeyPressed:M,lib:P,onTransformChange:E,connectionInProgress:z,paneClickDistance:N,selectionOnDrag:S}){r&&!l.isZoomingOrPanning&&w();const k=i&&!M&&!r;p.clickDistance(S?1/0:!I(N)||N<0?0:N);const A=k?function({zoomPanValues:e,noWheelClassName:n,d3Selection:o,d3Zoom:r,panOnScrollMode:i,panOnScrollSpeed:a,zoomOnPinch:s,onPanZoomStart:u,onPanZoom:c,onPanZoomEnd:l}){return h=>{if(xr(h,n))return h.ctrlKey&&h.preventDefault(),!1;h.preventDefault(),h.stopImmediatePropagation();const d=o.property("__zoom").k||1;if(h.ctrlKey&&s){const t=Oe(h),e=Mr(h),n=d*Math.pow(2,e);return void r.scaleTo(o,n,t,h)}const f=1===h.deltaMode?20:1;let p=i===t.PanOnScrollMode.Vertical?0:h.deltaX*f,g=i===t.PanOnScrollMode.Horizontal?0:h.deltaY*f;!D()&&h.shiftKey&&i!==t.PanOnScrollMode.Vertical&&(p=h.deltaY*f,g=0),r.translateBy(o,-p/d*a,-g/d*a,{internal:!0});const m=yr(o.property("__zoom"));clearTimeout(e.panScrollTimeout),e.isPanScrolling?c?.(h,m):(e.isPanScrolling=!0,u?.(h,m)),e.panScrollTimeout=setTimeout(()=>{l?.(h,m),e.isPanScrolling=!1},150)}}({zoomPanValues:l,noWheelClassName:e,d3Selection:g,d3Zoom:p,panOnScrollMode:d,panOnScrollSpeed:f,zoomOnPinch:x,onPanZoomStart:s,onPanZoom:a,onPanZoomEnd:u}):function({noWheelClassName:t,preventScrolling:e,d3ZoomHandler:n}){return function(o,r){const i="wheel"===o.type,a=!e&&i&&!o.ctrlKey,s=xr(o,t);if(o.ctrlKey&&i&&s&&o.preventDefault(),a||s)return null;o.preventDefault(),n.call(this,o,r)}}({noWheelClassName:e,preventScrolling:y,d3ZoomHandler:m});g.on("wheel.zoom",A,{passive:!1});const T=function({zoomPanValues:t,onDraggingChange:e,onPanZoomStart:n}){return o=>{if(o.sourceEvent?.internal)return;const r=yr(o.transform);t.mouseButton=o.sourceEvent?.button||0,t.isZoomingOrPanning=!0,t.prevViewport=r,"mousedown"===o.sourceEvent?.type&&e(!0),n&&n?.(o.sourceEvent,r)}}({zoomPanValues:l,onDraggingChange:c,onPanZoomStart:s});p.on("start",T);const $=function({zoomPanValues:t,panOnDrag:e,onPaneContextMenu:n,onTransformChange:o,onPanZoom:r}){return i=>{t.usedRightMouseButton=!(!n||!wr(e,t.mouseButton??0)),i.sourceEvent?.sync||o([i.transform.x,i.transform.y,i.transform.k]),r&&!i.sourceEvent?.internal&&r?.(i.sourceEvent,yr(i.transform))}}({zoomPanValues:l,panOnDrag:h,onPaneContextMenu:!!o,onPanZoom:a,onTransformChange:E});p.on("zoom",$);const C=function({zoomPanValues:t,panOnDrag:e,panOnScroll:n,onDraggingChange:o,onPanZoomEnd:r,onPaneContextMenu:i}){return a=>{if(!a.sourceEvent?.internal&&(t.isZoomingOrPanning=!1,i&&wr(e,t.mouseButton??0)&&!t.usedRightMouseButton&&a.sourceEvent&&i(a.sourceEvent),t.usedRightMouseButton=!1,o(!1),r)){const e=yr(a.transform);t.prevViewport=e,clearTimeout(t.timerId),t.timerId=setTimeout(()=>{r?.(a.sourceEvent,e)},n?150:0)}}}({zoomPanValues:l,panOnDrag:h,panOnScroll:i,onPaneContextMenu:o,onPanZoomEnd:u,onDraggingChange:c});p.on("end",C);const O=function({zoomActivationKeyPressed:t,zoomOnScroll:e,zoomOnPinch:n,panOnDrag:o,panOnScroll:r,zoomOnDoubleClick:i,userSelectionActive:a,noWheelClassName:s,noPanClassName:u,lib:c,connectionInProgress:l}){return h=>{const d=t||e,f=n&&h.ctrlKey,p="wheel"===h.type;if(1===h.button&&"mousedown"===h.type&&(xr(h,`${c}-flow__node`)||xr(h,`${c}-flow__edge`)))return!0;if(!(o||d||r||i||n))return!1;if(a)return!1;if(l&&!p)return!1;if(xr(h,s)&&p)return!1;if(xr(h,u)&&(!p||r&&p&&!t))return!1;if(!n&&h.ctrlKey&&p)return!1;if(!n&&"touchstart"===h.type&&h.touches?.length>1)return h.preventDefault(),!1;if(!d&&!r&&!f&&p)return!1;if(!o&&("mousedown"===h.type||"touchstart"===h.type))return!1;if(Array.isArray(o)&&!o.includes(h.button)&&"mousedown"===h.type)return!1;const g=Array.isArray(o)&&o.includes(h.button)||!h.button||h.button<=1;return(!h.ctrlKey||p)&&g}}({zoomActivationKeyPressed:M,panOnDrag:h,zoomOnScroll:_,panOnScroll:i,zoomOnDoubleClick:b,zoomOnPinch:x,userSelectionActive:r,noPanClassName:n,noWheelClassName:e,lib:P,connectionInProgress:z});p.filter(O),b?g.on("dblclick.zoom",v):g.on("dblclick.zoom",null)},destroy:w,setViewport:async function(t,e){const n=vr(t);return await x(n,e),n},setViewportConstrained:_,getViewport:function(){const t=g?sr(g.node()):{x:0,y:0,k:1};return{x:t.x,y:t.y,zoom:t.k}},scaleTo:async function(t,e){return!!g&&new Promise(n=>{p?.interpolate("linear"===e?.interpolate?Un:uo).scaleTo(br(g,e?.duration,e?.ease,()=>n(!0)),t)})},scaleBy:async function(t,e){return!!g&&new Promise(n=>{p?.interpolate("linear"===e?.interpolate?Un:uo).scaleBy(br(g,e?.duration,e?.ease,()=>n(!0)),t)})},setScaleExtent:function(t){p?.scaleExtent(t)},setTranslateExtent:function(t){p?.translateExtent(t)},syncViewport:function(t){if(g){const e=vr(t),n=g.property("__zoom");n.k===t.zoom&&n.x===t.x&&n.y===t.y||p?.transform(g,e,null,{sync:!0})}},setClickDistance:function(t){const e=!I(t)||t<0?0:t;p?.clickDistance(e)}}},t.XYResizer=function({domNode:t,nodeId:e,getStoreItems:n,onChange:o,onEnd:r}){const i=Ce(t);let a={controlDirection:Er("bottom-right"),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};return{update:function({controlPosition:t,boundaries:s,keepAspectRatio:u,resizeDirection:c,onResizeStart:l,onResize:h,onResizeEnd:d,shouldResize:f}){let p,g={...Ir},m={...Ar};a={boundaries:s,resizeDirection:c,keepAspectRatio:u,controlDirection:Er(t)};let y,v,x,w=null,_=[],b=!1;const M=We().on("start",t=>{const{nodeLookup:o,transform:r,snapGrid:i,snapToGrid:a,nodeOrigin:s,paneDomNode:u}=n();if(p=o.get(e),!p)return;w=u?.getBoundingClientRect()??null;const{xSnapped:c,ySnapped:h}=R(t.sourceEvent,{transform:r,snapGrid:i,snapToGrid:a,containerBounds:w});g={width:p.measured.width??0,height:p.measured.height??0,x:p.position.x??0,y:p.position.y??0},m={...g,pointerX:c,pointerY:h,aspectRatio:g.width/g.height},y=void 0,v=H(p.extent)?p.extent:void 0,p.parentId&&("parent"===p.extent||p.expandParent)&&(y=o.get(p.parentId)),y&&"parent"===p.extent&&(v=[[0,0],[y.measured.width,y.measured.height]]),_=[],x=void 0;for(const[t,n]of o)if(n.parentId===e&&(_.push({id:t,position:{...n.position},extent:n.extent}),"parent"===n.extent||n.expandParent)){const t=Tr(n,p,n.origin??s);x=x?[[Math.min(t[0][0],x[0][0]),Math.min(t[0][1],x[0][1])],[Math.max(t[1][0],x[1][0]),Math.max(t[1][1],x[1][1])]]:t}l?.(t,{...g})}).on("drag",t=>{const{transform:e,snapGrid:r,snapToGrid:i,nodeOrigin:s}=n(),u=R(t.sourceEvent,{transform:e,snapGrid:r,snapToGrid:i,containerBounds:w}),c=[];if(!p)return;const{x:l,y:d,width:M,height:P}=g,E={},z=p.origin??s,{width:N,height:S,x:k,y:I}=function(t,e,n,o,r,i,a,s){let{affectsX:u,affectsY:c}=e;const{isHorizontal:l,isVertical:h}=e,d=l&&h,{xSnapped:f,ySnapped:p}=n,{minWidth:g,maxWidth:m,minHeight:y,maxHeight:v}=o,{x:x,y:w,width:_,height:b,aspectRatio:M}=t;let P=Math.floor(l?f-t.pointerX:0),E=Math.floor(h?p-t.pointerY:0);const z=_+(u?-P:P),N=b+(c?-E:E),S=-i[0]*_,k=-i[1]*b;let I=Sr(z,g,m),A=Sr(N,y,v);if(a){let t=0,e=0;u&&P<0?t=zr(x+P+S,a[0][0]):!u&&P>0&&(t=Nr(x+z+S,a[1][0])),c&&E<0?e=zr(w+E+k,a[0][1]):!c&&E>0&&(e=Nr(w+N+k,a[1][1])),I=Math.max(I,t),A=Math.max(A,e)}if(s){let t=0,e=0;u&&P>0?t=Nr(x+P,s[0][0]):!u&&P<0&&(t=zr(x+z,s[1][0])),c&&E>0?e=Nr(w+E,s[0][1]):!c&&E<0&&(e=zr(w+N,s[1][1])),I=Math.max(I,t),A=Math.max(A,e)}if(r){if(l){const t=Sr(z/M,y,v)*M;if(I=Math.max(I,t),a){let t=0;t=!u&&!c||u&&!c&&d?Nr(w+k+z/M,a[1][1])*M:zr(w+k+(u?P:-P)/M,a[0][1])*M,I=Math.max(I,t)}if(s){let t=0;t=!u&&!c||u&&!c&&d?zr(w+z/M,s[1][1])*M:Nr(w+(u?P:-P)/M,s[0][1])*M,I=Math.max(I,t)}}if(h){const t=Sr(N*M,g,m)/M;if(A=Math.max(A,t),a){let t=0;t=!u&&!c||c&&!u&&d?Nr(x+N*M+S,a[1][0])/M:zr(x+(c?E:-E)*M+S,a[0][0])/M,A=Math.max(A,t)}if(s){let t=0;t=!u&&!c||c&&!u&&d?zr(x+N*M,s[1][0])/M:Nr(x+(c?E:-E)*M,s[0][0])/M,A=Math.max(A,t)}}}E+=E<0?A:-A,P+=P<0?I:-I,r&&(d?z>N*M?E=(kr(u,c)?-P:P)/M:P=(kr(u,c)?-E:E)*M:l?(E=P/M,c=u):(P=E*M,u=c));const T=u?x+P:x,$=c?w+E:w;return{width:_+(u?-P:P),height:b+(c?-E:E),x:i[0]*P*(u?-1:1)+T,y:i[1]*E*(c?-1:1)+$}}(m,a.controlDirection,u,a.boundaries,a.keepAspectRatio,z,v,x),A=N!==M,T=S!==P,$=k!==l&&A,C=I!==d&&T;if(!($||C||A||T))return;if(($||C||1===z[0]||1===z[1])&&(E.x=$?k:g.x,E.y=C?I:g.y,g.x=E.x,g.y=E.y,_.length>0)){const t=k-l,e=I-d;for(const n of _)n.position={x:n.position.x-t+z[0]*(N-M),y:n.position.y-e+z[1]*(S-P)},c.push(n)}if((A||T)&&(E.width=!A||a.resizeDirection&&"horizontal"!==a.resizeDirection?g.width:N,E.height=!T||a.resizeDirection&&"vertical"!==a.resizeDirection?g.height:S,g.width=E.width,g.height=E.height),y&&p.expandParent){const t=z[0]*(E.width??0);E.x&&E.x0?1:a<0?-1:0,s>0?1:s<0?-1:0];return a&&r&&(u[0]=-1*u[0]),s&&i&&(u[1]=-1*u[1]),u}({width:g.width,prevWidth:M,height:g.height,prevHeight:P,affectsX:a.controlDirection.affectsX,affectsY:a.controlDirection.affectsY}),D={...g,direction:O},H=f?.(t,D);!1!==H&&(b=!0,h?.(t,D),o(E,c))}).on("end",t=>{b&&(d?.(t,{...g}),r?.({...g}),b=!1)});i.call(M)},destroy:function(){i.on(".drag",null)}}},t.XY_RESIZER_HANDLE_POSITIONS=["top-left","top-right","bottom-left","bottom-right"],t.XY_RESIZER_LINE_POSITIONS=["top","right","bottom","left"],t.addEdge=(t,n,o={})=>{if(!t.source||!t.target)return o.onError?.("006",e.error006()),n;const r=o.getEdgeId||K;let i;return i=h(t)?{...t}:{...t,id:r(t)},((t,e)=>e.some(e=>!(e.source!==t.source||e.target!==t.target||e.sourceHandle!==t.sourceHandle&&(e.sourceHandle||t.sourceHandle)||e.targetHandle!==t.targetHandle&&(e.targetHandle||t.targetHandle))))(i,n)?n:(null===i.sourceHandle&&delete i.sourceHandle,null===i.targetHandle&&delete i.targetHandle,n.concat(i))},t.adoptUserNodes=function(t,e,n,o={}){const r=lt(ct,o),i={i:0},a=new Map(e),s=r?.elevateNodesOnSelect&&!dt(r.zIndexMode)?1e3:0;let u=t.length>0,c=!1;e.clear(),n.clear();for(const l of t){let t=a.get(l.id);if(r.checkEquality&&l===t?.internals.userNode)e.set(l.id,t);else{const n=f(l,r.nodeOrigin),o=H(l.extent)?l.extent:r.nodeExtent,i=v(n,o,B(l));t={...r.defaults,...l,measured:{width:l.measured?.width,height:l.measured?.height},internals:{positionAbsolute:i,handleBounds:ht(l,t),z:pt(l,s,r.zIndexMode),userNode:l}},e.set(l.id,t)}void 0!==t.measured&&void 0!==t.measured.width&&void 0!==t.measured.height||t.hidden||(u=!1),l.parentId&&ft(t,e,n,o,i),c||=l.selected??!1}return{nodesInitialized:u,hasSelectedNodes:c}},t.areConnectionMapsEqual=function(t,e){if(!t&&!e)return!0;if(!t||!e||t.size!==e.size)return!1;if(!t.size&&!e.size)return!0;for(const n of t.keys())if(!e.has(n))return!1;return!0},t.areSetsEqual=function(t,e){if(t.size!==e.size)return!1;for(const n of t)if(!e.has(n))return!1;return!0},t.boxToRect=P,t.calcAutoPan=_,t.calculateNodePosition=m,t.clamp=y,t.clampPosition=v,t.clampPositionToParent=x,t.createDevWarn=(t,e)=>(t,e)=>{},t.createMarkerIds=function(t,{id:e,defaultColor:n,defaultMarkerStart:o,defaultMarkerEnd:r}){const i=new Set;return t.reduce((t,a)=>([a.markerStart||o,a.markerEnd||r].forEach(o=>{if(o&&"object"==typeof o){const r=it(o,e);i.has(r)||(t.push({id:r,color:o.color||n,...o}),i.add(r))}}),t),[]).sort((t,e)=>t.id.localeCompare(e.id))},t.defaultAriaLabelConfig=o,t.elementSelectionKeys=["Enter"," ","Escape"],t.errorMessages=e,t.evaluateAbsolutePosition=function(t,e={width:0,height:0},n,o,r){const i={...t},a=o.get(n);if(a){const t=a.origin||r;i.x+=a.internals.positionAbsolute.x-(e.width??0)*t[0],i.y+=a.internals.positionAbsolute.y-(e.height??0)*t[1]}return i},t.fitViewport=async function({nodes:t,width:e,height:n,panZoom:o,minZoom:r,maxZoom:i},a){if(0===t.size)return!0;const s=function(t,e){const n=new Map,o=e?.nodes?new Set(e.nodes.map(t=>t.id)):null;return t.forEach(t=>{let r;if(e?.includeHiddenNodes){const{width:e,height:n}=B(t);r=e>0&&n>0}else r=Boolean(t.measured.width&&t.measured.height&&!t.hidden);!r||o&&!o.has(t.id)||n.set(t.id,t)}),n}(t,a),u=p(s),c=O(u,e,n,a?.minZoom??r,a?.maxZoom??i,a?.padding??.1);return await o.setViewport(c,{duration:a?.duration,ease:a?.ease,interpolate:a?.interpolate}),!0},t.getBezierEdgeCenter=G,t.getBezierPath=function({sourceX:e,sourceY:n,sourcePosition:o=t.Position.Bottom,targetX:r,targetY:i,targetPosition:a=t.Position.Top,curvature:s=.25}){const[u,c]=W({pos:o,x1:e,y1:n,x2:r,y2:i,c:s}),[l,h]=W({pos:a,x1:r,y1:i,x2:e,y2:n,c:s}),[d,f,p,g]=G({sourceX:e,sourceY:n,targetX:r,targetY:i,sourceControlX:u,sourceControlY:c,targetControlX:l,targetControlY:h});return[`M${e},${n} C${u},${c} ${l},${h} ${r},${i}`,d,f,p,g]},t.getBoundsOfBoxes=b,t.getBoundsOfRects=N,t.getConnectedEdges=g,t.getConnectionStatus=function(t){return null===t?null:t?"valid":"invalid"},t.getDimensions=L,t.getEdgeCenter=F,t.getEdgeId=K,t.getEdgePosition=function(n){const{sourceNode:o,targetNode:r}=n;if(!et(o)||!et(r))return null;const i=o.internals.handleBounds||nt(o.handles),a=r.internals.handleBounds||nt(r.handles),s=rt(i?.source??[],n.sourceHandle),u=rt(n.connectionMode===t.ConnectionMode.Strict?a?.target??[]:(a?.target??[]).concat(a?.source??[]),n.targetHandle);if(!s||!u)return n.onError?.("008",e.error008(s?"target":"source",{id:n.id,sourceHandle:n.sourceHandle,targetHandle:n.targetHandle})),null;const c=s?.position||t.Position.Bottom,l=u?.position||t.Position.Top,h=ot(o,s,c),d=ot(r,u,l);return{sourceX:h.x,sourceY:h.y,targetX:d.x,targetY:d.y,sourcePosition:c,targetPosition:l}},t.getEdgeToolbarTransform=function(t,e,n,o="center",r="center"){return`translate(${t}px, ${e}px) scale(${1/n}) translate(${-(at[o]??50)}%, ${-(st[r]??50)}%)`},t.getElementsToRemove=async function({nodesToRemove:t=[],edgesToRemove:e=[],nodes:n,edges:o,onBeforeDelete:r}){const i=new Set(t.map(t=>t.id)),a=[];for(const t of n){if(!1===t.deletable)continue;const e=i.has(t.id),n=!e&&t.parentId&&a.find(e=>e.id===t.parentId);(e||n)&&a.push(t)}const s=new Set(e.map(t=>t.id)),u=o.filter(t=>!1!==t.deletable),c=g(a,u);for(const t of u){s.has(t.id)&&!c.find(e=>e.id===t.id)&&c.push(t)}if(!r)return{edges:c,nodes:a};const l=await r({nodes:a,edges:c});return"boolean"==typeof l?l?{edges:c,nodes:a}:{edges:[],nodes:[]}:l},t.getElevatedEdgeZIndex=function({sourceNode:t,targetNode:e,selected:n=!1,zIndex:o=0,elevateOnSelect:r=!1,zIndexMode:i="basic"}){return"manual"===i?o:(r&&n?o+1e3:o)+Math.max(t.parentId||r&&t.selected?t.internals.z:0,e.parentId||r&&e.selected?e.internals.z:0)},t.getEventPosition=q,t.getHandleBounds=Z,t.getHandlePosition=ot,t.getHostForElement=X,t.getIncomers=(t,e,n)=>{if(!t.id)return[];const o=new Set;return n.forEach(e=>{e.target===t.id&&o.add(e.source)}),e.filter(t=>o.has(t.id))},t.getInternalNodesBounds=p,t.getMarkerId=it,t.getNodeDimensions=B,t.getNodePositionWithOrigin=f,t.getNodeToolbarTransform=function(e,n,o,r,i){let a=.5;"start"===i?a=0:"end"===i&&(a=1);let s=[(e.x+e.width*a)*n.zoom+n.x,e.y*n.zoom+n.y-r],u=[-100*a,-100];switch(o){case t.Position.Right:s=[(e.x+e.width)*n.zoom+n.x+r,(e.y+e.height*a)*n.zoom+n.y],u=[0,-100*a];break;case t.Position.Bottom:s[1]=(e.y+e.height)*n.zoom+n.y+r,u[1]=0;break;case t.Position.Left:s=[e.x*n.zoom+n.x-r,(e.y+e.height*a)*n.zoom+n.y],u=[-100,-100*a]}return`translate(${s[0]}px, ${s[1]}px) translate(${u[0]}%, ${u[1]}%)`},t.getNodesBounds=(t,e={nodeOrigin:[0,0]})=>{if(0===t.length)return{x:0,y:0,width:0,height:0};const n=t.reduce((t,n)=>{const o="string"==typeof n;let r=e.nodeLookup||o?void 0:n;e.nodeLookup&&(r=o?e.nodeLookup.get(n):d(n)?n:e.nodeLookup.get(n.id));const i=r?z(r,e.nodeOrigin):{x:0,y:0,x2:0,y2:0};return b(t,i)},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return P(n)},t.getNodesInside=(t,e,[n,o,r]=[0,0,1],i=!1,a=!1)=>{const s=(e.x-n)/r,u=(e.y-o)/r,c=e.width/r,l=e.height/r,h=[];for(const e of t.values()){const{measured:t,selectable:n=!0,hidden:o=!1}=e;if(a&&!n||o)continue;const r=t.width??e.width??e.initialWidth??0,d=t.height??e.height??e.initialHeight??0,{x:f,y:p}=e.internals.positionAbsolute,g=S(s,u,c,l,f,p,r,d),m=r*d,y=i&&g>0;(!e.internals.handleBounds||y||g>=m||e.dragging)&&h.push(e)}return h},t.getOutgoers=(t,e,n)=>{if(!t.id)return[];const o=new Set;return n.forEach(e=>{e.source===t.id&&o.add(e.target)}),e.filter(t=>o.has(t.id))},t.getOverlappingArea=k,t.getPointerPosition=R,t.getRectsOverlappingArea=S,t.getSmoothStepPath=function({sourceX:e,sourceY:n,sourcePosition:o=t.Position.Bottom,targetX:r,targetY:i,targetPosition:a=t.Position.Top,borderRadius:s=5,centerX:u,centerY:c,offset:l=20,stepPosition:h=.5}){const[d,f,p,g,m]=J({source:{x:e,y:n},sourcePosition:o,target:{x:r,y:i},targetPosition:a,center:{x:u,y:c},offset:l,stepPosition:h});let y=`M${d[0].x} ${d[0].y}`;for(let t=1;t{e?.has(n)||o.push(t)}),o.length&&n(o)},t.handleExpandParent=gt,t.infiniteExtent=n,t.initialConnection={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null},t.isCoordinateExtent=H,t.isEdgeBase=h,t.isEdgeVisible=function({sourceNode:t,targetNode:e,width:n,height:o,transform:r}){const i=b(z(t),z(e));i.x===i.x2&&(i.x2+=1),i.y===i.y2&&(i.y2+=1);const a={x:-r[0]/r[2],y:-r[1]/r[2],width:n/r[2],height:o/r[2]};return k(a,P(i))>0},t.isInputDOMNode=function(t){const e=t.composedPath?.()?.[0]||t.target;return 1===e?.nodeType&&(Y.includes(e.nodeName)||e.hasAttribute("contenteditable")||!!e.closest(".nokey"))},t.isInternalNodeBase=d,t.isMacOs=D,t.isManualZIndexMode=dt,t.isMouseEvent=V,t.isNodeBase=t=>!!t&&"object"==typeof t&&"id"in t&&"position"in t&&!("source"in t)&&!("target"in t),t.isNumeric=I,t.isRectObject=t=>I(t.width)&&I(t.height)&&I(t.x)&&I(t.y),t.mergeAriaLabelConfig=function(t){return{...o,...t||{}}},t.nodeHasDimensions=function(t){return void 0!==(t.measured?.width??t.width??t.initialWidth)&&void 0!==(t.measured?.height??t.height??t.initialHeight)},t.nodeToBox=z,t.nodeToRect=E,t.oppositePosition=l,t.panBy=async function({delta:t,panZoom:e,transform:n,translateExtent:o,width:r,height:i}){if(!e||!t.x&&!t.y)return!1;const a=await e.setViewportConstrained({x:n[0]+t.x,y:n[1]+t.y,zoom:n[2]},[[0,0],[r,i]],o);return!!a&&(a.x!==n[0]||a.y!==n[1]||a.k!==n[2])},t.pointToRendererPoint=T,t.reconnectEdge=(t,n,o,r={shouldReplaceId:!0})=>{const{id:i,...a}=t;if(!n.source||!n.target)return r.onError?.("006",e.error006()),o;if(!o.find(e=>e.id===t.id))return r.onError?.("007",e.error007(i)),o;const s=r.getEdgeId||K,u={...a,id:r.shouldReplaceId?s(n):i,source:n.source,target:n.target,sourceHandle:n.sourceHandle,targetHandle:n.targetHandle};return o.filter(t=>t.id!==i).concat(u)},t.rectToBox=M,t.rendererPointToPoint=$,t.shallowNodeData=function(t,e){if(null===t||null===e)return!1;const n=Array.isArray(t)?t:[t],o=Array.isArray(e)?e:[e];if(n.length!==o.length)return!1;for(let t=0;t0){const t=gt(d,e,n,r);c.push(...t)}return{changes:c,updatedInternals:u}},t.withResolvers=function(){let t,e;return{promise:new Promise((n,o)=>{t=n,e=o}),resolve:t,reject:e}}}); diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/changes.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/changes.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2a81cdaa7a5c2246cf8824d55d66b2c1e4480128 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/changes.d.ts @@ -0,0 +1,64 @@ +import type { XYPosition, Dimensions, NodeBase, EdgeBase } from '.'; +export type NodeDimensionChange = { + id: string; + type: 'dimensions'; + dimensions?: Dimensions; + resizing?: boolean; + setAttributes?: boolean | 'width' | 'height'; +}; +export type NodePositionChange = { + id: string; + type: 'position'; + position?: XYPosition; + positionAbsolute?: XYPosition; + dragging?: boolean; +}; +export type NodeSelectionChange = { + id: string; + type: 'select'; + selected: boolean; +}; +export type NodeRemoveChange = { + id: string; + type: 'remove'; +}; +export type NodeAddChange = { + item: NodeType; + type: 'add'; + index?: number; +}; +export type NodeReplaceChange = { + id: string; + item: NodeType; + type: 'replace'; +}; +/** + * The [`onNodesChange`](/api-reference/react-flow#on-nodes-change) callback takes + *an array of `NodeChange` objects that you should use to update your flow's state. + *The `NodeChange` type is a union of six different object types that represent that + *various ways an node can change in a flow. + * @public + */ +export type NodeChange = NodeDimensionChange | NodePositionChange | NodeSelectionChange | NodeRemoveChange | NodeAddChange | NodeReplaceChange; +export type EdgeSelectionChange = NodeSelectionChange; +export type EdgeRemoveChange = NodeRemoveChange; +export type EdgeAddChange = { + item: EdgeType; + type: 'add'; + index?: number; +}; +export type EdgeReplaceChange = { + id: string; + item: EdgeType; + type: 'replace'; +}; +/** + * The [`onEdgesChange`](/api-reference/react-flow#on-edges-change) callback takes + *an array of `EdgeChange` objects that you should use to update your flow's state. + *The `EdgeChange` type is a union of four different object types that represent that + *various ways an edge can change in a flow. + * + * @public + */ +export type EdgeChange = EdgeSelectionChange | EdgeRemoveChange | EdgeAddChange | EdgeReplaceChange; +//# sourceMappingURL=changes.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/changes.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/changes.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..cdded21626789a21fff699499795c574e9276352 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/changes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../../src/types/changes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC;AAEpE,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;CAC9C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,IAAI;IAChE,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,IAAI;IACpE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,IACvD,mBAAmB,GACnB,kBAAkB,GAClB,mBAAmB,GACnB,gBAAgB,GAChB,aAAa,CAAC,QAAQ,CAAC,GACvB,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAEhC,MAAM,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACtD,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAChD,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,IAAI;IAChE,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,IAAI;IACpE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,IACvD,mBAAmB,GACnB,gBAAgB,GAChB,aAAa,CAAC,QAAQ,CAAC,GACvB,iBAAiB,CAAC,QAAQ,CAAC,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/edges.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/edges.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee065c05c4a9a033e0d9a2c1ae748ce7e2f334d8 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/edges.d.ts @@ -0,0 +1,140 @@ +import { Position } from './utils'; +export type EdgeBase = Record, EdgeType extends string | undefined = string | undefined> = { + /** Unique id of an edge. */ + id: string; + /** Type of edge defined in `edgeTypes`. */ + type?: EdgeType; + /** Id of source node. */ + source: string; + /** Id of target node. */ + target: string; + /** Id of source handle, only needed if there are multiple handles per node. */ + sourceHandle?: string | null; + /** Id of target handle, only needed if there are multiple handles per node. */ + targetHandle?: string | null; + animated?: boolean; + hidden?: boolean; + deletable?: boolean; + selectable?: boolean; + /** Arbitrary data passed to an edge. */ + data?: EdgeData; + selected?: boolean; + /** + * Set the marker on the beginning of an edge. + * @example 'arrow', 'arrowclosed' or custom marker + */ + markerStart?: EdgeMarkerType; + /** + * Set the marker on the end of an edge. + * @example 'arrow', 'arrowclosed' or custom marker + */ + markerEnd?: EdgeMarkerType; + zIndex?: number; + ariaLabel?: string; + /** + * ReactFlow renders an invisible path around each edge to make them easier to click or tap on. + * This property sets the width of that invisible path. + */ + interactionWidth?: number; +}; +export type SmoothStepPathOptions = { + offset?: number; + borderRadius?: number; + stepPosition?: number; +}; +export type StepPathOptions = { + offset?: number; +}; +export type BezierPathOptions = { + curvature?: number; +}; +/** + * @inline + */ +export type DefaultEdgeOptionsBase = Omit; +/** + * If you set the `connectionLineType` prop on your [``](/api-reference/react-flow#connection-connectionLineType) + *component, it will dictate the style of connection line rendered when creating + *new edges. + * + * @public + * + * @remarks If you choose to render a custom connection line component, this value will be + *passed to your component as part of its [`ConnectionLineComponentProps`](/api-reference/types/connection-line-component-props). + */ +export declare enum ConnectionLineType { + Bezier = "default", + Straight = "straight", + Step = "step", + SmoothStep = "smoothstep", + SimpleBezier = "simplebezier" +} +/** + * Edges can optionally have markers at the start and end of an edge. The `EdgeMarker` + *type is used to configure those markers! Check the docs for [`MarkerType`](/api-reference/types/marker-type) + *for details on what types of edge marker are available. + * + * @public + */ +export type EdgeMarker = { + type: MarkerType | `${MarkerType}`; + color?: string | null; + width?: number; + height?: number; + markerUnits?: string; + orient?: string; + strokeWidth?: number; +}; +export type EdgeMarkerType = string | EdgeMarker; +/** + * Edges may optionally have a marker on either end. The MarkerType type enumerates + * the options available to you when configuring a given marker. + * + * @public + */ +export declare enum MarkerType { + Arrow = "arrow", + ArrowClosed = "arrowclosed" +} +export type MarkerProps = EdgeMarker & { + id: string; +}; +/** + * @inline + */ +export type EdgePosition = { + sourceX: number; + sourceY: number; + targetX: number; + targetY: number; + sourcePosition: Position; + targetPosition: Position; +}; +export type EdgeLookup = Map; +export type EdgeToolbarBaseProps = { + /** + * The `x` position of the edge toolbar. + */ + x: number; + /** + * The `y` position of the edge toolbar. + */ + y: number; + /** If `true`, edge toolbar is visible even if edge is not selected. + * @default false + */ + isVisible?: boolean; + /** + * Align the vertical toolbar position relative to the passed x position. + * @default "center" + * @example 'left', 'center', 'right' + */ + alignX?: 'left' | 'center' | 'right'; + /** + * Align the horizontal toolbar position relative to the passed y position. + * @default "center" + * @example 'top', 'center', 'bottom' + */ + alignY?: 'top' | 'center' | 'bottom'; +}; +//# sourceMappingURL=edges.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/edges.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/edges.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..673054db0352e4dab016e236dce64044529a1a2e --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/edges.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"edges.d.ts","sourceRoot":"","sources":["../../src/types/edges.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/general.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/general.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..6c63417ff50903af8eecd0af4392334024a93677 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/general.d.ts @@ -0,0 +1,314 @@ +import type { Selection as D3Selection } from 'd3-selection'; +import type { D3DragEvent, SubjectPosition } from 'd3-drag'; +import type { ZoomBehavior } from 'd3-zoom'; +import type { XYPosition, Rect, Position } from './utils'; +import type { InternalNodeBase, NodeBase, NodeDragItem } from './nodes'; +import type { Handle, HandleType } from './handles'; +import { PanZoomInstance } from './panzoom'; +import { EdgeBase } from '..'; +export type Project = (position: XYPosition) => XYPosition; +/** + * This type is used to define the `onMove` handler. + */ +export type OnMove = (event: MouseEvent | TouchEvent | null, viewport: Viewport) => void; +export type OnMoveStart = OnMove; +export type OnMoveEnd = OnMove; +/** + * @inline + */ +export type ZoomInOut = (options?: ViewportHelperFunctionOptions) => Promise; +/** + * @inline + */ +export type ZoomTo = (zoomLevel: number, options?: ViewportHelperFunctionOptions) => Promise; +/** + * @inline + */ +export type GetZoom = () => number; +/** + * @inline + */ +export type GetViewport = () => Viewport; +/** + * The `SetViewport` function is used to set the viewport of the flow. + * + * @inline + * @param viewport - The viewport to set. + * @param options - Optional parameters to control the animation and easing of the viewport change. + */ +export type SetViewport = (viewport: Viewport, options?: ViewportHelperFunctionOptions) => Promise; +/** + * The `SetCenter` function is used to set the center of the flow viewport to a specific position + * + * @inline + * @param x - x coordinate + * @param y - y coordinate + * @param options - Optional parameters to control the animation and easing of the viewport change. + */ +export type SetCenter = (x: number, y: number, options?: SetCenterOptions) => Promise; +/** + * The `FitBounds` function is used to fit the flow viewport to the bounds of the nodes. + * + * @inline + * @param bounds - The bounds to fit the viewport to. + * @param options - Optional parameters to control the animation and easing of the viewport change. + */ +export type FitBounds = (bounds: Rect, options?: FitBoundsOptions) => Promise; +/** + * The `Connection` type is the basic minimal description of an [`Edge`](/api-reference/types/edge) + * between two nodes. The [`addEdge`](/api-reference/utils/add-edge) util can be used to upgrade + * a `Connection` to an [`Edge`](/api-reference/types/edge). + * + * @public + */ +export type Connection = { + /** The id of the node this connection originates from. */ + source: string; + /** The id of the node this connection terminates at. */ + target: string; + /** When not `null`, the id of the handle on the source node that this connection originates from. */ + sourceHandle: string | null; + /** When not `null`, the id of the handle on the target node that this connection terminates at. */ + targetHandle: string | null; +}; +/** + * The `HandleConnection` type is an extension of a basic [Connection](/api-reference/types/connection) that includes the `edgeId`. + */ +export type HandleConnection = Connection & { + edgeId: string; +}; +/** + * The `NodeConnection` type is an extension of a basic [Connection](/api-reference/types/connection) that includes the `edgeId`. + * + */ +export type NodeConnection = Connection & { + edgeId: string; +}; +export type UseNodeConnectionsParams = { + /** ID of the node, filled in automatically if used inside custom node. */ + id?: string; + /** Gets called when a connection is established. */ + onConnect?: (connections: HandleConnection[]) => void; + /** Gets called when a connection is removed. */ + onDisconnect?: (connections: HandleConnection[]) => void; +} & ({ + /** What type of handle connections do you want to observe? */ + handleType: HandleType; + /** Filter by handle id (this is only needed if the node has multiple handles of the same type). Requires `handleType` to be set. */ + handleId?: string; +} | { + handleType?: HandleType; + handleId?: never; +}); +/** + * The `ConnectionMode` is used to set the mode of connection between nodes. + * The `Strict` mode is the default one and only allows source to target edges. + * `Loose` mode allows source to source and target to target edges as well. + * + * @public + */ +export declare enum ConnectionMode { + Strict = "strict", + Loose = "loose" +} +export type OnConnectStartParams = { + nodeId: string | null; + handleId: string | null; + handleType: HandleType | null; +}; +export type OnConnectStart = (event: MouseEvent | TouchEvent, params: OnConnectStartParams) => void; +export type OnConnect = (connection: Connection) => void; +export type OnConnectEnd = (event: MouseEvent | TouchEvent, connectionState: FinalConnectionState>) => void; +export type OnReconnect = (oldEdge: EdgeType, newConnection: Connection) => void; +export type OnReconnectStart = (event: MouseEvent | TouchEvent, edge: EdgeType, handleType: HandleType) => void; +export type OnReconnectEnd = (event: MouseEvent | TouchEvent, edge: EdgeType, handleType: HandleType, connectionState: FinalConnectionState>) => void; +export type IsValidConnection = (edge: EdgeType | Connection) => boolean; +/** + * @inline + */ +export type FitViewParamsBase = { + nodes: Map>; + width: number; + height: number; + panZoom: PanZoomInstance; + minZoom: number; + maxZoom: number; +}; +export type PaddingUnit = 'px' | '%'; +export type PaddingWithUnit = `${number}${PaddingUnit}` | number; +export type Padding = PaddingWithUnit | { + top?: PaddingWithUnit; + right?: PaddingWithUnit; + bottom?: PaddingWithUnit; + left?: PaddingWithUnit; + x?: PaddingWithUnit; + y?: PaddingWithUnit; +}; +/** + * @inline + */ +export type FitViewOptionsBase = { + padding?: Padding; + includeHiddenNodes?: boolean; + minZoom?: number; + maxZoom?: number; + duration?: number; + ease?: (t: number) => number; + interpolate?: 'smooth' | 'linear'; + nodes?: (NodeType | { + id: string; + })[]; +}; +/** + * Internally, React Flow maintains a coordinate system that is independent of the + * rest of the page. The `Viewport` type tells you where in that system your flow + * is currently being display at and how zoomed in or out it is. + * + * @public + * @remarks A `Transform` has the same properties as the viewport, but they represent + * different things. Make sure you don't get them muddled up or things will start + * to look weird! + * + */ +export type Viewport = { + x: number; + y: number; + zoom: number; +}; +export type KeyCode = string | Array; +export type SnapGrid = [number, number]; +/** + * This enum is used to set the different modes of panning the viewport when the + * user scrolls. The `Free` mode allows the user to pan in any direction by scrolling + * with a device like a trackpad. The `Vertical` and `Horizontal` modes restrict + * scroll panning to only the vertical or horizontal axis, respectively. + * + * @public + */ +export declare enum PanOnScrollMode { + Free = "free", + Vertical = "vertical", + Horizontal = "horizontal" +} +/** + * @inline + */ +export type ViewportHelperFunctionOptions = { + duration?: number; + ease?: (t: number) => number; + interpolate?: 'smooth' | 'linear'; +}; +/** + * @inline + */ +export type SetCenterOptions = ViewportHelperFunctionOptions & { + zoom?: number; +}; +/** + * @inline + */ +export type FitBoundsOptions = ViewportHelperFunctionOptions & { + padding?: number; +}; +export type OnViewportChange = (viewport: Viewport) => void; +export type D3ZoomInstance = ZoomBehavior; +export type D3SelectionInstance = D3Selection; +export type D3ZoomHandler = (this: Element, event: any, d: unknown) => void; +export type UpdateNodeInternals = (nodeId: string | string[]) => void; +/** + * This type is mostly used to help position things on top of the flow viewport. For + * example both the [``](/api-reference/components/minimap) and + * [``](/api-reference/components/controls) components take a `position` + * prop of this type. + * + * @public + */ +export type PanelPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right' | 'center-left' | 'center-right'; +export type ProOptions = { + account?: string; + hideAttribution: boolean; +}; +export type UseDragEvent = D3DragEvent; +export declare enum SelectionMode { + Partial = "partial", + Full = "full" +} +export type SelectionRect = Rect & { + startX: number; + startY: number; +}; +export type OnError = (id: string, message: string) => void; +export type UpdateNodePositions = (dragItems: Map, dragging?: boolean) => void; +export type PanBy = (delta: XYPosition) => Promise; +export declare const initialConnection: NoConnection; +export type NoConnection = { + inProgress: false; + isValid: null; + from: null; + fromHandle: null; + fromPosition: null; + fromNode: null; + to: null; + toHandle: null; + toPosition: null; + toNode: null; + pointer: null; +}; +export type ConnectionInProgress = { + /** Indicates whether a connection is currently in progress. */ + inProgress: true; + /** + * If an ongoing connection is above a handle or inside the connection radius, this will be `true` + * or `false`, otherwise `null`. + */ + isValid: boolean | null; + /** Returns the xy start position or `null` if no connection is in progress. */ + from: XYPosition; + /** Returns the start handle or `null` if no connection is in progress. */ + fromHandle: Handle; + /** Returns the side (called position) of the start handle or `null` if no connection is in progress. */ + fromPosition: Position; + /** Returns the start node or `null` if no connection is in progress. */ + fromNode: NodeType; + /** Returns the xy end position or `null` if no connection is in progress. */ + to: XYPosition; + /** Returns the end handle or `null` if no connection is in progress. */ + toHandle: Handle | null; + /** Returns the side (called position) of the end handle or `null` if no connection is in progress. */ + toPosition: Position; + /** Returns the end node or `null` if no connection is in progress. */ + toNode: NodeType | null; + /** Returns the pointer position or `null` if no connection is in progress. */ + pointer: XYPosition; +}; +/** + * The `ConnectionState` type bundles all information about an ongoing connection. + * It is returned by the [`useConnection`](/api-reference/hooks/use-connection) hook. + * + * @public + */ +export type ConnectionState = ConnectionInProgress | NoConnection; +export type FinalConnectionState = (Omit, 'inProgress' | 'toPosition'> & { + toPosition: Position | null; +}) | Omit; +export type UpdateConnection = (params: ConnectionState) => void; +export type ColorModeClass = 'light' | 'dark'; +export type ColorMode = ColorModeClass | 'system'; +export type ConnectionLookup = Map>; +export type OnBeforeDeleteBase = ({ nodes, edges, }: { + nodes: NodeType[]; + edges: EdgeType[]; +}) => Promise; +/** + * The `ZIndexMode` type is used to define how z-indexing is calculated for nodes and edges. + * `auto` mode will automatically manage z-indexing for selections and sub flows. + * `basic` mode will only manage z-indexing for selections. + * `manual` mode does not apply any automatic z-indexing. + * + * @public + */ +export type ZIndexMode = 'auto' | 'basic' | 'manual'; +//# sourceMappingURL=general.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/general.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/general.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..ac2b93753a26861e98b66b266c422b387277ae0f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/general.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../src/types/general.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/handles.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/handles.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..920a7da040b5ea74fe4d4b2f84d354c5f6d9bfa1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/handles.d.ts @@ -0,0 +1,58 @@ +import type { Position, IsValidConnection } from '.'; +/** + * @inline + */ +export type HandleType = 'source' | 'target'; +export type Handle = { + id?: string | null; + nodeId: string; + x: number; + y: number; + position: Position; + type: HandleType; + width: number; + height: number; +}; +export type HandleProps = { + /** + * Type of the handle. + * @default "source" + */ + type: HandleType; + /** + * The position of the handle relative to the node. In a horizontal flow source handles are + * typically `Position.Right` and in a vertical flow they are typically `Position.Top`. + * @default Position.Top + * @example Position.Top, Position.Right, Position.Bottom, Position.Left + */ + position: Position; + /** + * Should you be able to connect to/from this handle. + * @default true + */ + isConnectable?: boolean; + /** + * Dictates whether a connection can start from this handle. + * @default true + */ + isConnectableStart?: boolean; + /** + * Dictates whether a connection can end on this handle. + * @default true + */ + isConnectableEnd?: boolean; + /** + * Called when a connection is dragged to this handle. You can use this callback to perform some + * custom validation logic based on the connection target and source, for example. Where possible, + * we recommend you move this logic to the `isValidConnection` prop on the main ReactFlow + * component for performance reasons. + * @remarks connection becomes an edge if isValidConnection returns true + */ + isValidConnection?: IsValidConnection; + /** + * Id of the handle. + * @remarks optional if there is only one handle of this type + */ + id?: string | null; +}; +//# sourceMappingURL=handles.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/handles.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/handles.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..8e3d12cfda241a269df24bf56739f52c05f2e86a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/handles.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"handles.d.ts","sourceRoot":"","sources":["../../src/types/handles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,GAAG,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7C,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB;;;OAGG;IACH,IAAI,EAAE,UAAU,CAAC;IACjB;;;;;OAKG;IACH,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..1a0bc5bf5e8553031f6c728d1e90df377d7e1973 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/index.d.ts @@ -0,0 +1,8 @@ +export * from './changes'; +export * from './general'; +export * from './nodes'; +export * from './edges'; +export * from './handles'; +export * from './utils'; +export * from './panzoom'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..cb2e3787430fe37bf6df10665ac31ca6fa504ced --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,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+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/nodes.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/nodes.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..54d7c86c50bdc0c8a5eb6709a1ee5bc15fe73f63 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/nodes.d.ts @@ -0,0 +1,157 @@ +import type { XYPosition, Position, CoordinateExtent, Handle } from '.'; +import { Optional } from '../utils/types'; +/** + * Framework independent node data structure. + * + * @inline + * @typeParam NodeData - type of the node data + * @typeParam NodeType - type of the node + */ +export type NodeBase = Record, NodeType extends string | undefined = string | undefined> = { + /** Unique id of a node. */ + id: string; + /** + * Position of a node on the pane. + * @example { x: 0, y: 0 } + */ + position: XYPosition; + /** Arbitrary data passed to a node. */ + data: NodeData; + /** + * Only relevant for default, source, target nodeType. Controls source position. + * @example 'right', 'left', 'top', 'bottom' + */ + sourcePosition?: Position; + /** + * Only relevant for default, source, target nodeType. Controls target position. + * @example 'right', 'left', 'top', 'bottom' + */ + targetPosition?: Position; + /** Whether or not the node should be visible on the canvas. */ + hidden?: boolean; + selected?: boolean; + /** Whether or not the node is currently being dragged. */ + dragging?: boolean; + /** Whether or not the node is able to be dragged. */ + draggable?: boolean; + selectable?: boolean; + connectable?: boolean; + deletable?: boolean; + /** + * A class name that can be applied to elements inside the node that allows those elements to act + * as drag handles, letting the user drag the node by clicking and dragging on those elements. + */ + dragHandle?: string; + width?: number; + height?: number; + initialWidth?: number; + initialHeight?: number; + /** Parent node id, used for creating sub-flows. */ + parentId?: string; + zIndex?: number; + /** + * Boundary a node can be moved in. + * @example 'parent' or [[0, 0], [100, 100]] + */ + extent?: 'parent' | CoordinateExtent | null; + /** + * When `true`, the parent node will automatically expand if this node is dragged to the edge of + * the parent node's bounds. + */ + expandParent?: boolean; + ariaLabel?: string; + /** + * Origin of the node relative to its position. + * @example + * [0.5, 0.5] // centers the node + * [0, 0] // top left + * [1, 1] // bottom right + */ + origin?: NodeOrigin; + handles?: NodeHandle[]; + measured?: { + width?: number; + height?: number; + }; +} & (undefined extends NodeType ? { + /** Type of node defined in nodeTypes */ + type?: string | undefined; +} : { + /** Type of node defined in nodeTypes */ + type: NodeType; +}); +export type InternalNodeBase = Omit & { + measured: { + width?: number; + height?: number; + }; + internals: { + positionAbsolute: XYPosition; + z: number; + rootParentIndex?: number; + /** + * Holds a reference to the original node object provided by the user. + * Used as an optimization to avoid certain operations. + */ + userNode: NodeType; + handleBounds?: NodeHandleBounds; + bounds?: NodeBounds; + }; +}; +/** + * The node data structure that gets used for the custom nodes props. + * + * @public + */ +export type NodeProps = Pick & Required> & { + /** Whether a node is connectable or not. */ + isConnectable: boolean; + /** Position absolute x value. */ + positionAbsoluteX: number; + /** Position absolute y value. */ + positionAbsoluteY: number; +}; +export type NodeHandleBounds = { + source: Handle[] | null; + target: Handle[] | null; +}; +export type InternalNodeUpdate = { + id: string; + nodeElement: HTMLDivElement; + force?: boolean; +}; +export type NodeBounds = XYPosition & { + width: number | null; + height: number | null; +}; +export type NodeDragItem = { + id: string; + position: XYPosition; + distance: XYPosition; + measured: { + width: number; + height: number; + }; + internals: { + positionAbsolute: XYPosition; + }; +} & Pick; +/** + * The origin of a Node determines how it is placed relative to its own coordinates. + * `[0, 0]` places it at the top left corner, `[0.5, 0.5]` right in the center and + * `[1, 1]` at the bottom right of its position. + * + * @public + */ +export type NodeOrigin = [number, number]; +export type OnSelectionDrag = (event: MouseEvent, nodes: NodeType[]) => void; +/** + * Type for the handles of a node + * + * @public + */ +export type NodeHandle = Omit, 'nodeId'>; +export type Align = 'center' | 'start' | 'end'; +export type NodeLookup = Map; +export type ParentLookup = Map>; +//# sourceMappingURL=nodes.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/nodes.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/nodes.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..704fcdce3b5c7c0a0e4eb63e6e220bc0909f19b2 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/nodes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/types/nodes.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/panzoom.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/panzoom.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..9d7ed07b3ec077a2f62a8a9cf711bfc958042cae --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/panzoom.d.ts @@ -0,0 +1,55 @@ +import type { ZoomTransform } from 'd3-zoom'; +import { PanOnScrollMode, type CoordinateExtent, type Transform, type Viewport } from './'; +export type OnDraggingChange = (dragging: boolean) => void; +export type OnTransformChange = (transform: Transform) => void; +export type PanZoomParams = { + domNode: Element; + minZoom: number; + maxZoom: number; + viewport: Viewport; + translateExtent: CoordinateExtent; + onDraggingChange: OnDraggingChange; + onPanZoomStart?: OnPanZoom; + onPanZoom?: OnPanZoom; + onPanZoomEnd?: OnPanZoom; +}; +export type PanZoomTransformOptions = { + duration?: number; + ease?: (t: number) => number; + interpolate?: 'smooth' | 'linear'; +}; +export type OnPanZoom = (event: MouseEvent | TouchEvent | null, viewport: Viewport) => void; +export type PanZoomUpdateOptions = { + noWheelClassName: string; + noPanClassName: string; + onPaneContextMenu?: (event: MouseEvent) => void; + preventScrolling: boolean; + panOnScroll: boolean; + panOnDrag: boolean | number[]; + panOnScrollMode: PanOnScrollMode; + panOnScrollSpeed: number; + userSelectionActive: boolean; + zoomOnPinch: boolean; + zoomOnScroll: boolean; + zoomOnDoubleClick: boolean; + zoomActivationKeyPressed: boolean; + lib: string; + onTransformChange: OnTransformChange; + connectionInProgress: boolean; + paneClickDistance: number; + selectionOnDrag?: boolean; +}; +export type PanZoomInstance = { + update: (params: PanZoomUpdateOptions) => void; + destroy: () => void; + getViewport: () => Viewport; + setViewport: (viewport: Viewport, options?: PanZoomTransformOptions) => Promise; + setViewportConstrained: (viewport: Viewport, extent: CoordinateExtent, translateExtent: CoordinateExtent) => Promise; + setScaleExtent: (scaleExtent: [number, number]) => void; + setTranslateExtent: (translateExtent: CoordinateExtent) => void; + scaleTo: (scale: number, options?: PanZoomTransformOptions) => Promise; + scaleBy: (factor: number, options?: PanZoomTransformOptions) => Promise; + syncViewport: (viewport: Viewport) => void; + setClickDistance: (distance: number) => void; +}; +//# sourceMappingURL=panzoom.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/panzoom.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/panzoom.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..0c074dff4f3b55fa67249e0e56c92d5b626b617e --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/panzoom.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"panzoom.d.ts","sourceRoot":"","sources":["../../src/types/panzoom.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/utils.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b476a704155652237ef04f16b894b294ce2cded7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/utils.d.ts @@ -0,0 +1,61 @@ +/** + * While [`PanelPosition`](/api-reference/types/panel-position) can be used to place a + * component in the corners of a container, the `Position` enum is less precise and used + * primarily in relation to edges and handles. + * + * @public + */ +export declare enum Position { + Left = "left", + Top = "top", + Right = "right", + Bottom = "bottom" +} +export declare const oppositePosition: { + left: Position; + right: Position; + top: Position; + bottom: Position; +}; +/** + * All positions are stored in an object with x and y coordinates. + * + * @public + */ +export type XYPosition = { + x: number; + y: number; +}; +export type XYZPosition = XYPosition & { + z: number; +}; +export type Dimensions = { + width: number; + height: number; +}; +export type Rect = Dimensions & XYPosition; +export type Box = XYPosition & { + x2: number; + y2: number; +}; +export type Transform = [number, number, number]; +/** + * A coordinate extent represents two points in a coordinate system: one in the top + * left corner and one in the bottom right corner. It is used to represent the + * bounds of nodes in the flow or the bounds of the viewport. + * + * @public + * + * @remarks Props that expect a `CoordinateExtent` usually default to `[[-∞, -∞], [+∞, +∞]]` + * to represent an unbounded extent. + */ +export type CoordinateExtent = [[number, number], [number, number]]; +/** + * Using Pick with a union type (e.g. `NodeType`) will merge every property type along all union members. + * See https://github.com/microsoft/TypeScript/issues/28339#issuecomment-463577347 + * Note: Currently you are able to Pick properties that are not in the type without error. + */ +export type DistributivePick = T extends unknown ? { + [P in Extract]: T[P]; +} : never; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/utils.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/utils.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..8e6c1489865d3978c2801257eea280eb7204f586 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/types/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/types/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,oBAAY,QAAQ;IAClB,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAED,eAAO,MAAM,gBAAgB;;;;;CAK5B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG;IAAE,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG,UAAU,GAAG,UAAU,CAAC;AAE3C,MAAM,MAAM,GAAG,GAAG,UAAU,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEpE;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,OAAO,GAAG;KAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,KAAK,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/connections.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/connections.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..03dc064be3d1e181f4a9ba9d1e9e799a24ec3461 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/connections.d.ts @@ -0,0 +1,13 @@ +import { HandleConnection } from '../types'; +/** + * @internal + */ +export declare function areConnectionMapsEqual(a?: Map, b?: Map): boolean; +/** + * We call the callback for all connections in a that are not in b + * + * @internal + */ +export declare function handleConnectionChange(a: Map, b: Map, cb?: (diff: HandleConnection[]) => void): void; +export declare function getConnectionStatus(isValid: boolean | null): "valid" | "invalid" | null; +//# sourceMappingURL=connections.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/connections.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/connections.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..0688bcfa217998c288da2725581322bf12f475e3 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/connections.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"connections.d.ts","sourceRoot":"","sources":["../../src/utils/connections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,WAoB1G;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAChC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAChC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,IAAI,QAiBxC;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,8BAE1D"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/dom.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/dom.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..8677d651a51d62f63cfa24cbbf84cd4347b07485 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/dom.d.ts @@ -0,0 +1,21 @@ +import type { Transform, XYPosition, SnapGrid, Dimensions, Handle } from '../types'; +export type GetPointerPositionParams = { + transform: Transform; + snapGrid?: SnapGrid; + snapToGrid?: boolean; + containerBounds: DOMRect | null; +}; +export declare function getPointerPosition(event: MouseEvent | TouchEvent, { snapGrid, snapToGrid, transform, containerBounds }: GetPointerPositionParams): XYPosition & { + xSnapped: number; + ySnapped: number; +}; +export declare const getDimensions: (node: HTMLDivElement) => Dimensions; +export declare const getHostForElement: (element: HTMLElement | EventTarget | null) => Document | ShadowRoot; +export declare function isInputDOMNode(event: KeyboardEvent): boolean; +export declare const isMouseEvent: (event: MouseEvent | TouchEvent) => event is MouseEvent; +export declare const getEventPosition: (event: MouseEvent | TouchEvent, bounds?: DOMRect) => { + x: number; + y: number; +}; +export declare const getHandleBounds: (type: "source" | "target", nodeElement: HTMLDivElement, nodeBounds: DOMRect, zoom: number, nodeId: string) => Handle[] | null; +//# sourceMappingURL=dom.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/dom.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/dom.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..f5b657e7011dec4bfe4bc8c3466591ea66b0e595 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/dom.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../src/utils/dom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAY,MAAM,EAAE,MAAM,UAAU,CAAC;AAG9F,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,GAAG,UAAU,EAC9B,EAAE,QAAiB,EAAE,UAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,wBAAwB,GAC9F,UAAU,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAcrD;AAED,eAAO,MAAM,aAAa,GAAI,MAAM,cAAc,KAAG,UAGnD,CAAC;AAEH,eAAO,MAAM,iBAAiB,GAAI,SAAS,WAAW,GAAG,WAAW,GAAG,IAAI,KAAG,QAAQ,GAAG,UACiB,CAAC;AAI3G,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAQ5D;AAED,eAAO,MAAM,YAAY,GAAI,OAAO,UAAU,GAAG,UAAU,KAAG,KAAK,IAAI,UAAgC,CAAC;AAExG,eAAO,MAAM,gBAAgB,GAAI,OAAO,UAAU,GAAG,UAAU,EAAE,SAAS,OAAO;;;CAShF,CAAC;AAOF,eAAO,MAAM,eAAe,GAC1B,MAAM,QAAQ,GAAG,QAAQ,EACzB,aAAa,cAAc,EAC3B,YAAY,OAAO,EACnB,MAAM,MAAM,EACZ,QAAQ,MAAM,KACb,MAAM,EAAE,GAAG,IAoBb,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edge-toolbar.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edge-toolbar.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4177b20ccdd2ff56a50382de7945b09615ecfa17 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edge-toolbar.d.ts @@ -0,0 +1,2 @@ +export declare function getEdgeToolbarTransform(x: number, y: number, zoom: number, alignX?: 'left' | 'center' | 'right', alignY?: 'top' | 'center' | 'bottom'): string; +//# sourceMappingURL=edge-toolbar.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edge-toolbar.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edge-toolbar.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..103bce3aed30e19f8b6e54cef7d220dd07428a09 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edge-toolbar.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"edge-toolbar.d.ts","sourceRoot":"","sources":["../../src/utils/edge-toolbar.ts"],"names":[],"mappings":"AAYA,wBAAgB,uBAAuB,CACrC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAM,GAAG,QAAQ,GAAG,OAAkB,EAC9C,MAAM,GAAE,KAAK,GAAG,QAAQ,GAAG,QAAmB,GAC7C,MAAM,CAIR"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/bezier-edge.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/bezier-edge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2df99ce8ad58a78bf66d380087f1c64f0c840074 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/bezier-edge.d.ts @@ -0,0 +1,77 @@ +import { Position } from '../../types'; +export type GetBezierPathParams = { + /** The `x` position of the source handle. */ + sourceX: number; + /** The `y` position of the source handle. */ + sourceY: number; + /** + * The position of the source handle. + * @default Position.Bottom + */ + sourcePosition?: Position; + /** The `x` position of the target handle. */ + targetX: number; + /** The `y` position of the target handle. */ + targetY: number; + /** + * The position of the target handle. + * @default Position.Top + */ + targetPosition?: Position; + /** + * The curvature of the bezier edge. + * @default 0.25 + */ + curvature?: number; +}; +export type GetControlWithCurvatureParams = { + pos: Position; + x1: number; + y1: number; + x2: number; + y2: number; + c: number; +}; +export declare function getBezierEdgeCenter({ sourceX, sourceY, targetX, targetY, sourceControlX, sourceControlY, targetControlX, targetControlY, }: { + sourceX: number; + sourceY: number; + targetX: number; + targetY: number; + sourceControlX: number; + sourceControlY: number; + targetControlX: number; + targetControlY: number; +}): [number, number, number, number]; +/** + * The `getBezierPath` util returns everything you need to render a bezier edge + *between two nodes. + * @public + * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path) + * and `offsetX`, `offsetY` between source handle and label. + * - `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. + * @example + * ```js + * const source = { x: 0, y: 20 }; + * const target = { x: 150, y: 100 }; + * + * const [path, labelX, labelY, offsetX, offsetY] = getBezierPath({ + * sourceX: source.x, + * sourceY: source.y, + * sourcePosition: Position.Right, + * targetX: target.x, + * targetY: target.y, + * targetPosition: Position.Left, + *}); + *``` + * + * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to + *work with multiple edge paths at once. + */ +export declare function getBezierPath({ sourceX, sourceY, sourcePosition, targetX, targetY, targetPosition, curvature, }: GetBezierPathParams): [path: string, labelX: number, labelY: number, offsetX: number, offsetY: number]; +//# sourceMappingURL=bezier-edge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/bezier-edge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/bezier-edge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..6ecc89b8db24cb949d893f78ce32205a18c20d99 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/bezier-edge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"bezier-edge.d.ts","sourceRoot":"","sources":["../../../src/utils/edges/bezier-edge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,MAAM,mBAAmB,GAAG;IAChC,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,GAAG,EAAE,QAAQ,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,GACf,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAWnC;AAuBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,OAAO,EACP,cAAgC,EAChC,OAAO,EACP,OAAO,EACP,cAA6B,EAC7B,SAAgB,GACjB,EAAE,mBAAmB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAmCxG"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/general.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/general.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..11d58963a9bd9b62877b5561d4dc92b03e12f7e4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/general.d.ts @@ -0,0 +1,100 @@ +import { Connection, InternalNodeBase, Transform, EdgeBase, ZIndexMode } from '../..'; +import type { OnError } from '../../types/general'; +export declare function getEdgeCenter({ sourceX, sourceY, targetX, targetY, }: { + sourceX: number; + sourceY: number; + targetX: number; + targetY: number; +}): [number, number, number, number]; +export type GetEdgeZIndexParams = { + sourceNode: InternalNodeBase; + targetNode: InternalNodeBase; + selected?: boolean; + zIndex?: number; + elevateOnSelect?: boolean; + zIndexMode?: ZIndexMode; +}; +/** + * Returns the z-index for an edge based on the node it connects and whether it is selected. + * By default, edges are rendered below nodes. This behaviour is different for edges that are + * connected to nodes with a parent, as they are rendered above the parent node. + */ +export declare function getElevatedEdgeZIndex({ sourceNode, targetNode, selected, zIndex, elevateOnSelect, zIndexMode, }: GetEdgeZIndexParams): number; +type IsEdgeVisibleParams = { + sourceNode: InternalNodeBase; + targetNode: InternalNodeBase; + width: number; + height: number; + transform: Transform; +}; +export declare function isEdgeVisible({ sourceNode, targetNode, width, height, transform }: IsEdgeVisibleParams): boolean; +/** + * Type for a custom edge ID generator function. + * @public + */ +export type GetEdgeId = (params: Connection | EdgeBase) => string; +/** + * The default edge ID generator function. Generates an ID based on the source, target, and handles. + * @public + * @param params - The connection or edge to generate an ID for. + * @returns The generated edge ID. + */ +export declare const getEdgeId: ({ source, sourceHandle, target, targetHandle }: Connection | EdgeBase) => string; +export type AddEdgeOptions = { + /** + * Custom function to generate edge IDs. If not provided, the default `getEdgeId` function is used. + */ + getEdgeId?: GetEdgeId; + /** + * Called when edge validation fails. If not provided, a default dev warning is used. + */ + onError?: OnError; +}; +/** + * This util is a convenience function to add a new Edge to an array of edges. It also performs some validation to make sure you don't add an invalid edge or duplicate an existing one. + * @public + * @param edgeParams - Either an `Edge` or a `Connection` you want to add. + * @param edges - The array of all current edges. + * @param options - Optional configuration object. + * @returns A new array of edges with the new edge added. + * + * @remarks If an edge with the same `target` and `source` already exists (and the same + *`targetHandle` and `sourceHandle` if those are set), then this util won't add + *a new edge even if the `id` property is different. + * + */ +export declare const addEdge: (edgeParams: EdgeType | Connection, edges: EdgeType[], options?: AddEdgeOptions) => EdgeType[]; +export type ReconnectEdgeOptions = { + /** + * Should the id of the old edge be replaced with the new connection id. + * @default true + */ + shouldReplaceId?: boolean; + /** + * Custom function to generate edge IDs. If not provided, the default `getEdgeId` function is used. + */ + getEdgeId?: GetEdgeId; + /** + * Called when edge validation fails. If not provided, a default dev warning is used. + */ + onError?: OnError; +}; +/** + * A handy utility to update an existing [`Edge`](/api-reference/types/edge) with new properties. + *This searches your edge array for an edge with a matching `id` and updates its + *properties with the connection you provide. + * @public + * @param oldEdge - The edge you want to update. + * @param newConnection - The new connection you want to update the edge with. + * @param edges - The array of all current edges. + * @returns The updated edges array. + * + * @example + * ```js + *const onReconnect = useCallback( + * (oldEdge: Edge, newConnection: Connection) => setEdges((els) => reconnectEdge(oldEdge, newConnection, els)),[]); + *``` + */ +export declare const reconnectEdge: (oldEdge: EdgeType, newConnection: Connection, edges: EdgeType[], options?: ReconnectEdgeOptions) => EdgeType[]; +export {}; +//# sourceMappingURL=general.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/general.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/general.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..c241052ffcd93759148901074a70babd0baff34a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/general.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../../src/utils/edges/general.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAA6B,QAAQ,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACjH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAInD,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,GACR,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAQnC;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,UAAU,EACV,UAAU,EACV,QAAgB,EAChB,MAAU,EACV,eAAuB,EACvB,UAAoB,GACrB,EAAE,mBAAmB,GAAG,MAAM,CAY9B;AAED,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,mBAAmB,GAAG,OAAO,CAmBhH;AAED;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,KAAK,MAAM,CAAC;AAElE;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,gDAAgD,UAAU,GAAG,QAAQ,KAAG,MACxB,CAAC;AAY3E,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,OAAO,GAAI,QAAQ,SAAS,QAAQ,EAC/C,YAAY,QAAQ,GAAG,UAAU,EACjC,OAAO,QAAQ,EAAE,EACjB,UAAS,cAAmB,KAC3B,QAAQ,EAgCV,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,SAAS,QAAQ,EACrD,SAAS,QAAQ,EACjB,eAAe,UAAU,EACzB,OAAO,QAAQ,EAAE,EACjB,UAAS,oBAAgD,KACxD,QAAQ,EA8BV,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..668a084212dd086e3eaabdc652181fefbd1e4cda --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/index.d.ts @@ -0,0 +1,6 @@ +export * from './bezier-edge'; +export * from './straight-edge'; +export * from './smoothstep-edge'; +export * from './general'; +export * from './positions'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..0efd8299cb6d78821cb0c33c87bbf4ab4da6cd3c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/edges/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/positions.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/positions.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..e0687d3137ab63a073b53ec2f907057c766fc33d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/positions.d.ts @@ -0,0 +1,17 @@ +import { EdgePosition } from '../../types/edges'; +import { ConnectionMode, OnError } from '../../types/general'; +import { InternalNodeBase } from '../../types/nodes'; +import { Position, XYPosition } from '../../types/utils'; +import { Handle } from '../../types'; +export type GetEdgePositionParams = { + id: string; + sourceNode: InternalNodeBase; + sourceHandle: string | null; + targetNode: InternalNodeBase; + targetHandle: string | null; + connectionMode: ConnectionMode; + onError?: OnError; +}; +export declare function getEdgePosition(params: GetEdgePositionParams): EdgePosition | null; +export declare function getHandlePosition(node: InternalNodeBase, handle: Handle | null, fallbackPosition?: Position, center?: boolean): XYPosition; +//# sourceMappingURL=positions.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/positions.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/positions.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..ac5deb6aebf827684de916fff46ae838a44a28f6 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/positions.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"positions.d.ts","sourceRoot":"","sources":["../../../src/utils/edges/positions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAc,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,gBAAgB,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,cAAc,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAUF,wBAAgB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,YAAY,GAAG,IAAI,CA6ClF;AA2BD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,gBAAgB,GAAE,QAAwB,EAC1C,MAAM,UAAQ,GACb,UAAU,CAqBZ"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/smoothstep-edge.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/smoothstep-edge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..7e9f7ddd70836ee43107f8ae772e5b1db022077c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/smoothstep-edge.d.ts @@ -0,0 +1,66 @@ +import { Position } from '../../types'; +export interface GetSmoothStepPathParams { + /** The `x` position of the source handle. */ + sourceX: number; + /** The `y` position of the source handle. */ + sourceY: number; + /** + * The position of the source handle. + * @default Position.Bottom + */ + sourcePosition?: Position; + /** The `x` position of the target handle. */ + targetX: number; + /** The `y` position of the target handle. */ + targetY: number; + /** + * The position of the target handle. + * @default Position.Top + */ + targetPosition?: Position; + /** @default 5 */ + borderRadius?: number; + centerX?: number; + centerY?: number; + /** @default 20 */ + offset?: number; + /** + * Controls where the bend occurs along the path. + * 0 = at source, 1 = at target, 0.5 = midpoint + * @default 0.5 + */ + stepPosition?: number; +} +/** + * The `getSmoothStepPath` util returns everything you need to render a stepped path + * between two nodes. The `borderRadius` property can be used to choose how rounded + * the corners of those steps are. + * @public + * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path) + * and `offsetX`, `offsetY` between source handle and label. + * + * - `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. + * @example + * ```js + * const source = { x: 0, y: 20 }; + * const target = { x: 150, y: 100 }; + * + * const [path, labelX, labelY, offsetX, offsetY] = getSmoothStepPath({ + * sourceX: source.x, + * sourceY: source.y, + * sourcePosition: Position.Right, + * targetX: target.x, + * targetY: target.y, + * targetPosition: Position.Left, + * }); + * ``` + * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to work with multiple edge paths at once. + */ +export declare function getSmoothStepPath({ sourceX, sourceY, sourcePosition, targetX, targetY, targetPosition, borderRadius, centerX, centerY, offset, stepPosition, }: GetSmoothStepPathParams): [path: string, labelX: number, labelY: number, offsetX: number, offsetY: number]; +//# sourceMappingURL=smoothstep-edge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/smoothstep-edge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/smoothstep-edge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..3f20acbdc8905a34c1d391f4639d0a2f9eac022a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/smoothstep-edge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"smoothstep-edge.d.ts","sourceRoot":"","sources":["../../../src/utils/edges/smoothstep-edge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAmB,MAAM,aAAa,CAAC;AAExD,MAAM,WAAW,uBAAuB;IACtC,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,iBAAiB;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAwMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,OAAO,EACP,cAAgC,EAChC,OAAO,EACP,OAAO,EACP,cAA6B,EAC7B,YAAgB,EAChB,OAAO,EACP,OAAO,EACP,MAAW,EACX,YAAkB,GACnB,EAAE,uBAAuB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAoB5G"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/straight-edge.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/straight-edge.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..bbb609bb30679e63f9c1a756c7c553caf8245698 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/straight-edge.d.ts @@ -0,0 +1,41 @@ +export type GetStraightPathParams = { + /** The `x` position of the source handle. */ + sourceX: number; + /** The `y` position of the source handle. */ + sourceY: number; + /** The `x` position of the target handle. */ + targetX: number; + /** The `y` position of the target handle. */ + targetY: number; +}; +/** + * Calculates the straight line path between two points. + * @public + * @returns A path string you can use in an SVG, the `labelX` and `labelY` position (center of path) + * and `offsetX`, `offsetY` between source handle and label. + * + * - `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. + * @example + * ```js + * const source = { x: 0, y: 20 }; + * const target = { x: 150, y: 100 }; + * + * const [path, labelX, labelY, offsetX, offsetY] = getStraightPath({ + * sourceX: source.x, + * sourceY: source.y, + * sourcePosition: Position.Right, + * targetX: target.x, + * targetY: target.y, + * targetPosition: Position.Left, + * }); + * ``` + * @remarks This function returns a tuple (aka a fixed-size array) to make it easier to work with multiple edge paths at once. + */ +export declare function getStraightPath({ sourceX, sourceY, targetX, targetY, }: GetStraightPathParams): [path: string, labelX: number, labelY: number, offsetX: number, offsetY: number]; +//# sourceMappingURL=straight-edge.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/straight-edge.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/straight-edge.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..b25ad6627b20dd3e9d5ee0694d63738de7e821fc --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/edges/straight-edge.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"straight-edge.d.ts","sourceRoot":"","sources":["../../../src/utils/edges/straight-edge.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,qBAAqB,GAAG;IAClC,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,GACR,EAAE,qBAAqB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAS1G"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/general.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/general.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..75675713278f5e66cbd59c84ddf8f4ee5e470747 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/general.d.ts @@ -0,0 +1,86 @@ +import type { Dimensions, XYPosition, CoordinateExtent, Box, Rect, NodeBase, NodeOrigin, SnapGrid, Transform, InternalNodeBase, NodeLookup, Padding } from '../types'; +import { type Viewport } from '../types'; +import { type AriaLabelConfig } from '../constants'; +export declare const clamp: (val: number, min?: number, max?: number) => number; +export declare const clampPosition: (position: XYPosition | undefined, extent: CoordinateExtent, dimensions: Partial) => { + x: number; + y: number; +}; +export declare function clampPositionToParent(childPosition: XYPosition, childDimensions: Dimensions, parent: InternalNodeBase): { + x: number; + y: number; +}; +export declare const calcAutoPan: (pos: XYPosition, bounds: Dimensions, speed?: number, distance?: number) => number[]; +export declare const getBoundsOfBoxes: (box1: Box, box2: Box) => Box; +export declare const rectToBox: ({ x, y, width, height }: Rect) => Box; +export declare const boxToRect: ({ x, y, x2, y2 }: Box) => Rect; +export declare const nodeToRect: (node: InternalNodeBase | NodeBase, nodeOrigin?: NodeOrigin) => Rect; +export declare const nodeToBox: (node: InternalNodeBase | NodeBase, nodeOrigin?: NodeOrigin) => Box; +export declare const getBoundsOfRects: (rect1: Rect, rect2: Rect) => Rect; +export declare const getRectsOverlappingArea: (aX: number, aY: number, aWidth: number, aHeight: number, bX: number, bY: number, bWidth: number, bHeight: number) => number; +export declare const getOverlappingArea: (rectA: Rect, rectB: Rect) => number; +export declare const isRectObject: (obj: any) => obj is Rect; +export declare const isNumeric: (n: any) => n is number; +export declare const createDevWarn: (lib: string, helpUrl: string) => (id: string, message: string) => void; +export declare const snapPosition: (position: XYPosition, snapGrid?: SnapGrid) => XYPosition; +export declare const pointToRendererPoint: ({ x, y }: XYPosition, [tx, ty, tScale]: Transform, snapToGrid?: boolean, snapGrid?: SnapGrid) => XYPosition; +export declare const rendererPointToPoint: ({ x, y }: XYPosition, [tx, ty, tScale]: Transform) => XYPosition; +/** + * Returns a viewport that encloses the given bounds with padding. + * @public + * @remarks You can determine bounds of nodes with {@link getNodesBounds} and {@link getBoundsOfRects} + * @param bounds - Bounds to fit inside viewport. + * @param width - Width of the viewport. + * @param height - Height of the viewport. + * @param minZoom - Minimum zoom level of the resulting viewport. + * @param maxZoom - Maximum zoom level of the resulting viewport. + * @param padding - Padding around the bounds. + * @returns A transformed {@link Viewport} that encloses the given bounds which you can pass to e.g. {@link setViewport}. + * @example + * const { x, y, zoom } = getViewportForBounds( + * { x: 0, y: 0, width: 100, height: 100}, + * 1200, 800, 0.5, 2); + */ +export declare const getViewportForBounds: (bounds: Rect, width: number, height: number, minZoom: number, maxZoom: number, padding: Padding) => Viewport; +export declare const isMacOs: () => boolean; +export declare function isCoordinateExtent(extent?: CoordinateExtent | 'parent' | null): extent is CoordinateExtent; +export declare function getNodeDimensions(node: { + measured?: { + width?: number; + height?: number; + }; + width?: number; + height?: number; + initialWidth?: number; + initialHeight?: number; +}): { + width: number; + height: number; +}; +export declare function nodeHasDimensions(node: NodeType): boolean; +/** + * Convert child position to absolute position + * + * @internal + * @param position + * @param parentId + * @param nodeLookup + * @param nodeOrigin + * @returns an internal node with an absolute position + */ +export declare function evaluateAbsolutePosition(position: XYPosition, dimensions: { + width?: number; + height?: number; +} | undefined, parentId: string, nodeLookup: NodeLookup, nodeOrigin: NodeOrigin): XYPosition; +export declare function areSetsEqual(a: Set, b: Set): boolean; +/** + * Polyfill for Promise.withResolvers until we can use it in all browsers + * @internal + */ +export declare function withResolvers(): { + promise: Promise; + resolve: (value: T | PromiseLike) => void; + reject: (reason?: unknown) => void; +}; +export declare function mergeAriaLabelConfig(partial?: Partial): AriaLabelConfig; +//# sourceMappingURL=general.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/general.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/general.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..54a083a1017d4194a9616a583e7e0477889974f1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/general.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../src/utils/general.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/graph.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/graph.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4970bc7ce16fbff9d608bdbcbdc66da0d0c6c0f4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/graph.d.ts @@ -0,0 +1,191 @@ +import { type Transform, type XYPosition, type Rect, type NodeOrigin, type NodeBase, type EdgeBase, type FitViewParamsBase, type FitViewOptionsBase, CoordinateExtent, OnError, OnBeforeDeleteBase, NodeLookup, InternalNodeBase, NodeDragItem } from '../types'; +/** + * Test whether an object is usable as an Edge + * @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 A boolean indicating whether the element is an Edge + */ +export declare const isEdgeBase: (element: unknown) => element is EdgeType; +/** + * Test whether an object is usable as a Node + * @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 A boolean indicating whether the element is an Node + */ +export declare const isNodeBase: (element: unknown) => element is NodeType; +export declare const isInternalNodeBase: (element: unknown) => element is NodeType; +/** + * This util is used to tell you what nodes, if any, are connected to the given node + * as the _target_ of an edge. + * @public + * @param node - The node to get the connected nodes from. + * @param nodes - The array of all nodes. + * @param edges - The array of all edges. + * @returns An array of nodes that are connected over edges where the source is the given node. + * + * @example + * ```ts + *import { getOutgoers } from '@xyflow/react'; + * + *const nodes = []; + *const edges = []; + * + *const outgoers = getOutgoers( + * { id: '1', position: { x: 0, y: 0 }, data: { label: 'node' } }, + * nodes, + * edges, + *); + *``` + */ +export declare const getOutgoers: (node: NodeType | { + id: string; +}, nodes: NodeType[], edges: EdgeType[]) => NodeType[]; +/** + * This util is used to tell you what nodes, if any, are connected to the given node + * as the _source_ of an edge. + * @public + * @param node - The node to get the connected nodes from. + * @param nodes - The array of all nodes. + * @param edges - The array of all edges. + * @returns An array of nodes that are connected over edges where the target is the given node. + * + * @example + * ```ts + *import { getIncomers } from '@xyflow/react'; + * + *const nodes = []; + *const edges = []; + * + *const incomers = getIncomers( + * { id: '1', position: { x: 0, y: 0 }, data: { label: 'node' } }, + * nodes, + * edges, + *); + *``` + */ +export declare const getIncomers: (node: NodeType | { + id: string; +}, nodes: NodeType[], edges: EdgeType[]) => NodeType[]; +export declare const getNodePositionWithOrigin: (node: NodeBase, nodeOrigin?: NodeOrigin) => XYPosition; +export type GetNodesBoundsParams = { + /** + * Origin of the nodes: `[0, 0]` for top-left, `[0.5, 0.5]` for center. + * @default [0, 0] + */ + nodeOrigin?: NodeOrigin; + nodeLookup?: NodeLookup>; +}; +/** + * Returns the bounding box that contains all the given nodes in an array. This can + * be useful when combined with [`getViewportForBounds`](/api-reference/utils/get-viewport-for-bounds) + * to calculate the correct transform to fit the given nodes in a viewport. + * @public + * @remarks Useful when combined with {@link getViewportForBounds} to calculate the correct transform to fit the given nodes in a viewport. + * @param nodes - Nodes to calculate the bounds for. + * @returns Bounding box enclosing all nodes. + * + * @remarks This function was previously called `getRectOfNodes` + * + * @example + * ```js + *import { getNodesBounds } from '@xyflow/react'; + * + *const nodes = [ + * { + * id: 'a', + * position: { x: 0, y: 0 }, + * data: { label: 'a' }, + * width: 50, + * height: 25, + * }, + * { + * id: 'b', + * position: { x: 100, y: 100 }, + * data: { label: 'b' }, + * width: 50, + * height: 25, + * }, + *]; + * + *const bounds = getNodesBounds(nodes); + *``` + */ +export declare const getNodesBounds: (nodes: (NodeType | InternalNodeBase | string)[], params?: GetNodesBoundsParams) => Rect; +export type GetInternalNodesBoundsParams = { + useRelativePosition?: boolean; + filter?: (node: NodeType) => boolean; +}; +/** + * Determines a bounding box that contains all given nodes in an array + * @internal + */ +export declare const getInternalNodesBounds: (nodeLookup: Map, params?: GetInternalNodesBoundsParams) => Rect; +export declare const getNodesInside: (nodes: Map>, rect: Rect, [tx, ty, tScale]?: Transform, partially?: boolean, excludeNonSelectableNodes?: boolean) => InternalNodeBase[]; +/** + * This utility filters an array of edges, keeping only those where either the source or target + * node is present in the given array of nodes. + * @public + * @param nodes - Nodes you want to get the connected edges for. + * @param edges - All edges. + * @returns Array of edges that connect any of the given nodes with each other. + * + * @example + * ```js + *import { getConnectedEdges } from '@xyflow/react'; + * + *const nodes = [ + * { id: 'a', position: { x: 0, y: 0 } }, + * { id: 'b', position: { x: 100, y: 0 } }, + *]; + * + *const edges = [ + * { id: 'a->c', source: 'a', target: 'c' }, + * { id: 'c->d', source: 'c', target: 'd' }, + *]; + * + *const connectedEdges = getConnectedEdges(nodes, edges); + * // => [{ id: 'a->c', source: 'a', target: 'c' }] + *``` + */ +export declare const getConnectedEdges: (nodes: NodeType[], edges: EdgeType[]) => EdgeType[]; +export declare function fitViewport, Options extends FitViewOptionsBase>({ nodes, width, height, panZoom, minZoom, maxZoom }: Params, options?: Omit): Promise; +/** + * This function calculates the next position of a node, taking into account the node's extent, parent node, and origin. + * + * @internal + * @returns position, positionAbsolute + */ +export declare function calculateNodePosition({ nodeId, nextPosition, nodeLookup, nodeOrigin, nodeExtent, onError, }: { + nodeId: string; + nextPosition: XYPosition; + nodeLookup: NodeLookup>; + nodeOrigin?: NodeOrigin; + nodeExtent?: CoordinateExtent; + onError?: OnError; +}): { + position: XYPosition; + positionAbsolute: XYPosition; +}; +/** + * Pass in nodes & edges to delete, get arrays of nodes and edges that actually can be deleted + * @internal + * @param param.nodesToRemove - The nodes to remove + * @param param.edgesToRemove - The edges to remove + * @param param.nodes - All nodes + * @param param.edges - All edges + * @param param.onBeforeDelete - Callback to check which nodes and edges can be deleted + * @returns nodes: nodes that can be deleted, edges: edges that can be deleted + */ +export declare function getElementsToRemove({ nodesToRemove, edgesToRemove, nodes, edges, onBeforeDelete, }: { + nodesToRemove: Partial[]; + edgesToRemove: Partial[]; + nodes: NodeType[]; + edges: EdgeType[]; + onBeforeDelete?: OnBeforeDeleteBase; +}): Promise<{ + nodes: NodeType[]; + edges: EdgeType[]; +}>; +//# sourceMappingURL=graph.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/graph.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/graph.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..d7ebd47e40d869ae84e19127d51a90777bbb8e07 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/graph.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/utils/graph.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..2f7dd1ddc9ead152454c13a8e078785cb899ac94 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/index.d.ts @@ -0,0 +1,12 @@ +export * from './connections'; +export * from './dom'; +export * from './edges'; +export * from './graph'; +export * from './general'; +export * from './marker'; +export * from './node-toolbar'; +export * from './edge-toolbar'; +export * from './store'; +export * from './types'; +export * from './shallow-node-data'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..999b5c12ff85494e946f82877c237ccbd00bb2f5 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/marker.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/marker.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f343552b489111f149f3ddd7700007d3b52c87c2 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/marker.d.ts @@ -0,0 +1,9 @@ +import type { EdgeBase, EdgeMarkerType, MarkerProps } from '../types'; +export declare function getMarkerId(marker: EdgeMarkerType | undefined, id?: string | null): string; +export declare function createMarkerIds(edges: EdgeBase[], { id, defaultColor, defaultMarkerStart, defaultMarkerEnd, }: { + id?: string | null; + defaultColor?: string | null; + defaultMarkerStart?: EdgeMarkerType; + defaultMarkerEnd?: EdgeMarkerType; +}): MarkerProps[]; +//# sourceMappingURL=marker.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/marker.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/marker.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..edea605e3cc6bdd9bd588f5ff43ce866c3231265 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/marker.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"marker.d.ts","sourceRoot":"","sources":["../../src/utils/marker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAc,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAElF,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAe1F;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,QAAQ,EAAE,EACjB,EACE,EAAE,EACF,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,GACjB,EAAE;IACD,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kBAAkB,CAAC,EAAE,cAAc,CAAC;IACpC,gBAAgB,CAAC,EAAE,cAAc,CAAC;CACnC,iBAmBF"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/node-toolbar.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/node-toolbar.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d687f1005d2a2b670a9ce114eb18aeadaf4adb05 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/node-toolbar.d.ts @@ -0,0 +1,3 @@ +import { Position, type Rect, type Viewport, type Align } from '../'; +export declare function getNodeToolbarTransform(nodeRect: Rect, viewport: Viewport, position: Position, offset: number, align: Align): string; +//# sourceMappingURL=node-toolbar.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/node-toolbar.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/node-toolbar.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..35bada631ced6caed1814e7c9fa799178f07083f --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/node-toolbar.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"node-toolbar.d.ts","sourceRoot":"","sources":["../../src/utils/node-toolbar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,KAAK,CAAC;AAErE,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,IAAI,EACd,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,GACX,MAAM,CA0CR"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/shallow-node-data.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/shallow-node-data.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..f3fcf5bcb48d806ec76c1f4b40b9b5bd4398170c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/shallow-node-data.d.ts @@ -0,0 +1,5 @@ +import { NodeBase } from '../types'; +type NodeData = Pick; +export declare function shallowNodeData(a: NodeData | NodeData[] | null, b: NodeData | NodeData[] | null): boolean; +export {}; +//# sourceMappingURL=shallow-node-data.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/shallow-node-data.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/shallow-node-data.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..3555e643b11ea953598ae5950d023fb574e0ccc5 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/shallow-node-data.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"shallow-node-data.d.ts","sourceRoot":"","sources":["../../src/utils/shallow-node-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,KAAK,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;AAEvD,wBAAgB,eAAe,CAAC,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,IAAI,WAmB/F"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/store.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/store.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..148f7f9a707f0f5ee5dde853532de8b52d10a775 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/store.d.ts @@ -0,0 +1,34 @@ +import { ZIndexMode } from '..'; +import { NodeBase, CoordinateExtent, InternalNodeUpdate, NodeOrigin, PanZoomInstance, Transform, XYPosition, ConnectionLookup, EdgeBase, EdgeLookup, InternalNodeBase, NodeLookup, NodeDimensionChange, NodePositionChange, ParentLookup } from '../types'; +import { ParentExpandChild } from './types'; +export declare function updateAbsolutePositions(nodeLookup: NodeLookup>, parentLookup: ParentLookup>, options?: UpdateNodesOptions): void; +type UpdateNodesOptions = { + nodeOrigin?: NodeOrigin; + nodeExtent?: CoordinateExtent; + elevateNodesOnSelect?: boolean; + defaults?: Partial; + zIndexMode?: ZIndexMode; + checkEquality?: boolean; +}; +export declare function isManualZIndexMode(zIndexMode?: ZIndexMode): boolean; +type AdoptUserNodesReturn = { + nodesInitialized: boolean; + hasSelectedNodes: boolean; +}; +export declare function adoptUserNodes(nodes: NodeType[], nodeLookup: NodeLookup>, parentLookup: ParentLookup>, options?: UpdateNodesOptions): AdoptUserNodesReturn; +export declare function handleExpandParent(children: ParentExpandChild[], nodeLookup: NodeLookup, parentLookup: ParentLookup, nodeOrigin?: NodeOrigin): (NodeDimensionChange | NodePositionChange)[]; +export declare function updateNodeInternals(updates: Map, nodeLookup: NodeLookup, parentLookup: ParentLookup, domNode: HTMLElement | null, nodeOrigin?: NodeOrigin, nodeExtent?: CoordinateExtent, zIndexMode?: ZIndexMode): { + changes: (NodeDimensionChange | NodePositionChange)[]; + updatedInternals: boolean; +}; +export declare function panBy({ delta, panZoom, transform, translateExtent, width, height, }: { + delta: XYPosition; + panZoom: PanZoomInstance | null; + transform: Transform; + translateExtent: CoordinateExtent; + width: number; + height: number; +}): Promise; +export declare function updateConnectionLookup(connectionLookup: ConnectionLookup, edgeLookup: EdgeLookup, edges: EdgeBase[]): void; +export {}; +//# sourceMappingURL=store.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/store.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/store.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..be34e7eb0a534af6b79e062018f0700c14cbfdec --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/store.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/utils/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8D,UAAU,EAAE,MAAM,IAAI,CAAC;AAC5F,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,UAAU,EAEV,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACb,MAAM,UAAU,CAAC;AAYlB,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AA8B5C,wBAAgB,uBAAuB,CAAC,QAAQ,SAAS,QAAQ,EAC/D,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAClD,YAAY,EAAE,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EACtD,OAAO,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,QAavC;AAkCD,KAAK,kBAAkB,CAAC,QAAQ,SAAS,QAAQ,IAAI;IACnD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAEnE;AAED,KAAK,oBAAoB,GAAG;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,wBAAgB,cAAc,CAAC,QAAQ,SAAS,QAAQ,EACtD,KAAK,EAAE,QAAQ,EAAE,EACjB,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAClD,YAAY,EAAE,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EACtD,OAAO,GAAE,kBAAkB,CAAC,QAAQ,CAAM,GACzC,oBAAoB,CA0DtB;AAyHD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,UAAU,GAAE,UAAmB,GAC9B,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,EAAE,CAiF9C;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,SAAS,gBAAgB,EACnE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EACxC,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,EAChC,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,EACpC,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,UAAU,CAAC,EAAE,UAAU,EACvB,UAAU,CAAC,EAAE,gBAAgB,EAC7B,UAAU,CAAC,EAAE,UAAU,GACtB;IAAE,OAAO,EAAE,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,EAAE,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAA;CAAE,CAmGtF;AAED,wBAAsB,KAAK,CAAC,EAC1B,KAAK,EACL,OAAO,EACP,SAAS,EACT,eAAe,EACf,KAAK,EACL,MAAM,GACP,EAAE;IACD,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,gBAAgB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBnB;AAwCD,wBAAgB,sBAAsB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,QAgBnH"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/types.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/types.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b9dd11163103d76e68ebc5c713a44840622979ad --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/types.d.ts @@ -0,0 +1,8 @@ +import { Rect } from '../types'; +export type Optional = Pick, K> & Omit; +export type ParentExpandChild = { + id: string; + parentId: string; + rect: Rect; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/types.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/types.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..c0f6120942411bbdbe76271759c2aff27378aa62 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/utils/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE9E,MAAM,MAAM,iBAAiB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/XYDrag.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/XYDrag.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..5f7214378e97e191fb31b1084136e8c42731baa6 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/XYDrag.d.ts @@ -0,0 +1,57 @@ +import type { NodeBase, NodeDragItem, EdgeBase, CoordinateExtent, NodeOrigin, OnError, SnapGrid, Transform, PanBy, OnSelectionDrag, UpdateNodePositions, InternalNodeBase } from '../types'; +export type OnDrag = (event: MouseEvent, dragItems: Map, node: NodeType, nodes: NodeType[]) => void; +type OnNodeDrag = (e: MouseEvent | TouchEvent, node: NodeType, nodes: NodeType[]) => void | undefined; +type FlowGraph = { + nodes: NodeType[]; + edges: EdgeType[]; +}; +type StoreItems = { + nodes: NodeType[]; + nodeLookup: Map>; + edges: EdgeType[]; + nodeExtent: CoordinateExtent; + snapGrid: SnapGrid; + snapToGrid: boolean; + nodeOrigin: NodeOrigin; + multiSelectionActive: boolean; + domNode?: Element | null; + transform: Transform; + autoPanOnNodeDrag: boolean; + nodesDraggable: boolean; + selectNodesOnDrag: boolean; + nodeDragThreshold: number; + panBy: PanBy; + unselectNodesAndEdges: (params?: Partial>) => void; + onError?: OnError; + onNodeDragStart?: OnNodeDrag; + onNodeDrag?: OnNodeDrag; + onNodeDragStop?: OnNodeDrag; + onSelectionDragStart?: OnSelectionDrag; + onSelectionDrag?: OnSelectionDrag; + onSelectionDragStop?: OnSelectionDrag; + updateNodePositions: UpdateNodePositions>; + autoPanSpeed?: number; +}; +export type XYDragParams = { + getStoreItems: () => StoreItems; + onDragStart?: OnDrag; + onDrag?: OnDrag; + onDragStop?: OnDrag; + onNodeMouseDown?: (id: string) => void; + autoPanSpeed?: number; +}; +export type XYDragInstance = { + update: (params: DragUpdateParams) => void; + destroy: () => void; +}; +export type DragUpdateParams = { + noDragClassName?: string; + handleSelector?: string; + isSelectable?: boolean; + nodeId?: string; + domNode: Element; + nodeClickDistance?: number; +}; +export declare function XYDrag({ onNodeMouseDown, getStoreItems, onDragStart, onDrag, onDragStop, }: XYDragParams): XYDragInstance; +export {}; +//# sourceMappingURL=XYDrag.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/XYDrag.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/XYDrag.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..5d27cd69f440ebbd4005975eda4154a01dc9c291 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/XYDrag.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"XYDrag.d.ts","sourceRoot":"","sources":["../../src/xydrag/XYDrag.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..48955a544c804f69a415417537d36af5838aff2d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/index.d.ts @@ -0,0 +1,2 @@ +export * from './XYDrag'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..6f23db8352102902788207dbafaaf55971543dc9 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/xydrag/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/utils.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..9581077a4d4b0f9644072830dd41e018cba7545b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/utils.d.ts @@ -0,0 +1,24 @@ +import { type NodeDragItem, type XYPosition, InternalNodeBase, NodeBase, NodeLookup, SnapGrid } from '../types'; +export declare function isParentSelected(node: NodeType, nodeLookup: NodeLookup): boolean; +export declare function hasSelector(target: Element | EventTarget | null, selector: string, domNode: Element): boolean; +export declare function getDragItems(nodeLookup: Map>, nodesDraggable: boolean, mousePos: XYPosition, nodeId?: string): Map; +export declare function getEventHandlerParams({ nodeId, dragItems, nodeLookup, dragging, }: { + nodeId?: string; + dragItems: Map; + nodeLookup: Map>; + dragging?: boolean; +}): [NodeType, NodeType[]]; +/** + * If a selection is being dragged we want to apply the same snap offset to all nodes in the selection. + * This function calculates the snap offset based on the first node in the selection. + */ +export declare function calculateSnapOffset({ dragItems, snapGrid, x, y, }: { + dragItems: Map; + snapGrid: SnapGrid; + x: number; + y: number; +}): { + x: number; + y: number; +} | null; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/utils.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/utils.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..a44bbf93e7cd18d87a4d93f22ec1ab781d027f19 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xydrag/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/xydrag/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGhH,wBAAgB,gBAAgB,CAAC,QAAQ,SAAS,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAgB3G;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAU7G;AAGD,wBAAgB,YAAY,CAAC,QAAQ,SAAS,QAAQ,EACpD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EACnD,cAAc,EAAE,OAAO,EACvB,QAAQ,EAAE,UAAU,EACpB,MAAM,CAAC,EAAE,MAAM,GACd,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAoC3B;AAOD,wBAAgB,qBAAqB,CAAC,QAAQ,SAAS,QAAQ,EAAE,EAC/D,MAAM,EACN,SAAS,EACT,UAAU,EACV,QAAe,GAChB,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACrC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CA+BzB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,QAAQ,EACR,CAAC,EACD,CAAC,GACF,EAAE;IACD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACrC,QAAQ,EAAE,QAAQ,CAAC;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;;;SAiBA"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/XYHandle.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/XYHandle.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..1f5d45dae65ac946f386c1e5afad4c4eb18348ef --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/XYHandle.d.ts @@ -0,0 +1,3 @@ +import { XYHandleInstance } from './types'; +export declare const XYHandle: XYHandleInstance; +//# sourceMappingURL=XYHandle.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/XYHandle.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/XYHandle.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..cc5abf290d3c4f89382a4c5e5638451fd71d8614 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/XYHandle.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"XYHandle.d.ts","sourceRoot":"","sources":["../../src/xyhandle/XYHandle.ts"],"names":[],"mappings":"AAqBA,OAAO,EAA8C,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA6SvF,eAAO,MAAM,QAAQ,EAAE,gBAGtB,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..15994ac1ce8237edee93b02d5d33f144d6a28b57 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/index.d.ts @@ -0,0 +1,2 @@ +export * from './XYHandle'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..a74366aebc1e8b9278caad97df3b4209c67953ba --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/xyhandle/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/types.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/types.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..01c735d191fd7a26e727f8f39592079ef58c5a27 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/types.d.ts @@ -0,0 +1,50 @@ +import { ConnectionMode, type Connection, type OnConnect, type OnConnectStart, type HandleType, type PanBy, type Transform, type Handle, type OnConnectEnd, type UpdateConnection, type IsValidConnection, NodeLookup, FinalConnectionState, NodeBase, InternalNodeBase, EdgeBase } from '../types'; +export type OnPointerDownParams = { + autoPanOnConnect: boolean; + connectionMode: ConnectionMode; + connectionRadius: number; + domNode: HTMLDivElement | null; + handleId: string | null; + nodeId: string; + isTarget: boolean; + nodeLookup: NodeLookup>; + lib: string; + flowId: string | null; + edgeUpdaterType?: HandleType; + updateConnection: UpdateConnection>; + panBy: PanBy; + cancelConnection: () => void; + onConnectStart?: OnConnectStart; + onConnect?: OnConnect; + onConnectEnd?: OnConnectEnd; + isValidConnection?: IsValidConnection; + onReconnectEnd?: (evt: MouseEvent | TouchEvent, connectionState: FinalConnectionState>) => void; + getTransform: () => Transform; + getFromHandle: () => Handle | null; + autoPanSpeed?: number; + dragThreshold?: number; + handleDomNode: Element; +}; +export type IsValidParams = { + handle: Pick | null; + connectionMode: ConnectionMode; + fromNodeId: string; + fromHandleId: string | null; + fromType: HandleType; + isValidConnection?: IsValidConnection; + doc: Document | ShadowRoot; + lib: string; + flowId: string | null; + nodeLookup: NodeLookup>; +}; +export type XYHandleInstance = { + onPointerDown: (event: MouseEvent | TouchEvent, params: OnPointerDownParams) => void; + isValid: (event: MouseEvent | TouchEvent, params: IsValidParams) => Result; +}; +export type Result = { + handleDomNode: Element | null; + isValid: boolean; + connection: Connection | null; + toHandle: Handle | null; +}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/types.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/types.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..e05bc0040a7a125b73a6d8a4e7127e0c690cc74d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/xyhandle/types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/utils.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..e14f65589efe59d506e36d0887be6d1ebc42fb80 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/utils.d.ts @@ -0,0 +1,10 @@ +import type { HandleType, XYPosition, Handle, NodeLookup, ConnectionMode } from '../types'; +export declare function getClosestHandle(position: XYPosition, connectionRadius: number, nodeLookup: NodeLookup, fromHandle: { + nodeId: string; + type: HandleType; + id?: string | null; +}): Handle | null; +export declare function getHandle(nodeId: string, handleType: HandleType, handleId: string | null, nodeLookup: NodeLookup, connectionMode: ConnectionMode, withAbsolutePosition?: boolean): Handle | null; +export declare function getHandleType(edgeUpdaterType: HandleType | undefined, handleDomNode: Element | null): HandleType | null; +export declare function isConnectionValid(isInsideConnectionRadius: boolean, isHandleValid: boolean): boolean | null; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/utils.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/utils.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..18c448a13df8c83b3ca849af941ad2d607bb8d72 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyhandle/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/xyhandle/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAoB,UAAU,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AA0B7G,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,UAAU,EACpB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACnE,MAAM,GAAG,IAAI,CA2Cf;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,EAC9B,oBAAoB,UAAQ,GAC3B,MAAM,GAAG,IAAI,CAef;AAED,wBAAgB,aAAa,CAC3B,eAAe,EAAE,UAAU,GAAG,SAAS,EACvC,aAAa,EAAE,OAAO,GAAG,IAAI,GAC5B,UAAU,GAAG,IAAI,CAUnB;AAED,wBAAgB,iBAAiB,CAAC,wBAAwB,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,kBAU1F"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyminimap/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyminimap/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b881bdfc0c10e421f230622e14d08fea38d164df --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyminimap/index.d.ts @@ -0,0 +1,28 @@ +import { pointer } from 'd3-selection'; +import type { CoordinateExtent, PanZoomInstance, Transform } from '../types'; +export type XYMinimapInstance = { + update: (params: XYMinimapUpdate) => void; + destroy: () => void; + pointer: typeof pointer; +}; +export type XYMinimapParams = { + panZoom: PanZoomInstance; + domNode: Element; + getTransform: () => Transform; + getViewScale: () => number; +}; +export type XYMinimapUpdate = { + translateExtent: CoordinateExtent; + width: number; + height: number; + inversePan?: boolean; + zoomStep?: number; + pannable?: boolean; + zoomable?: boolean; +}; +export declare function XYMinimap({ domNode, panZoom, getTransform, getViewScale }: XYMinimapParams): { + update: ({ translateExtent, width, height, zoomStep, pannable, zoomable, inversePan, }: XYMinimapUpdate) => void; + destroy: () => void; + pointer: typeof pointer; +}; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyminimap/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyminimap/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..2ef52ced2a0c9106330b61e24b9000f65f64c1d4 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyminimap/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/xyminimap/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,OAAO,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG7E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,SAAS,CAAC;IAC9B,YAAY,EAAE,MAAM,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,eAAe,EAAE,gBAAgB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,eAAe;4FAWtF,eAAe;;;EAqFnB"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/XYPanZoom.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/XYPanZoom.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..4e98a1a620da3edd1dfea863341e12e789fb28be --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/XYPanZoom.d.ts @@ -0,0 +1,12 @@ +import { type Viewport, PanZoomParams, PanZoomInstance } from '../types'; +export type ZoomPanValues = { + isZoomingOrPanning: boolean; + usedRightMouseButton: boolean; + prevViewport: Viewport; + mouseButton: number; + timerId: ReturnType | undefined; + panScrollTimeout: ReturnType | undefined; + isPanScrolling: boolean; +}; +export declare function XYPanZoom({ domNode, minZoom, maxZoom, translateExtent, viewport, onPanZoom, onPanZoomStart, onPanZoomEnd, onDraggingChange, }: PanZoomParams): PanZoomInstance; +//# sourceMappingURL=XYPanZoom.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/XYPanZoom.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/XYPanZoom.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..6bb0bc748769d2c26c0c5992688504bbf67a4ccf --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/XYPanZoom.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"XYPanZoom.d.ts","sourceRoot":"","sources":["../../src/xypanzoom/XYPanZoom.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,QAAQ,EAGb,aAAa,EACb,eAAe,EAChB,MAAM,UAAU,CAAC;AAclB,MAAM,MAAM,aAAa,GAAG;IAC1B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,YAAY,EAAE,QAAQ,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,SAAS,CAAC;IACnD,gBAAgB,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,SAAS,CAAC;IAC5D,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,OAAO,EACP,OAAO,EACP,eAAe,EACf,QAAQ,EACR,SAAS,EACT,cAAc,EACd,YAAY,EACZ,gBAAgB,GACjB,EAAE,aAAa,GAAG,eAAe,CA0RjC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/eventhandler.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/eventhandler.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..42ee4f427270c9678783dd5e8037cc9403678137 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/eventhandler.d.ts @@ -0,0 +1,46 @@ +import type { D3ZoomEvent } from 'd3-zoom'; +import { PanOnScrollMode, type D3SelectionInstance, type D3ZoomHandler, type D3ZoomInstance, type OnPanZoom, type OnDraggingChange, type OnTransformChange } from '../types'; +import { ZoomPanValues } from './XYPanZoom'; +export type PanOnScrollParams = { + zoomPanValues: ZoomPanValues; + noWheelClassName: string; + d3Selection: D3SelectionInstance; + d3Zoom: D3ZoomInstance; + panOnScrollMode: PanOnScrollMode; + panOnScrollSpeed: number; + zoomOnPinch: boolean; + onPanZoomStart?: OnPanZoom; + onPanZoom?: OnPanZoom; + onPanZoomEnd?: OnPanZoom; +}; +export type ZoomOnScrollParams = { + noWheelClassName: string; + preventScrolling: boolean; + d3ZoomHandler: D3ZoomHandler; +}; +export type PanZoomStartParams = { + zoomPanValues: ZoomPanValues; + onDraggingChange: OnDraggingChange; + onPanZoomStart?: OnPanZoom; +}; +export type PanZoomParams = { + zoomPanValues: ZoomPanValues; + panOnDrag: boolean | number[]; + onPaneContextMenu: boolean; + onTransformChange: OnTransformChange; + onPanZoom?: OnPanZoom; +}; +export type PanZoomEndParams = { + zoomPanValues: ZoomPanValues; + panOnDrag: boolean | number[]; + panOnScroll: boolean; + onDraggingChange: (isDragging: boolean) => void; + onPanZoomEnd?: OnPanZoom; + onPaneContextMenu?: (event: any) => void; +}; +export declare function createPanOnScrollHandler({ zoomPanValues, noWheelClassName, d3Selection, d3Zoom, panOnScrollMode, panOnScrollSpeed, zoomOnPinch, onPanZoomStart, onPanZoom, onPanZoomEnd, }: PanOnScrollParams): (event: any) => false | undefined; +export declare function createZoomOnScrollHandler({ noWheelClassName, preventScrolling, d3ZoomHandler }: ZoomOnScrollParams): (this: Element, event: any, d: unknown) => null | undefined; +export declare function createPanZoomStartHandler({ zoomPanValues, onDraggingChange, onPanZoomStart }: PanZoomStartParams): (event: D3ZoomEvent) => void; +export declare function createPanZoomHandler({ zoomPanValues, panOnDrag, onPaneContextMenu, onTransformChange, onPanZoom, }: PanZoomParams): (event: D3ZoomEvent) => void; +export declare function createPanZoomEndHandler({ zoomPanValues, panOnDrag, panOnScroll, onDraggingChange, onPanZoomEnd, onPaneContextMenu, }: PanZoomEndParams): (event: D3ZoomEvent) => void; +//# sourceMappingURL=eventhandler.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/eventhandler.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/eventhandler.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..650b80879f69ffe210752626d3d8624dd52582c5 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/eventhandler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"eventhandler.d.ts","sourceRoot":"","sources":["../../src/xypanzoom/eventhandler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,OAAO,EACL,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACvB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,mBAAmB,CAAC;IACjC,MAAM,EAAE,cAAc,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,SAAS,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;IAC9B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;CAC1C,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EACvC,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,MAAM,EACN,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,SAAS,EACT,YAAY,GACb,EAAE,iBAAiB,IACV,OAAO,GAAG,uBAoEnB;AAED,wBAAgB,yBAAyB,CAAC,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,EAAE,kBAAkB,IAChG,MAAM,OAAO,EAAE,OAAO,GAAG,EAAE,GAAG,OAAO,sBAmBvD;AAED,wBAAgB,yBAAyB,CAAC,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,EAAE,kBAAkB,IACvG,OAAO,WAAW,CAAC,cAAc,EAAE,GAAG,CAAC,UAoBhD;AAED,wBAAgB,oBAAoB,CAAC,EACnC,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,GACV,EAAE,aAAa,IACN,OAAO,WAAW,CAAC,cAAc,EAAE,GAAG,CAAC,UAahD;AAED,wBAAgB,uBAAuB,CAAC,EACtC,aAAa,EACb,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,GAClB,EAAE,gBAAgB,IACT,OAAO,WAAW,CAAC,cAAc,EAAE,GAAG,CAAC,UAiChD"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/filter.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/filter.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..502a5890fde1761f41353a0d534d10eefc00b9d1 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/filter.d.ts @@ -0,0 +1,15 @@ +export type FilterParams = { + zoomActivationKeyPressed: boolean; + zoomOnScroll: boolean; + zoomOnPinch: boolean; + panOnDrag: boolean | number[]; + panOnScroll: boolean; + zoomOnDoubleClick: boolean; + userSelectionActive: boolean; + noWheelClassName: string; + noPanClassName: string; + lib: string; + connectionInProgress: boolean; +}; +export declare function createFilter({ zoomActivationKeyPressed, zoomOnScroll, zoomOnPinch, panOnDrag, panOnScroll, zoomOnDoubleClick, userSelectionActive, noWheelClassName, noPanClassName, lib, connectionInProgress, }: FilterParams): (event: any) => boolean; +//# sourceMappingURL=filter.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/filter.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/filter.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..439297e670ded4fa982376368a8341db918a4855 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/filter.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/xypanzoom/filter.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG;IACzB,wBAAwB,EAAE,OAAO,CAAC;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,oBAAoB,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,wBAAwB,EACxB,YAAY,EACZ,WAAW,EACX,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,GAAG,EACH,oBAAoB,GACrB,EAAE,YAAY,IACL,OAAO,GAAG,KAAG,OAAO,CAwE7B"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..eaeb1d643db8f12041d5c33df2d0858856d0fbcd --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/index.d.ts @@ -0,0 +1,2 @@ +export * from './XYPanZoom'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..b4758d78fc3ae45f49fa70a13588e4b9d55d3cca --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/xypanzoom/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/utils.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..ebddee33d4dc4ecbcfbf58829d636d7ec0911206 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/utils.d.ts @@ -0,0 +1,9 @@ +import { type ZoomTransform } from 'd3-zoom'; +import { type D3SelectionInstance, type Viewport } from '../types'; +export declare const transformToViewport: (transform: ZoomTransform) => Viewport; +export declare const viewportToTransform: ({ x, y, zoom }: Viewport) => ZoomTransform; +export declare const isWrappedWithClass: (event: any, className: string | undefined) => any; +export declare const isRightClickPan: (panOnDrag: boolean | number[], usedButton: number) => boolean; +export declare const getD3Transition: (selection: D3SelectionInstance, duration?: number, ease?: (t: number) => number, onEnd?: () => void) => D3SelectionInstance | import("d3-transition").Transition; +export declare const wheelDelta: (event: any) => number; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/utils.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/utils.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..6f3e367e858e39c006a8d04e856fcdc48e4c6e4d --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xypanzoom/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/xypanzoom/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,SAAS,CAAC;AAI3D,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGnE,eAAO,MAAM,mBAAmB,GAAI,WAAW,aAAa,KAAG,QAI7D,CAAC;AAEH,eAAO,MAAM,mBAAmB,GAAI,gBAAgB,QAAQ,KAAG,aACrB,CAAC;AAE3C,eAAO,MAAM,kBAAkB,GAAI,OAAO,GAAG,EAAE,WAAW,MAAM,GAAG,SAAS,QAA0C,CAAC;AAEvH,eAAO,MAAM,eAAe,GAAI,WAAW,OAAO,GAAG,MAAM,EAAE,EAAE,YAAY,MAAM,YACV,CAAC;AAKxE,eAAO,MAAM,eAAe,GAAI,WAAW,mBAAmB,EAAE,iBAAY,EAAE,WAFtD,MAAM,WAEkE,EAAE,kBAAgB,gGAQjH,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,OAAO,GAAG,WAIpC,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/XYResizer.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/XYResizer.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..1d57d2c9cf504579121d813265ee7f1d89a58810 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/XYResizer.d.ts @@ -0,0 +1,49 @@ +import type { NodeBase, NodeLookup, NodeOrigin, Transform, XYPosition } from '../types'; +import type { OnResize, OnResizeEnd, OnResizeStart, ShouldResize, ControlPosition, ResizeControlDirection } from './types'; +export type XYResizerChange = { + x?: number; + y?: number; + width?: number; + height?: number; +}; +export type XYResizerChildChange = { + id: string; + position: XYPosition; + extent?: NodeBase['extent']; +}; +type XYResizerParams = { + domNode: HTMLDivElement; + nodeId: string; + getStoreItems: () => { + nodeLookup: NodeLookup; + transform: Transform; + snapGrid?: [number, number]; + snapToGrid: boolean; + nodeOrigin: NodeOrigin; + paneDomNode: HTMLDivElement | null; + }; + onChange: (changes: XYResizerChange, childChanges: XYResizerChildChange[]) => void; + onEnd?: (change: Required) => void; +}; +type XYResizerUpdateParams = { + controlPosition: ControlPosition; + boundaries: { + minWidth: number; + minHeight: number; + maxWidth: number; + maxHeight: number; + }; + keepAspectRatio: boolean; + resizeDirection?: ResizeControlDirection; + onResizeStart: OnResizeStart | undefined; + onResize: OnResize | undefined; + onResizeEnd: OnResizeEnd | undefined; + shouldResize: ShouldResize | undefined; +}; +export type XYResizerInstance = { + update: (params: XYResizerUpdateParams) => void; + destroy: () => void; +}; +export declare function XYResizer({ domNode, nodeId, getStoreItems, onChange, onEnd }: XYResizerParams): XYResizerInstance; +export {}; +//# sourceMappingURL=XYResizer.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/XYResizer.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/XYResizer.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..fa6c4d0bfaaa50964dcf3dec665345eb2afcba7c --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/XYResizer.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"XYResizer.d.ts","sourceRoot":"","sources":["../../src/xyresizer/XYResizer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACX,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EACV,QAAQ,EACR,WAAW,EACX,aAAa,EAEb,YAAY,EACZ,eAAe,EACf,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAWjB,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,UAAU,CAAC;IACrB,MAAM,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;CAC7B,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM;QACnB,UAAU,EAAE,UAAU,CAAC;QACvB,SAAS,EAAE,SAAS,CAAC;QACrB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,UAAU,EAAE,OAAO,CAAC;QACpB,UAAU,EAAE,UAAU,CAAC;QACvB,WAAW,EAAE,cAAc,GAAG,IAAI,CAAC;KACpC,CAAC;IACF,QAAQ,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAE,KAAK,IAAI,CAAC;IACnF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;CACrD,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,eAAe,EAAE,eAAe,CAAC;IACjC,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;IACzC,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/B,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAgBF,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,eAAe,GAAG,iBAAiB,CAgQjH"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/index.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..b26a0e63d809de49f438b14d6b5a2ea2c619290b --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/index.d.ts @@ -0,0 +1,3 @@ +export * from './types'; +export * from './XYResizer'; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/index.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/index.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..aa841ae79ee6cda669427e724540b26f1b9d85e8 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/xyresizer/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/types.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/types.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..cb4166dae02095aebff3a63561f35d51605a6d19 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/types.d.ts @@ -0,0 +1,59 @@ +import type { D3DragEvent, SubjectPosition } from 'd3-drag'; +/** + * @public + * @inline + */ +export type ResizeParams = { + x: number; + y: number; + width: number; + height: number; +}; +export type ResizeParamsWithDirection = ResizeParams & { + direction: number[]; +}; +/** + * Used to determine the control line position of the NodeResizer + * + * @public + * @inline + */ +export type ControlLinePosition = 'top' | 'bottom' | 'left' | 'right'; +/** + * Used to determine the control position of the NodeResizer + * + * @public + * @inline + */ +export type ControlPosition = ControlLinePosition | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; +/** + * Used to determine the variant of the resize control + * + * @public + */ +export declare enum ResizeControlVariant { + Line = "line", + Handle = "handle" +} +/** + * The direction the user can resize the node. + * @public + * @inline + */ +export type ResizeControlDirection = 'horizontal' | 'vertical'; +export declare const XY_RESIZER_HANDLE_POSITIONS: ControlPosition[]; +export declare const XY_RESIZER_LINE_POSITIONS: ControlLinePosition[]; +type OnResizeHandler = (event: ResizeDragEvent, params: Params) => Result; +export type ResizeDragEvent = D3DragEvent; +/** + * Callback to determine if node should resize + * + * @inline + * @public + */ +export type ShouldResize = OnResizeHandler; +export type OnResizeStart = OnResizeHandler; +export type OnResize = OnResizeHandler; +export type OnResizeEnd = OnResizeHandler; +export {}; +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/types.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/types.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..0eb6ffb722e1848bc231f977c4c0c087eb9aa3b8 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/xyresizer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,YAAY,GAAG;IACrD,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,mBAAmB,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,CAAC;AAE9G;;;;GAIG;AACH,oBAAY,oBAAoB;IAC9B,IAAI,SAAS;IACb,MAAM,WAAW;CAClB;AAED;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE/D,eAAO,MAAM,2BAA2B,EAAE,eAAe,EAA6D,CAAC;AACvH,eAAO,MAAM,yBAAyB,EAAE,mBAAmB,EAAuC,CAAC;AAEnG,KAAK,eAAe,CAAC,MAAM,GAAG,YAAY,EAAE,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;AAChH,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,cAAc,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;AAEjF;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,eAAe,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;AAC/E,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC;AAC5C,MAAM,MAAM,QAAQ,GAAG,eAAe,CAAC,yBAAyB,CAAC,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/utils.d.ts b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..24a7f40773f55e88d43c15db78c04a39ff27e2b7 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/utils.d.ts @@ -0,0 +1,76 @@ +import { CoordinateExtent, NodeOrigin } from '../types'; +import { getPointerPosition } from '../utils'; +import { ControlPosition } from './types'; +type GetResizeDirectionParams = { + width: number; + prevWidth: number; + height: number; + prevHeight: number; + affectsX: boolean; + affectsY: boolean; +}; +/** + * Get all connecting edges for a given set of nodes + * @param width - new width of the node + * @param prevWidth - previous width of the node + * @param height - new height of the node + * @param prevHeight - previous height of the node + * @param affectsX - whether to invert the resize direction for the x axis + * @param affectsY - whether to invert the resize direction for the y axis + * @returns array of two numbers representing the direction of the resize for each axis, 0 = no change, 1 = increase, -1 = decrease + */ +export declare function getResizeDirection({ width, prevWidth, height, prevHeight, affectsX, affectsY, }: GetResizeDirectionParams): number[]; +/** + * Parses the control position that is being dragged to dimensions that are being resized + * @param controlPosition - position of the control that is being dragged + * @returns isHorizontal, isVertical, affectsX, affectsY, + */ +export declare function getControlDirection(controlPosition: ControlPosition): { + isHorizontal: boolean; + isVertical: boolean; + affectsX: boolean; + affectsY: boolean; +}; +type PrevValues = { + width: number; + height: number; + x: number; + y: number; +}; +type StartValues = PrevValues & { + pointerX: number; + pointerY: number; + aspectRatio: number; +}; +/** + * Calculates new width & height and x & y of node after resize based on pointer position + * @description - Buckle up, this is a chunky one... If you want to determine the new dimensions of a node after a resize, + * you have to account for all possible restrictions: min/max width/height of the node, the maximum extent the node is allowed + * to move in (in this case: resize into) determined by the parent node, the minimal extent determined by child nodes + * with expandParent or extent: 'parent' set and oh yeah, these things also have to work with keepAspectRatio! + * The way this is done is by determining how much each of these restricting actually restricts the resize and then applying the + * strongest restriction. Because the resize affects x, y and width, height and width, height of a opposing side with keepAspectRatio, + * the resize amount is always kept in distX & distY amount (the distance in mouse movement) + * Instead of clamping each value, we first calculate the biggest 'clamp' (for the lack of a better name) and then apply it to all values. + * To complicate things nodeOrigin has to be taken into account as well. This is done by offsetting the nodes as if their origin is [0, 0], + * then calculating the restrictions as usual + * @param startValues - starting values of resize + * @param controlDirection - dimensions affected by the resize + * @param pointerPosition - the current pointer position corrected for snapping + * @param boundaries - minimum and maximum dimensions of the node + * @param keepAspectRatio - prevent changes of asprect ratio + * @returns x, y, width and height of the node after resize + */ +export declare function getDimensionsAfterResize(startValues: StartValues, controlDirection: ReturnType, pointerPosition: ReturnType, boundaries: { + minWidth: number; + maxWidth: number; + minHeight: number; + maxHeight: number; +}, keepAspectRatio: boolean, nodeOrigin: NodeOrigin, extent?: CoordinateExtent, childExtent?: CoordinateExtent): { + width: number; + height: number; + x: number; + y: number; +}; +export {}; +//# sourceMappingURL=utils.d.ts.map \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/utils.d.ts.map b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/utils.d.ts.map new file mode 100644 index 0000000000000000000000000000000000000000..870b9c60cc2042d73af1dfe6d25044bbcafb9835 --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/dist/umd/xyresizer/utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/xyresizer/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,KAAK,wBAAwB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,SAAS,EACT,MAAM,EACN,UAAU,EACV,QAAQ,EACR,QAAQ,GACT,EAAE,wBAAwB,YAc1B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,eAAe;;;;;EAYnE;AAED,KAAK,UAAU,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,KAAK,WAAW,GAAG,UAAU,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAkBF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,EACxD,eAAe,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,EACtD,UAAU,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EACxF,eAAe,EAAE,OAAO,EACxB,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,gBAAgB,EACzB,WAAW,CAAC,EAAE,gBAAgB;;;;;EA8J/B"} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/package.json b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/package.json new file mode 100644 index 0000000000000000000000000000000000000000..4a20194fd6edda367f33964029bd7c79e9ebb20a --- /dev/null +++ b/frontend/node_modules/.pnpm/@xyflow+system@0.0.79/node_modules/@xyflow/system/package.json @@ -0,0 +1,79 @@ +{ + "name": "@xyflow/system", + "version": "0.0.79", + "description": "xyflow core system that powers React Flow and Svelte Flow.", + "keywords": [ + "node-based UI", + "graph", + "diagram", + "workflow", + "reactflow", + "svelteflow", + "xyflow" + ], + "files": [ + "dist" + ], + "source": "src/index.ts", + "main": "dist/umd/index.js", + "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", + "exports": { + ".": { + "node": { + "types": "./dist/esm/index.d.ts", + "module": "./dist/esm/index.js", + "require": "./dist/umd/index.js", + "import": "./dist/esm/index.mjs" + }, + "browser": { + "import": "./dist/esm/index.js", + "require": "./dist/umd/index.js" + }, + "default": "./dist/esm/index.js" + } + }, + "sideEffects": false, + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/xyflow/xyflow.git", + "directory": "packages/system" + }, + "dependencies": { + "@types/d3-drag": "^3.0.7", + "@types/d3-interpolate": "^3.0.4", + "@types/d3-selection": "^3.0.10", + "@types/d3-transition": "^3.0.8", + "@types/d3-zoom": "^3.0.8", + "d3-drag": "^3.0.0", + "d3-interpolate": "^3.0.1", + "d3-selection": "^3.0.0", + "d3-zoom": "^3.0.0" + }, + "devDependencies": { + "@types/node": "^18.7.16", + "typescript": "5.4.5", + "@xyflow/eslint-config": "0.0.1", + "@xyflow/rollup-config": "0.0.0", + "@xyflow/tsconfig": "0.0.0" + }, + "rollup": { + "globals": { + "d3-selection": "d3Selection", + "d3-zoom": "d3Zoom", + "d3-drag": "d3Drag" + }, + "vanilla": true, + "name": "XYFlowSystem" + }, + "scripts": { + "dev": "concurrently \"rollup --config node:@xyflow/rollup-config --watch\"", + "build": "rollup --config node:@xyflow/rollup-config --environment NODE_ENV:production", + "lint": "eslint --ext .js,.ts src", + "typecheck": "tsc --noEmit" + } +} \ No newline at end of file diff --git a/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/LICENSE.txt b/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/LICENSE.txt new file mode 100644 index 0000000000000000000000000000000000000000..261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64 --- /dev/null +++ b/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/README.md b/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/README.md new file mode 100644 index 0000000000000000000000000000000000000000..285cff040bb3e47dd914942e4c1ad9b130b240a2 --- /dev/null +++ b/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/README.md @@ -0,0 +1,545 @@ +# [`baseline-browser-mapping`](https://github.com/web-platform-dx/web-features/packages/baseline-browser-mapping) + +By the [W3C WebDX Community Group](https://www.w3.org/community/webdx/) and contributors. + +`baseline-browser-mapping` provides: + +- An `Array` of browsers compatible with Baseline Widely available and Baseline year feature sets via the [`getCompatibleVersions()` function](#get-baseline-widely-available-browser-versions-or-baseline-year-browser-versions). +- An `Array`, `Object` or `CSV` as a string describing the Baseline feature set support of all browser versions included in the module's data set via the [`getAllVersions()` function](#get-data-for-all-browser-versions). + +You can use `baseline-browser-mapping` to help you determine minimum browser version support for your chosen Baseline feature set; or to analyse the level of support for different Baseline feature sets in your site's traffic by joining the data with your analytics data. + +## Install for local development + +To install the package, run: + +`npm install --save-dev baseline-browser-mapping` + +The minimum supported NodeJS version for `baseline-browser-mapping` is v8 in alignment with `browserslist`. For NodeJS versions earlier than v13.2, the [`require('baseline-browser-mapping')`](https://nodejs.org/api/modules.html#requireid) syntax should be used to import the module. + +## Keeping `baseline-browser-mapping` up to date + +`baseline-browser-mapping` depends on `web-features` and `@mdn/browser-compat-data` for core browser version selection, but the data is pre-packaged and minified. This package checks for updates to those modules and the supported [downstream browsers](#downstream-browsers) on a daily basis and is updated frequently. + +If you are only using this module to generate minimum browser versions for Baseline Widely available or Baseline year feature sets, you don't need to update this module frequently, as the backward looking data is reasonably stable. + +However, if you are targeting Newly available, using the [`getAllVersions()`](#get-data-for-all-browser-versions) function or heavily relying on the data for downstream browsers, you should update this module more frequently. If you target a feature cut off date within the last two months and your installed version of `baseline-browser-mapping` has data that is more than 2 months old, you will receive a console warning advising you to update to the latest version when you call `getCompatibleVersions()` or `getAllVersions()`. + +If you want to suppress the console warnings mentioned above you can use the `suppressWarnings: true` option in the configuration object passed to `getCompatibleVersions()` or `getAllVersions()`. Alternatively, you can use the `BASELINE_BROWSER_MAPPING_IGNORE_OLD_DATA=true` environment variable when running your build process. This module also respects the `BROWSERSLIST_IGNORE_OLD_DATA=true` environment variable. Environment variables can also be provided in a `.env` file from Node 20 onwards; however, this module does not load .env files automatically to avoid conflicts with other libraries with different requirements. You will need to use `process.loadEnvFile()` or a library like `dotenv` to load .env files before `baseline-browser-mapping` is called. + +If you're building a tool that uses this module, consider suppressing the warnings but building a process into your tool that automatically updates this module. See, for example, [`browserslist`](https://github.com/browserslist/browserslist/blob/main/node.js#L471) and its [`update-browserslist-db`](https://github.com/browserslist/update-db) package. + +If you're implementing `baseline-browser-mapping` directly, you should add a script to your `package.json` to update `baseline-browser-mapping` and use it as part of your build process to ensure your data is as up to date as possible. For example, if you are using NPM for package management: + +```javascript +"scripts": [ + "refresh-baseline-browser-mapping": "npm i baseline-browser-mapping@latest -D" +] +``` + +If you want to ensure [reproducible builds](https://www.wikiwand.com/en/articles/Reproducible_builds), we strongly recommend using the `widelyAvailableOnDate` option to fix the Widely available date on a per build basis to ensure dependent tools provide the same output and you do not produce data staleness warnings. If you are using [`browserslist`](https://github.com/browserslist/browserslist) to target Baseline Widely available, consider automatically updating your `browserslist` configuration in `package.json` or `.browserslistrc` to `baseline widely available on {YYYY-MM-DD}` as part of your build process to ensure the same or sufficiently similar list of minimum browsers is reproduced for historical builds. + +## Importing `baseline-browser-mapping` + +This module exposes three functions: `getCompatibleVersions()`, `getAllVersions()`, and `getTimeline()`, all of which can be imported directly from `baseline-browser-mapping`: + +```javascript +import { + getCompatibleVersions, + getAllVersions, + getTimeline, +} from "baseline-browser-mapping"; +``` + +If you want to load the script and data directly in a web page without hosting it yourself, consider using a CDN: + +```html + +``` + +## Get Baseline Widely available browser versions or Baseline year browser versions + +To get the current list of minimum browser versions compatible with Baseline Widely available features from the core browser set, call the `getCompatibleVersions()` function: + +```javascript +getCompatibleVersions(); +``` + +Executed on 7th March 2025, the above code returns the following browser versions: + +```javascript +[ + { browser: "chrome", version: "105", release_date: "2022-09-02" }, + { + browser: "chrome_android", + version: "105", + release_date: "2022-09-02", + }, + { browser: "edge", version: "105", release_date: "2022-09-02" }, + { browser: "firefox", version: "104", release_date: "2022-08-23" }, + { + browser: "firefox_android", + version: "104", + release_date: "2022-08-23", + }, + { browser: "safari", version: "15.6", release_date: "2022-09-02" }, + { + browser: "safari_ios", + version: "15.6", + release_date: "2022-09-02", + }, +]; +``` + +> [!NOTE] +> The minimum versions of each browser are not necessarily the final release before the Widely available cutoff date of `TODAY - 30 MONTHS`. Some earlier versions will have supported the full Widely available feature set. + +### `getCompatibleVersions()` configuration options + +`getCompatibleVersions()` accepts an `Object` as an argument with configuration options. The defaults are as follows: + +```javascript +{ + targetYear: undefined, + widelyAvailableOnDate: undefined, + includeDownstreamBrowsers: false, + listAllCompatibleVersions: false, + suppressWarnings: false +} +``` + +#### `targetYear` + +The `targetYear` option returns the minimum browser versions compatible with all **Baseline Newly available** features at the end of the specified calendar year. For example, calling: + +```javascript +getCompatibleVersions({ + targetYear: 2020, +}); +``` + +Returns the following versions: + +```javascript +[ + { browser: "chrome", version: "87", release_date: "2020-11-19" }, + { + browser: "chrome_android", + version: "87", + release_date: "2020-11-19", + }, + { browser: "edge", version: "87", release_date: "2020-11-19" }, + { browser: "firefox", version: "83", release_date: "2020-11-17" }, + { + browser: "firefox_android", + version: "83", + release_date: "2020-11-17", + }, + { browser: "safari", version: "14", release_date: "2020-09-16" }, + { browser: "safari_ios", version: "14", release_date: "2020-09-16" }, +]; +``` + +> [!NOTE] +> The minimum version of each browser is not necessarily the final version released in that calendar year. In the above example, Firefox 84 was the final version released in 2020; however Firefox 83 supported all of the features that were interoperable at the end of 2020. +> [!WARNING] +> You cannot use `targetYear` and `widelyAavailableDate` together. Please only use one of these options at a time. + +#### `widelyAvailableOnDate` + +The `widelyAvailableOnDate` option returns the minimum versions compatible with Baseline Widely available on a specified date in the format `YYYY-MM-DD`: + +```javascript +getCompatibleVersions({ + widelyAvailableOnDate: `2023-04-05`, +}); +``` + +> [!TIP] +> This option is useful if you provide a versioned library that targets Baseline Widely available on each version's release date and you need to provide a statement on minimum supported browser versions in your documentation. + +#### `includeDownstreamBrowsers` + +Setting `includeDownstreamBrowsers` to `true` will include browsers outside of the Baseline core browser set where it is possible to map those browsers to an upstream Chromium or Gecko version: + +```javascript +getCompatibleVersions({ + includeDownstreamBrowsers: true, +}); +``` + +For more information on downstream browsers, see [the section on downstream browsers](#downstream-browsers) below. + +#### `includeKaiOS` + +KaiOS is an operating system and app framework based on the Gecko engine from Firefox. KaiOS is based on the Gecko engine and feature support can be derived from the upstream Gecko version that each KaiOS version implements. However KaiOS requires other considerations beyond feature compatibility to ensure a good user experience as it runs on device types that do not have either mouse and keyboard or touch screen input in the way that all the other browsers supported by this module do. + +```javascript +getCompatibleVersions({ + includeDownstreamBrowsers: true, + includeKaiOS: true, +}); +``` + +> [!NOTE] +> Including KaiOS requires you to include all downstream browsers using the `includeDownstreamBrowsers` option. + +#### `listAllCompatibleVersions` + +Setting `listAllCompatibleVersions` to true will include the minimum versions of each compatible browser, and all the subsequent versions: + +```javascript +getCompatibleVersions({ + listAllCompatibleVersions: true, +}); +``` + +#### `suppressWarnings` + +Setting `suppressWarnings` to `true` will suppress the console warning about old data: + +```javascript +getCompatibleVersions({ + suppressWarnings: true, +}); +``` + +## Get data for all browser versions + +You may want to obtain data on all the browser versions available in this module for use in an analytics solution or dashboard. To get details of each browser version's level of Baseline support, call the `getAllVersions()` function: + +```javascript +import { getAllVersions } from "baseline-browser-mapping"; + +getAllVersions(); +``` + +By default, this function returns an `Array` of `Objects` and excludes downstream browsers: + +```javascript +[ + ... + { + browser: "firefox_android", // Browser name + version: "125", // Browser version + release_date: "2024-04-16", // Release date + year: 2023, // Baseline year feature set the version supports + wa_compatible: true // Whether the browser version supports Widely available + }, + ... +] +``` + +For browser versions in `@mdn/browser-compat-data` that were released before Baseline can be defined, i.e. Baseline 2015, the `year` property is always the string: `"pre_baseline"`. + +### Understanding which browsers support Newly available features + +You may want to understand which recent browser versions support all Newly available features. You can replace the `wa_compatible` property with a `supports` property using the `useSupport` option: + +```javascript +getAllVersions({ + useSupports: true, +}); +``` + +The `supports` property is optional and has two possible values: + +- `widely` for browser versions that support all Widely available features. +- `newly` for browser versions that support all Newly available features. + +Browser versions that do not support Widely or Newly available will not include the `support` property in the `array` or `object` outputs, and in the CSV output, the `support` column will contain an empty string. Browser versions that support all Newly available features also support all Widely available features. + +### `getAllVersions()` Configuration options + +`getAllVersions()` accepts an `Object` as an argument with configuration options. The defaults are as follows: + +```javascript +{ + includeDownstreamBrowsers: false, + outputFormat: "array", + suppressWarnings: false +} +``` + +#### `includeDownstreamBrowsers` (in `getAllVersions()` output) + +As with `getCompatibleVersions()`, you can set `includeDownstreamBrowsers` to `true` to include the Chromium and Gecko downstream browsers [listed below](#list-of-downstream-browsers). + +```javascript +getAllVersions({ + includeDownstreamBrowsers: true, +}); +``` + +Downstream browsers include the same properties as core browsers, as well as the `engine`they use and `engine_version`, for example: + +```javascript +[ + ... + { + browser: "samsunginternet_android", + version: "27.0", + release_date: "2024-11-06", + engine: "Blink", + engine_version: "125", + year: 2023, + supports: "widely" + }, + ... +] +``` + +#### `includeKaiOS` (in `getAllVersions()` output) + +As with `getCompatibleVersions()` you can include KaiOS in your output. The same requirement to have `includeDownstreamBrowsers: true` applies. + +```javascript +getAllVersions({ + includeDownstreamBrowsers: true, + includeKaiOS: true, +}); +``` + +#### `suppressWarnings` (in `getAllVersions()` output) + +As with `getCompatibleVersions()`, you can set `suppressWarnings` to `true` to suppress the console warning about old data: + +```javascript +getAllVersions({ + suppressWarnings: true, +}); +``` + +#### `outputFormat` + +By default, this function returns an `Array` of `Objects` which can be manipulated in Javascript or output to JSON. + +To return an `Object` that nests keys , set `outputFormat` to `object`: + +```javascript +getAllVersions({ + outputFormat: "object", +}); +``` + +In thise case, `getAllVersions()` returns a nested object with the browser [IDs listed below](#list-of-downstream-browsers) as keys, and versions as keys within them: + +```javascript +{ + "chrome": { + "53": { + "year": 2016, + "release_date": "2016-09-07" + }, + ... +} +``` + +Downstream browsers will include extra fields for `engine` and `engine_versions` + +```javascript +{ + ... + "webview_android": { + "53": { + "year": 2016, + "release_date": "2016-09-07", + "engine": "Blink", + "engine_version": "53" + }, + ... +} +``` + +To return a `String` in CSV format, set `outputFormat` to `csv`: + +```javascript +getAllVersions({ + outputFormat: "csv", +}); +``` + +`getAllVersions` returns a `String` with a header row and comma-separated values for each browser version that you can write to a file or pass to another service. Core browsers will have "NULL" as the value for their `engine` and `engine_version`: + +```csv +"browser","version","year","supports","release_date","engine","engine_version" +... +"chrome","24","pre_baseline","","2013-01-10","NULL","NULL" +... +"chrome","53","2016","","2016-09-07","NULL","NULL" +... +"firefox","135","2024","widely","2025-02-04","NULL","NULL" +"firefox","136","2024","newly","2025-03-04","NULL","NULL" +... +"ya_android","20.12","2020","year_only","2020-12-20","Blink","87" +... +``` + +> [!NOTE] +> The above example uses `"includeDownstreamBrowsers": true` + +### Static resources + +The outputs of `getAllVersions()` are available as JSON or CSV files generated on a daily basis and hosted on GitHub pages: + +- Core browsers only + - [Array](https://web-platform-dx.github.io/baseline-browser-mapping/all_versions_array.json) + - [Object](https://web-platform-dx.github.io/baseline-browser-mapping/all_versions_object.json) + - [CSV](https://web-platform-dx.github.io/baseline-browser-mapping/all_versions.csv) +- Core browsers only, with `supports` property + - [Array](https://web-platform-dx.github.io/baseline-browser-mapping/all_versions_array_with_supports.json) + - [Object](https://web-platform-dx.github.io/baseline-browser-mapping/all_versions_object_with_supports.json) + - [CSV](https://web-platform-dx.github.io/baseline-browser-mapping/all_versions_with_supports.csv) +- Including downstream browsers + - [Array](https://web-platform-dx.github.io/baseline-browser-mapping/with_downstream/all_versions_array.json) + - [Object](https://web-platform-dx.github.io/baseline-browser-mapping/with_downstream/all_versions_object.json) + - [CSV](https://web-platform-dx.github.io/baseline-browser-mapping/with_downstream/all_versions.csv) +- Including downstream browsers with `supports` property + - [Array](https://web-platform-dx.github.io/baseline-browser-mapping/with_downstream/all_versions_array_with_supports.json) + - [Object](https://web-platform-dx.github.io/baseline-browser-mapping/with_downstream/all_versions_object_with_supports.json) + - [CSV](https://web-platform-dx.github.io/baseline-browser-mapping/with_downstream/all_versions_with_supports.csv) + +These files are updated on a daily basis. + +## Get timeline of browser version compatibility bumps + +To calculate compatible browser versions on custom/arbitrary dates completely client-side without loading the full `@mdn/browser-compat-data` database, you can call the `getTimeline()` function. It returns the timeline of minimum version requirements as a chronologically sorted array of change events: + +```javascript +import { getTimeline } from "baseline-browser-mapping"; + +const timeline = getTimeline(); +``` + +It returns an `Array` of events, where each event has a `date` and an array of `browsers` representing the compatibility changes on that date: + +```javascript +[ + { + date: "2015-07-29", + browsers: [ + { browser: "chrome", version: "38", release_date: "2014-10-07" }, + { browser: "chrome_android", version: "38", release_date: "2014-10-08" }, + { browser: "edge", version: "12", release_date: "2015-07-29" }, + { browser: "firefox", version: "38", release_date: "2015-05-12" }, + { browser: "firefox_android", version: "38", release_date: "2015-05-12" }, + { browser: "safari", version: "11", release_date: "2017-09-19" }, + { browser: "safari_ios", version: "11", release_date: "2017-09-19" } + ] + }, + { + date: "2015-09-22", + browsers: [ + { browser: "firefox", version: "41", release_date: "2015-09-22" }, + { browser: "firefox_android", version: "41", release_date: "2015-09-22" } + ] + }, + ... +] +``` + +### Options + +`getTimeline()` accepts an optional configuration `Object` with the following properties: + +- `groupBy` (`"date"` by default): + - If `"date"` (default), it returns a chronologically sorted `Array` of events, where each event represents a date on which a browser's Baseline requirements changed. + - If `"browser"`, it returns an `Object` where keys are browser names and values are arrays of version change events for that specific browser: + ```javascript + { + chrome: [ + { date: "2015-07-29", version: "38", release_date: "2014-10-07" }, + { date: "2016-03-02", version: "49", release_date: "2016-03-02" }, + ... + ], + safari: [ + { date: "2015-09-30", version: "9", release_date: "2015-09-30" }, + ... + ], + ... + } + ``` +- `listAllBrowsers` (`false` by default): + - If `false`, the `browsers` array for each event (when `groupBy` is `"date"`) contains _only_ the browsers that changed on that specific date. + - If `true`, the `browsers` array for each event will contain the state of _all_ active compatible browsers at that point in time (showing the versions they had on that date). + - _Note: Only applicable when `groupBy` is `"date"` (or when `groupBy` is `"browser"`, this lists every date in the timeline for each browser)._ +- `includeDownstreamBrowsers` (`false` by default): Whether to include downstream browsers that share the same engine as a core browser. +- `includeKaiOS` (`false` by default): Whether to include KaiOS (requires `includeDownstreamBrowsers: true`). + +```javascript +// Get a complete view of all core browsers at every timeline event +const fullTimeline = getTimeline({ listAllBrowsers: true }); + +// Get the timeline grouped by browser instead of by date +const browserTimeline = getTimeline({ groupBy: "browser" }); + +// Include downstream browsers in the timeline of changes +const downstreamTimeline = getTimeline({ includeDownstreamBrowsers: true }); +``` + +## CLI + +`baseline-browser-mapping` includes a command line interface that exposes the same data and options as the `getCompatibleVersions()` function. To learn more about using the CLI, run: + +```sh +npx baseline-browser-mapping --help +``` + +## Downstream browsers + +### Limitations + +The browser versions in this module come from two different sources: + +- MDN's `browser-compat-data` module. +- Parsed user agent strings provided by [useragents.io](https://useragents.io/) + +MDN `browser-compat-data` is an authoritative source of information for the browsers it contains. The release dates for the Baseline core browser set and the mapping of downstream browsers to Chromium versions should be considered accurate. + +Browser mappings from useragents.io are provided on a best effort basis. They assume that browser vendors are accurately stating the Chromium version they have implemented. The initial set of version mappings was derived from a bulk export in November 2024. This version was iterated over with a Regex match looking for a major Chrome version and a corresponding version of the browser in question, e.g.: + +`Mozilla/5.0 (Linux; U; Android 10; en-US; STK-L21 Build/HUAWEISTK-L21) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.58 UCBrowser/13.8.2.1324 Mobile Safari/537.36` + +Shows UC Browser Mobile 13.8 implementing Chromium 100, and: + +`Mozilla/5.0 (Linux; arm_64; Android 11; Redmi Note 8 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.6613.123 YaBrowser/24.10.2.123.00 SA/3 Mobile Safari/537.36` + +Shows Yandex Browser Mobile 24.10 implementing Chromium 128. The Chromium version from this string is mapped to the corresponding Chrome version from MDN `browser-compat-data`. + +> [!NOTE] +> Where possible, approximate release dates have been included based on useragents.io "first seen" data. useragents.io does not have "first seen" dates prior to June 2020. However, these browsers' Baseline compatibility is determined by their Chromium or Gecko version, so their release dates are more informative than critical. + +This data is updated on a daily basis using a [script](https://github.com/web-platform-dx/web-features/tree/main/scripts/refresh-downstream.ts) triggered by a GitHub [action](https://github.com/web-platform-dx/web-features/tree/main/.github/workflows/refresh_downstream.yml). Useragents.io provides a private API for this module which exposes the last 7 days of newly seen user agents for the currently tracked browsers. If a new major version of one of the tracked browsers is encountered with a Chromium version that meets or exceeds the previous latest version of that browser, it is added to the [src/data/downstream-browsers.json](src/data/downstream-browsers.json) file with the date it was first seen by useragents.io as its release date. + +KaiOS is an exception - its upstream version mappings are handled separately from the other browsers because they happen very infrequently. + +### List of downstream browsers + +| Browser | ID | Core | Source | +| --------------------- | ------------------------- | ------- | ------------------------- | +| Chrome | `chrome` | `true` | MDN `browser-compat-data` | +| Chrome for Android | `chrome_android` | `true` | MDN `browser-compat-data` | +| Edge | `edge` | `true` | MDN `browser-compat-data` | +| Firefox | `firefox` | `true` | MDN `browser-compat-data` | +| Firefox for Android | `firefox_android` | `true` | MDN `browser-compat-data` | +| Safari | `safari` | `true` | MDN `browser-compat-data` | +| Safari on iOS | `safari_ios` | `true` | MDN `browser-compat-data` | +| Opera | `opera` | `false` | MDN `browser-compat-data` | +| Opera Android | `opera_android` | `false` | MDN `browser-compat-data` | +| Samsung Internet | `samsunginternet_android` | `false` | MDN `browser-compat-data` | +| WebView Android | `webview_android` | `false` | MDN `browser-compat-data` | +| QQ Browser Mobile | `qq_android` | `false` | useragents.io | +| UC Browser Mobile | `uc_android` | `false` | useragents.io | +| Yandex Browser Mobile | `ya_android` | `false` | useragents.io | +| KaiOS | `kai_os` | `false` | Manual | +| Facebook for Android | `facebook_android` | `false` | useragents.io | +| Instagram for Android | `instagram_android` | `false` | useragents.io | + +> [!NOTE] +> All the non-core browsers currently included implement Chromium or Gecko. Their inclusion in any of the above methods is based on the Baseline feature set supported by the Chromium or Gecko version they implement, not their release date. diff --git a/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/dist/cli.cjs b/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/dist/cli.cjs new file mode 100644 index 0000000000000000000000000000000000000000..b52b3b0930145d6628f6c8fa770cdac7a5857684 --- /dev/null +++ b/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/dist/cli.cjs @@ -0,0 +1,2 @@ +#!/usr/bin/env node +"use strict";const{getCompatibleVersions:e}=require("./index.cjs"),a=process.argv.slice(2),s={};for(let e=0;e{if(n===a)return 0;const[e=0,u=0]=n.split(".",2).map(Number),[s=0,o=0]=a.split(".",2).map(Number);if(isNaN(e)||isNaN(u))throw new Error(`Invalid version: ${n}`);if(isNaN(s)||isNaN(o))throw new Error(`Invalid version: ${a}`);return e!==s?e>s?1:-1:u!==o?u>o?1:-1:0},a={c:{longName:"chrome"},ca:{longName:"chrome_android"},e:{longName:"edge"},f:{longName:"firefox"},fa:{longName:"firefox_android"},s:{longName:"safari"},si:{longName:"safari_ios"},o:{longName:"opera",engine:"Blink"},oa:{longName:"opera_android",engine:"Blink"},sa:{longName:"samsunginternet_android",engine:"Blink"},wva:{longName:"webview_android",engine:"Blink"},y:{longName:"ya_android",engine:"Blink"},u:{longName:"uc_android",engine:"Blink"},q:{longName:"qq_android",engine:"Blink"},k:{longName:"kai_os",engine:"Gecko"},fb:{longName:"facebook_android",engine:"Blink"},ia:{longName:"instagram_android",engine:"Blink"}},e=n=>6===n.length&&/^\d{6}$/.test(n)?`20${n.slice(0,2)}-${n.slice(2,4)}-${n.slice(4,6)}`:8===n.length&&/^\d{8}$/.test(n)?`${n.slice(0,4)}-${n.slice(4,6)}-${n.slice(6,8)}`:n,u={},s={};let o="",f=!1;"pre_baseline\nc,1,081211\nc,2,090521\nc,3,090915\nc,4,100125\nc,5,100525\nc,6,100902\nc,7,101019\nc,8,101202\nc,9,110203\nc,10,110308\nc,11,110427\nc,12,110607\nc,13,110802\nc,14,110916\nc,15,111025\nc,16,111213\nc,17,120208\nc,18,120328\nc,19,120515\nc,20,120626\nc,21,120731\nc,22,120925\nc,23,121106\nc,24,130110\nc,25,130221\nc,26,130326\nc,27,130521\nc,28,130709\nc,29,130820\nc,30,131001\nc,31,131112\nc,32,140114\nc,33,140220\nc,34,140408\nc,35,140520\nc,36,140716\nc,37,140826\nc,38,141007\nc,39,141118\nc,40,150121\nc,41,150303\nc,42,150414\nc,43,150519\nc,44,150721\nca,18,120627\nca,25,130227\nca,26,130403\nca,27,130522\nca,28,130710\nca,29,130821\nca,30,131002\nca,31,131114\nca,32,140115\nca,33,140226\nca,34,140402\nca,35,140520\nca,36,140716\nca,37,140903\nca,38,141008\nca,39,141112\nca,40,150121\nca,41,150311\nca,42,150415\nca,43,150527\nf,1,041109\nf,1.5,051129\nf,2,061024\nf,3,080617\nf,3.5,090630\nf,3.6,100121\nf,4,110322\nf,5,110621\nf,6,110816\nf,7,110927\nf,8,111108\nf,9,111220\nf,10,120131\nf,11,120313\nf,12,120424\nf,13,120605\nf,14,120717\nf,15,120828\nf,16,121009\nf,17,121120\nf,18,130108\nf,19,130219\nf,20,130402\nf,21,130514\nf,22,130625\nf,23,130806\nf,24,130917\nf,25,131029\nf,26,131210\nf,27,140204\nf,28,140318\nf,29,140429\nf,30,140610\nf,31,140722\nf,32,140902\nf,33,141014\nf,34,141201\nf,35,150113\nf,36,150224\nf,37,150331\nf,38,150512\nf,39,150702\nfa,4,110329\nfa,5,110621\nfa,6,110816\nfa,7,110927\nfa,8,111108\nfa,9,111221\nfa,10,120131\nfa,14,120626\nfa,15,120828\nfa,16,121009\nfa,17,121120\nfa,18,130108\nfa,19,130219\nfa,20,130402\nfa,21,130514\nfa,22,130625\nfa,23,130806\nfa,24,130917\nfa,25,131029\nfa,26,131210\nfa,27,140204\nfa,28,140318\nfa,29,140429\nfa,30,140610\nfa,31,140722\nfa,32,140902\nfa,33,141014\nfa,34,141201\nfa,35,150113\nfa,36,150227\nfa,37,150331\nfa,38,150512\nfa,39,150702\ns,1,030623\ns,1.1,031024\ns,1.2,040202\ns,1.3,050415\ns,2,050429\ns,3,071026\ns,3.1,080318\ns,4,090608\ns,5,100607\ns,5.1,110720\ns,6,120725\ns,7,131022\ns,8,141016\nsi,1,070629\nsi,2,080711\nsi,3,090617\nsi,3.2,100403\nsi,4,100621\nsi,4.2,101122\nsi,5,111012\nsi,6,120910\nsi,7,130918\nsi,8,140917\n20150729\nc,38,141007\nca,38,141008\ne,12,150729\nf,38,150512\nfa,38,150512\ns,11,170919\nsi,11,170919\no,25,141015,38\noa,25,141016,38\nsa,3.0,150410,38\nwva,38,141008,38\ny,14.12,u,38\nu,11.1,u,40\nq,8.1,u,57\nk,2.0,170701,48\nfb,66,u,48\nia,23,u,62\n20150922\nf,41,150922\nfa,41,150922\n20150930\nc,44,150721\nca,44,150729\no,31,150804,44\noa,32,150923,45\nsa,4.0,160311,44\nwva,44,150729,44\ny,15.9,u,44\nu,11.6,u,57\n20151112\ne,13,151112\n20151231\nc,44,150721\nca,44,150729\ne,13,151112\nf,41,150922\nfa,41,150922\ns,11,170919\nsi,11,170919\no,31,150804,44\noa,32,150923,45\nsa,4.0,160311,44\nwva,44,150729,44\ny,15.9,u,44\nu,11.6,u,57\nq,8.1,u,57\nk,2.0,170701,48\nfb,66,u,48\nia,23,u,62\n20160308\nf,45,160308\nfa,45,160308\n20160607\nf,47,160607\nfa,47,160607\n20160802\ne,14,160802\n20160907\nc,53,160831\nca,53,160907\no,40,160920,53\noa,41,161025,54\nsa,6.0,170823,56\nwva,53,160907,53\ny,16.10,u,53\nfb,95,u,53\n20160920\nf,49,160920\nfa,49,160920\nk,3.0,210901,84\n20161231\nc,53,160831\nca,53,160907\ne,14,160802\nf,49,160920\nfa,49,160920\ns,11,170919\nsi,11,170919\no,40,160920,53\noa,41,161025,54\nsa,6.0,170823,56\nwva,53,160907,53\ny,16.10,u,53\nu,11.6,u,57\nq,8.1,u,57\nk,3.0,210901,84\nfb,95,u,53\nia,23,u,62\n20170201\nc,56,170125\nca,56,170201\nf,50,161115\nfa,50,161115\no,43,170207,56\noa,43,170927,59\nwva,56,170201,56\ny,17.3,u,56\nfb,112,u,56\n20170307\nf,52,170307\nfa,52,170307\n20170316\nca,57,170316\n20170405\nc,57,170309\ne,15,170405\no,44,170321,57\nsa,7.0,180316,59\nwva,57,170316,57\ny,17.4,u,57\nfb,117,u,57\n20170419\nf,53,170419\nfa,53,170419\n20170928\nfa,56,170928\n20171017\ne,16,171017\n20171024\nc,62,171017\nca,62,171024\no,49,171108,62\noa,46,180514,63\nsa,8.0,180718,63\nwva,62,171024,62\ny,17.11,u,62\nu,13.3,200909,78\nq,9.6,u,66\nfb,149,u,62\n20171128\nfa,57,171128\n20171231\nc,62,171017\nca,62,171024\ne,16,171017\nf,53,170419\nfa,57,171128\ns,11,170919\nsi,11,170919\no,49,171108,62\noa,46,180514,63\nsa,8.0,180718,63\nwva,62,171024,62\ny,17.11,u,62\nu,13.3,200909,78\nq,9.6,u,66\nk,3.0,210901,84\nfb,149,u,62\nia,23,u,62\n20180412\ns,11.1,180412\nsi,11.3,180329\n20180430\ne,17,180430\n20180509\nc,66,180417\nca,66,180417\nf,60,180509\nfa,60,180509\no,53,180510,66\noa,47,180723,66\nsa,9.0,180915,67\nwva,66,180417,66\ny,18.6,u,66\nfb,169,u,66\nia,42,u,66\n20180905\nf,62,180905\nfa,62,180905\n20181002\ne,18,181002\n20181023\nf,63,181023\nfa,63,181023\n20181211\nf,64,181211\nfa,64,181211\n20181231\nc,66,180417\nca,66,180417\ne,18,181002\nf,64,181211\nfa,64,181211\ns,11.1,180412\nsi,11.3,180329\no,53,180510,66\noa,47,180723,66\nsa,9.0,180915,67\nwva,66,180417,66\ny,18.6,u,66\nu,13.3,200909,78\nq,9.6,u,66\nk,3.0,210901,84\nfb,169,u,66\nia,42,u,66\n20190129\nf,65,190129\nfa,65,190129\n20190325\ns,12.1,190325\nsi,12.2,190325\n20190919\ns,13,190919\nsi,13,190919\n20191231\nc,66,180417\nca,66,180417\ne,18,181002\nf,65,190129\nfa,65,190129\ns,13,190919\nsi,13,190919\no,53,180510,66\noa,47,180723,66\nsa,9.0,180915,67\nwva,66,180417,66\ny,18.6,u,66\nu,13.3,200909,78\nq,9.6,u,66\nk,3.0,210901,84\nfb,169,u,66\nia,42,u,66\n20200115\nc,76,190730\nca,76,190730\ne,79,200115\nf,68,190709\nfa,68,190709\no,63,190820,76\noa,54,191018,76\nsa,12.0,200619,79\nwva,76,190730,76\ny,19.9,u,76\nq,10.9,201122,77\nfb,233,u,76\nia,96,u,80\n20200204\nc,80,200204\nca,80,200204\no,67,200303,80\noa,57,200330,80\nsa,13.0,201202,83\nwva,80,200204,80\ny,20.3,u,80\nu,15.3,230317,100\nq,11.7,211102,89\nfb,256,u,80\n20200207\ne,80,200207\n20200324\ns,13.1,200324\nsi,13.4,200324\n20200413\nc,81,200407\nca,81,200407\ne,81,200413\no,68,200422,81\noa,58,200513,81\nwva,81,200407,81\ny,20.4,u,81\nfb,266,u,81\nia,137,u,81\n20200727\nc,84,200727\nca,84,200727\ne,84,200716\no,70,200727,84\noa,60,200923,85\nsa,14.0,210417,87\nwva,84,200727,84\ny,20.8,200902,84\nfb,297,201202,86\nia,153,u,84\n20200728\nf,78,200630\nfa,79,200728\n20200827\nc,85,200825\nca,85,200825\ne,85,200827\no,71,200915,85\nwva,85,200825,85\ny,20.9,200927,85\nia,163,u,92\n20200916\nf,79,200728\ns,14,200916\nsi,14,200916\n20201020\nc,86,201020\nca,86,201020\ne,86,201009\no,72,201021,86\noa,61,201207,86\nwva,86,201020,86\ny,20.11,201111,86\n20201117\nf,83,201117\nfa,83,201117\n20201119\nc,87,201117\nca,87,201117\ne,87,201119\no,73,201209,87\noa,62,210216,87\nwva,87,201117,87\ny,20.12,201220,87\nfb,348,211219,96\n20201231\nc,87,201117\nca,87,201117\ne,87,201119\nf,83,201117\nfa,83,201117\ns,14,200916\nsi,14,200916\no,73,201209,87\noa,62,210216,87\nsa,14.0,210417,87\nwva,87,201117,87\ny,20.12,201220,87\nu,15.3,230317,100\nq,11.7,211102,89\nk,3.0,210901,84\nfb,348,211219,96\nia,163,u,92\n20210121\nc,88,210119\nca,88,210119\ne,88,210121\nf,84,201215\nfa,84,201215\no,74,210202,88\noa,63,210416,89\nsa,15.0,210813,90\nwva,88,210119,88\ny,21.1,211231,88\n20210126\nf,85,210126\nfa,85,210126\nk,4.0,250501,123\n20210426\nc,89,210302\nca,89,210302\ne,89,210304\nf,86,210223\nfa,86,210223\ns,14.1,210426\nsi,14.5,210426\no,75,210324,89\nwva,89,210302,89\ny,21.3,210404,89\n20210810\nf,91,210810\nfa,91,210810\n20210902\ne,93,210902\n20210907\nf,92,210907\nfa,92,210907\n20210920\nc,93,210831\nca,93,210831\ns,15,210920\nsi,15,210920\no,79,210914,93\noa,66,211215,94\nsa,17.0,220504,96\nwva,93,210831,93\ny,21.9,210929,93\nq,13.4,230426,98\nia,258,221104,106\n20211005\nf,93,211005\nfa,93,211005\n20211025\ns,15.1,211025\nsi,15.1,211025\n20211102\nf,94,211102\nfa,94,211102\n20211119\nc,96,211115\nca,96,211115\ne,96,211119\no,82,211202,96\noa,67,220131,96\nwva,96,211115,96\ny,22.1,211231,96\n20211207\nf,95,211207\n20211213\ns,15.2,211213\nsi,15.2,211213\n20211231\nc,96,211115\nca,96,211115\ne,96,211119\nf,95,211207\nfa,94,211102\ns,15.2,211213\nsi,15.2,211213\no,82,211202,96\noa,67,220131,96\nsa,17.0,220504,96\nwva,96,211115,96\ny,22.1,211231,96\nu,15.3,230317,100\nq,13.4,230426,98\nk,4.0,250501,123\nfb,348,211219,96\nia,258,221104,106\n20220106\nc,97,220104\nca,97,220104\ne,97,220106\no,83,220119,97\noa,68,220330,99\nsa,18.0,220808,99\nwva,97,220104,97\ny,22.3,220325,98\nfb,399,230204,109\n20220203\nc,98,220201\nca,98,220201\ne,98,220203\nf,96,220111\nfa,96,220111\no,84,220216,98\nwva,98,220201,98\n20220303\nc,99,220301\nca,99,220301\ne,99,220303\no,85,220323,99\nwva,99,220301,99\ny,22.5,220520,100\nq,14.2,231014,109\n20220314\nf,98,220308\nfa,98,220308\ns,15.4,220314\nsi,15.4,220314\n20220428\nc,101,220426\nca,101,220426\ne,101,220428\no,87,220517,101\noa,70,220629,102\nsa,19.0,221101,102\nwva,101,220426,101\ny,22.7,220707,102\nu,17.6,250515,123\n20220503\nf,100,220503\nfa,100,220503\n20220531\nf,101,220531\nfa,101,220531\n20220628\nf,102,220628\nfa,102,220628\n20220726\nf,103,220726\nfa,103,220726\n20220805\nc,104,220802\nca,104,220802\ne,104,220805\no,90,220818,104\noa,71,220916,104\nsa,20.0,230210,106\nwva,104,220802,104\ny,22.8,u,104\n20220823\nf,104,220823\nfa,104,220823\n20220902\nc,105,220902\nca,105,220902\ne,105,220901\ns,15.6,220720\nsi,15.6,220720\no,91,220914,105\noa,72,221021,106\nwva,105,220902,105\ny,22.11,221111,106\n20220912\ns,16,220912\nsi,16,220912\n20221003\nc,106,220927\nca,106,220927\ne,106,221003\no,92,221019,106\nwva,106,220927,106\n20221027\nc,107,221025\nca,107,221025\ne,107,221027\no,93,221117,107\noa,73,230117,108\nsa,21.0,230519,110\nwva,107,221025,107\ny,23.1,230110,108\nia,279,231231,109\n20221115\nf,107,221115\nfa,107,221115\n20221205\nc,108,221129\nca,108,221129\ne,108,221205\no,94,221215,108\nwva,108,221129,108\n20221213\nf,108,221213\nfa,108,221213\n20221231\nc,108,221129\nca,108,221129\ne,108,221205\nf,108,221213\nfa,108,221213\ns,16,220912\nsi,16,220912\no,94,221215,108\noa,73,230117,108\nsa,21.0,230519,110\nwva,108,221129,108\ny,23.1,230110,108\nu,17.6,250515,123\nq,14.2,231014,109\nk,4.0,250501,123\nfb,399,230204,109\nia,279,231231,109\n20230112\nc,109,230110\nca,109,230110\ne,109,230112\no,95,230201,109\noa,74,230313,110\nwva,109,230110,109\ny,23.3,230326,110\n20230214\nf,110,230214\nfa,110,230214\n20230313\nc,111,230307\nca,111,230307\ne,111,230313\no,97,230322,111\noa,75,230517,112\nsa,22.0,230714,111\nwva,111,230301,111\ny,23.5,230519,112\nq,19.1,250708,121\nfb,420,230628,114\nia,288,u,114\n20230314\nf,111,230314\nfa,111,230314\n20230327\ns,16.4,230327\nsi,16.4,230327\n20230411\nf,112,230411\nfa,112,230411\n20230509\nf,113,230509\nfa,113,230509\n20230606\nf,114,230606\nfa,114,230606\n20230704\nc,112,230404\nca,112,230404\ne,112,230406\nf,115,230704\nfa,115,230704\no,98,230420,112\nsa,23.0,231018,115\nwva,112,230404,112\n20230721\nc,115,230718\nca,115,230721\ne,115,230721\no,101,230726,115\noa,77,230831,115\nwva,115,230721,115\ny,23.9,230913,116\nfb,430,230903,116\nia,292,u,115\n20230801\nf,116,230801\nfa,116,230801\n20230915\nc,117,230912\nca,117,230912\ne,117,230915\no,103,231003,117\noa,78,231023,117\nsa,24.0,240125,117\nwva,117,230912,117\ny,23.11,231115,118\nfb,434,231005,117\nia,302,u,117\n20230918\ns,17,230918\nsi,17,230918\n20231013\nc,118,231010\nca,118,231010\ne,118,231013\nf,118,230926\nfa,118,230926\no,104,231023,118\noa,79,231206,119\nsa,25.0,240424,121\nwva,118,231010,118\nfb,437,u,118\nia,306,240117,118\n20231024\nf,119,231024\nfa,119,231024\n20231102\nc,119,231031\nca,119,231031\ne,119,231102\no,105,231114,119\nwva,119,231031,119\ny,24.1,240118,120\nfb,439,231111,119\nia,309,u,119\n20231121\nf,120,231121\nfa,120,231121\n20231205\nca,120,231205\n20231207\nc,120,231205\ne,120,231207\no,106,231219,120\noa,80,240125,120\nwva,120,231205,120\nfb,443,231207,120\nia,311,u,120\n20231211\ns,17.2,231211\nsi,17.2,231211\n20231219\nf,121,231219\nfa,121,231219\n20231231\nc,120,231205\nca,120,231205\ne,120,231207\nf,121,231219\nfa,121,231219\ns,17.2,231211\nsi,17.2,231211\no,106,231219,120\noa,80,240125,120\nsa,25.0,240424,121\nwva,120,231205,120\ny,24.1,240118,120\nu,17.6,250515,123\nq,19.1,250708,121\nk,4.0,250501,123\nfb,443,231207,120\nia,311,u,120\n20240123\nf,122,240123\nfa,122,240123\n20240125\nc,121,240123\nca,121,240123\ne,121,240125\no,107,240207,121\noa,81,240314,122\nwva,121,240123,121\ny,24.4,240327,122\nfb,448,240129,121\nia,317,240203,121\n20240220\nf,123,240220\nfa,123,240220\n20240305\ns,17.4,240305\nsi,17.4,240305\n20240319\nf,124,240319\nfa,124,240319\n20240322\nc,123,240319\nca,123,240319\ne,123,240322\no,109,240327,123\noa,82,240502,124\nsa,27.0,241106,125\nwva,123,240319,123\ny,24.6,240604,124\nfb,465,240707,126\nia,338,240706,126\n20240416\nf,125,240416\nfa,125,240416\n20240418\nc,124,240416\nca,124,240416\ne,124,240418\no,110,240514,124\nwva,124,240416,124\n20240513\ns,17.5,240513\nsi,17.5,240513\n20240514\nf,126,240514\nfa,126,240514\n20240517\nc,125,240514\nca,125,240514\ne,125,240517\no,111,240612,125\noa,83,240625,126\nwva,125,240514,125\ny,24.7,240718,126\n20240611\nf,127,240611\nfa,127,240611\n20240709\nf,128,240709\nfa,128,240709\n20240725\nc,127,240723\nca,127,240723\ne,127,240725\no,113,240822,127\noa,84,240826,127\nsa,28.0,250402,130\nwva,127,240723,127\ny,24.10,241011,128\nfb,474,240730,127\nia,346,240901,127\n20240806\nf,129,240806\nfa,129,240806\n20240903\nf,130,240903\nfa,130,240903\n20240916\ns,18,240916\nsi,18,240916\n20241001\nf,131,241001\nfa,131,241001\n20241017\nc,130,241015\nca,130,241015\ne,130,241017\no,115,241127,130\noa,86,241202,130\nwva,130,241015,130\ny,24.12,241130,130\nfb,486,241018,130\nia,355,241106,130\n20241029\nf,132,241029\nfa,132,241029\n20241211\ns,18.2,241211\nsi,18.2,241211\n20241231\nc,130,241015\nca,130,241015\ne,130,241017\nf,132,241029\nfa,132,241029\ns,18.2,241211\nsi,18.2,241211\no,115,241127,130\noa,86,241202,130\nsa,28.0,250402,130\nwva,130,241015,130\ny,24.12,241130,130\nfb,486,241018,130\nia,355,241106,130\n20250107\nf,134,250107\nfa,134,250107\n20250127\nsi,18.3,250127\n20250304\nf,136,250304\nfa,136,250304\n20250331\ns,18.4,250331\nsi,18.4,250331\n20250401\nc,133,250204\nca,133,250204\ne,133,250206\nf,137,250401\nfa,137,250401\no,118,250415,133\noa,88,250319,134\nsa,29.0,251025,136\nwva,133,250204,133\ny,25.4,250423,134\nfb,503,250312,134\nia,378,250503,135\n20250404\nc,135,250401\nca,135,250401\ne,135,250404\no,120,250702,135\noa,89,250429,135\nwva,135,250401,135\ny,25.6,250904,136\nfb,514,250528,136\n20250429\nf,138,250429\nfa,138,250429\n20250501\nc,136,250429\nca,136,250429\ne,136,250501\no,121,250827,137\noa,90,250618,137\nwva,136,250429,136\nia,381,250619,137\n20250527\nf,139,250527\nfa,139,250527\n20250626\nc,138,250624\nca,138,250624\ne,138,250626\no,122,250911,138\noa,91,250819,139\nwva,138,250624,138\ny,25.8,250830,138\nia,390,250726,138\n20250819\nf,142,250819\nfa,142,250819\n20250905\nc,140,250902\nca,140,250902\ne,140,250905\no,124,251113,140\noa,92,251008,140\nwva,140,250902,140\ny,25.10,251009,140\nia,399,250928,140\n20250915\ns,26,250915\nsi,26,250915\n20250916\nf,143,250916\nfa,143,250916\n20251003\nc,141,250930\nca,141,250930\ne,141,251003\no,125,251204,141\noa,93,251125,142\nwva,141,250930,141\ny,25.12,251207,142\nia,400,251006,141\n20251014\nf,144,251014\nfa,144,251014\n20251111\nf,145,251111\nfa,145,251111\n20251212\nc,143,251202\nca,143,251202\ne,143,251205\nf,146,251209\nfa,146,251209\ns,26.2,251212\nsi,26.2,251212\no,127,260202,143\noa,94,260113,143\nwva,143,251202,143\ny,26.3,260304,144\nia,409,251216,143\n20251231\nc,143,251202\nca,143,251202\ne,143,251205\nf,146,251209\nfa,146,251209\ns,26.2,251212\nsi,26.2,251212\no,127,260202,143\noa,94,260113,143\nwva,143,251202,143\ny,26.3,260304,144\nia,409,251216,143\n20260113\nf,147,260113\nfa,147,260113\n20260211\ns,26.3,260211\nsi,26.3,260211\n20260214\nc,145,260210\nca,145,260210\ne,145,260214\no,129,260318,145\noa,96,260310,145\nwva,145,260210,145\ny,26.4,260425,146\nia,423,260405,146\n20260224\nf,148,260224\nfa,148,260224\n20260313\nc,146,260310\nca,146,260310\ne,146,260313\no,130,260408,146\noa,97,260416,146\nwva,146,260310,146\n20260324\nf,149,260324\nfa,149,260324\ns,26.4,260324\nsi,26.4,260324\n20260410\nc,147,260407\nca,147,260407\ne,147,260410\no,131,260429,147\noa,98,260505,147\nwva,147,260407,147\ny,26.6,260608,148\nia,430,260530,148\n20260505\nca,148,260505\n20260507\nc,148,260505\ne,148,260507\no,132,260528,148\noa,99,260610,148\nwva,148,260505,148\n20260511\ns,26.5,260511\nsi,26.5,260511\n20260519\nf,151,260519\nfa,151,260519\n20260616\nf,152,260616\nfa,152,260616\n20260721\nf,153,260721\nfa,153,260721\nreleases\nc,45,150901\nc,46,151013\nc,47,151201\nc,48,160120\nc,49,160302\nc,50,160413\nc,51,160525\nc,52,160720\nc,54,161012\nc,55,161201\nc,58,170419\nc,59,170605\nc,60,170725\nc,61,170905\nc,63,171206\nc,64,180123\nc,65,180306\nc,67,180529\nc,68,180724\nc,69,180904\nc,70,181016\nc,71,181204\nc,72,190129\nc,73,190312\nc,74,190423\nc,75,190604\nc,77,190910\nc,78,191022\nc,79,191210\nc,83,200519\nc,90,210413\nc,91,210525\nc,92,210720\nc,94,210921\nc,95,211019\nc,100,220329\nc,102,220524\nc,103,220621\nc,110,230207\nc,113,230502\nc,114,230530\nc,116,230815\nc,122,240220\nc,126,240611\nc,128,240820\nc,129,240917\nc,131,241112\nc,132,250114\nc,134,250304\nc,137,250527\nc,139,250805\nc,142,251028\nc,144,260113\nc,149,260602\nc,150,260630\nc,151,260728\nc,152,260825\nc,153,260908\nca,45,150901\nca,46,151014\nca,47,151202\nca,48,160126\nca,49,160309\nca,50,160413\nca,51,160608\nca,52,160727\nca,54,161019\nca,55,161206\nca,58,170425\nca,59,170606\nca,60,170801\nca,61,170905\nca,63,171205\nca,64,180123\nca,65,180306\nca,67,180531\nca,68,180724\nca,69,180904\nca,70,181017\nca,71,181204\nca,72,190129\nca,73,190312\nca,74,190424\nca,75,190604\nca,77,190910\nca,78,191022\nca,79,191217\nca,83,200519\nca,90,210413\nca,91,210525\nca,92,210720\nca,94,210921\nca,95,211019\nca,100,220329\nca,102,220524\nca,103,220621\nca,110,230207\nca,113,230502\nca,114,230530\nca,116,230815\nca,122,240220\nca,126,240611\nca,128,240820\nca,129,240917\nca,131,241112\nca,132,250114\nca,134,250304\nca,137,250527\nca,139,250805\nca,142,251028\nca,144,260113\nca,149,260602\nca,150,260630\nca,151,260728\nca,152,260825\nca,153,260908\ne,83,200521\ne,90,210415\ne,91,210527\ne,92,210722\ne,94,210924\ne,95,211021\ne,100,220401\ne,102,220531\ne,103,220623\ne,110,230209\ne,113,230505\ne,114,230602\ne,116,230821\ne,122,240223\ne,126,240613\ne,128,240822\ne,129,240919\ne,131,241114\ne,132,250117\ne,134,250306\ne,137,250529\ne,139,250807\ne,142,251031\ne,144,260121\ne,149,260604\ne,150,260702\ne,151,260731\ne,152,260827\ne,153,260910\nf,40,150811\nf,42,151103\nf,43,151215\nf,44,160126\nf,46,160426\nf,48,160802\nf,51,170124\nf,54,170613\nf,55,170808\nf,56,170928\nf,57,171114\nf,58,180123\nf,59,180313\nf,61,180626\nf,66,190319\nf,67,190521\nf,69,190903\nf,70,191022\nf,71,191210\nf,72,200107\nf,73,200211\nf,74,200310\nf,75,200407\nf,76,200505\nf,77,200602\nf,80,200825\nf,81,200922\nf,82,201020\nf,87,210323\nf,88,210419\nf,89,210601\nf,90,210713\nf,97,220208\nf,99,220405\nf,105,220920\nf,106,221018\nf,109,230117\nf,117,230829\nf,133,241126\nf,135,250204\nf,140,250624\nf,141,250722\nf,150,260421\nf,154,260818\nf,155,260901\nfa,40,150811\nfa,42,151103\nfa,43,151215\nfa,44,160126\nfa,46,160426\nfa,48,160802\nfa,51,170124\nfa,54,170613\nfa,55,170808\nfa,58,180122\nfa,59,180313\nfa,61,180626\nfa,66,190319\nfa,67,190521\nfa,80,200831\nfa,81,200922\nfa,82,201020\nfa,87,210323\nfa,88,210419\nfa,89,210601\nfa,90,210713\nfa,95,211207\nfa,97,220208\nfa,99,220405\nfa,105,220920\nfa,106,221018\nfa,109,230117\nfa,117,230829\nfa,133,241126\nfa,135,250204\nfa,140,250624\nfa,141,250722\nfa,150,260421\nfa,154,260818\nfa,155,260901\ns,9,150930\ns,9.1,160321\ns,10,160920\ns,10.1,170327\ns,12,180917\ns,15.3,220126\ns,15.5,220516\ns,16.1,221024\ns,16.2,221213\ns,16.3,230123\ns,16.5,230518\ns,16.6,230724\ns,17.1,231025\ns,17.3,240122\ns,17.6,240729\ns,18.1,241028\ns,18.3,250127\ns,18.5,250512\ns,18.6,250729\ns,26.1,251103\ns,26.6,260727\ns,27,u\nsi,9,150916\nsi,9.3,160321\nsi,10,160913\nsi,10.3,170327\nsi,12,180917\nsi,15.3,220126\nsi,15.5,220516\nsi,16.1,221024\nsi,16.2,221213\nsi,16.3,230123\nsi,16.5,230518\nsi,16.6,230724\nsi,17.1,231025\nsi,17.3,240122\nsi,17.6,240729\nsi,18.1,241028\nsi,18.5,250512\nsi,18.6,250729\nsi,26.1,251103\nsi,26.6,260727\nsi,27,u\no,15,130702,28\no,16,130827,29\no,17,131008,30\no,18,131119,31\no,19,140128,32\no,20,140304,33\no,21,140506,34\no,22,140603,35\no,23,140722,36\no,24,140902,37\no,26,141203,39\no,27,150127,40\no,28,150310,41\no,29,150428,42\no,30,150609,43\no,32,150915,45\no,33,151027,46\no,34,151208,47\no,35,160202,48\no,36,160315,49\no,37,160504,50\no,38,160608,51\no,39,160802,52\no,41,161025,54\no,42,161213,55\no,45,170510,58\no,46,170622,59\no,47,170809,60\no,48,170927,61\no,50,180104,63\no,51,180207,64\no,52,180322,65\no,54,180628,67\no,55,180816,68\no,56,180925,69\no,57,181128,70\no,58,190123,71\no,60,190409,73\no,62,190627,75\no,64,191007,77\no,65,191113,78\no,66,200107,79\no,69,200624,83\no,76,210428,90\no,77,210609,91\no,78,210803,92\no,80,211005,94\no,81,211104,95\no,86,220420,100\no,88,220608,102\no,89,220707,103\no,96,230222,110\no,99,230516,113\no,100,230629,114\no,102,230823,116\no,108,240305,122\no,112,240711,126\no,114,240925,128\no,116,250108,131\no,117,250213,132\no,119,250513,134\no,123,251028,139\no,126,260108,142\no,128,260226,144\no,133,260629,149\no,134,u,150\no,135,u,151\noa,15,130708,28\noa,16,130918,29\noa,18,131120,31\noa,19,140128,32\noa,20,140306,33\noa,21,140422,34\noa,22,140617,35\noa,24,140910,37\noa,26,141202,39\noa,27,150129,40\noa,28,150310,41\noa,29,150428,42\noa,30,150610,43\noa,33,151103,46\noa,34,151216,47\noa,35,160204,48\noa,36,160331,49\noa,37,160616,50\noa,42,170121,55\noa,44,171211,60\noa,45,180215,61\noa,48,181108,69\noa,49,181207,70\noa,50,190218,71\noa,51,190321,72\noa,52,190517,73\noa,53,190711,74\noa,55,191203,77\noa,56,200206,78\noa,59,200630,83\noa,64,210525,91\noa,65,211020,92\noa,69,220509,100\noa,76,230626,114\noa,85,241029,128\noa,87,250122,132\noa,95,260211,144\noa,100,260701,149\nsa,1.5,130925,28\nsa,1.6,140411,28\nsa,2.0,141017,34\nsa,2.1,150107,34\nsa,3.2,150824,38\nsa,4.2,160802,44\nsa,5.0,161215,51\nsa,5.2,170421,51\nsa,5.4,170517,51\nsa,6.2,171026,56\nsa,6.4,180219,56\nsa,7.2,180620,59\nsa,7.4,180912,59\nsa,8.2,181221,63\nsa,9.2,190402,67\nsa,9.4,190725,67\nsa,10.0,190822,71\nsa,10.2,191009,71\nsa,11.0,191205,75\nsa,11.2,200322,75\nsa,12.1,200707,79\nsa,13.2,210120,83\nsa,14.2,210625,87\nsa,16.0,211125,92\nsa,16.2,220306,92\nsa,18.1,220909,99\nsa,19.1,221108,102\nsa,26.0,240607,122\nwva,4.4,131209,30\nwva,4.4.3,140602,33\nwva,37,140903,37\nwva,39,141112,39\nwva,40,150121,40\nwva,41,150311,41\nwva,42,150415,42\nwva,43,150527,43\nwva,45,150901,45\nwva,46,151014,46\nwva,47,151202,47\nwva,48,160126,48\nwva,49,160309,49\nwva,50,160413,50\nwva,51,160608,51\nwva,52,160727,52\nwva,54,161019,54\nwva,55,161206,55\nwva,58,170425,58\nwva,59,170606,59\nwva,60,170801,60\nwva,61,170905,61\nwva,63,171205,63\nwva,64,180123,64\nwva,65,180306,65\nwva,67,180531,67\nwva,68,180724,68\nwva,69,180904,69\nwva,70,181017,70\nwva,71,181204,71\nwva,72,190129,72\nwva,73,190312,73\nwva,74,190424,74\nwva,75,190604,75\nwva,77,190910,77\nwva,78,191022,78\nwva,79,191217,79\nwva,83,200519,83\nwva,90,210413,90\nwva,91,210525,91\nwva,92,210720,92\nwva,94,210921,94\nwva,95,211019,95\nwva,100,220329,100\nwva,102,220524,102\nwva,103,220621,103\nwva,110,230207,110\nwva,113,230502,113\nwva,114,230530,114\nwva,116,230815,116\nwva,122,240220,122\nwva,126,240611,126\nwva,128,240820,128\nwva,129,240917,129\nwva,131,241112,131\nwva,132,250114,132\nwva,134,250304,134\nwva,137,250527,137\nwva,139,250805,139\nwva,142,251028,142\nwva,144,260113,144\nwva,149,260602,149\nwva,150,260630,150\nwva,151,260728,151\nwva,152,260825,152\nwva,153,260908,153\ny,1.0,u,25\ny,1.5,u,22\ny,1.6,u,25\ny,1.7,u,25\ny,1.20,u,25\ny,2.5,u,25\ny,3.2,u,25\ny,4.6,u,25\ny,5.3,u,25\ny,5.4,u,25\ny,7.4,u,25\ny,9.6,u,25\ny,10.5,u,25\ny,11.4,u,25\ny,11.5,u,25\ny,12.7,u,25\ny,13.9,u,28\ny,13.10,u,28\ny,13.11,u,28\ny,13.12,u,30\ny,14.2,u,32\ny,14.4,u,33\ny,14.5,u,34\ny,14.7,u,35\ny,14.8,u,36\ny,14.10,u,37\ny,15.2,u,40\ny,15.4,u,41\ny,15.6,u,42\ny,15.7,u,43\ny,15.10,u,45\ny,15.12,u,46\ny,16.2,u,47\ny,16.3,u,47\ny,16.4,u,49\ny,16.6,u,50\ny,16.7,u,51\ny,16.9,u,52\ny,16.11,u,54\ny,17.1,u,55\ny,17.6,u,58\ny,17.7,u,59\ny,17.9,u,60\ny,17.10,u,61\ny,18.1,u,63\ny,18.2,u,63\ny,18.3,u,64\ny,18.4,u,65\ny,18.7,u,67\ny,18.9,u,68\ny,18.10,u,69\ny,18.11,u,70\ny,19.1,u,71\ny,19.3,u,72\ny,19.4,u,73\ny,19.5,u,75\ny,19.6,u,75\ny,19.7,u,75\ny,19.10,u,77\ny,19.11,u,78\ny,19.12,u,78\ny,20.2,u,79\ny,20.6,u,81\ny,20.7,u,83\ny,21.2,u,88\ny,21.5,u,90\ny,21.6,210928,91\ny,21.8,210928,92\ny,21.11,211029,94\ny,22.4,u,92\ny,22.9,220827,104\ny,23.7,230706,114\ny,24.2,240325,120\ny,24.9,241001,126\ny,25.2,250424,132\ny,25.3,250423,132\ny,26.7,260723,149\ny,26.8,260801,150\nu,10.5,u,31\nu,10.7,u,31\nu,10.8,u,31\nu,10.10,u,31\nu,11.0,u,31\nu,11.2,u,40\nu,11.3,u,40\nu,11.4,u,40\nu,11.5,u,40\nu,11.8,u,57\nu,11.9,u,57\nu,12.0,u,57\nu,12.1,u,57\nu,12.2,u,57\nu,12.3,u,57\nu,12.4,u,57\nu,12.5,u,57\nu,12.6,u,57\nu,12.7,u,57\nu,12.8,u,57\nu,12.9,u,57\nu,12.10,u,57\nu,12.11,u,57\nu,12.12,u,57\nu,12.13,u,57\nu,12.14,u,57\nu,13.0,u,57\nu,13.1,u,57\nu,13.2,u,57\nu,13.4,210928,78\nu,13.5,230825,78\nu,13.6,231217,78\nu,13.7,230624,78\nu,13.8,220430,78\nu,13.9,220518,78\nu,15.0,220824,78\nu,15.1,221111,78\nu,15.2,230423,78\nu,15.4,231025,100\nu,15.5,230822,100\nu,16.0,230824,100\nu,16.1,231015,100\nu,16.2,231209,100\nu,16.3,240308,100\nu,16.4,241003,100\nu,16.5,240530,100\nu,16.6,240723,100\nu,17.0,240824,100\nu,17.1,240926,100\nu,17.2,241129,100\nu,17.3,250107,100\nu,17.4,250226,100\nu,17.5,250408,100\nu,17.7,250611,123\nu,17.8,250730,123\nu,18.0,250817,123\nu,18.1,251004,123\nu,18.2,251104,123\nu,18.3,251212,123\nu,18.4,260109,123\nu,18.5,260128,123\nu,18.6,260321,123\nu,18.8,260503,123\nu,18.9,260702,123\nq,6.0,u,37\nq,6.1,u,37\nq,6.2,u,37\nq,6.3,u,37\nq,6.4,u,37\nq,6.6,u,37\nq,6.7,u,37\nq,6.8,u,37\nq,6.9,u,37\nq,7.0,u,37\nq,7.1,u,37\nq,7.2,u,37\nq,7.3,u,37\nq,7.4,u,37\nq,7.5,u,37\nq,7.6,u,37\nq,7.7,u,37\nq,7.8,u,37\nq,7.9,u,37\nq,8.0,u,37\nq,8.2,u,57\nq,8.3,u,57\nq,8.4,u,57\nq,8.5,u,57\nq,8.6,u,57\nq,8.7,u,57\nq,8.8,u,57\nq,8.9,u,57\nq,9.1,u,57\nq,9.7,u,66\nq,9.8,u,66\nq,10.0,u,66\nq,10.1,u,66\nq,10.2,u,66\nq,10.3,u,66\nq,10.4,u,66\nq,10.5,u,66\nq,10.7,200909,66\nq,11.0,u,77\nq,11.2,210130,77\nq,11.3,210331,77\nq,11.9,u,89\nq,12.0,211104,89\nq,12.1,211105,89\nq,12.2,211207,89\nq,12.5,220407,89\nq,12.7,220521,89\nq,12.8,220630,89\nq,12.9,220726,89\nq,13.0,220815,89\nq,13.1,220910,89\nq,13.2,221026,89\nq,13.3,221109,89\nq,13.5,230206,98\nq,13.6,230209,98\nq,13.7,230421,98\nq,13.8,230421,98\nq,14.0,231212,98\nq,14.1,230716,98\nq,14.3,230913,109\nq,14.4,231031,109\nq,14.5,231112,109\nq,14.6,231224,109\nq,14.7,240118,109\nq,14.8,240304,109\nq,14.9,240409,109\nq,15.0,240417,109\nq,15.1,240518,109\nq,15.2,241024,109\nq,15.3,240728,109\nq,15.4,240907,109\nq,15.5,240924,109\nq,15.6,241024,109\nq,15.7,241203,109\nq,15.8,241211,109\nq,15.9,250201,109\nq,19.2,250715,121\nq,19.3,250831,121\nq,19.4,250920,121\nq,19.5,251023,121\nq,19.6,251117,121\nq,19.7,251218,121\nq,19.8,260120,121\nq,19.9,260309,121\nq,20.0,260406,121\nq,20.1,260430,121\nq,20.2,260610,121\nq,20.3,260617,121\nq,20.4,260728,121\nk,1.0,170301,37\nk,2.5,170701,48\nk,3.1,220301,84\nfb,68,u,48\nfb,74,u,50\nfb,75,u,50\nfb,76,u,50\nfb,77,u,50\nfb,78,u,50\nfb,79,u,50\nfb,80,u,51\nfb,81,u,51\nfb,82,u,51\nfb,83,u,51\nfb,84,u,51\nfb,86,u,51\nfb,87,u,52\nfb,88,u,52\nfb,89,u,52\nfb,90,u,52\nfb,91,u,52\nfb,92,u,52\nfb,93,u,52\nfb,94,u,52\nfb,96,u,53\nfb,97,u,53\nfb,98,u,53\nfb,99,u,53\nfb,100,u,54\nfb,101,u,54\nfb,103,u,54\nfb,104,u,54\nfb,105,u,54\nfb,106,u,55\nfb,107,u,55\nfb,108,u,55\nfb,109,u,55\nfb,110,u,55\nfb,111,u,55\nfb,113,u,56\nfb,114,u,56\nfb,115,u,56\nfb,116,u,56\nfb,118,u,57\nfb,119,u,57\nfb,120,u,57\nfb,121,u,57\nfb,122,u,58\nfb,123,u,58\nfb,124,u,58\nfb,125,u,58\nfb,126,u,58\nfb,127,u,58\nfb,128,u,58\nfb,129,u,58\nfb,130,u,59\nfb,131,u,59\nfb,132,u,59\nfb,133,u,59\nfb,134,u,59\nfb,135,u,59\nfb,136,u,59\nfb,137,u,59\nfb,138,u,60\nfb,140,u,60\nfb,142,u,61\nfb,143,u,61\nfb,144,u,61\nfb,145,u,61\nfb,146,u,61\nfb,147,u,61\nfb,148,u,61\nfb,150,u,62\nfb,151,u,62\nfb,152,u,62\nfb,153,u,63\nfb,154,u,63\nfb,155,u,63\nfb,156,u,63\nfb,157,u,64\nfb,158,u,64\nfb,159,u,64\nfb,160,u,64\nfb,161,u,64\nfb,162,u,64\nfb,163,u,65\nfb,164,u,65\nfb,165,u,65\nfb,166,u,65\nfb,167,u,65\nfb,168,u,65\nfb,170,u,66\nfb,171,u,66\nfb,172,u,66\nfb,173,u,66\nfb,174,u,66\nfb,175,u,67\nfb,176,u,67\nfb,177,u,67\nfb,178,u,67\nfb,180,u,67\nfb,181,u,67\nfb,182,u,67\nfb,183,u,68\nfb,184,u,68\nfb,185,u,68\nfb,186,u,68\nfb,187,u,68\nfb,188,u,68\nfb,202,u,71\nfb,227,u,75\nfb,228,u,75\nfb,229,u,75\nfb,230,u,75\nfb,231,u,75\nfb,235,u,76\nfb,236,u,76\nfb,237,u,76\nfb,238,u,76\nfb,240,u,77\nfb,241,u,77\nfb,242,u,77\nfb,243,u,77\nfb,244,u,78\nfb,245,u,78\nfb,246,u,78\nfb,247,u,78\nfb,248,u,78\nfb,249,u,78\nfb,250,u,78\nfb,251,u,79\nfb,252,u,79\nfb,253,u,79\nfb,254,u,79\nfb,255,u,79\nfb,257,u,80\nfb,258,u,80\nfb,259,u,80\nfb,260,u,80\nfb,261,u,80\nfb,262,u,80\nfb,263,u,80\nfb,264,u,80\nfb,265,u,80\nfb,267,u,81\nfb,268,u,81\nfb,269,u,81\nfb,270,u,81\nfb,271,u,81\nfb,272,u,83\nfb,273,u,83\nfb,274,u,83\nfb,275,u,83\nfb,400,230210,109\nfb,436,231013,117\nfb,438,231028,118\nfb,440,231112,119\nfb,441,231120,119\nfb,442,231129,119\nfb,444,231213,120\nfb,445,231221,120\nfb,446,240106,120\nfb,447,240112,120\nfb,449,240202,121\nfb,450,240205,121\nfb,451,240217,121\nfb,452,240225,122\nfb,453,240228,122\nfb,454,240304,122\nfb,466,u,126\nfb,469,u,126\nfb,471,240710,126\nfb,472,240711,126\nfb,475,240801,127\nfb,476,240809,127\nfb,477,240816,127\nfb,478,240821,128\nfb,479,240831,128\nfb,480,240907,128\nfb,481,240914,128\nfb,482,240920,129\nfb,483,240927,129\nfb,484,241004,129\nfb,485,241011,129\nfb,487,241026,130\nfb,488,241102,130\nfb,489,241109,130\nfb,494,241226,131\nfb,497,250126,132\nfb,515,250531,137\nia,24,u,62\nia,25,u,62\nia,26,u,63\nia,27,u,63\nia,28,u,63\nia,29,u,63\nia,30,u,63\nia,31,u,64\nia,32,u,64\nia,33,u,64\nia,34,u,64\nia,35,u,65\nia,36,u,65\nia,37,u,65\nia,38,u,65\nia,39,u,65\nia,40,u,65\nia,41,u,65\nia,43,u,66\nia,44,u,66\nia,45,u,66\nia,46,u,66\nia,47,u,66\nia,48,u,67\nia,49,u,67\nia,50,u,67\nia,51,u,67\nia,52,u,67\nia,53,u,67\nia,54,u,67\nia,55,u,67\nia,56,u,68\nia,57,u,68\nia,58,u,68\nia,59,u,68\nia,60,u,68\nia,61,u,68\nia,65,u,69\nia,66,u,69\nia,68,u,69\nia,72,u,70\nia,74,u,71\nia,75,u,71\nia,79,u,71\nia,81,u,72\nia,82,u,72\nia,83,u,72\nia,84,u,73\nia,86,u,73\nia,95,u,74\nia,97,u,80\nia,98,u,80\nia,103,u,80\nia,104,u,80\nia,117,u,80\nia,118,u,80\nia,119,u,80\nia,120,u,80\nia,121,u,80\nia,127,u,80\nia,128,u,80\nia,129,u,80\nia,130,u,80\nia,131,u,80\nia,132,u,80\nia,133,u,80\nia,134,u,80\nia,135,u,80\nia,136,u,80\nia,138,u,81\nia,139,u,81\nia,140,u,81\nia,141,u,81\nia,142,u,81\nia,143,u,83\nia,144,u,83\nia,145,u,83\nia,146,u,83\nia,164,u,92\nia,230,u,92\nia,259,221104,106\nia,281,u,109\nia,289,231221,114\nia,290,231230,114\nia,295,u,115\nia,296,u,115\nia,297,u,115\nia,298,240111,115\nia,299,u,115\nia,300,u,116\nia,301,240112,116\nia,303,u,117\nia,304,u,117\nia,305,u,117\nia,307,u,118\nia,308,240119,118\nia,310,u,119\nia,312,u,120\nia,313,u,120\nia,314,u,120\nia,315,240119,120\nia,316,240125,120\nia,318,240216,121\nia,320,240304,121\nia,321,240307,122\nia,347,240911,127\nia,349,240920,128\nia,366,u,132\nia,367,250215,132\nia,382,250619,137\nia,383,250618,137\nia,384,250616,137\nia,385,250627,137\nia,387,250709,137\nia,392,250812,138\nia,394,250826,139\nia,395,250913,139\nia,396,250920,139\nia,397,250919,139\nia,401,251008,141\nia,404,251031,141\nia,406,251116,141\nia,407,251123,142\nia,408,251128,142\nia,410,251217,143\nia,411,260107,143\nia,438,260722,150\n".split("\n").forEach(n=>{if(n=n.trim())if("releases"!==n){if(f){const a=n.split(",");if(a.length>=3){const[n,u,o,f]=a,i=[n,u,e(o.trim())];f&&i.push(f.trim()),s[n]||(s[n]=[]),s[n].push(i)}return}if(n.startsWith("20")||n.startsWith("pre_baseline"))return o=e(n),void(u[o]=[]);{const a=n.split(",");if(a.length>=3){const[n,s,f,i]=a,r=[n,s,e(f.trim())];if(i&&r.push(i.trim()),!u[o])throw new Error(`Timeline entry for date ${o} is undefined. This should not happen.`);u[o].push(r)}}}else f=!0});const i={};Object.keys(a).forEach(n=>{var a;i[n]=[...null!==(a=s[n])&&void 0!==a?a:[]]}),Object.keys(u).forEach(n=>{u[n].forEach(n=>{const a=n[0];i[a]&&(i[a].some(a=>a[1]===n[1])||i[a].push(n))})}),Object.keys(i).forEach(a=>{i[a].sort((a,e)=>n(a[1],e[1]))});let r=!1;const c=Object.keys(a).filter(n=>void 0===a[n].engine).map(n=>{const{longName:e}=a[n];return{shortName:n,longName:e}}),t=["webview_android","samsunginternet_android","opera_android","opera","ya_android","uc_android","qq_android","kai_os","facebook_android","instagram_android"],b=a=>{const e=[],u=[];return a.forEach(n=>{c.some(a=>a.longName===n.browser)?e.push(n):u.push(n)}),e.sort((a,e)=>a.browsere.browser?1:n(a.version,e.version)),u.sort((a,e)=>{const u=t.indexOf(a.browser),s=t.indexOf(e.browser);return u!==s?u-s:n(a.version,e.version)}),[...e,...u]};let l=!1;const w=n=>{if(!1===n.includeDownstreamBrowsers&&!0===n.includeKaiOS)throw new Error("KaiOS is a downstream browser and can only be included if you include other downstream browsers. Please ensure you use `includeDownstreamBrowsers: true`.")},v=(n,e,u,s,o)=>{var f;const i={browser:e,version:u,release_date:"u"===s?"unknown":s};return o&&(i.engine_version=o,i.engine=null===(f=a[n])||void 0===f?void 0:f.engine),i};function y(e){var s,o,f,t,y,p,d;let g=null!=e?e:{},q={listAllCompatibleVersions:null!==(s=g.listAllCompatibleVersions)&&void 0!==s&&s,includeDownstreamBrowsers:null!==(o=g.includeDownstreamBrowsers)&&void 0!==o&&o,widelyAvailableOnDate:null!==(f=g.widelyAvailableOnDate)&&void 0!==f?f:void 0,targetYear:null!==(t=g.targetYear)&&void 0!==t?t:void 0,includeKaiOS:null!==(y=g.includeKaiOS)&&void 0!==y&&y,overrideLastUpdated:null!==(p=g.overrideLastUpdated)&&void 0!==p?p:void 0,suppressWarnings:null!==(d=g.suppressWarnings)&&void 0!==d&&d},m=new Date;if(q.widelyAvailableOnDate||q.targetYear){if(q.targetYear&&q.widelyAvailableOnDate)throw new Error("You cannot use targetYear and widelyAvailableOnDate at the same time. Please remove one of these options and try again.");q.widelyAvailableOnDate?m=new Date(q.widelyAvailableOnDate):q.targetYear&&(m=new Date(`${q.targetYear}-12-31`))}else m=new Date;if((q.widelyAvailableOnDate||void 0===q.targetYear)&&m.setMonth(m.getMonth()-30),!q.suppressWarnings){if(((n,a)=>{if(r||"undefined"!=typeof process&&process.env&&(process.env.BROWSERSLIST_IGNORE_OLD_DATA||process.env.BASELINE_BROWSER_MAPPING_IGNORE_OLD_DATA))return;const e=new Date;e.setMonth(e.getMonth()-2),n>e&&(null!=a?a:1785774412142)(new Date).getFullYear())throw new Error("There are no browser versions compatible with Baseline in the future")}const h=m{_[n]=void 0}),Object.keys(u).forEach(n=>{const a=u[n];let e=!1;e="pre_baseline"===n||new Date(n)<=m,e&&a.forEach(a=>{const e=a[0];"pre_baseline"!==n&&(_[e]=a)})});const O=[];return Object.keys(a).forEach(e=>{var u,s;const{longName:o}=a[e];if(!q.includeKaiOS&&"k"===e)return;const f=c.some(n=>n.shortName===e);if(q.includeDownstreamBrowsers||f)if(h)if(q.listAllCompatibleVersions){O.push({browser:o,version:"0",release_date:""});(null!==(u=i[e])&&void 0!==u?u:[]).forEach(n=>{O.push(v(e,o,n[1],n[2],n[3]))})}else O.push({browser:o,version:"0",release_date:""});else{const a=_[e];if(!a)return;const u=a[1];if(q.listAllCompatibleVersions){(null!==(s=i[e])&&void 0!==s?s:[]).forEach(a=>{const s=a[1];n(s,u)>=0&&O.push(v(e,o,s,a[2],a[3]))})}else O.push(v(e,o,u,a[2],a[3]))}}),b(O)}exports._resetHasWarned=function(){r=!1},exports.getAllVersions=function(a){var e,u,s,o,f;l=!0;let i=null!=a?a:{},r={outputFormat:null!==(e=i.outputFormat)&&void 0!==e?e:"array",includeDownstreamBrowsers:null!==(u=i.includeDownstreamBrowsers)&&void 0!==u&&u,useSupports:null!==(s=i.useSupports)&&void 0!==s&&s,includeKaiOS:null!==(o=i.includeKaiOS)&&void 0!==o&&o,suppressWarnings:null!==(f=i.suppressWarnings)&&void 0!==f&&f};w(r);let t=(new Date).getFullYear()+1;const b=[...Array(t).keys()].slice(2015),v={};b.forEach(n=>{v[n]={},y({targetYear:n,suppressWarnings:r.suppressWarnings}).forEach(a=>{v[n]&&(v[n][a.browser]=a)})});const p=y({suppressWarnings:r.suppressWarnings}),d={};p.forEach(n=>{d[n.browser]=n});const g=new Date;g.setMonth(g.getMonth()+30);const q=y({widelyAvailableOnDate:g.toISOString().slice(0,10),suppressWarnings:r.suppressWarnings}),m={};q.forEach(n=>{m[n.browser]=n});const h=y({targetYear:2002,listAllCompatibleVersions:!0,suppressWarnings:r.suppressWarnings}),_=[];if(c.map(n=>n.longName).forEach(a=>{var e,u,s,o;let f=h.filter(n=>n.browser==a).sort((a,e)=>n(a.version,e.version)),i=null!==(u=null===(e=d[a])||void 0===e?void 0:e.version)&&void 0!==u?u:"0",c=null!==(o=null===(s=m[a])||void 0===s?void 0:s.version)&&void 0!==o?o:"0";b.forEach(e=>{var u;if(v[e]){let s=(null!==(u=v[e][a])&&void 0!==u?u:{version:"0"}).version,o=f.findIndex(a=>0===n(a.version,s));(e===t-1?f:f.slice(0,o)).forEach(a=>{let u=n(a.version,i)>=0,s=n(a.version,c)>=0,o=Object.assign(Object.assign({},a),{year:e<=2015?"pre_baseline":e-1});r.useSupports?(u&&(o.supports="widely"),s&&(o.supports="newly")):o=Object.assign(Object.assign({},o),{wa_compatible:u}),_.push(o)}),f=f.slice(o,f.length)}})}),r.includeDownstreamBrowsers){y({targetYear:2002,listAllCompatibleVersions:!0,includeDownstreamBrowsers:!0,includeKaiOS:r.includeKaiOS,suppressWarnings:r.suppressWarnings}).filter(n=>!c.map(n=>n.longName).includes(n.browser)).forEach(n=>{const a="Gecko"===n.engine?"firefox":"chrome";let e=_.find(e=>e.browser===a&&e.version===n.engine_version);e&&(r.useSupports?_.push(Object.assign(Object.assign({},n),{year:e.year,supports:e.supports})):_.push(Object.assign(Object.assign({},n),{year:e.year,wa_compatible:e.wa_compatible})))})}if(_.sort((a,e)=>{if("pre_baseline"===a.year&&"pre_baseline"!==e.year)return-1;if("pre_baseline"===e.year&&"pre_baseline"!==a.year)return 1;if("pre_baseline"!==a.year&&"pre_baseline"!==e.year){if(a.yeare.year)return 1}return a.browsere.browser?1:n(a.version,e.version)}),"object"===r.outputFormat){const n={};return _.forEach(a=>{n[a.browser]||(n[a.browser]={});let e={year:a.year,release_date:a.release_date,engine:a.engine,engine_version:a.engine_version};n[a.browser][a.version]=r.useSupports?a.supports?Object.assign(Object.assign({},e),{supports:a.supports}):e:Object.assign(Object.assign({},e),{wa_compatible:a.wa_compatible})}),null!=n?n:{}}if("csv"===r.outputFormat){let n=`"browser","version","year","${r.useSupports?"supports":"wa_compatible"}","release_date","engine","engine_version"`;return _.forEach(a=>{var e,u,s,o;let f={browser:a.browser,version:a.version,year:a.year,release_date:null!==(e=a.release_date)&&void 0!==e?e:"NULL",engine:null!==(u=a.engine)&&void 0!==u?u:"NULL",engine_version:null!==(s=a.engine_version)&&void 0!==s?s:"NULL"};f=r.useSupports?Object.assign(Object.assign({},f),{supports:null!==(o=a.supports)&&void 0!==o?o:""}):Object.assign(Object.assign({},f),{wa_compatible:a.wa_compatible}),n+=`\n"${f.browser}","${f.version}","${f.year}","${r.useSupports?f.supports:f.wa_compatible}","${f.release_date}","${f.engine}","${f.engine_version}"`}),n}return _},exports.getCompatibleVersions=y,exports.getTimeline=function(n){var e,s,o,f;const i=null!=n?n:{},r=null!==(e=i.groupBy)&&void 0!==e?e:"date",t=null!==(s=i.listAllBrowsers)&&void 0!==s&&s,l=null!==(o=i.includeDownstreamBrowsers)&&void 0!==o&&o,w=null!==(f=i.includeKaiOS)&&void 0!==f&&f;if(!1===l&&!0===w)throw new Error("KaiOS is a downstream browser and can only be included if you include other downstream browsers. Please ensure you use `includeDownstreamBrowsers: true`.");const y={},p=[];if(Object.keys(u).forEach(n=>{const e=u[n];if("pre_baseline"===n)return;const s=new Set;e.forEach(n=>{const a=n[0],e=y[a],u=n[1];e&&e[1]===u||s.add(a),y[a]=n});const o=[];if(Object.keys(a).forEach(n=>{const{longName:e}=a[n];if(!w&&"k"===n)return;const u=c.some(a=>a.shortName===n);if(!l&&!u)return;const f=s.has(n);if(t||f){const a=y[n];a&&o.push(v(n,e,a[1],a[2],a[3]))}}),o.length>0){const a=b(o);p.push({date:n,browsers:a})}}),"browser"===r){const n={};return Object.keys(a).forEach(e=>{const{longName:u}=a[e];if(!w&&"k"===e)return;const s=c.some(n=>n.shortName===e);(l||s)&&(n[u]=[])}),p.forEach(a=>{a.browsers.forEach(e=>{const{browser:u}=e,s=function(n,a){var e={};for(var u in n)Object.prototype.hasOwnProperty.call(n,u)&&a.indexOf(u)<0&&(e[u]=n[u]);if(null!=n&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(u=Object.getOwnPropertySymbols(n);s{if(n===a)return 0;const[e=0,u=0]=n.split(".",2).map(Number),[s=0,o=0]=a.split(".",2).map(Number);if(isNaN(e)||isNaN(u))throw new Error(`Invalid version: ${n}`);if(isNaN(s)||isNaN(o))throw new Error(`Invalid version: ${a}`);return e!==s?e>s?1:-1:u!==o?u>o?1:-1:0},a={c:{longName:"chrome"},ca:{longName:"chrome_android"},e:{longName:"edge"},f:{longName:"firefox"},fa:{longName:"firefox_android"},s:{longName:"safari"},si:{longName:"safari_ios"},o:{longName:"opera",engine:"Blink"},oa:{longName:"opera_android",engine:"Blink"},sa:{longName:"samsunginternet_android",engine:"Blink"},wva:{longName:"webview_android",engine:"Blink"},y:{longName:"ya_android",engine:"Blink"},u:{longName:"uc_android",engine:"Blink"},q:{longName:"qq_android",engine:"Blink"},k:{longName:"kai_os",engine:"Gecko"},fb:{longName:"facebook_android",engine:"Blink"},ia:{longName:"instagram_android",engine:"Blink"}},e=n=>6===n.length&&/^\d{6}$/.test(n)?`20${n.slice(0,2)}-${n.slice(2,4)}-${n.slice(4,6)}`:8===n.length&&/^\d{8}$/.test(n)?`${n.slice(0,4)}-${n.slice(4,6)}-${n.slice(6,8)}`:n,u={},s={};let o="",f=!1;"pre_baseline\nc,1,081211\nc,2,090521\nc,3,090915\nc,4,100125\nc,5,100525\nc,6,100902\nc,7,101019\nc,8,101202\nc,9,110203\nc,10,110308\nc,11,110427\nc,12,110607\nc,13,110802\nc,14,110916\nc,15,111025\nc,16,111213\nc,17,120208\nc,18,120328\nc,19,120515\nc,20,120626\nc,21,120731\nc,22,120925\nc,23,121106\nc,24,130110\nc,25,130221\nc,26,130326\nc,27,130521\nc,28,130709\nc,29,130820\nc,30,131001\nc,31,131112\nc,32,140114\nc,33,140220\nc,34,140408\nc,35,140520\nc,36,140716\nc,37,140826\nc,38,141007\nc,39,141118\nc,40,150121\nc,41,150303\nc,42,150414\nc,43,150519\nc,44,150721\nca,18,120627\nca,25,130227\nca,26,130403\nca,27,130522\nca,28,130710\nca,29,130821\nca,30,131002\nca,31,131114\nca,32,140115\nca,33,140226\nca,34,140402\nca,35,140520\nca,36,140716\nca,37,140903\nca,38,141008\nca,39,141112\nca,40,150121\nca,41,150311\nca,42,150415\nca,43,150527\nf,1,041109\nf,1.5,051129\nf,2,061024\nf,3,080617\nf,3.5,090630\nf,3.6,100121\nf,4,110322\nf,5,110621\nf,6,110816\nf,7,110927\nf,8,111108\nf,9,111220\nf,10,120131\nf,11,120313\nf,12,120424\nf,13,120605\nf,14,120717\nf,15,120828\nf,16,121009\nf,17,121120\nf,18,130108\nf,19,130219\nf,20,130402\nf,21,130514\nf,22,130625\nf,23,130806\nf,24,130917\nf,25,131029\nf,26,131210\nf,27,140204\nf,28,140318\nf,29,140429\nf,30,140610\nf,31,140722\nf,32,140902\nf,33,141014\nf,34,141201\nf,35,150113\nf,36,150224\nf,37,150331\nf,38,150512\nf,39,150702\nfa,4,110329\nfa,5,110621\nfa,6,110816\nfa,7,110927\nfa,8,111108\nfa,9,111221\nfa,10,120131\nfa,14,120626\nfa,15,120828\nfa,16,121009\nfa,17,121120\nfa,18,130108\nfa,19,130219\nfa,20,130402\nfa,21,130514\nfa,22,130625\nfa,23,130806\nfa,24,130917\nfa,25,131029\nfa,26,131210\nfa,27,140204\nfa,28,140318\nfa,29,140429\nfa,30,140610\nfa,31,140722\nfa,32,140902\nfa,33,141014\nfa,34,141201\nfa,35,150113\nfa,36,150227\nfa,37,150331\nfa,38,150512\nfa,39,150702\ns,1,030623\ns,1.1,031024\ns,1.2,040202\ns,1.3,050415\ns,2,050429\ns,3,071026\ns,3.1,080318\ns,4,090608\ns,5,100607\ns,5.1,110720\ns,6,120725\ns,7,131022\ns,8,141016\nsi,1,070629\nsi,2,080711\nsi,3,090617\nsi,3.2,100403\nsi,4,100621\nsi,4.2,101122\nsi,5,111012\nsi,6,120910\nsi,7,130918\nsi,8,140917\n20150729\nc,38,141007\nca,38,141008\ne,12,150729\nf,38,150512\nfa,38,150512\ns,11,170919\nsi,11,170919\no,25,141015,38\noa,25,141016,38\nsa,3.0,150410,38\nwva,38,141008,38\ny,14.12,u,38\nu,11.1,u,40\nq,8.1,u,57\nk,2.0,170701,48\nfb,66,u,48\nia,23,u,62\n20150922\nf,41,150922\nfa,41,150922\n20150930\nc,44,150721\nca,44,150729\no,31,150804,44\noa,32,150923,45\nsa,4.0,160311,44\nwva,44,150729,44\ny,15.9,u,44\nu,11.6,u,57\n20151112\ne,13,151112\n20151231\nc,44,150721\nca,44,150729\ne,13,151112\nf,41,150922\nfa,41,150922\ns,11,170919\nsi,11,170919\no,31,150804,44\noa,32,150923,45\nsa,4.0,160311,44\nwva,44,150729,44\ny,15.9,u,44\nu,11.6,u,57\nq,8.1,u,57\nk,2.0,170701,48\nfb,66,u,48\nia,23,u,62\n20160308\nf,45,160308\nfa,45,160308\n20160607\nf,47,160607\nfa,47,160607\n20160802\ne,14,160802\n20160907\nc,53,160831\nca,53,160907\no,40,160920,53\noa,41,161025,54\nsa,6.0,170823,56\nwva,53,160907,53\ny,16.10,u,53\nfb,95,u,53\n20160920\nf,49,160920\nfa,49,160920\nk,3.0,210901,84\n20161231\nc,53,160831\nca,53,160907\ne,14,160802\nf,49,160920\nfa,49,160920\ns,11,170919\nsi,11,170919\no,40,160920,53\noa,41,161025,54\nsa,6.0,170823,56\nwva,53,160907,53\ny,16.10,u,53\nu,11.6,u,57\nq,8.1,u,57\nk,3.0,210901,84\nfb,95,u,53\nia,23,u,62\n20170201\nc,56,170125\nca,56,170201\nf,50,161115\nfa,50,161115\no,43,170207,56\noa,43,170927,59\nwva,56,170201,56\ny,17.3,u,56\nfb,112,u,56\n20170307\nf,52,170307\nfa,52,170307\n20170316\nca,57,170316\n20170405\nc,57,170309\ne,15,170405\no,44,170321,57\nsa,7.0,180316,59\nwva,57,170316,57\ny,17.4,u,57\nfb,117,u,57\n20170419\nf,53,170419\nfa,53,170419\n20170928\nfa,56,170928\n20171017\ne,16,171017\n20171024\nc,62,171017\nca,62,171024\no,49,171108,62\noa,46,180514,63\nsa,8.0,180718,63\nwva,62,171024,62\ny,17.11,u,62\nu,13.3,200909,78\nq,9.6,u,66\nfb,149,u,62\n20171128\nfa,57,171128\n20171231\nc,62,171017\nca,62,171024\ne,16,171017\nf,53,170419\nfa,57,171128\ns,11,170919\nsi,11,170919\no,49,171108,62\noa,46,180514,63\nsa,8.0,180718,63\nwva,62,171024,62\ny,17.11,u,62\nu,13.3,200909,78\nq,9.6,u,66\nk,3.0,210901,84\nfb,149,u,62\nia,23,u,62\n20180412\ns,11.1,180412\nsi,11.3,180329\n20180430\ne,17,180430\n20180509\nc,66,180417\nca,66,180417\nf,60,180509\nfa,60,180509\no,53,180510,66\noa,47,180723,66\nsa,9.0,180915,67\nwva,66,180417,66\ny,18.6,u,66\nfb,169,u,66\nia,42,u,66\n20180905\nf,62,180905\nfa,62,180905\n20181002\ne,18,181002\n20181023\nf,63,181023\nfa,63,181023\n20181211\nf,64,181211\nfa,64,181211\n20181231\nc,66,180417\nca,66,180417\ne,18,181002\nf,64,181211\nfa,64,181211\ns,11.1,180412\nsi,11.3,180329\no,53,180510,66\noa,47,180723,66\nsa,9.0,180915,67\nwva,66,180417,66\ny,18.6,u,66\nu,13.3,200909,78\nq,9.6,u,66\nk,3.0,210901,84\nfb,169,u,66\nia,42,u,66\n20190129\nf,65,190129\nfa,65,190129\n20190325\ns,12.1,190325\nsi,12.2,190325\n20190919\ns,13,190919\nsi,13,190919\n20191231\nc,66,180417\nca,66,180417\ne,18,181002\nf,65,190129\nfa,65,190129\ns,13,190919\nsi,13,190919\no,53,180510,66\noa,47,180723,66\nsa,9.0,180915,67\nwva,66,180417,66\ny,18.6,u,66\nu,13.3,200909,78\nq,9.6,u,66\nk,3.0,210901,84\nfb,169,u,66\nia,42,u,66\n20200115\nc,76,190730\nca,76,190730\ne,79,200115\nf,68,190709\nfa,68,190709\no,63,190820,76\noa,54,191018,76\nsa,12.0,200619,79\nwva,76,190730,76\ny,19.9,u,76\nq,10.9,201122,77\nfb,233,u,76\nia,96,u,80\n20200204\nc,80,200204\nca,80,200204\no,67,200303,80\noa,57,200330,80\nsa,13.0,201202,83\nwva,80,200204,80\ny,20.3,u,80\nu,15.3,230317,100\nq,11.7,211102,89\nfb,256,u,80\n20200207\ne,80,200207\n20200324\ns,13.1,200324\nsi,13.4,200324\n20200413\nc,81,200407\nca,81,200407\ne,81,200413\no,68,200422,81\noa,58,200513,81\nwva,81,200407,81\ny,20.4,u,81\nfb,266,u,81\nia,137,u,81\n20200727\nc,84,200727\nca,84,200727\ne,84,200716\no,70,200727,84\noa,60,200923,85\nsa,14.0,210417,87\nwva,84,200727,84\ny,20.8,200902,84\nfb,297,201202,86\nia,153,u,84\n20200728\nf,78,200630\nfa,79,200728\n20200827\nc,85,200825\nca,85,200825\ne,85,200827\no,71,200915,85\nwva,85,200825,85\ny,20.9,200927,85\nia,163,u,92\n20200916\nf,79,200728\ns,14,200916\nsi,14,200916\n20201020\nc,86,201020\nca,86,201020\ne,86,201009\no,72,201021,86\noa,61,201207,86\nwva,86,201020,86\ny,20.11,201111,86\n20201117\nf,83,201117\nfa,83,201117\n20201119\nc,87,201117\nca,87,201117\ne,87,201119\no,73,201209,87\noa,62,210216,87\nwva,87,201117,87\ny,20.12,201220,87\nfb,348,211219,96\n20201231\nc,87,201117\nca,87,201117\ne,87,201119\nf,83,201117\nfa,83,201117\ns,14,200916\nsi,14,200916\no,73,201209,87\noa,62,210216,87\nsa,14.0,210417,87\nwva,87,201117,87\ny,20.12,201220,87\nu,15.3,230317,100\nq,11.7,211102,89\nk,3.0,210901,84\nfb,348,211219,96\nia,163,u,92\n20210121\nc,88,210119\nca,88,210119\ne,88,210121\nf,84,201215\nfa,84,201215\no,74,210202,88\noa,63,210416,89\nsa,15.0,210813,90\nwva,88,210119,88\ny,21.1,211231,88\n20210126\nf,85,210126\nfa,85,210126\nk,4.0,250501,123\n20210426\nc,89,210302\nca,89,210302\ne,89,210304\nf,86,210223\nfa,86,210223\ns,14.1,210426\nsi,14.5,210426\no,75,210324,89\nwva,89,210302,89\ny,21.3,210404,89\n20210810\nf,91,210810\nfa,91,210810\n20210902\ne,93,210902\n20210907\nf,92,210907\nfa,92,210907\n20210920\nc,93,210831\nca,93,210831\ns,15,210920\nsi,15,210920\no,79,210914,93\noa,66,211215,94\nsa,17.0,220504,96\nwva,93,210831,93\ny,21.9,210929,93\nq,13.4,230426,98\nia,258,221104,106\n20211005\nf,93,211005\nfa,93,211005\n20211025\ns,15.1,211025\nsi,15.1,211025\n20211102\nf,94,211102\nfa,94,211102\n20211119\nc,96,211115\nca,96,211115\ne,96,211119\no,82,211202,96\noa,67,220131,96\nwva,96,211115,96\ny,22.1,211231,96\n20211207\nf,95,211207\n20211213\ns,15.2,211213\nsi,15.2,211213\n20211231\nc,96,211115\nca,96,211115\ne,96,211119\nf,95,211207\nfa,94,211102\ns,15.2,211213\nsi,15.2,211213\no,82,211202,96\noa,67,220131,96\nsa,17.0,220504,96\nwva,96,211115,96\ny,22.1,211231,96\nu,15.3,230317,100\nq,13.4,230426,98\nk,4.0,250501,123\nfb,348,211219,96\nia,258,221104,106\n20220106\nc,97,220104\nca,97,220104\ne,97,220106\no,83,220119,97\noa,68,220330,99\nsa,18.0,220808,99\nwva,97,220104,97\ny,22.3,220325,98\nfb,399,230204,109\n20220203\nc,98,220201\nca,98,220201\ne,98,220203\nf,96,220111\nfa,96,220111\no,84,220216,98\nwva,98,220201,98\n20220303\nc,99,220301\nca,99,220301\ne,99,220303\no,85,220323,99\nwva,99,220301,99\ny,22.5,220520,100\nq,14.2,231014,109\n20220314\nf,98,220308\nfa,98,220308\ns,15.4,220314\nsi,15.4,220314\n20220428\nc,101,220426\nca,101,220426\ne,101,220428\no,87,220517,101\noa,70,220629,102\nsa,19.0,221101,102\nwva,101,220426,101\ny,22.7,220707,102\nu,17.6,250515,123\n20220503\nf,100,220503\nfa,100,220503\n20220531\nf,101,220531\nfa,101,220531\n20220628\nf,102,220628\nfa,102,220628\n20220726\nf,103,220726\nfa,103,220726\n20220805\nc,104,220802\nca,104,220802\ne,104,220805\no,90,220818,104\noa,71,220916,104\nsa,20.0,230210,106\nwva,104,220802,104\ny,22.8,u,104\n20220823\nf,104,220823\nfa,104,220823\n20220902\nc,105,220902\nca,105,220902\ne,105,220901\ns,15.6,220720\nsi,15.6,220720\no,91,220914,105\noa,72,221021,106\nwva,105,220902,105\ny,22.11,221111,106\n20220912\ns,16,220912\nsi,16,220912\n20221003\nc,106,220927\nca,106,220927\ne,106,221003\no,92,221019,106\nwva,106,220927,106\n20221027\nc,107,221025\nca,107,221025\ne,107,221027\no,93,221117,107\noa,73,230117,108\nsa,21.0,230519,110\nwva,107,221025,107\ny,23.1,230110,108\nia,279,231231,109\n20221115\nf,107,221115\nfa,107,221115\n20221205\nc,108,221129\nca,108,221129\ne,108,221205\no,94,221215,108\nwva,108,221129,108\n20221213\nf,108,221213\nfa,108,221213\n20221231\nc,108,221129\nca,108,221129\ne,108,221205\nf,108,221213\nfa,108,221213\ns,16,220912\nsi,16,220912\no,94,221215,108\noa,73,230117,108\nsa,21.0,230519,110\nwva,108,221129,108\ny,23.1,230110,108\nu,17.6,250515,123\nq,14.2,231014,109\nk,4.0,250501,123\nfb,399,230204,109\nia,279,231231,109\n20230112\nc,109,230110\nca,109,230110\ne,109,230112\no,95,230201,109\noa,74,230313,110\nwva,109,230110,109\ny,23.3,230326,110\n20230214\nf,110,230214\nfa,110,230214\n20230313\nc,111,230307\nca,111,230307\ne,111,230313\no,97,230322,111\noa,75,230517,112\nsa,22.0,230714,111\nwva,111,230301,111\ny,23.5,230519,112\nq,19.1,250708,121\nfb,420,230628,114\nia,288,u,114\n20230314\nf,111,230314\nfa,111,230314\n20230327\ns,16.4,230327\nsi,16.4,230327\n20230411\nf,112,230411\nfa,112,230411\n20230509\nf,113,230509\nfa,113,230509\n20230606\nf,114,230606\nfa,114,230606\n20230704\nc,112,230404\nca,112,230404\ne,112,230406\nf,115,230704\nfa,115,230704\no,98,230420,112\nsa,23.0,231018,115\nwva,112,230404,112\n20230721\nc,115,230718\nca,115,230721\ne,115,230721\no,101,230726,115\noa,77,230831,115\nwva,115,230721,115\ny,23.9,230913,116\nfb,430,230903,116\nia,292,u,115\n20230801\nf,116,230801\nfa,116,230801\n20230915\nc,117,230912\nca,117,230912\ne,117,230915\no,103,231003,117\noa,78,231023,117\nsa,24.0,240125,117\nwva,117,230912,117\ny,23.11,231115,118\nfb,434,231005,117\nia,302,u,117\n20230918\ns,17,230918\nsi,17,230918\n20231013\nc,118,231010\nca,118,231010\ne,118,231013\nf,118,230926\nfa,118,230926\no,104,231023,118\noa,79,231206,119\nsa,25.0,240424,121\nwva,118,231010,118\nfb,437,u,118\nia,306,240117,118\n20231024\nf,119,231024\nfa,119,231024\n20231102\nc,119,231031\nca,119,231031\ne,119,231102\no,105,231114,119\nwva,119,231031,119\ny,24.1,240118,120\nfb,439,231111,119\nia,309,u,119\n20231121\nf,120,231121\nfa,120,231121\n20231205\nca,120,231205\n20231207\nc,120,231205\ne,120,231207\no,106,231219,120\noa,80,240125,120\nwva,120,231205,120\nfb,443,231207,120\nia,311,u,120\n20231211\ns,17.2,231211\nsi,17.2,231211\n20231219\nf,121,231219\nfa,121,231219\n20231231\nc,120,231205\nca,120,231205\ne,120,231207\nf,121,231219\nfa,121,231219\ns,17.2,231211\nsi,17.2,231211\no,106,231219,120\noa,80,240125,120\nsa,25.0,240424,121\nwva,120,231205,120\ny,24.1,240118,120\nu,17.6,250515,123\nq,19.1,250708,121\nk,4.0,250501,123\nfb,443,231207,120\nia,311,u,120\n20240123\nf,122,240123\nfa,122,240123\n20240125\nc,121,240123\nca,121,240123\ne,121,240125\no,107,240207,121\noa,81,240314,122\nwva,121,240123,121\ny,24.4,240327,122\nfb,448,240129,121\nia,317,240203,121\n20240220\nf,123,240220\nfa,123,240220\n20240305\ns,17.4,240305\nsi,17.4,240305\n20240319\nf,124,240319\nfa,124,240319\n20240322\nc,123,240319\nca,123,240319\ne,123,240322\no,109,240327,123\noa,82,240502,124\nsa,27.0,241106,125\nwva,123,240319,123\ny,24.6,240604,124\nfb,465,240707,126\nia,338,240706,126\n20240416\nf,125,240416\nfa,125,240416\n20240418\nc,124,240416\nca,124,240416\ne,124,240418\no,110,240514,124\nwva,124,240416,124\n20240513\ns,17.5,240513\nsi,17.5,240513\n20240514\nf,126,240514\nfa,126,240514\n20240517\nc,125,240514\nca,125,240514\ne,125,240517\no,111,240612,125\noa,83,240625,126\nwva,125,240514,125\ny,24.7,240718,126\n20240611\nf,127,240611\nfa,127,240611\n20240709\nf,128,240709\nfa,128,240709\n20240725\nc,127,240723\nca,127,240723\ne,127,240725\no,113,240822,127\noa,84,240826,127\nsa,28.0,250402,130\nwva,127,240723,127\ny,24.10,241011,128\nfb,474,240730,127\nia,346,240901,127\n20240806\nf,129,240806\nfa,129,240806\n20240903\nf,130,240903\nfa,130,240903\n20240916\ns,18,240916\nsi,18,240916\n20241001\nf,131,241001\nfa,131,241001\n20241017\nc,130,241015\nca,130,241015\ne,130,241017\no,115,241127,130\noa,86,241202,130\nwva,130,241015,130\ny,24.12,241130,130\nfb,486,241018,130\nia,355,241106,130\n20241029\nf,132,241029\nfa,132,241029\n20241211\ns,18.2,241211\nsi,18.2,241211\n20241231\nc,130,241015\nca,130,241015\ne,130,241017\nf,132,241029\nfa,132,241029\ns,18.2,241211\nsi,18.2,241211\no,115,241127,130\noa,86,241202,130\nsa,28.0,250402,130\nwva,130,241015,130\ny,24.12,241130,130\nfb,486,241018,130\nia,355,241106,130\n20250107\nf,134,250107\nfa,134,250107\n20250127\nsi,18.3,250127\n20250304\nf,136,250304\nfa,136,250304\n20250331\ns,18.4,250331\nsi,18.4,250331\n20250401\nc,133,250204\nca,133,250204\ne,133,250206\nf,137,250401\nfa,137,250401\no,118,250415,133\noa,88,250319,134\nsa,29.0,251025,136\nwva,133,250204,133\ny,25.4,250423,134\nfb,503,250312,134\nia,378,250503,135\n20250404\nc,135,250401\nca,135,250401\ne,135,250404\no,120,250702,135\noa,89,250429,135\nwva,135,250401,135\ny,25.6,250904,136\nfb,514,250528,136\n20250429\nf,138,250429\nfa,138,250429\n20250501\nc,136,250429\nca,136,250429\ne,136,250501\no,121,250827,137\noa,90,250618,137\nwva,136,250429,136\nia,381,250619,137\n20250527\nf,139,250527\nfa,139,250527\n20250626\nc,138,250624\nca,138,250624\ne,138,250626\no,122,250911,138\noa,91,250819,139\nwva,138,250624,138\ny,25.8,250830,138\nia,390,250726,138\n20250819\nf,142,250819\nfa,142,250819\n20250905\nc,140,250902\nca,140,250902\ne,140,250905\no,124,251113,140\noa,92,251008,140\nwva,140,250902,140\ny,25.10,251009,140\nia,399,250928,140\n20250915\ns,26,250915\nsi,26,250915\n20250916\nf,143,250916\nfa,143,250916\n20251003\nc,141,250930\nca,141,250930\ne,141,251003\no,125,251204,141\noa,93,251125,142\nwva,141,250930,141\ny,25.12,251207,142\nia,400,251006,141\n20251014\nf,144,251014\nfa,144,251014\n20251111\nf,145,251111\nfa,145,251111\n20251212\nc,143,251202\nca,143,251202\ne,143,251205\nf,146,251209\nfa,146,251209\ns,26.2,251212\nsi,26.2,251212\no,127,260202,143\noa,94,260113,143\nwva,143,251202,143\ny,26.3,260304,144\nia,409,251216,143\n20251231\nc,143,251202\nca,143,251202\ne,143,251205\nf,146,251209\nfa,146,251209\ns,26.2,251212\nsi,26.2,251212\no,127,260202,143\noa,94,260113,143\nwva,143,251202,143\ny,26.3,260304,144\nia,409,251216,143\n20260113\nf,147,260113\nfa,147,260113\n20260211\ns,26.3,260211\nsi,26.3,260211\n20260214\nc,145,260210\nca,145,260210\ne,145,260214\no,129,260318,145\noa,96,260310,145\nwva,145,260210,145\ny,26.4,260425,146\nia,423,260405,146\n20260224\nf,148,260224\nfa,148,260224\n20260313\nc,146,260310\nca,146,260310\ne,146,260313\no,130,260408,146\noa,97,260416,146\nwva,146,260310,146\n20260324\nf,149,260324\nfa,149,260324\ns,26.4,260324\nsi,26.4,260324\n20260410\nc,147,260407\nca,147,260407\ne,147,260410\no,131,260429,147\noa,98,260505,147\nwva,147,260407,147\ny,26.6,260608,148\nia,430,260530,148\n20260505\nca,148,260505\n20260507\nc,148,260505\ne,148,260507\no,132,260528,148\noa,99,260610,148\nwva,148,260505,148\n20260511\ns,26.5,260511\nsi,26.5,260511\n20260519\nf,151,260519\nfa,151,260519\n20260616\nf,152,260616\nfa,152,260616\n20260721\nf,153,260721\nfa,153,260721\nreleases\nc,45,150901\nc,46,151013\nc,47,151201\nc,48,160120\nc,49,160302\nc,50,160413\nc,51,160525\nc,52,160720\nc,54,161012\nc,55,161201\nc,58,170419\nc,59,170605\nc,60,170725\nc,61,170905\nc,63,171206\nc,64,180123\nc,65,180306\nc,67,180529\nc,68,180724\nc,69,180904\nc,70,181016\nc,71,181204\nc,72,190129\nc,73,190312\nc,74,190423\nc,75,190604\nc,77,190910\nc,78,191022\nc,79,191210\nc,83,200519\nc,90,210413\nc,91,210525\nc,92,210720\nc,94,210921\nc,95,211019\nc,100,220329\nc,102,220524\nc,103,220621\nc,110,230207\nc,113,230502\nc,114,230530\nc,116,230815\nc,122,240220\nc,126,240611\nc,128,240820\nc,129,240917\nc,131,241112\nc,132,250114\nc,134,250304\nc,137,250527\nc,139,250805\nc,142,251028\nc,144,260113\nc,149,260602\nc,150,260630\nc,151,260728\nc,152,260825\nc,153,260908\nca,45,150901\nca,46,151014\nca,47,151202\nca,48,160126\nca,49,160309\nca,50,160413\nca,51,160608\nca,52,160727\nca,54,161019\nca,55,161206\nca,58,170425\nca,59,170606\nca,60,170801\nca,61,170905\nca,63,171205\nca,64,180123\nca,65,180306\nca,67,180531\nca,68,180724\nca,69,180904\nca,70,181017\nca,71,181204\nca,72,190129\nca,73,190312\nca,74,190424\nca,75,190604\nca,77,190910\nca,78,191022\nca,79,191217\nca,83,200519\nca,90,210413\nca,91,210525\nca,92,210720\nca,94,210921\nca,95,211019\nca,100,220329\nca,102,220524\nca,103,220621\nca,110,230207\nca,113,230502\nca,114,230530\nca,116,230815\nca,122,240220\nca,126,240611\nca,128,240820\nca,129,240917\nca,131,241112\nca,132,250114\nca,134,250304\nca,137,250527\nca,139,250805\nca,142,251028\nca,144,260113\nca,149,260602\nca,150,260630\nca,151,260728\nca,152,260825\nca,153,260908\ne,83,200521\ne,90,210415\ne,91,210527\ne,92,210722\ne,94,210924\ne,95,211021\ne,100,220401\ne,102,220531\ne,103,220623\ne,110,230209\ne,113,230505\ne,114,230602\ne,116,230821\ne,122,240223\ne,126,240613\ne,128,240822\ne,129,240919\ne,131,241114\ne,132,250117\ne,134,250306\ne,137,250529\ne,139,250807\ne,142,251031\ne,144,260121\ne,149,260604\ne,150,260702\ne,151,260731\ne,152,260827\ne,153,260910\nf,40,150811\nf,42,151103\nf,43,151215\nf,44,160126\nf,46,160426\nf,48,160802\nf,51,170124\nf,54,170613\nf,55,170808\nf,56,170928\nf,57,171114\nf,58,180123\nf,59,180313\nf,61,180626\nf,66,190319\nf,67,190521\nf,69,190903\nf,70,191022\nf,71,191210\nf,72,200107\nf,73,200211\nf,74,200310\nf,75,200407\nf,76,200505\nf,77,200602\nf,80,200825\nf,81,200922\nf,82,201020\nf,87,210323\nf,88,210419\nf,89,210601\nf,90,210713\nf,97,220208\nf,99,220405\nf,105,220920\nf,106,221018\nf,109,230117\nf,117,230829\nf,133,241126\nf,135,250204\nf,140,250624\nf,141,250722\nf,150,260421\nf,154,260818\nf,155,260901\nfa,40,150811\nfa,42,151103\nfa,43,151215\nfa,44,160126\nfa,46,160426\nfa,48,160802\nfa,51,170124\nfa,54,170613\nfa,55,170808\nfa,58,180122\nfa,59,180313\nfa,61,180626\nfa,66,190319\nfa,67,190521\nfa,80,200831\nfa,81,200922\nfa,82,201020\nfa,87,210323\nfa,88,210419\nfa,89,210601\nfa,90,210713\nfa,95,211207\nfa,97,220208\nfa,99,220405\nfa,105,220920\nfa,106,221018\nfa,109,230117\nfa,117,230829\nfa,133,241126\nfa,135,250204\nfa,140,250624\nfa,141,250722\nfa,150,260421\nfa,154,260818\nfa,155,260901\ns,9,150930\ns,9.1,160321\ns,10,160920\ns,10.1,170327\ns,12,180917\ns,15.3,220126\ns,15.5,220516\ns,16.1,221024\ns,16.2,221213\ns,16.3,230123\ns,16.5,230518\ns,16.6,230724\ns,17.1,231025\ns,17.3,240122\ns,17.6,240729\ns,18.1,241028\ns,18.3,250127\ns,18.5,250512\ns,18.6,250729\ns,26.1,251103\ns,26.6,260727\ns,27,u\nsi,9,150916\nsi,9.3,160321\nsi,10,160913\nsi,10.3,170327\nsi,12,180917\nsi,15.3,220126\nsi,15.5,220516\nsi,16.1,221024\nsi,16.2,221213\nsi,16.3,230123\nsi,16.5,230518\nsi,16.6,230724\nsi,17.1,231025\nsi,17.3,240122\nsi,17.6,240729\nsi,18.1,241028\nsi,18.5,250512\nsi,18.6,250729\nsi,26.1,251103\nsi,26.6,260727\nsi,27,u\no,15,130702,28\no,16,130827,29\no,17,131008,30\no,18,131119,31\no,19,140128,32\no,20,140304,33\no,21,140506,34\no,22,140603,35\no,23,140722,36\no,24,140902,37\no,26,141203,39\no,27,150127,40\no,28,150310,41\no,29,150428,42\no,30,150609,43\no,32,150915,45\no,33,151027,46\no,34,151208,47\no,35,160202,48\no,36,160315,49\no,37,160504,50\no,38,160608,51\no,39,160802,52\no,41,161025,54\no,42,161213,55\no,45,170510,58\no,46,170622,59\no,47,170809,60\no,48,170927,61\no,50,180104,63\no,51,180207,64\no,52,180322,65\no,54,180628,67\no,55,180816,68\no,56,180925,69\no,57,181128,70\no,58,190123,71\no,60,190409,73\no,62,190627,75\no,64,191007,77\no,65,191113,78\no,66,200107,79\no,69,200624,83\no,76,210428,90\no,77,210609,91\no,78,210803,92\no,80,211005,94\no,81,211104,95\no,86,220420,100\no,88,220608,102\no,89,220707,103\no,96,230222,110\no,99,230516,113\no,100,230629,114\no,102,230823,116\no,108,240305,122\no,112,240711,126\no,114,240925,128\no,116,250108,131\no,117,250213,132\no,119,250513,134\no,123,251028,139\no,126,260108,142\no,128,260226,144\no,133,260629,149\no,134,u,150\no,135,u,151\noa,15,130708,28\noa,16,130918,29\noa,18,131120,31\noa,19,140128,32\noa,20,140306,33\noa,21,140422,34\noa,22,140617,35\noa,24,140910,37\noa,26,141202,39\noa,27,150129,40\noa,28,150310,41\noa,29,150428,42\noa,30,150610,43\noa,33,151103,46\noa,34,151216,47\noa,35,160204,48\noa,36,160331,49\noa,37,160616,50\noa,42,170121,55\noa,44,171211,60\noa,45,180215,61\noa,48,181108,69\noa,49,181207,70\noa,50,190218,71\noa,51,190321,72\noa,52,190517,73\noa,53,190711,74\noa,55,191203,77\noa,56,200206,78\noa,59,200630,83\noa,64,210525,91\noa,65,211020,92\noa,69,220509,100\noa,76,230626,114\noa,85,241029,128\noa,87,250122,132\noa,95,260211,144\noa,100,260701,149\nsa,1.5,130925,28\nsa,1.6,140411,28\nsa,2.0,141017,34\nsa,2.1,150107,34\nsa,3.2,150824,38\nsa,4.2,160802,44\nsa,5.0,161215,51\nsa,5.2,170421,51\nsa,5.4,170517,51\nsa,6.2,171026,56\nsa,6.4,180219,56\nsa,7.2,180620,59\nsa,7.4,180912,59\nsa,8.2,181221,63\nsa,9.2,190402,67\nsa,9.4,190725,67\nsa,10.0,190822,71\nsa,10.2,191009,71\nsa,11.0,191205,75\nsa,11.2,200322,75\nsa,12.1,200707,79\nsa,13.2,210120,83\nsa,14.2,210625,87\nsa,16.0,211125,92\nsa,16.2,220306,92\nsa,18.1,220909,99\nsa,19.1,221108,102\nsa,26.0,240607,122\nwva,4.4,131209,30\nwva,4.4.3,140602,33\nwva,37,140903,37\nwva,39,141112,39\nwva,40,150121,40\nwva,41,150311,41\nwva,42,150415,42\nwva,43,150527,43\nwva,45,150901,45\nwva,46,151014,46\nwva,47,151202,47\nwva,48,160126,48\nwva,49,160309,49\nwva,50,160413,50\nwva,51,160608,51\nwva,52,160727,52\nwva,54,161019,54\nwva,55,161206,55\nwva,58,170425,58\nwva,59,170606,59\nwva,60,170801,60\nwva,61,170905,61\nwva,63,171205,63\nwva,64,180123,64\nwva,65,180306,65\nwva,67,180531,67\nwva,68,180724,68\nwva,69,180904,69\nwva,70,181017,70\nwva,71,181204,71\nwva,72,190129,72\nwva,73,190312,73\nwva,74,190424,74\nwva,75,190604,75\nwva,77,190910,77\nwva,78,191022,78\nwva,79,191217,79\nwva,83,200519,83\nwva,90,210413,90\nwva,91,210525,91\nwva,92,210720,92\nwva,94,210921,94\nwva,95,211019,95\nwva,100,220329,100\nwva,102,220524,102\nwva,103,220621,103\nwva,110,230207,110\nwva,113,230502,113\nwva,114,230530,114\nwva,116,230815,116\nwva,122,240220,122\nwva,126,240611,126\nwva,128,240820,128\nwva,129,240917,129\nwva,131,241112,131\nwva,132,250114,132\nwva,134,250304,134\nwva,137,250527,137\nwva,139,250805,139\nwva,142,251028,142\nwva,144,260113,144\nwva,149,260602,149\nwva,150,260630,150\nwva,151,260728,151\nwva,152,260825,152\nwva,153,260908,153\ny,1.0,u,25\ny,1.5,u,22\ny,1.6,u,25\ny,1.7,u,25\ny,1.20,u,25\ny,2.5,u,25\ny,3.2,u,25\ny,4.6,u,25\ny,5.3,u,25\ny,5.4,u,25\ny,7.4,u,25\ny,9.6,u,25\ny,10.5,u,25\ny,11.4,u,25\ny,11.5,u,25\ny,12.7,u,25\ny,13.9,u,28\ny,13.10,u,28\ny,13.11,u,28\ny,13.12,u,30\ny,14.2,u,32\ny,14.4,u,33\ny,14.5,u,34\ny,14.7,u,35\ny,14.8,u,36\ny,14.10,u,37\ny,15.2,u,40\ny,15.4,u,41\ny,15.6,u,42\ny,15.7,u,43\ny,15.10,u,45\ny,15.12,u,46\ny,16.2,u,47\ny,16.3,u,47\ny,16.4,u,49\ny,16.6,u,50\ny,16.7,u,51\ny,16.9,u,52\ny,16.11,u,54\ny,17.1,u,55\ny,17.6,u,58\ny,17.7,u,59\ny,17.9,u,60\ny,17.10,u,61\ny,18.1,u,63\ny,18.2,u,63\ny,18.3,u,64\ny,18.4,u,65\ny,18.7,u,67\ny,18.9,u,68\ny,18.10,u,69\ny,18.11,u,70\ny,19.1,u,71\ny,19.3,u,72\ny,19.4,u,73\ny,19.5,u,75\ny,19.6,u,75\ny,19.7,u,75\ny,19.10,u,77\ny,19.11,u,78\ny,19.12,u,78\ny,20.2,u,79\ny,20.6,u,81\ny,20.7,u,83\ny,21.2,u,88\ny,21.5,u,90\ny,21.6,210928,91\ny,21.8,210928,92\ny,21.11,211029,94\ny,22.4,u,92\ny,22.9,220827,104\ny,23.7,230706,114\ny,24.2,240325,120\ny,24.9,241001,126\ny,25.2,250424,132\ny,25.3,250423,132\ny,26.7,260723,149\ny,26.8,260801,150\nu,10.5,u,31\nu,10.7,u,31\nu,10.8,u,31\nu,10.10,u,31\nu,11.0,u,31\nu,11.2,u,40\nu,11.3,u,40\nu,11.4,u,40\nu,11.5,u,40\nu,11.8,u,57\nu,11.9,u,57\nu,12.0,u,57\nu,12.1,u,57\nu,12.2,u,57\nu,12.3,u,57\nu,12.4,u,57\nu,12.5,u,57\nu,12.6,u,57\nu,12.7,u,57\nu,12.8,u,57\nu,12.9,u,57\nu,12.10,u,57\nu,12.11,u,57\nu,12.12,u,57\nu,12.13,u,57\nu,12.14,u,57\nu,13.0,u,57\nu,13.1,u,57\nu,13.2,u,57\nu,13.4,210928,78\nu,13.5,230825,78\nu,13.6,231217,78\nu,13.7,230624,78\nu,13.8,220430,78\nu,13.9,220518,78\nu,15.0,220824,78\nu,15.1,221111,78\nu,15.2,230423,78\nu,15.4,231025,100\nu,15.5,230822,100\nu,16.0,230824,100\nu,16.1,231015,100\nu,16.2,231209,100\nu,16.3,240308,100\nu,16.4,241003,100\nu,16.5,240530,100\nu,16.6,240723,100\nu,17.0,240824,100\nu,17.1,240926,100\nu,17.2,241129,100\nu,17.3,250107,100\nu,17.4,250226,100\nu,17.5,250408,100\nu,17.7,250611,123\nu,17.8,250730,123\nu,18.0,250817,123\nu,18.1,251004,123\nu,18.2,251104,123\nu,18.3,251212,123\nu,18.4,260109,123\nu,18.5,260128,123\nu,18.6,260321,123\nu,18.8,260503,123\nu,18.9,260702,123\nq,6.0,u,37\nq,6.1,u,37\nq,6.2,u,37\nq,6.3,u,37\nq,6.4,u,37\nq,6.6,u,37\nq,6.7,u,37\nq,6.8,u,37\nq,6.9,u,37\nq,7.0,u,37\nq,7.1,u,37\nq,7.2,u,37\nq,7.3,u,37\nq,7.4,u,37\nq,7.5,u,37\nq,7.6,u,37\nq,7.7,u,37\nq,7.8,u,37\nq,7.9,u,37\nq,8.0,u,37\nq,8.2,u,57\nq,8.3,u,57\nq,8.4,u,57\nq,8.5,u,57\nq,8.6,u,57\nq,8.7,u,57\nq,8.8,u,57\nq,8.9,u,57\nq,9.1,u,57\nq,9.7,u,66\nq,9.8,u,66\nq,10.0,u,66\nq,10.1,u,66\nq,10.2,u,66\nq,10.3,u,66\nq,10.4,u,66\nq,10.5,u,66\nq,10.7,200909,66\nq,11.0,u,77\nq,11.2,210130,77\nq,11.3,210331,77\nq,11.9,u,89\nq,12.0,211104,89\nq,12.1,211105,89\nq,12.2,211207,89\nq,12.5,220407,89\nq,12.7,220521,89\nq,12.8,220630,89\nq,12.9,220726,89\nq,13.0,220815,89\nq,13.1,220910,89\nq,13.2,221026,89\nq,13.3,221109,89\nq,13.5,230206,98\nq,13.6,230209,98\nq,13.7,230421,98\nq,13.8,230421,98\nq,14.0,231212,98\nq,14.1,230716,98\nq,14.3,230913,109\nq,14.4,231031,109\nq,14.5,231112,109\nq,14.6,231224,109\nq,14.7,240118,109\nq,14.8,240304,109\nq,14.9,240409,109\nq,15.0,240417,109\nq,15.1,240518,109\nq,15.2,241024,109\nq,15.3,240728,109\nq,15.4,240907,109\nq,15.5,240924,109\nq,15.6,241024,109\nq,15.7,241203,109\nq,15.8,241211,109\nq,15.9,250201,109\nq,19.2,250715,121\nq,19.3,250831,121\nq,19.4,250920,121\nq,19.5,251023,121\nq,19.6,251117,121\nq,19.7,251218,121\nq,19.8,260120,121\nq,19.9,260309,121\nq,20.0,260406,121\nq,20.1,260430,121\nq,20.2,260610,121\nq,20.3,260617,121\nq,20.4,260728,121\nk,1.0,170301,37\nk,2.5,170701,48\nk,3.1,220301,84\nfb,68,u,48\nfb,74,u,50\nfb,75,u,50\nfb,76,u,50\nfb,77,u,50\nfb,78,u,50\nfb,79,u,50\nfb,80,u,51\nfb,81,u,51\nfb,82,u,51\nfb,83,u,51\nfb,84,u,51\nfb,86,u,51\nfb,87,u,52\nfb,88,u,52\nfb,89,u,52\nfb,90,u,52\nfb,91,u,52\nfb,92,u,52\nfb,93,u,52\nfb,94,u,52\nfb,96,u,53\nfb,97,u,53\nfb,98,u,53\nfb,99,u,53\nfb,100,u,54\nfb,101,u,54\nfb,103,u,54\nfb,104,u,54\nfb,105,u,54\nfb,106,u,55\nfb,107,u,55\nfb,108,u,55\nfb,109,u,55\nfb,110,u,55\nfb,111,u,55\nfb,113,u,56\nfb,114,u,56\nfb,115,u,56\nfb,116,u,56\nfb,118,u,57\nfb,119,u,57\nfb,120,u,57\nfb,121,u,57\nfb,122,u,58\nfb,123,u,58\nfb,124,u,58\nfb,125,u,58\nfb,126,u,58\nfb,127,u,58\nfb,128,u,58\nfb,129,u,58\nfb,130,u,59\nfb,131,u,59\nfb,132,u,59\nfb,133,u,59\nfb,134,u,59\nfb,135,u,59\nfb,136,u,59\nfb,137,u,59\nfb,138,u,60\nfb,140,u,60\nfb,142,u,61\nfb,143,u,61\nfb,144,u,61\nfb,145,u,61\nfb,146,u,61\nfb,147,u,61\nfb,148,u,61\nfb,150,u,62\nfb,151,u,62\nfb,152,u,62\nfb,153,u,63\nfb,154,u,63\nfb,155,u,63\nfb,156,u,63\nfb,157,u,64\nfb,158,u,64\nfb,159,u,64\nfb,160,u,64\nfb,161,u,64\nfb,162,u,64\nfb,163,u,65\nfb,164,u,65\nfb,165,u,65\nfb,166,u,65\nfb,167,u,65\nfb,168,u,65\nfb,170,u,66\nfb,171,u,66\nfb,172,u,66\nfb,173,u,66\nfb,174,u,66\nfb,175,u,67\nfb,176,u,67\nfb,177,u,67\nfb,178,u,67\nfb,180,u,67\nfb,181,u,67\nfb,182,u,67\nfb,183,u,68\nfb,184,u,68\nfb,185,u,68\nfb,186,u,68\nfb,187,u,68\nfb,188,u,68\nfb,202,u,71\nfb,227,u,75\nfb,228,u,75\nfb,229,u,75\nfb,230,u,75\nfb,231,u,75\nfb,235,u,76\nfb,236,u,76\nfb,237,u,76\nfb,238,u,76\nfb,240,u,77\nfb,241,u,77\nfb,242,u,77\nfb,243,u,77\nfb,244,u,78\nfb,245,u,78\nfb,246,u,78\nfb,247,u,78\nfb,248,u,78\nfb,249,u,78\nfb,250,u,78\nfb,251,u,79\nfb,252,u,79\nfb,253,u,79\nfb,254,u,79\nfb,255,u,79\nfb,257,u,80\nfb,258,u,80\nfb,259,u,80\nfb,260,u,80\nfb,261,u,80\nfb,262,u,80\nfb,263,u,80\nfb,264,u,80\nfb,265,u,80\nfb,267,u,81\nfb,268,u,81\nfb,269,u,81\nfb,270,u,81\nfb,271,u,81\nfb,272,u,83\nfb,273,u,83\nfb,274,u,83\nfb,275,u,83\nfb,400,230210,109\nfb,436,231013,117\nfb,438,231028,118\nfb,440,231112,119\nfb,441,231120,119\nfb,442,231129,119\nfb,444,231213,120\nfb,445,231221,120\nfb,446,240106,120\nfb,447,240112,120\nfb,449,240202,121\nfb,450,240205,121\nfb,451,240217,121\nfb,452,240225,122\nfb,453,240228,122\nfb,454,240304,122\nfb,466,u,126\nfb,469,u,126\nfb,471,240710,126\nfb,472,240711,126\nfb,475,240801,127\nfb,476,240809,127\nfb,477,240816,127\nfb,478,240821,128\nfb,479,240831,128\nfb,480,240907,128\nfb,481,240914,128\nfb,482,240920,129\nfb,483,240927,129\nfb,484,241004,129\nfb,485,241011,129\nfb,487,241026,130\nfb,488,241102,130\nfb,489,241109,130\nfb,494,241226,131\nfb,497,250126,132\nfb,515,250531,137\nia,24,u,62\nia,25,u,62\nia,26,u,63\nia,27,u,63\nia,28,u,63\nia,29,u,63\nia,30,u,63\nia,31,u,64\nia,32,u,64\nia,33,u,64\nia,34,u,64\nia,35,u,65\nia,36,u,65\nia,37,u,65\nia,38,u,65\nia,39,u,65\nia,40,u,65\nia,41,u,65\nia,43,u,66\nia,44,u,66\nia,45,u,66\nia,46,u,66\nia,47,u,66\nia,48,u,67\nia,49,u,67\nia,50,u,67\nia,51,u,67\nia,52,u,67\nia,53,u,67\nia,54,u,67\nia,55,u,67\nia,56,u,68\nia,57,u,68\nia,58,u,68\nia,59,u,68\nia,60,u,68\nia,61,u,68\nia,65,u,69\nia,66,u,69\nia,68,u,69\nia,72,u,70\nia,74,u,71\nia,75,u,71\nia,79,u,71\nia,81,u,72\nia,82,u,72\nia,83,u,72\nia,84,u,73\nia,86,u,73\nia,95,u,74\nia,97,u,80\nia,98,u,80\nia,103,u,80\nia,104,u,80\nia,117,u,80\nia,118,u,80\nia,119,u,80\nia,120,u,80\nia,121,u,80\nia,127,u,80\nia,128,u,80\nia,129,u,80\nia,130,u,80\nia,131,u,80\nia,132,u,80\nia,133,u,80\nia,134,u,80\nia,135,u,80\nia,136,u,80\nia,138,u,81\nia,139,u,81\nia,140,u,81\nia,141,u,81\nia,142,u,81\nia,143,u,83\nia,144,u,83\nia,145,u,83\nia,146,u,83\nia,164,u,92\nia,230,u,92\nia,259,221104,106\nia,281,u,109\nia,289,231221,114\nia,290,231230,114\nia,295,u,115\nia,296,u,115\nia,297,u,115\nia,298,240111,115\nia,299,u,115\nia,300,u,116\nia,301,240112,116\nia,303,u,117\nia,304,u,117\nia,305,u,117\nia,307,u,118\nia,308,240119,118\nia,310,u,119\nia,312,u,120\nia,313,u,120\nia,314,u,120\nia,315,240119,120\nia,316,240125,120\nia,318,240216,121\nia,320,240304,121\nia,321,240307,122\nia,347,240911,127\nia,349,240920,128\nia,366,u,132\nia,367,250215,132\nia,382,250619,137\nia,383,250618,137\nia,384,250616,137\nia,385,250627,137\nia,387,250709,137\nia,392,250812,138\nia,394,250826,139\nia,395,250913,139\nia,396,250920,139\nia,397,250919,139\nia,401,251008,141\nia,404,251031,141\nia,406,251116,141\nia,407,251123,142\nia,408,251128,142\nia,410,251217,143\nia,411,260107,143\nia,438,260722,150\n".split("\n").forEach(n=>{if(n=n.trim())if("releases"!==n){if(f){const a=n.split(",");if(a.length>=3){const[n,u,o,f]=a,i=[n,u,e(o.trim())];f&&i.push(f.trim()),s[n]||(s[n]=[]),s[n].push(i)}return}if(n.startsWith("20")||n.startsWith("pre_baseline"))return o=e(n),void(u[o]=[]);{const a=n.split(",");if(a.length>=3){const[n,s,f,i]=a,r=[n,s,e(f.trim())];if(i&&r.push(i.trim()),!u[o])throw new Error(`Timeline entry for date ${o} is undefined. This should not happen.`);u[o].push(r)}}}else f=!0});const i={};Object.keys(a).forEach(n=>{var a;i[n]=[...null!==(a=s[n])&&void 0!==a?a:[]]}),Object.keys(u).forEach(n=>{u[n].forEach(n=>{const a=n[0];i[a]&&(i[a].some(a=>a[1]===n[1])||i[a].push(n))})}),Object.keys(i).forEach(a=>{i[a].sort((a,e)=>n(a[1],e[1]))});let r=!1;function c(){r=!1}const t=Object.keys(a).filter(n=>void 0===a[n].engine).map(n=>{const{longName:e}=a[n];return{shortName:n,longName:e}}),b=["webview_android","samsunginternet_android","opera_android","opera","ya_android","uc_android","qq_android","kai_os","facebook_android","instagram_android"],l=a=>{const e=[],u=[];return a.forEach(n=>{t.some(a=>a.longName===n.browser)?e.push(n):u.push(n)}),e.sort((a,e)=>a.browsere.browser?1:n(a.version,e.version)),u.sort((a,e)=>{const u=b.indexOf(a.browser),s=b.indexOf(e.browser);return u!==s?u-s:n(a.version,e.version)}),[...e,...u]};let w=!1;const v=n=>{if(!1===n.includeDownstreamBrowsers&&!0===n.includeKaiOS)throw new Error("KaiOS is a downstream browser and can only be included if you include other downstream browsers. Please ensure you use `includeDownstreamBrowsers: true`.")},y=(n,e,u,s,o)=>{var f;const i={browser:e,version:u,release_date:"u"===s?"unknown":s};return o&&(i.engine_version=o,i.engine=null===(f=a[n])||void 0===f?void 0:f.engine),i};function d(e){var s,o,f,c,b,d,p;let g=null!=e?e:{},q={listAllCompatibleVersions:null!==(s=g.listAllCompatibleVersions)&&void 0!==s&&s,includeDownstreamBrowsers:null!==(o=g.includeDownstreamBrowsers)&&void 0!==o&&o,widelyAvailableOnDate:null!==(f=g.widelyAvailableOnDate)&&void 0!==f?f:void 0,targetYear:null!==(c=g.targetYear)&&void 0!==c?c:void 0,includeKaiOS:null!==(b=g.includeKaiOS)&&void 0!==b&&b,overrideLastUpdated:null!==(d=g.overrideLastUpdated)&&void 0!==d?d:void 0,suppressWarnings:null!==(p=g.suppressWarnings)&&void 0!==p&&p},m=new Date;if(q.widelyAvailableOnDate||q.targetYear){if(q.targetYear&&q.widelyAvailableOnDate)throw new Error("You cannot use targetYear and widelyAvailableOnDate at the same time. Please remove one of these options and try again.");q.widelyAvailableOnDate?m=new Date(q.widelyAvailableOnDate):q.targetYear&&(m=new Date(`${q.targetYear}-12-31`))}else m=new Date;if((q.widelyAvailableOnDate||void 0===q.targetYear)&&m.setMonth(m.getMonth()-30),!q.suppressWarnings){if(((n,a)=>{if(r||"undefined"!=typeof process&&process.env&&(process.env.BROWSERSLIST_IGNORE_OLD_DATA||process.env.BASELINE_BROWSER_MAPPING_IGNORE_OLD_DATA))return;const e=new Date;e.setMonth(e.getMonth()-2),n>e&&(null!=a?a:1785774412142)(new Date).getFullYear())throw new Error("There are no browser versions compatible with Baseline in the future")}const h=m{_[n]=void 0}),Object.keys(u).forEach(n=>{const a=u[n];let e=!1;e="pre_baseline"===n||new Date(n)<=m,e&&a.forEach(a=>{const e=a[0];"pre_baseline"!==n&&(_[e]=a)})});const O=[];return Object.keys(a).forEach(e=>{var u,s;const{longName:o}=a[e];if(!q.includeKaiOS&&"k"===e)return;const f=t.some(n=>n.shortName===e);if(q.includeDownstreamBrowsers||f)if(h)if(q.listAllCompatibleVersions){O.push({browser:o,version:"0",release_date:""});(null!==(u=i[e])&&void 0!==u?u:[]).forEach(n=>{O.push(y(e,o,n[1],n[2],n[3]))})}else O.push({browser:o,version:"0",release_date:""});else{const a=_[e];if(!a)return;const u=a[1];if(q.listAllCompatibleVersions){(null!==(s=i[e])&&void 0!==s?s:[]).forEach(a=>{const s=a[1];n(s,u)>=0&&O.push(y(e,o,s,a[2],a[3]))})}else O.push(y(e,o,u,a[2],a[3]))}}),l(O)}function p(a){var e,u,s,o,f;w=!0;let i=null!=a?a:{},r={outputFormat:null!==(e=i.outputFormat)&&void 0!==e?e:"array",includeDownstreamBrowsers:null!==(u=i.includeDownstreamBrowsers)&&void 0!==u&&u,useSupports:null!==(s=i.useSupports)&&void 0!==s&&s,includeKaiOS:null!==(o=i.includeKaiOS)&&void 0!==o&&o,suppressWarnings:null!==(f=i.suppressWarnings)&&void 0!==f&&f};v(r);let c=(new Date).getFullYear()+1;const b=[...Array(c).keys()].slice(2015),l={};b.forEach(n=>{l[n]={},d({targetYear:n,suppressWarnings:r.suppressWarnings}).forEach(a=>{l[n]&&(l[n][a.browser]=a)})});const y=d({suppressWarnings:r.suppressWarnings}),p={};y.forEach(n=>{p[n.browser]=n});const g=new Date;g.setMonth(g.getMonth()+30);const q=d({widelyAvailableOnDate:g.toISOString().slice(0,10),suppressWarnings:r.suppressWarnings}),m={};q.forEach(n=>{m[n.browser]=n});const h=d({targetYear:2002,listAllCompatibleVersions:!0,suppressWarnings:r.suppressWarnings}),_=[];if(t.map(n=>n.longName).forEach(a=>{var e,u,s,o;let f=h.filter(n=>n.browser==a).sort((a,e)=>n(a.version,e.version)),i=null!==(u=null===(e=p[a])||void 0===e?void 0:e.version)&&void 0!==u?u:"0",t=null!==(o=null===(s=m[a])||void 0===s?void 0:s.version)&&void 0!==o?o:"0";b.forEach(e=>{var u;if(l[e]){let s=(null!==(u=l[e][a])&&void 0!==u?u:{version:"0"}).version,o=f.findIndex(a=>0===n(a.version,s));(e===c-1?f:f.slice(0,o)).forEach(a=>{let u=n(a.version,i)>=0,s=n(a.version,t)>=0,o=Object.assign(Object.assign({},a),{year:e<=2015?"pre_baseline":e-1});r.useSupports?(u&&(o.supports="widely"),s&&(o.supports="newly")):o=Object.assign(Object.assign({},o),{wa_compatible:u}),_.push(o)}),f=f.slice(o,f.length)}})}),r.includeDownstreamBrowsers){d({targetYear:2002,listAllCompatibleVersions:!0,includeDownstreamBrowsers:!0,includeKaiOS:r.includeKaiOS,suppressWarnings:r.suppressWarnings}).filter(n=>!t.map(n=>n.longName).includes(n.browser)).forEach(n=>{const a="Gecko"===n.engine?"firefox":"chrome";let e=_.find(e=>e.browser===a&&e.version===n.engine_version);e&&(r.useSupports?_.push(Object.assign(Object.assign({},n),{year:e.year,supports:e.supports})):_.push(Object.assign(Object.assign({},n),{year:e.year,wa_compatible:e.wa_compatible})))})}if(_.sort((a,e)=>{if("pre_baseline"===a.year&&"pre_baseline"!==e.year)return-1;if("pre_baseline"===e.year&&"pre_baseline"!==a.year)return 1;if("pre_baseline"!==a.year&&"pre_baseline"!==e.year){if(a.yeare.year)return 1}return a.browsere.browser?1:n(a.version,e.version)}),"object"===r.outputFormat){const n={};return _.forEach(a=>{n[a.browser]||(n[a.browser]={});let e={year:a.year,release_date:a.release_date,engine:a.engine,engine_version:a.engine_version};n[a.browser][a.version]=r.useSupports?a.supports?Object.assign(Object.assign({},e),{supports:a.supports}):e:Object.assign(Object.assign({},e),{wa_compatible:a.wa_compatible})}),null!=n?n:{}}if("csv"===r.outputFormat){let n=`"browser","version","year","${r.useSupports?"supports":"wa_compatible"}","release_date","engine","engine_version"`;return _.forEach(a=>{var e,u,s,o;let f={browser:a.browser,version:a.version,year:a.year,release_date:null!==(e=a.release_date)&&void 0!==e?e:"NULL",engine:null!==(u=a.engine)&&void 0!==u?u:"NULL",engine_version:null!==(s=a.engine_version)&&void 0!==s?s:"NULL"};f=r.useSupports?Object.assign(Object.assign({},f),{supports:null!==(o=a.supports)&&void 0!==o?o:""}):Object.assign(Object.assign({},f),{wa_compatible:a.wa_compatible}),n+=`\n"${f.browser}","${f.version}","${f.year}","${r.useSupports?f.supports:f.wa_compatible}","${f.release_date}","${f.engine}","${f.engine_version}"`}),n}return _}function g(n){var e,s,o,f;const i=null!=n?n:{},r=null!==(e=i.groupBy)&&void 0!==e?e:"date",c=null!==(s=i.listAllBrowsers)&&void 0!==s&&s,b=null!==(o=i.includeDownstreamBrowsers)&&void 0!==o&&o,w=null!==(f=i.includeKaiOS)&&void 0!==f&&f;if(!1===b&&!0===w)throw new Error("KaiOS is a downstream browser and can only be included if you include other downstream browsers. Please ensure you use `includeDownstreamBrowsers: true`.");const v={},d=[];if(Object.keys(u).forEach(n=>{const e=u[n];if("pre_baseline"===n)return;const s=new Set;e.forEach(n=>{const a=n[0],e=v[a],u=n[1];e&&e[1]===u||s.add(a),v[a]=n});const o=[];if(Object.keys(a).forEach(n=>{const{longName:e}=a[n];if(!w&&"k"===n)return;const u=t.some(a=>a.shortName===n);if(!b&&!u)return;const f=s.has(n);if(c||f){const a=v[n];a&&o.push(y(n,e,a[1],a[2],a[3]))}}),o.length>0){const a=l(o);d.push({date:n,browsers:a})}}),"browser"===r){const n={};return Object.keys(a).forEach(e=>{const{longName:u}=a[e];if(!w&&"k"===e)return;const s=t.some(n=>n.shortName===e);(b||s)&&(n[u]=[])}),d.forEach(a=>{a.browsers.forEach(e=>{const{browser:u}=e,s=function(n,a){var e={};for(var u in n)Object.prototype.hasOwnProperty.call(n,u)&&a.indexOf(u)<0&&(e[u]=n[u]);if(null!=n&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(u=Object.getOwnPropertySymbols(n);s NOTE: cannot be used with `targetYear`. + */ + widelyAvailableOnDate?: string | number; + /** + * Pass a year between 2015 and the current year to get browser versions compatible with all + * Newly Available features as of the end of the year specified. + * > NOTE: cannot be used with `widelyAvailableOnDate`. + */ + targetYear?: number; + /** + * Pass a boolean that determines whether KaiOS is included in browser mappings. KaiOS implements + * the Gecko engine used in Firefox. However, KaiOS also has a different interaction paradigm to + * other browsers and requires extra consideration beyond simple feature compatibility to provide + * an optimal user experience. Defaults to `false`. + */ + includeKaiOS?: boolean; + overrideLastUpdated?: number; + /** + * Pass a boolean to suppress the warning about stale data. + * Defaults to `false`. + */ + suppressWarnings?: boolean; +}; +export type AllVersionsOptions = { + /** + * Whether to return the output as a JavaScript `Array` (`"array"`), `Object` (`"object"`) or a CSV string (`"csv"`). + * Defaults to `"array"`. + */ + outputFormat?: string; + /** + * Whether to include browsers that use the same engines as a core Baseline browser. + * Defaults to `false`. + */ + includeDownstreamBrowsers?: boolean; + /** + * Whether to use the new "supports" property in place of "wa_compatible" + * Defaults to `false` + */ + useSupports?: boolean; + /** + * Whether to include KaiOS in the output. KaiOS implements the Gecko engine used in Firefox. + * However, KaiOS also has a different interaction paradigm to other browsers and requires extra + * consideration beyond simple feature compatibility to provide an optimal user experience. + */ + includeKaiOS?: boolean; + /** + * Pass a boolean to suppress the warning about old data. + * Defaults to `false`. + */ + suppressWarnings?: boolean; +}; +export interface AllBrowsersBrowserVersion extends BrowserVersion { + year: number | string; + supports?: string; + wa_compatible?: boolean; +} +export type NestedBrowserVersions = { + [browser: string]: { + [version: string]: AllBrowsersBrowserVersion; + }; +}; +export type TimelineOptions = { + /** + * Whether to return the timeline as a chronologically sorted array of events grouped by date ("date"), + * or as an object grouped by browser with their respective history of version changes ("browser"). + * Defaults to "date". + */ + groupBy?: "date" | "browser"; + /** + * Whether to include all compatible browsers in each timeline event, + * or only the browsers that changed on that date. + * Only applicable when groupBy is "date". + * Defaults to `false`. + */ + listAllBrowsers?: boolean; + /** + * Whether to include browsers that use the same engines as a core Baseline browser. + * Defaults to `false`. + */ + includeDownstreamBrowsers?: boolean; + /** + * Whether to include KaiOS in the timeline. + * Defaults to `false`. + */ + includeKaiOS?: boolean; +}; +export type TimelineEvent = { + date: string; + browsers: BrowserVersion[]; +}; +export type BrowserTimelineEntry = { + date: string; + version: string; + release_date?: string; + engine?: string; + engine_version?: string; +}; +export type BrowserTimeline = { + [browser: string]: BrowserTimelineEntry[]; +}; diff --git a/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/dist/utils.d.ts b/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/dist/utils.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..d8474fdc70b56a7e2905b0d3425533132cd9ad9a --- /dev/null +++ b/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/dist/utils.d.ts @@ -0,0 +1 @@ +export declare const compareVersions: (nextVersion: string, prevVersion: string) => 1 | 0 | -1; diff --git a/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/node_modules/.bin/baseline-browser-mapping b/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/node_modules/.bin/baseline-browser-mapping new file mode 100644 index 0000000000000000000000000000000000000000..54af7ebfd5eff8c1cc1eb2b8ac2b033e4d88cb7e --- /dev/null +++ b/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/node_modules/.bin/baseline-browser-mapping @@ -0,0 +1,43 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") +basedir_win="$basedir" +exe="" +msys="" + +case `uname -a` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir_win=`cygpath -w "$basedir"` + fi + exe=".exe" + msys="true" + ;; + *WSL2*) + if command -v wslpath > /dev/null 2>&1; then + basedir_win="$(wslpath -w "$basedir" 2> /dev/null)" + if [ $? -ne 0 ] || [ -z "$basedir_win" ]; then + basedir_win="$basedir" + else + exe=".exe" + fi + fi + ;; +esac + +if [ -z "$NODE_PATH" ]; then + export NODE_PATH="/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/node_modules:/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules:/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/node_modules" +else + export NODE_PATH="/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/node_modules:/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules:/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/node_modules:$NODE_PATH" +fi +if [ -n "$exe" ] && [ -x "$basedir/node.exe" ]; then + exec "$basedir/node.exe" "$basedir_win/../../dist/cli.cjs" "$@" +elif [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../../dist/cli.cjs" "$@" +elif command -v node >/dev/null 2>&1; then + exec node "$basedir/../../dist/cli.cjs" "$@" +elif [ -n "$exe" ] && command -v node.exe >/dev/null 2>&1; then + exec node.exe "$basedir_win/../../dist/cli.cjs" "$@" +else + exec node "$basedir/../../dist/cli.cjs" "$@" +fi +# cmd-shim-target=/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/dist/cli.cjs diff --git a/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/package.json b/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/package.json new file mode 100644 index 0000000000000000000000000000000000000000..febc4da9d0ce0018eb563a4bcbcae14a3b351353 --- /dev/null +++ b/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/package.json @@ -0,0 +1,68 @@ +{ + "name": "baseline-browser-mapping", + "main": "./dist/index.cjs", + "version": "2.11.12", + "description": "A library for obtaining browser versions with their maximum supported Baseline feature set and Widely Available status.", + "exports": { + ".": { + "require": "./dist/index.cjs", + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./legacy": { + "require": "./dist/index.cjs", + "types": "./dist/index.d.ts" + } + }, + "jsdelivr": "./dist/index.js", + "files": [ + "dist/*", + "!dist/scripts/*", + "LICENSE.txt", + "README.md" + ], + "types": "./dist/index.d.ts", + "type": "module", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + }, + "scripts": { + "fix-cli-permissions": "output=$(npx baseline-browser-mapping 2>&1); path=$(printf '%s\n' \"$output\" | sed -n 's/^.*: \\(.*\\): Permission denied$/\\1/p; t; s/^\\(.*\\): Permission denied$/\\1/p'); if [ -n \"$path\" ]; then echo \"Permission denied for: $path\"; echo \"Removing $path ...\"; rm -rf \"$path\"; else echo \"$output\"; fi", + "test:format": "npx prettier --check .", + "test:lint": "npx eslint .", + "test:legacy-test": "node spec/legacy-tests/legacy-test.cjs; node dist/cli.cjs", + "test:jasmine": "npx jasmine", + "test:jasmine-browser": "npx jasmine-browser-runner runSpecs --config ./spec/support/jasmine-browser.js", + "test": "npm run build && npm run fix-cli-permissions && npm run test:format && npm run test:lint && npm run test:jasmine && npm run test:jasmine-browser", + "build": "rm -rf dist; npx prettier . --write; rollup -c; rm -rf ./dist/scripts/expose-data.d.ts ./dist/cli.d.ts", + "refresh-downstream": "npx tsx scripts/refresh-downstream.ts", + "refresh-static": "npx tsx scripts/refresh-static.ts", + "update-timeline": "npx tsx scripts/create-timeline.ts; npx prettier ./src/data/timeline.js --write", + "update-data-dependencies": "npm i @mdn/browser-compat-data@latest web-features@latest -D", + "check-timeline-changes": "git diff --name-only | grep -q '^src/data/timeline.js$' && echo 'changes-available=TRUE' || echo 'changes-available=FALSE'" + }, + "license": "Apache-2.0", + "devDependencies": { + "@mdn/browser-compat-data": "^8.0.9", + "@rollup/plugin-terser": "^1.0.0", + "@rollup/plugin-typescript": "^12.1.3", + "@types/node": "^22.19.21", + "eslint-plugin-new-with-error": "^5.0.0", + "jasmine": "^5.8.0", + "jasmine-browser-runner": "^3.0.0", + "jasmine-spec-reporter": "^7.0.0", + "prettier": "^3.5.3", + "rollup": "^4.44.0", + "tslib": "^2.8.1", + "typescript": "^5.7.2", + "typescript-eslint": "^8.35.0", + "web-features": "^3.34.2" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/web-platform-dx/baseline-browser-mapping.git" + } +} diff --git a/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/LICENSE b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..042c18918ef034391a2bab8661a59714b2a00446 --- /dev/null +++ b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright 2014 Andrey Sitnik and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/README.md b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/README.md new file mode 100644 index 0000000000000000000000000000000000000000..275876409b35a7cb9d0dc5ca31dd9e8f4365e98e --- /dev/null +++ b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/README.md @@ -0,0 +1,61 @@ +# Browserslist + +Browserslist logo by Anton Popov + +The config to share target browsers and Node.js versions between different +front-end tools. It is used in: + +- [Autoprefixer] +- [Babel] +- [postcss-preset-env] +- [eslint-plugin-compat] +- [stylelint-no-unsupported-browser-features] +- [postcss-normalize] +- [obsolete-webpack-plugin] + +All tools will find target browsers automatically, +when you add the following to `package.json`: + +```json + "browserslist": [ + "defaults and fully supports es6-module", + "maintained node versions" + ] +``` + +Or in `.browserslistrc` config: + +```yaml +# Browsers that we support + +defaults and fully supports es6-module +maintained node versions +``` + +Developers set their version lists using queries like `last 2 versions` +to be free from updating versions manually. +Browserslist will use [`caniuse-lite`] with [Can I Use] data for this queries. + +You can check how config works at our playground: [`browsersl.ist`](https://browsersl.ist/) + + + browsersl.ist website + + +
+
+

+ Sponsored by Evil Martians  Supported by Cube +
+ +[stylelint-no-unsupported-browser-features]: https://github.com/ismay/stylelint-no-unsupported-browser-features +[obsolete-webpack-plugin]: https://github.com/ElemeFE/obsolete-webpack-plugin +[eslint-plugin-compat]: https://github.com/amilajack/eslint-plugin-compat +[postcss-preset-env]: https://github.com/csstools/postcss-plugins/tree/main/plugin-packs/postcss-preset-env +[postcss-normalize]: https://github.com/csstools/postcss-normalize +[`browsersl.ist`]: https://browsersl.ist/ +[`caniuse-lite`]: https://github.com/ben-eb/caniuse-lite +[Autoprefixer]: https://github.com/postcss/autoprefixer +[Can I Use]: https://caniuse.com/ +[Babel]: https://github.com/babel/babel/tree/master/packages/babel-preset-env diff --git a/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/browser.js b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/browser.js new file mode 100644 index 0000000000000000000000000000000000000000..1a681fd3e2c2961af31e1e778b18723a0e119035 --- /dev/null +++ b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/browser.js @@ -0,0 +1,54 @@ +var BrowserslistError = require('./error') + +function noop() {} + +module.exports = { + loadQueries: function loadQueries() { + throw new BrowserslistError( + 'Sharable configs are not supported in client-side build of Browserslist' + ) + }, + + getStat: function getStat(opts) { + return opts.stats + }, + + loadConfig: function loadConfig(opts) { + if (opts.config) { + throw new BrowserslistError( + 'Browserslist config are not supported in client-side build' + ) + } + }, + + loadCountry: function loadCountry() { + throw new BrowserslistError( + 'Country statistics are not supported ' + + 'in client-side build of Browserslist' + ) + }, + + loadFeature: function loadFeature() { + throw new BrowserslistError( + 'Supports queries are not available in client-side build of Browserslist' + ) + }, + + currentNode: function currentNode(resolve, context) { + return resolve(['maintained node versions'], context)[0] + }, + + parseConfig: noop, + + readConfig: noop, + + findConfig: noop, + + findConfigFile: noop, + + clearCaches: noop, + + oldDataWarning: noop, + + env: {} +} diff --git a/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/cli.js b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/cli.js new file mode 100644 index 0000000000000000000000000000000000000000..78c08d743a8e478c346029e241b1f795b646fbd2 --- /dev/null +++ b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/cli.js @@ -0,0 +1,156 @@ +#!/usr/bin/env node + +var fs = require('fs') +var updateDb = require('update-browserslist-db') + +var browserslist = require('./') +var pkg = require('./package.json') + +var args = process.argv.slice(2) + +var USAGE = + 'Usage:\n' + + ' npx browserslist\n' + + ' npx browserslist "QUERIES"\n' + + ' npx browserslist --json "QUERIES"\n' + + ' npx browserslist --config="path/to/browserlist/file"\n' + + ' npx browserslist --coverage "QUERIES"\n' + + ' npx browserslist --coverage=US "QUERIES"\n' + + ' npx browserslist --coverage=US,RU,global "QUERIES"\n' + + ' npx browserslist --env="environment name defined in config"\n' + + ' npx browserslist --stats="path/to/browserlist/stats/file"\n' + + ' npx browserslist --mobile-to-desktop\n' + + ' npx browserslist --ignore-unknown-versions\n' + +function isArg(arg) { + return args.some(function (str) { + return str === arg || str.indexOf(arg + '=') === 0 + }) +} + +function error(msg) { + process.stderr.write('browserslist: ' + msg + '\n') + process.exit(1) +} + +if (isArg('--help') || isArg('-h')) { + process.stdout.write(pkg.description + '.\n\n' + USAGE + '\n') +} else if (isArg('--version') || isArg('-v')) { + process.stdout.write('browserslist ' + pkg.version + '\n') +} else if (isArg('--update-db')) { + /* c8 ignore next 8 */ + process.stdout.write( + 'The --update-db command is deprecated.\n' + + 'Please use npx update-browserslist-db@latest instead.\n' + ) + process.stdout.write('Browserslist DB update will still be made.\n') + updateDb(function (str) { + process.stdout.write(str) + }) +} else { + var mode = 'browsers' + var opts = {} + var queries + var areas + + for (var i = 0; i < args.length; i++) { + if (args[i][0] !== '-') { + queries = args[i].replace(/^["']|["']$/g, '') + continue + } + + var arg = args[i].split('=') + var name = arg[0] + var value = arg[1] + + if (value) value = value.replace(/^["']|["']$/g, '') + + if (name === '--config' || name === '-b') { + opts.config = value + } else if (name === '--env' || name === '-e') { + opts.env = value + } else if (name === '--stats' || name === '-s') { + opts.stats = value + } else if (name === '--coverage' || name === '-c') { + if (mode !== 'json') mode = 'coverage' + if (value) { + areas = value.split(',') + } else { + areas = ['global'] + } + } else if (name === '--json') { + mode = 'json' + } else if (name === '--mobile-to-desktop') { + /* c8 ignore next */ + opts.mobileToDesktop = true + } else if (name === '--ignore-unknown-versions') { + /* c8 ignore next */ + opts.ignoreUnknownVersions = true + } else { + error('Unknown arguments ' + args[i] + '.\n\n' + USAGE) + } + } + + var browsers + try { + browsers = browserslist(queries, opts) + } catch (e) { + if (e.name === 'BrowserslistError') { + error(e.message) + } /* c8 ignore start */ else { + throw e + } /* c8 ignore end */ + } + + var coverage + if (mode === 'browsers') { + browsers.forEach(function (browser) { + process.stdout.write(browser + '\n') + }) + } else if (areas) { + coverage = areas.map(function (area) { + var stats + if (area !== 'global') { + stats = area + } else if (opts.stats) { + stats = JSON.parse(fs.readFileSync(opts.stats)) + } + var result = browserslist.coverage(browsers, stats) + var round = Math.round(result * 100) / 100.0 + + return [area, round] + }) + + if (mode === 'coverage') { + var prefix = 'These browsers account for ' + process.stdout.write(prefix) + coverage.forEach(function (data, index) { + var area = data[0] + var round = data[1] + var end = 'globally' + if (area && area !== 'global') { + end = 'in the ' + area.toUpperCase() + } else if (opts.stats) { + end = 'in custom statistics' + } + + if (index !== 0) { + process.stdout.write(prefix.replace(/./g, ' ')) + } + + process.stdout.write(round + '% of all users ' + end + '\n') + }) + } + } + + if (mode === 'json') { + var data = { browsers: browsers } + if (coverage) { + data.coverage = coverage.reduce(function (object, j) { + object[j[0]] = j[1] + return object + }, {}) + } + process.stdout.write(JSON.stringify(data, null, ' ') + '\n') + } +} diff --git a/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/error.d.ts b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/error.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..12ff92133a997520119a8473ff3a69d7b413d6bd --- /dev/null +++ b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/error.d.ts @@ -0,0 +1,7 @@ +declare class BrowserslistError extends Error { + constructor(message: any) + name: 'BrowserslistError' + browserslist: true +} + +export = BrowserslistError diff --git a/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/error.js b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/error.js new file mode 100644 index 0000000000000000000000000000000000000000..6e5da7a823f4af93000b3a6798de0c31cec26340 --- /dev/null +++ b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/error.js @@ -0,0 +1,12 @@ +function BrowserslistError(message) { + this.name = 'BrowserslistError' + this.message = message + this.browserslist = true + if (Error.captureStackTrace) { + Error.captureStackTrace(this, BrowserslistError) + } +} + +BrowserslistError.prototype = Error.prototype + +module.exports = BrowserslistError diff --git a/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/index.d.ts b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/index.d.ts new file mode 100644 index 0000000000000000000000000000000000000000..a08176cc1ab9dfcac2e6ce65146ef051ace07140 --- /dev/null +++ b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/index.d.ts @@ -0,0 +1,224 @@ +/** + * Return array of browsers by selection queries. + * + * ```js + * browserslist('IE >= 10, IE 8') //=> ['ie 11', 'ie 10', 'ie 8'] + * ``` + * + * @param queries Browser queries. + * @param opts Options. + * @returns Array with browser names in Can I Use. + */ +declare function browserslist( + queries?: string | readonly string[] | null, + opts?: browserslist.Options +): string[] + +declare namespace browserslist { + interface Query { + compose: 'or' | 'and' + type: string + query: string + not?: true + } + + interface Options { + /** + * Path to processed file. It will be used to find config files. + */ + path?: string | false + /** + * Processing environment. It will be used to take right queries + * from config file. + */ + env?: string + /** + * Custom browser usage statistics for "> 1% in my stats" query. + */ + stats?: Stats | string + /** + * Path to config file with queries. + */ + config?: string + /** + * Do not throw on unknown version in direct query. + */ + ignoreUnknownVersions?: boolean + /** + * Throw an error if env is not found. + */ + throwOnMissing?: boolean + /** + * Disable security checks for extend query. + */ + dangerousExtend?: boolean + /** + * Alias mobile browsers to the desktop version when Can I Use + * doesn’t have data about the specified version. + */ + mobileToDesktop?: boolean + } + + type Config = { + defaults: string[] + [section: string]: string[] | undefined + } + + interface Stats { + [browser: string]: { + [version: string]: number + } + } + + /** + * Browser names aliases. + */ + let aliases: { + [alias: string]: string | undefined + } + + /** + * Aliases to work with joined versions like `ios_saf 7.0-7.1`. + */ + let versionAliases: { + [browser: string]: + | { + [version: string]: string | undefined + } + | undefined + } + + /** + * Can I Use only provides a few versions for some browsers (e.g. `and_chr`). + * + * Fallback to a similar browser for unknown versions. + */ + let desktopNames: { + [browser: string]: string | undefined + } + + let data: { + [browser: string]: + | { + name: string + versions: string[] + released: string[] + releaseDate: { + [version: string]: number | undefined | null + } + } + | undefined + } + + let nodeVersions: string[] + + interface Usage { + [version: string]: number + } + + let usage: { + global?: Usage + custom?: Usage | null + [country: string]: Usage | undefined | null + } + + let cache: { + [feature: string]: { + [name: string]: { + [version: string]: string + } + } + } + + /** + * Default browsers query + */ + let defaults: readonly string[] + + /** + * Which statistics should be used. Country code or custom statistics. + * Pass `"my stats"` to load statistics from `Browserslist` files. + */ + type StatsOptions = string | 'my stats' | Stats | { dataByBrowser: Stats } + + /** + * Return browsers market coverage. + * + * ```js + * browserslist.coverage(browserslist('> 1% in US'), 'US') //=> 83.1 + * ``` + * + * @param browsers Browsers names in Can I Use. + * @param stats Which statistics should be used. + * @returns Total market coverage for all selected browsers. + */ + function coverage(browsers: readonly string[], stats?: StatsOptions): number + + /** + * Get queries AST to analyze the config content. + * + * @param queries Browser queries. + * @param opts Options. + * @returns An array of the data of each query in the config. + */ + function parse( + queries?: string | readonly string[] | null, + opts?: browserslist.Options + ): Query[] + + /** + * Return queries for specific file inside the project. + * + * ```js + * browserslist.loadConfig({ + * file: process.cwd() + * }) ?? browserslist.defaults + * ``` + */ + function loadConfig(options: LoadConfigOptions): string[] | undefined + + function clearCaches(): void + + function parseConfig(string: string): Config + + function readConfig(file: string): Config + + function findConfig(...pathSegments: string[]): Config | undefined + + function findConfigFile(...pathSegments: string[]): string | undefined + + interface LoadConfigOptions { + /** + * Path to config file + * */ + config?: string + + /** + * Path to file inside the project to find Browserslist config + * in closest folder + */ + path?: string + + /** + * Environment to choose part of config. + */ + env?: string + } +} + +declare global { + namespace NodeJS { + interface ProcessEnv { + BROWSERSLIST?: string + BROWSERSLIST_CONFIG?: string + BROWSERSLIST_DANGEROUS_EXTEND?: string + BROWSERSLIST_DISABLE_CACHE?: string + BROWSERSLIST_ENV?: string + BROWSERSLIST_IGNORE_OLD_DATA?: string + BROWSERSLIST_STATS?: string + BROWSERSLIST_ROOT_PATH?: string + } + } +} + +export = browserslist diff --git a/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/index.js b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/index.js new file mode 100644 index 0000000000000000000000000000000000000000..69e381de730a05bd32edb6c1a13029a4eec2dd0c --- /dev/null +++ b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/index.js @@ -0,0 +1,1346 @@ +var bbm = require('baseline-browser-mapping') +var jsReleases = require('node-releases/data/processed/envs.json') +var agents = require('caniuse-lite/dist/unpacker/agents').agents +var e2c = require('electron-to-chromium/versions') +var jsEOL = require('node-releases/data/release-schedule/release-schedule.json') +var path = require('path') + +var BrowserslistError = require('./error') +var env = require('./node') +var parseWithoutCache = require('./parse') // Will load browser.js in webpack + +var YEAR = 365.259641 * 24 * 60 * 60 * 1000 +var ANDROID_EVERGREEN_FIRST = '37' +var OP_MOB_BLINK_FIRST = 14 +var FIREFOX_ESR_VERSION = '140' + +// Helpers + +function isVersionsMatch(versionA, versionB) { + return (versionA + '.').indexOf(versionB + '.') === 0 +} + +function isEolReleased(name) { + var version = name.slice(1) + return browserslist.nodeVersions.some(function (i) { + return isVersionsMatch(i, version) + }) +} + +function normalize(versions) { + return versions.filter(function (version) { + return typeof version === 'string' + }) +} + +function normalizeElectron(version) { + var versionToUse = version + if (version.split('.').length === 3) { + versionToUse = version.split('.').slice(0, -1).join('.') + } + return versionToUse +} + +function nameMapper(name) { + return function mapName(version) { + return name + ' ' + version + } +} + +function getMajor(version) { + return parseInt(version.split('.')[0]) +} + +function getMajorVersions(released, number) { + if (released.length === 0) return [] + var majorVersions = uniq(released.map(getMajor)) + var minimum = majorVersions[majorVersions.length - number] + if (!minimum) { + return released + } + var selected = [] + for (var i = released.length - 1; i >= 0; i--) { + if (minimum > getMajor(released[i])) break + selected.unshift(released[i]) + } + return selected +} + +function uniq(array) { + var filtered = [] + for (var i = 0; i < array.length; i++) { + if (filtered.indexOf(array[i]) === -1) filtered.push(array[i]) + } + return filtered +} + +function fillUsage(result, name, data) { + for (var i in data) { + result[name + ' ' + i] = data[i] + } +} + +function generateFilter(sign, version) { + if (sign === '>') { + return function (v) { + return parseLatestFloat(v) > parseLatestFloat(version) + } + } else if (sign === '>=') { + return function (v) { + return parseLatestFloat(v) >= parseLatestFloat(version) + } + } else if (sign === '<') { + return function (v) { + return parseFloat(v) < parseFloat(version) + } + } else { + return function (v) { + return parseFloat(v) <= parseFloat(version) + } + } + + function parseLatestFloat(v) { + return parseFloat(v.split('-')[1] || v) + } +} + +function generateSemverFilter(sign, version) { + version = version.split('.').map(parseSimpleInt) + version[1] = version[1] || 0 + version[2] = version[2] || 0 + if (sign === '>') { + return function (v) { + v = v.split('.').map(parseSimpleInt) + return compareSemver(v, version) > 0 + } + } else if (sign === '>=') { + return function (v) { + v = v.split('.').map(parseSimpleInt) + return compareSemver(v, version) >= 0 + } + } else if (sign === '<') { + return function (v) { + v = v.split('.').map(parseSimpleInt) + return compareSemver(version, v) > 0 + } + } else { + return function (v) { + v = v.split('.').map(parseSimpleInt) + return compareSemver(version, v) >= 0 + } + } +} + +function parseSimpleInt(x) { + return parseInt(x) +} + +function compare(a, b) { + if (a < b) return -1 + if (a > b) return +1 + return 0 +} + +function compareSemver(a, b) { + return ( + compare(parseInt(a[0]), parseInt(b[0])) || + compare(parseInt(a[1] || '0'), parseInt(b[1] || '0')) || + compare(parseInt(a[2] || '0'), parseInt(b[2] || '0')) + ) +} + +// this follows the npm-like semver behavior +function semverFilterLoose(operator, range) { + range = range.split('.').map(parseSimpleInt) + if (typeof range[1] === 'undefined') { + range[1] = 'x' + } + // ignore any patch version because we only return minor versions + // range[2] = 'x' + switch (operator) { + case '<=': + return function (version) { + version = version.split('.').map(parseSimpleInt) + return compareSemverLoose(version, range) <= 0 + } + case '>=': + default: + return function (version) { + version = version.split('.').map(parseSimpleInt) + return compareSemverLoose(version, range) >= 0 + } + } +} + +// this follows the npm-like semver behavior +function compareSemverLoose(version, range) { + if (version[0] !== range[0]) { + return version[0] < range[0] ? -1 : +1 + } + if (range[1] === 'x') { + return 0 + } + if (version[1] !== range[1]) { + return version[1] < range[1] ? -1 : +1 + } + return 0 +} + +function resolveVersion(data, version) { + if (data.versions.indexOf(version) !== -1) { + return version + } else if (browserslist.versionAliases[data.name][version]) { + return browserslist.versionAliases[data.name][version] + } else { + return false + } +} + +function normalizeVersion(data, version) { + var resolved = resolveVersion(data, version) + if (resolved) { + return resolved + } else if (data.versions.length === 1) { + return data.versions[0] + } else { + return false + } +} + +function filterByYear(since, context) { + since = since / 1000 + return Object.keys(agents).reduce(function (selected, name) { + var data = byName(name, context) + if (!data) return selected + var versions = Object.keys(data.releaseDate).filter(function (v) { + var date = data.releaseDate[v] + return date !== null && date >= since + }) + return selected.concat(versions.map(nameMapper(data.name))) + }, []) +} + +function cloneData(data) { + return { + name: data.name, + versions: data.versions, + released: data.released, + releaseDate: data.releaseDate + } +} + +function byName(name, context) { + name = name.toLowerCase() + name = browserslist.aliases[name] || name + if (context.mobileToDesktop && browserslist.desktopNames[name]) { + var desktop = browserslist.data[browserslist.desktopNames[name]] + if (name === 'android') { + return normalizeAndroidData(cloneData(browserslist.data[name]), desktop) + } else { + var cloned = cloneData(desktop) + cloned.name = name + return cloned + } + } + return browserslist.data[name] +} + +function normalizeAndroidVersions(androidVersions, chromeVersions) { + var iFirstEvergreen = chromeVersions.indexOf(ANDROID_EVERGREEN_FIRST) + return androidVersions + .filter(function (version) { + return /^(?:[2-4]\.|[34]$)/.test(version) + }) + .concat(chromeVersions.slice(iFirstEvergreen)) +} + +var DANGEROUS_KEYS = ['__proto__', 'constructor', 'prototype'] + +function copyObject(obj) { + var copy = {} + for (var key in obj) { + if (DANGEROUS_KEYS.indexOf(key) === -1) { + copy[key] = obj[key] + } + } + return copy +} + +function normalizeAndroidData(android, chrome) { + android.released = normalizeAndroidVersions(android.released, chrome.released) + android.versions = normalizeAndroidVersions(android.versions, chrome.versions) + android.releaseDate = copyObject(android.releaseDate) + android.released.forEach(function (v) { + if (android.releaseDate[v] === undefined) { + android.releaseDate[v] = chrome.releaseDate[v] + } + }) + return android +} + +function checkName(name, context) { + var data = byName(name, context) + if (!data) throw new BrowserslistError('Unknown browser ' + name) + return data +} + +function unknownQuery(query) { + return new BrowserslistError( + 'Unknown browser query `' + + query + + '`. ' + + 'Maybe you are using old Browserslist or made typo in query.' + ) +} + +// Adjusts last X versions queries for some mobile browsers, +// where caniuse data jumps from a legacy version to the latest +function filterJumps(list, name, nVersions, context) { + var jump = 1 + switch (name) { + case 'android': + if (context.mobileToDesktop) return list + var released = browserslist.data.chrome.released + jump = released.length - released.indexOf(ANDROID_EVERGREEN_FIRST) + break + case 'op_mob': + var latest = browserslist.data.op_mob.released.slice(-1)[0] + jump = getMajor(latest) - OP_MOB_BLINK_FIRST + 1 + break + default: + return list + } + if (nVersions <= jump) { + return list.slice(-1) + } + return list.slice(jump - 1 - nVersions) +} + +function isSupported(flags, withPartial) { + return ( + typeof flags === 'string' && + (flags.indexOf('y') >= 0 || (withPartial && flags.indexOf('a') >= 0)) + ) +} + +function resolve(queries, context) { + return parseQueries(queries).reduce(function (result, node, index) { + if (node.not && index === 0) { + throw new BrowserslistError( + 'Write any browsers query (for instance, `defaults`) ' + + 'before `' + + node.query + + '`' + ) + } + var type = QUERIES[node.type] + var array = type.select.call(browserslist, context, node).map(function (j) { + var parts = j.split(' ') + if (parts[1] === '0') { + return parts[0] + ' ' + byName(parts[0], context).versions[0] + } else { + return j + } + }) + + if (node.compose === 'and') { + if (node.not) { + return result.filter(function (j) { + return array.indexOf(j) === -1 + }) + } else { + return result.filter(function (j) { + return array.indexOf(j) !== -1 + }) + } + } else { + if (node.not) { + var filter = {} + array.forEach(function (j) { + filter[j] = true + }) + return result.filter(function (j) { + return !filter[j] + }) + } + return result.concat(array) + } + }, []) +} + +function prepareOpts(opts) { + if (typeof opts === 'undefined') opts = {} + + if (typeof opts.path === 'undefined') { + opts.path = path.resolve ? path.resolve('.') : '.' + } + + return opts +} + +function prepareQueries(queries, opts) { + if (typeof queries === 'undefined' || queries === null) { + var config = browserslist.loadConfig(opts) + if (config) { + queries = config + } else { + queries = browserslist.defaults + } + } + + return queries +} + +function checkQueries(queries) { + if (!(typeof queries === 'string' || Array.isArray(queries))) { + throw new BrowserslistError( + 'Browser queries must be an array or string. Got ' + typeof queries + '.' + ) + } +} + +var CACHE_MAX_ENTRIES = 500 + +function boundedCacheSet(map, key, value) { + if (map.size >= CACHE_MAX_ENTRIES) { + map.delete(map.keys().next().value) + } + map.set(key, value) +} + +var cache = new Map() +var parseCache = new Map() + +function browserslist(queries, opts) { + opts = prepareOpts(opts) + queries = prepareQueries(queries, opts) + checkQueries(queries) + + var needsPath = parseQueries(queries).some(function (node) { + return QUERIES[node.type].needsPath + }) + var context = { + ignoreUnknownVersions: opts.ignoreUnknownVersions, + dangerousExtend: opts.dangerousExtend, + throwOnMissing: opts.throwOnMissing, + mobileToDesktop: opts.mobileToDesktop, + env: opts.env + } + // Removing to avoid using context.path without marking query as needsPath + if (needsPath) { + context.path = opts.path + } + + env.oldDataWarning(browserslist.data) + var stats = env.getStat(opts, browserslist.data) + if (stats) { + context.customUsage = {} + for (var browser in stats) { + fillUsage(context.customUsage, browser, stats[browser]) + } + } + + var cacheKey = JSON.stringify([queries, context]) + if (cache.has(cacheKey)) return cache.get(cacheKey) + + var result = uniq(resolve(queries, context)).sort(function (name1, name2) { + name1 = name1.split(' ') + name2 = name2.split(' ') + if (name1[0] === name2[0]) { + // assumptions on caniuse data + // 1) version ranges never overlaps + // 2) if version is not a range, it never contains `-` + var version1 = name1[1].split('-')[0] + var version2 = name2[1].split('-')[0] + return compareSemver(version2.split('.'), version1.split('.')) + } else { + return compare(name1[0], name2[0]) + } + }) + if (!env.env.BROWSERSLIST_DISABLE_CACHE) { + boundedCacheSet(cache, cacheKey, result) + } + return result +} + +function parseQueries(queries) { + var cacheKey = JSON.stringify(queries) + if (parseCache.has(cacheKey)) return parseCache.get(cacheKey) + var result = parseWithoutCache(QUERIES, queries) + if (!env.env.BROWSERSLIST_DISABLE_CACHE) { + boundedCacheSet(parseCache, cacheKey, result) + } + return result +} + +function loadCustomUsage(context, config) { + var stats = env.loadStat(context, config, browserslist.data) + if (stats) { + context.customUsage = {} + for (var browser in stats) { + fillUsage(context.customUsage, browser, stats[browser]) + } + } + if (!context.customUsage) { + throw new BrowserslistError('Custom usage statistics was not provided') + } + return context.customUsage +} + +browserslist.parse = function (queries, opts) { + opts = prepareOpts(opts) + queries = prepareQueries(queries, opts) + checkQueries(queries) + return parseQueries(queries) +} + +// Will be filled by Can I Use data below +browserslist.cache = {} +browserslist.data = {} +browserslist.usage = { + global: {}, + custom: null +} + +// Default browsers query +browserslist.defaults = ['> 0.5%', 'last 2 versions', 'Firefox ESR', 'not dead'] + +// Browser names aliases +browserslist.aliases = { + fx: 'firefox', + ff: 'firefox', + ios: 'ios_saf', + explorer: 'ie', + blackberry: 'bb', + explorermobile: 'ie_mob', + operamini: 'op_mini', + operamobile: 'op_mob', + chromeandroid: 'and_chr', + firefoxandroid: 'and_ff', + ucandroid: 'and_uc', + qqandroid: 'and_qq' +} + +// Can I Use only provides a few versions for some browsers (e.g. and_chr). +// Fallback to a similar browser for unknown versions +// Note op_mob is not included as its chromium versions are not in sync with Opera desktop +browserslist.desktopNames = { + and_chr: 'chrome', + and_ff: 'firefox', + ie_mob: 'ie', + android: 'chrome' // has extra processing logic +} + +// Aliases to work with joined versions like `ios_saf 7.0-7.1` +browserslist.versionAliases = {} + +browserslist.clearCaches = env.clearCaches +browserslist.parseConfig = env.parseConfig +browserslist.readConfig = env.readConfig +browserslist.findConfigFile = env.findConfigFile +browserslist.findConfig = env.findConfig +browserslist.loadConfig = env.loadConfig + +browserslist.coverage = function (browsers, stats) { + var data + if (typeof stats === 'undefined') { + data = browserslist.usage.global + } else if (stats === 'my stats') { + var opts = {} + opts.path = path.resolve ? path.resolve('.') : '.' + var customStats = env.getStat(opts) + if (!customStats) { + throw new BrowserslistError('Custom usage statistics was not provided') + } + data = {} + for (var browser in customStats) { + fillUsage(data, browser, customStats[browser]) + } + } else if (typeof stats === 'string') { + if (stats.length > 2) { + stats = stats.toLowerCase() + } else { + stats = stats.toUpperCase() + } + env.loadCountry(browserslist.usage, stats, browserslist.data) + data = browserslist.usage[stats] + } else { + if ('dataByBrowser' in stats) { + stats = stats.dataByBrowser + } + data = {} + for (var name in stats) { + for (var version in stats[name]) { + data[name + ' ' + version] = stats[name][version] + } + } + } + + return browsers.reduce(function (all, i) { + var usage = data[i] + if (usage === undefined) { + usage = data[i.replace(/ \S+$/, ' 0')] + } + return all + (usage || 0) + }, 0) +} + +function nodeQuery(context, node) { + var matched = browserslist.nodeVersions.filter(function (i) { + return isVersionsMatch(i, node.version) + }) + if (matched.length === 0) { + if (context.ignoreUnknownVersions) { + return [] + } else { + throw new BrowserslistError( + 'Unknown version ' + node.version + ' of Node.js' + ) + } + } + return ['node ' + matched[matched.length - 1]] +} + +function sinceQuery(context, node) { + var year = parseInt(node.year) + var month = parseInt(node.month || '01') - 1 + var day = parseInt(node.day || '01') + return filterByYear(Date.UTC(year, month, day, 0, 0, 0), context) +} + +function bbmTransform(bbmVersions) { + var browsers = { + chrome: 'chrome', + chrome_android: 'and_chr', + edge: 'edge', + firefox: 'firefox', + firefox_android: 'and_ff', + safari: 'safari', + safari_ios: 'ios_saf', + webview_android: 'android', + samsunginternet_android: 'samsung', + opera_android: 'op_mob', + opera: 'opera', + qq_android: 'and_qq', + uc_android: 'and_uc', + kai_os: 'kaios' + } + + return bbmVersions + .filter(function (version) { + return Object.keys(browsers).indexOf(version.browser) !== -1 + }) + .map(function (version) { + return browsers[version.browser] + ' >= ' + version.version + }) +} + +function coverQuery(context, node) { + var coverage = parseFloat(node.coverage) + var usage = browserslist.usage.global + if (node.place) { + if (node.place.match(/^my\s+stats$/i)) { + if (!context.customUsage) { + throw new BrowserslistError('Custom usage statistics was not provided') + } + usage = context.customUsage + } else { + var place + if (node.place.length === 2) { + place = node.place.toUpperCase() + } else { + place = node.place.toLowerCase() + } + env.loadCountry(browserslist.usage, place, browserslist.data) + usage = browserslist.usage[place] + } + } else if (node.config) { + usage = loadCustomUsage(context, node.config) + } + var versions = Object.keys(usage).sort(function (a, b) { + return usage[b] - usage[a] + }) + var covered = 0 + var result = [] + var version + for (var i = 0; i < versions.length; i++) { + version = versions[i] + if (usage[version] === 0) break + covered += usage[version] + result.push(version) + if (covered >= coverage) break + } + return result +} + +var QUERIES = { + last_major_versions: { + matches: ['versions'], + regexp: /^last\s+(\d+)\s+major\s+versions?$/i, + select: function (context, node) { + return Object.keys(agents).reduce(function (selected, name) { + var data = byName(name, context) + if (!data) return selected + var list = getMajorVersions(data.released, node.versions) + list = list.map(nameMapper(data.name)) + list = filterJumps(list, data.name, node.versions, context) + return selected.concat(list) + }, []) + } + }, + last_versions: { + matches: ['versions'], + regexp: /^last\s+(\d+)\s+versions?$/i, + select: function (context, node) { + return Object.keys(agents).reduce(function (selected, name) { + var data = byName(name, context) + if (!data) return selected + var list = data.released.slice(-node.versions) + list = list.map(nameMapper(data.name)) + list = filterJumps(list, data.name, node.versions, context) + return selected.concat(list) + }, []) + } + }, + last_electron_major_versions: { + matches: ['versions'], + regexp: /^last\s+(\d+)\s+electron\s+major\s+versions?$/i, + select: function (context, node) { + var validVersions = getMajorVersions(Object.keys(e2c), node.versions) + return validVersions.map(function (i) { + return 'chrome ' + e2c[i] + }) + } + }, + last_node_major_versions: { + matches: ['versions'], + regexp: /^last\s+(\d+)\s+node\s+major\s+versions?$/i, + select: function (context, node) { + return getMajorVersions(browserslist.nodeVersions, node.versions).map( + function (version) { + return 'node ' + version + } + ) + } + }, + last_browser_major_versions: { + matches: ['versions', 'browser'], + regexp: /^last\s+(\d+)\s+(\w+)\s+major\s+versions?$/i, + select: function (context, node) { + var data = checkName(node.browser, context) + var validVersions = getMajorVersions(data.released, node.versions) + var list = validVersions.map(nameMapper(data.name)) + list = filterJumps(list, data.name, node.versions, context) + return list + } + }, + last_electron_versions: { + matches: ['versions'], + regexp: /^last\s+(\d+)\s+electron\s+versions?$/i, + select: function (context, node) { + return Object.keys(e2c) + .slice(-node.versions) + .map(function (i) { + return 'chrome ' + e2c[i] + }) + } + }, + last_node_versions: { + matches: ['versions'], + regexp: /^last\s+(\d+)\s+node\s+versions?$/i, + select: function (context, node) { + return browserslist.nodeVersions + .slice(-node.versions) + .map(function (version) { + return 'node ' + version + }) + } + }, + last_browser_versions: { + matches: ['versions', 'browser'], + regexp: /^last\s+(\d+)\s+(\w+)\s+versions?$/i, + select: function (context, node) { + var data = checkName(node.browser, context) + var list = data.released.slice(-node.versions).map(nameMapper(data.name)) + list = filterJumps(list, data.name, node.versions, context) + return list + } + }, + unreleased_versions: { + matches: [], + regexp: /^unreleased\s+versions$/i, + select: function (context) { + return Object.keys(agents).reduce(function (selected, name) { + var data = byName(name, context) + if (!data) return selected + var list = data.versions.filter(function (v) { + return data.released.indexOf(v) === -1 + }) + list = list.map(nameMapper(data.name)) + return selected.concat(list) + }, []) + } + }, + unreleased_electron_versions: { + matches: [], + regexp: /^unreleased\s+electron\s+versions?$/i, + select: function () { + return [] + } + }, + unreleased_browser_versions: { + matches: ['browser'], + regexp: /^unreleased\s+(\w+)\s+versions?$/i, + select: function (context, node) { + var data = checkName(node.browser, context) + return data.versions + .filter(function (v) { + return data.released.indexOf(v) === -1 + }) + .map(nameMapper(data.name)) + } + }, + last_years: { + matches: ['years'], + regexp: /^last\s+((\d+\.)?\d+)\s+years?$/i, + select: function (context, node) { + return filterByYear(Date.now() - YEAR * node.years, context) + } + }, + since_y: { + matches: ['year'], + regexp: /^since (\d+)$/i, + select: sinceQuery + }, + since_y_m: { + matches: ['year', 'month'], + regexp: /^since (\d+)-(\d+)$/i, + select: sinceQuery + }, + since_y_m_d: { + matches: ['year', 'month', 'day'], + regexp: /^since (\d+)-(\d+)-(\d+)$/i, + select: sinceQuery + }, + baseline: { + matches: ['year', 'availability', 'date', 'downstream', 'kaios'], + // Matches: + // baseline 2024 + // baseline newly available + // baseline widely available + // baseline widely available on 2024-06-01 + // ...with downstream + // ...including kaios + regexp: + /^baseline\s+(?!\s)(?:(\d+)|(newly|widely)\s+(?!\s)available(?:\s+(?!\s)on\s+(?!\s)(\d{4}-\d{2}-\d{2}))?)?(\s+(?!\s)with\s+(?!\s)downstream)?(\s+(?!\s)including\s+(?!\s)kaios)?$/i, + select: function (context, node) { + var baselineVersions + var includeDownstream = !!node.downstream + var includeKaiOS = !!node.kaios + var availability = node.availability && node.availability.toLowerCase() + if (availability === 'newly' && node.date) { + throw new BrowserslistError( + 'Using newly available with a date is not supported, please use "widely available on YYYY-MM-DD" and add 30 months to the date you specified.' + ) + } + if (node.year) { + baselineVersions = bbm.getCompatibleVersions({ + targetYear: node.year, + includeDownstreamBrowsers: includeDownstream, + includeKaiOS: includeKaiOS, + suppressWarnings: true + }) + } else if (node.date) { + baselineVersions = bbm.getCompatibleVersions({ + widelyAvailableOnDate: node.date, + includeDownstreamBrowsers: includeDownstream, + includeKaiOS: includeKaiOS, + suppressWarnings: true + }) + } else if (availability === 'newly') { + var future30months = new Date().setMonth(new Date().getMonth() + 30) + baselineVersions = bbm.getCompatibleVersions({ + widelyAvailableOnDate: future30months, + includeDownstreamBrowsers: includeDownstream, + includeKaiOS: includeKaiOS, + suppressWarnings: true + }) + } else { + baselineVersions = bbm.getCompatibleVersions({ + includeDownstreamBrowsers: includeDownstream, + includeKaiOS: includeKaiOS, + suppressWarnings: true + }) + } + return resolve(bbmTransform(baselineVersions), context) + } + }, + popularity: { + matches: ['sign', 'popularity'], + regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%$/, + select: function (context, node) { + var popularity = parseFloat(node.popularity) + var usage = browserslist.usage.global + return Object.keys(usage).reduce(function (result, version) { + if (node.sign === '>') { + if (usage[version] > popularity) { + result.push(version) + } + } else if (node.sign === '<') { + if (usage[version] < popularity) { + result.push(version) + } + } else if (node.sign === '<=') { + if (usage[version] <= popularity) { + result.push(version) + } + } else if (usage[version] >= popularity) { + result.push(version) + } + return result + }, []) + } + }, + popularity_in_my_stats: { + matches: ['sign', 'popularity'], + regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+my\s+stats$/, + select: function (context, node) { + var popularity = parseFloat(node.popularity) + if (!context.customUsage) { + throw new BrowserslistError('Custom usage statistics was not provided') + } + var usage = context.customUsage + return Object.keys(usage).reduce(function (result, version) { + var percentage = usage[version] + if (percentage == null) { + return result + } + + if (node.sign === '>') { + if (percentage > popularity) { + result.push(version) + } + } else if (node.sign === '<') { + if (percentage < popularity) { + result.push(version) + } + } else if (node.sign === '<=') { + if (percentage <= popularity) { + result.push(version) + } + } else if (percentage >= popularity) { + result.push(version) + } + return result + }, []) + } + }, + popularity_in_config_stats: { + matches: ['sign', 'popularity', 'config'], + regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+(\S+)\s+stats$/, + select: function (context, node) { + var popularity = parseFloat(node.popularity) + var usage = loadCustomUsage(context, node.config) + return Object.keys(usage).reduce(function (result, version) { + var percentage = usage[version] + if (percentage == null) { + return result + } + + if (node.sign === '>') { + if (percentage > popularity) { + result.push(version) + } + } else if (node.sign === '<') { + if (percentage < popularity) { + result.push(version) + } + } else if (node.sign === '<=') { + if (percentage <= popularity) { + result.push(version) + } + } else if (percentage >= popularity) { + result.push(version) + } + return result + }, []) + } + }, + popularity_in_place: { + matches: ['sign', 'popularity', 'place'], + regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+((alt-)?\w\w)$/, + select: function (context, node) { + var popularity = parseFloat(node.popularity) + var place = node.place + if (place.length === 2) { + place = place.toUpperCase() + } else { + place = place.toLowerCase() + } + env.loadCountry(browserslist.usage, place, browserslist.data) + var usage = browserslist.usage[place] + return Object.keys(usage).reduce(function (result, version) { + var percentage = usage[version] + if (percentage == null) { + return result + } + + if (node.sign === '>') { + if (percentage > popularity) { + result.push(version) + } + } else if (node.sign === '<') { + if (percentage < popularity) { + result.push(version) + } + } else if (node.sign === '<=') { + if (percentage <= popularity) { + result.push(version) + } + } else if (percentage >= popularity) { + result.push(version) + } + return result + }, []) + } + }, + cover: { + matches: ['coverage'], + regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%$/i, + select: coverQuery + }, + cover_in: { + matches: ['coverage', 'place'], + regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%\s+in\s+(my\s+stats|(alt-)?\w\w)$/i, + select: coverQuery + }, + cover_config: { + matches: ['coverage', 'config'], + regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%\s+in\s+(\S+)\s+stats$/i, + select: coverQuery + }, + supports: { + matches: ['supportType', 'feature'], + regexp: /^(?:(fully|partially)\s+)?supports\s+([\w-]+)$/, + select: function (context, node) { + env.loadFeature(browserslist.cache, node.feature) + var withPartial = node.supportType !== 'fully' + var features = browserslist.cache[node.feature] + var result = [] + for (var name in features) { + var data = byName(name, context) + // Only check desktop when latest released mobile has support + var iMax = data.released.length - 1 + while (iMax >= 0) { + if (data.released[iMax] in features[name]) break + iMax-- + } + var checkDesktop = + context.mobileToDesktop && + name in browserslist.desktopNames && + isSupported(features[name][data.released[iMax]], withPartial) + data.versions.forEach(function (version) { + var flags = features[name][version] + if (flags === undefined && checkDesktop) { + flags = features[browserslist.desktopNames[name]][version] + } + if (isSupported(flags, withPartial)) { + result.push(name + ' ' + version) + } + }) + } + return result + } + }, + electron_range: { + matches: ['from', 'to'], + regexp: /^electron\s+([\d.]+)\s*-\s*([\d.]+)$/i, + select: function (context, node) { + var fromToUse = normalizeElectron(node.from) + var toToUse = normalizeElectron(node.to) + var from = parseFloat(node.from) + var to = parseFloat(node.to) + if (!e2c[fromToUse]) { + throw new BrowserslistError('Unknown version ' + from + ' of electron') + } + if (!e2c[toToUse]) { + throw new BrowserslistError('Unknown version ' + to + ' of electron') + } + return Object.keys(e2c) + .filter(semverFilterLoose('>=', node.from)) + .filter(semverFilterLoose('<=', node.to)) + .map(function (i) { + return 'chrome ' + e2c[i] + }) + } + }, + node_range: { + matches: ['from', 'to'], + regexp: /^node\s+([\d.]+)\s*-\s*([\d.]+)$/i, + select: function (context, node) { + return browserslist.nodeVersions + .filter(semverFilterLoose('>=', node.from)) + .filter(semverFilterLoose('<=', node.to)) + .map(function (v) { + return 'node ' + v + }) + } + }, + browser_range: { + matches: ['browser', 'from', 'to'], + regexp: /^(\w+)\s+([\d.]+)\s*-\s*([\d.]+)$/i, + select: function (context, node) { + var data = checkName(node.browser, context) + var from = parseFloat(normalizeVersion(data, node.from) || node.from) + var to = parseFloat(normalizeVersion(data, node.to) || node.to) + function filter(v) { + var parsed = parseFloat(v) + return parsed >= from && parsed <= to + } + return data.released.filter(filter).map(nameMapper(data.name)) + } + }, + electron_ray: { + matches: ['sign', 'version'], + regexp: /^electron\s*(>=?|<=?)\s*([\d.]+)$/i, + select: function (context, node) { + var versionToUse = normalizeElectron(node.version) + return Object.keys(e2c) + .filter(generateFilter(node.sign, versionToUse)) + .map(function (i) { + return 'chrome ' + e2c[i] + }) + } + }, + node_ray: { + matches: ['sign', 'version'], + regexp: /^node\s*(>=?|<=?)\s*([\d.]+)$/i, + select: function (context, node) { + return browserslist.nodeVersions + .filter(generateSemverFilter(node.sign, node.version)) + .map(function (v) { + return 'node ' + v + }) + } + }, + browser_ray: { + matches: ['browser', 'sign', 'version'], + regexp: /^(\w+)\s*(>=?|<=?)\s*([\d.]+|esr)$/i, + select: function (context, node) { + var version = node.version + var data = checkName(node.browser, context) + var alias = browserslist.versionAliases[data.name][version.toLowerCase()] + if (alias) version = alias + if (!/[\d.]+/.test(version)) { + throw new BrowserslistError( + 'Unknown version ' + version + ' of ' + node.browser + ) + } + return data.released + .filter(generateFilter(node.sign, version)) + .map(function (v) { + return data.name + ' ' + v + }) + } + }, + firefox_esr: { + matches: [], + regexp: /^(firefox|ff|fx)\s+esr$/i, + select: function () { + return ['firefox ' + FIREFOX_ESR_VERSION] + } + }, + opera_mini_all: { + matches: [], + regexp: /(operamini|op_mini)\s+all/i, + select: function () { + return ['op_mini all'] + } + }, + electron_version: { + matches: ['version'], + regexp: /^electron\s+([\d.]+)$/i, + select: function (context, node) { + var versionToUse = normalizeElectron(node.version) + var chrome = e2c[versionToUse] + if (!chrome) { + throw new BrowserslistError( + 'Unknown version ' + node.version + ' of electron' + ) + } + return ['chrome ' + chrome] + } + }, + node_major_version: { + matches: ['version'], + regexp: /^node\s+(\d+)$/i, + select: nodeQuery + }, + node_minor_version: { + matches: ['version'], + regexp: /^node\s+(\d+\.\d+)$/i, + select: nodeQuery + }, + node_patch_version: { + matches: ['version'], + regexp: /^node\s+(\d+\.\d+\.\d+)$/i, + select: nodeQuery + }, + current_node: { + matches: [], + regexp: /^current\s+node$/i, + select: function (context) { + return [env.currentNode(resolve, context)] + } + }, + maintained_node: { + matches: [], + regexp: /^maintained\s+node\s+versions$/i, + select: function (context) { + var now = Date.now() + var queries = Object.keys(jsEOL) + .filter(function (key) { + return ( + now < Date.parse(jsEOL[key].end) && + now > Date.parse(jsEOL[key].start) && + isEolReleased(key) + ) + }) + .map(function (key) { + return 'node ' + key.slice(1) + }) + return resolve(queries, context) + } + }, + phantomjs_1_9: { + matches: [], + regexp: /^phantomjs\s+1.9$/i, + select: function () { + return ['safari 5'] + } + }, + phantomjs_2_1: { + matches: [], + regexp: /^phantomjs\s+2.1$/i, + select: function () { + return ['safari 6'] + } + }, + browser_version: { + matches: ['browser', 'version'], + regexp: /^(\w+)\s+(tp|[\d.]+)$/i, + select: function (context, node) { + var version = node.version + if (/^tp$/i.test(version)) version = 'TP' + var data = checkName(node.browser, context) + var alias = normalizeVersion(data, version) + if (alias) { + version = alias + } else { + if (version.indexOf('.') === -1) { + alias = version + '.0' + } else { + alias = version.replace(/\.0$/, '') + } + alias = normalizeVersion(data, alias) + if (alias) { + version = alias + } else if (context.ignoreUnknownVersions) { + return [] + } else { + throw new BrowserslistError( + 'Unknown version ' + version + ' of ' + node.browser + ) + } + } + return [data.name + ' ' + version] + } + }, + browserslist_config: { + matches: [], + regexp: /^browserslist config$/i, + needsPath: true, + select: function (context) { + return browserslist(undefined, context) + } + }, + extends: { + matches: ['config'], + regexp: /^extends (.+)$/i, + needsPath: true, + select: function (context, node) { + return resolve(env.loadQueries(context, node.config), context) + } + }, + defaults: { + matches: [], + regexp: /^defaults$/i, + select: function (context) { + return resolve(browserslist.defaults, context) + } + }, + dead: { + matches: [], + regexp: /^dead$/i, + select: function (context) { + var dead = [ + 'Baidu >= 0', + 'ie <= 11', + 'ie_mob <= 11', + 'bb <= 10', + 'op_mob <= 12.1', + 'samsung 4' + ] + return resolve(dead, context) + } + }, + unknown: { + matches: [], + regexp: /^(\w+)$/i, + select: function (context, node) { + if (byName(node.query, context)) { + throw new BrowserslistError( + 'Specify versions in Browserslist query for browser ' + node.query + ) + } else { + throw unknownQuery(node.query) + } + } + } +} + +// Get and convert Can I Use data + +;(function () { + for (var name in agents) { + var browser = agents[name] + browserslist.data[name] = { + name: name, + versions: normalize(agents[name].versions), + released: normalize(agents[name].versions.slice(0, -3)), + releaseDate: agents[name].release_date + } + fillUsage(browserslist.usage.global, name, browser.usage_global) + + browserslist.versionAliases[name] = {} + for (var i = 0; i < browser.versions.length; i++) { + var full = browser.versions[i] + if (!full) continue + + if (full.indexOf('-') !== -1) { + var interval = full.split('-') + for (var j = 0; j < interval.length; j++) { + browserslist.versionAliases[name][interval[j]] = full + } + } + } + } + + browserslist.nodeVersions = jsReleases.map(function (release) { + return release.version + }) +})() + +browserslist.versionAliases.firefox.esr = FIREFOX_ESR_VERSION + +module.exports = browserslist diff --git a/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node.js b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node.js new file mode 100644 index 0000000000000000000000000000000000000000..57464e29a32326b02ded833f0b67b57409c1b877 --- /dev/null +++ b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node.js @@ -0,0 +1,504 @@ +var feature = require('caniuse-lite/dist/unpacker/feature').default +var region = require('caniuse-lite/dist/unpacker/region').default +var fs = require('fs') +var path = require('path') + +var BrowserslistError = require('./error') + +var IS_SECTION = /^\s*\[(.+)]\s*$/ +var CONFIG_PATTERN = /^browserslist-config-/ +var SCOPED_CONFIG__PATTERN = + /^@[^/]+(?:\/[^/]+)?\/browserslist-config(?:-|$|\/)/ +var FORMAT = + 'Browserslist config should be a string or an array ' + + 'of strings with browser queries' +var PATHTYPE_UNKNOWN = 'unknown' +var PATHTYPE_DIR = 'directory' +var PATHTYPE_FILE = 'file' + +var dataTimeChecked = false +var statCache = {} +var configPathCache = {} +var parseConfigCache = {} + +function checkExtend(name) { + var use = ' Use `dangerousExtend` option to disable.' + if (!CONFIG_PATTERN.test(name) && !SCOPED_CONFIG__PATTERN.test(name)) { + throw new BrowserslistError( + 'Browserslist config needs `browserslist-config-` prefix. ' + use + ) + } + if (name.replace(/^@[^/]+\//, '').indexOf('.') !== -1) { + throw new BrowserslistError( + '`.` not allowed in Browserslist config name. ' + use + ) + } + if (name.indexOf('node_modules') !== -1) { + throw new BrowserslistError( + '`node_modules` not allowed in Browserslist config.' + use + ) + } +} + +function getPathType(filepath) { + var stats + try { + stats = fs.existsSync(filepath) && fs.statSync(filepath) + } catch (err) { + /* c8 ignore start */ + if ( + err.code !== 'ENOENT' && + err.code !== 'EACCES' && + err.code !== 'ERR_ACCESS_DENIED' + ) { + throw err + } + /* c8 ignore end */ + } + + if (stats && stats.isDirectory()) return PATHTYPE_DIR + if (stats && stats.isFile()) return PATHTYPE_FILE + + return PATHTYPE_UNKNOWN +} + +function isFile(file) { + return getPathType(file) === PATHTYPE_FILE +} + +function isDirectory(dir) { + return getPathType(dir) === PATHTYPE_DIR +} + +function eachParent(file, callback, cache) { + var loc = path.resolve(file) + var pathsForCacheResult = [] + var result + do { + if (!pathInRoot(loc)) { + break + } + if (cache && loc in cache) { + result = cache[loc] + break + } + pathsForCacheResult.push(loc) + + if (!isDirectory(loc)) { + continue + } + + var locResult = callback(loc) + if (typeof locResult !== 'undefined') { + result = locResult + break + } + } while (loc !== (loc = path.dirname(loc))) + + if (cache && !process.env.BROWSERSLIST_DISABLE_CACHE) { + pathsForCacheResult.forEach(function (cachePath) { + cache[cachePath] = result + }) + } + return result +} + +function pathInRoot(p) { + if (!process.env.BROWSERSLIST_ROOT_PATH) return true + var rootPath = path.resolve(process.env.BROWSERSLIST_ROOT_PATH) + if (path.relative(rootPath, p).substring(0, 2) === '..') { + return false + } + return true +} + +function check(section) { + if (Array.isArray(section)) { + for (var i = 0; i < section.length; i++) { + if (typeof section[i] !== 'string') { + throw new BrowserslistError(FORMAT) + } + } + } else if (typeof section !== 'string') { + throw new BrowserslistError(FORMAT) + } +} + +function pickEnv(config, opts) { + if (typeof config !== 'object') return config + + var name + if (typeof opts.env === 'string') { + name = opts.env + } else if (process.env.BROWSERSLIST_ENV) { + name = process.env.BROWSERSLIST_ENV + } else if (process.env.NODE_ENV) { + name = process.env.NODE_ENV + } else { + name = 'production' + } + + if (opts.throwOnMissing) { + if (name && name !== 'defaults' && !config[name]) { + throw new BrowserslistError( + 'Missing config for Browserslist environment `' + name + '`' + ) + } + } + + return config[name] || config.defaults +} + +function parsePackage(file) { + var text = fs + .readFileSync(file) + .toString() + .replace(/^\uFEFF/m, '') + var list + if (text.indexOf('"browserslist"') >= 0) { + list = JSON.parse(text).browserslist + } else if (text.indexOf('"browserlist"') >= 0) { + var config = JSON.parse(text) + if (config.browserlist && !config.browserslist) { + throw new BrowserslistError( + '`browserlist` key instead of `browserslist` in ' + file + ) + } + } + if (Array.isArray(list) || typeof list === 'string') { + list = { defaults: list } + } + for (var i in list) { + check(list[i]) + } + + return list +} + +function parsePackageOrReadConfig(file) { + if (file in parseConfigCache) { + return parseConfigCache[file] + } + + var isPackage = path.basename(file) === 'package.json' + var result = isPackage ? parsePackage(file) : module.exports.readConfig(file) + + if (!process.env.BROWSERSLIST_DISABLE_CACHE) { + parseConfigCache[file] = result + } + return result +} + +function latestReleaseTime(agents) { + var latest = 0 + for (var name in agents) { + var dates = agents[name].releaseDate || {} + for (var key in dates) { + if (latest < dates[key]) { + latest = dates[key] + } + } + } + return latest * 1000 +} + +function getMonthsPassed(date) { + var now = new Date() + var past = new Date(date) + + var years = now.getFullYear() - past.getFullYear() + var months = now.getMonth() - past.getMonth() + + return years * 12 + months +} + +function normalizeStats(data, stats) { + if (!data) { + data = {} + } + if (stats && 'dataByBrowser' in stats) { + stats = stats.dataByBrowser + } + + if (typeof stats !== 'object') return undefined + + var normalized = Object.create(null) + for (var i in stats) { + var versions = Object.keys(stats[i]) + var known = Object.prototype.hasOwnProperty.call(data, i) && data[i] + if (versions.length === 1 && known && known.versions.length === 1) { + var normal = known.versions[0] + normalized[i] = Object.create(null) + normalized[i][normal] = stats[i][versions[0]] + } else { + normalized[i] = stats[i] + } + } + + return normalized +} + +function normalizeUsageData(usageData, data) { + for (var browser in usageData) { + var browserUsage = usageData[browser] + // https://github.com/browserslist/browserslist/issues/431#issuecomment-565230615 + // caniuse-db returns { 0: "percentage" } for `and_*` regional stats + if ('0' in browserUsage) { + var versions = data[browser].versions + browserUsage[versions[versions.length - 1]] = browserUsage[0] + delete browserUsage[0] + } + } +} + +module.exports = { + loadQueries: function loadQueries(ctx, name) { + if (!ctx.dangerousExtend && !process.env.BROWSERSLIST_DANGEROUS_EXTEND) { + checkExtend(name) + } + var queries = require(require.resolve(name, { paths: ['.', ctx.path] })) + if (typeof queries === 'object' && queries !== null && queries.__esModule) { + queries = queries.default + } + if (queries) { + if (Array.isArray(queries)) { + return queries + } else if (typeof queries === 'object') { + if (!queries.defaults) queries.defaults = [] + return pickEnv(queries, ctx, name) + } + } + throw new BrowserslistError( + '`' + + name + + '` config exports not an array of queries' + + ' or an object of envs' + ) + }, + + loadStat: function loadStat(ctx, name, data) { + if (!ctx.dangerousExtend && !process.env.BROWSERSLIST_DANGEROUS_EXTEND) { + checkExtend(name) + } + var stats = require( + // Use forward slashes for module paths, also on Windows. + require.resolve(path.posix.join(name, 'browserslist-stats.json'), { + paths: ['.'] + }) + ) + return normalizeStats(data, stats) + }, + + getStat: function getStat(opts, data) { + var stats + if (opts.stats) { + stats = opts.stats + } else if (process.env.BROWSERSLIST_STATS) { + stats = process.env.BROWSERSLIST_STATS + } else if (opts.path && path.resolve && fs.existsSync) { + stats = eachParent( + opts.path, + function (dir) { + var file = path.join(dir, 'browserslist-stats.json') + return isFile(file) ? file : undefined + }, + statCache + ) + } + if (typeof stats === 'string') { + try { + stats = JSON.parse(fs.readFileSync(stats)) + } catch (e) { + throw new BrowserslistError("Can't read " + stats) + } + } + return normalizeStats(data, stats) + }, + + loadConfig: function loadConfig(opts) { + if (process.env.BROWSERSLIST) { + return process.env.BROWSERSLIST + } else if (opts.config || process.env.BROWSERSLIST_CONFIG) { + var file = opts.config || process.env.BROWSERSLIST_CONFIG + return pickEnv(parsePackageOrReadConfig(file), opts) + } else if (opts.path) { + return pickEnv(module.exports.findConfig(opts.path), opts) + } else { + return undefined + } + }, + + loadCountry: function loadCountry(usage, country, data) { + var code = country.replace(/[^\w-]/g, '') + if (!usage[code]) { + var compressed + try { + compressed = require('caniuse-lite/data/regions/' + code + '.js') + } catch (e) { + throw new BrowserslistError('Unknown region name `' + code + '`.') + } + var usageData = region(compressed) + normalizeUsageData(usageData, data) + usage[country] = Object.create(null) + for (var i in usageData) { + for (var j in usageData[i]) { + usage[country][i + ' ' + j] = usageData[i][j] + } + } + } + }, + + loadFeature: function loadFeature(features, name) { + name = name.replace(/[^\w-]/g, '') + if (features[name]) return + var compressed + try { + compressed = require('caniuse-lite/data/features/' + name + '.js') + } catch (e) { + throw new BrowserslistError('Unknown feature name `' + name + '`.') + } + var stats = feature(compressed).stats + features[name] = {} + for (var i in stats) { + features[name][i] = {} + for (var j in stats[i]) { + features[name][i][j] = stats[i][j] + } + } + }, + + parseConfig: function parseConfig(string) { + var result = { defaults: [] } + var sections = ['defaults'] + + string + .toString() + .replace(/#[^\n]*/g, '') + .split(/\n|,/) + .map(function (line) { + return line.trim() + }) + .filter(function (line) { + return line !== '' + }) + .forEach(function (line) { + if (IS_SECTION.test(line)) { + sections = line.match(IS_SECTION)[1].trim().split(' ') + sections.forEach(function (section) { + if (result[section]) { + throw new BrowserslistError( + 'Duplicate section ' + section + ' in Browserslist config' + ) + } + result[section] = [] + }) + } else { + sections.forEach(function (section) { + result[section].push(line) + }) + } + }) + + return result + }, + + readConfig: function readConfig(file) { + if (!isFile(file)) { + throw new BrowserslistError("Can't read " + file + ' config') + } + + return module.exports.parseConfig(fs.readFileSync(file)) + }, + + findConfigFile: function findConfigFile(from) { + return eachParent( + from, + function (dir) { + var config = path.join(dir, 'browserslist') + var pkg = path.join(dir, 'package.json') + var rc = path.join(dir, '.browserslistrc') + + var pkgBrowserslist + if (isFile(pkg)) { + try { + pkgBrowserslist = parsePackage(pkg) + } catch (e) { + if (e.name === 'BrowserslistError') throw e + console.warn( + '[Browserslist] Could not parse ' + pkg + '. Ignoring it.' + ) + } + } + + if (isFile(config) && pkgBrowserslist) { + throw new BrowserslistError( + dir + ' contains both browserslist and package.json with browsers' + ) + } else if (isFile(rc) && pkgBrowserslist) { + throw new BrowserslistError( + dir + + ' contains both .browserslistrc and package.json with browsers' + ) + } else if (isFile(config) && isFile(rc)) { + throw new BrowserslistError( + dir + ' contains both .browserslistrc and browserslist' + ) + } else if (isFile(config)) { + return config + } else if (isFile(rc)) { + return rc + } else if (pkgBrowserslist) { + return pkg + } + }, + configPathCache + ) + }, + + findConfig: function findConfig(from) { + var configFile = this.findConfigFile(from) + + return configFile ? parsePackageOrReadConfig(configFile) : undefined + }, + + clearCaches: function clearCaches() { + dataTimeChecked = false + statCache = {} + configPathCache = {} + parseConfigCache = {} + + this.cache = {} + }, + + oldDataWarning: function oldDataWarning(agentsObj) { + if (dataTimeChecked) return + dataTimeChecked = true + if (process.env.BROWSERSLIST_IGNORE_OLD_DATA) return + + var latest = latestReleaseTime(agentsObj) + var monthsPassed = getMonthsPassed(latest) + + if (latest !== 0 && monthsPassed >= 6) { + if (process.env.BROWSERSLIST_TRACE_WARNING) { + console.info('Last browser release in DB: ' + String(new Date(latest))) + console.trace() + } + + var months = monthsPassed + ' ' + (monthsPassed > 1 ? 'months' : 'month') + console.warn( + 'Browserslist: browsers data (caniuse-lite) is ' + + months + + ' old. Please run:\n' + + ' npx update-browserslist-db@latest\n' + + ' Why you should do it regularly: ' + + 'https://github.com/browserslist/update-db#readme' + ) + } + }, + + currentNode: function currentNode() { + return 'node ' + process.versions.node + }, + + env: process.env +} diff --git a/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node_modules/.bin/baseline-browser-mapping b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node_modules/.bin/baseline-browser-mapping new file mode 100644 index 0000000000000000000000000000000000000000..544a8f51c34a58cfac77c6b150832eae741b1de1 --- /dev/null +++ b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node_modules/.bin/baseline-browser-mapping @@ -0,0 +1,43 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") +basedir_win="$basedir" +exe="" +msys="" + +case `uname -a` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir_win=`cygpath -w "$basedir"` + fi + exe=".exe" + msys="true" + ;; + *WSL2*) + if command -v wslpath > /dev/null 2>&1; then + basedir_win="$(wslpath -w "$basedir" 2> /dev/null)" + if [ $? -ne 0 ] || [ -z "$basedir_win" ]; then + basedir_win="$basedir" + else + exe=".exe" + fi + fi + ;; +esac + +if [ -z "$NODE_PATH" ]; then + export NODE_PATH="/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/node_modules:/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules:/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/node_modules" +else + export NODE_PATH="/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/node_modules:/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules:/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/node_modules:$NODE_PATH" +fi +if [ -n "$exe" ] && [ -x "$basedir/node.exe" ]; then + exec "$basedir/node.exe" "$basedir_win/../../../../../baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/dist/cli.cjs" "$@" +elif [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../../../../../baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/dist/cli.cjs" "$@" +elif command -v node >/dev/null 2>&1; then + exec node "$basedir/../../../../../baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/dist/cli.cjs" "$@" +elif [ -n "$exe" ] && command -v node.exe >/dev/null 2>&1; then + exec node.exe "$basedir_win/../../../../../baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/dist/cli.cjs" "$@" +else + exec node "$basedir/../../../../../baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/dist/cli.cjs" "$@" +fi +# cmd-shim-target=/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/dist/cli.cjs diff --git a/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node_modules/.bin/baseline-browser-mapping (Hong Ming Tan's conflicted copy 2026-08-07) b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node_modules/.bin/baseline-browser-mapping (Hong Ming Tan's conflicted copy 2026-08-07) new file mode 100644 index 0000000000000000000000000000000000000000..0850e20c1bdb112cae71697306ac4de4a505e554 --- /dev/null +++ b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node_modules/.bin/baseline-browser-mapping (Hong Ming Tan's conflicted copy 2026-08-07) @@ -0,0 +1,21 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -z "$NODE_PATH" ]; then + export NODE_PATH="/Users/hongmingtan/Library/CloudStorage/Dropbox-Personal/PHD/Teaching/BME5203 AI From Basics to Execution/AgenticNodeBuilder2/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/node_modules:/Users/hongmingtan/Library/CloudStorage/Dropbox-Personal/PHD/Teaching/BME5203 AI From Basics to Execution/AgenticNodeBuilder2/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules:/Users/hongmingtan/Library/CloudStorage/Dropbox-Personal/PHD/Teaching/BME5203 AI From Basics to Execution/AgenticNodeBuilder2/frontend/node_modules/.pnpm/node_modules" +else + export NODE_PATH="/Users/hongmingtan/Library/CloudStorage/Dropbox-Personal/PHD/Teaching/BME5203 AI From Basics to Execution/AgenticNodeBuilder2/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/node_modules:/Users/hongmingtan/Library/CloudStorage/Dropbox-Personal/PHD/Teaching/BME5203 AI From Basics to Execution/AgenticNodeBuilder2/frontend/node_modules/.pnpm/baseline-browser-mapping@2.11.12/node_modules:/Users/hongmingtan/Library/CloudStorage/Dropbox-Personal/PHD/Teaching/BME5203 AI From Basics to Execution/AgenticNodeBuilder2/frontend/node_modules/.pnpm/node_modules:$NODE_PATH" +fi +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../../../../../baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/dist/cli.cjs" "$@" +else + exec node "$basedir/../../../../../baseline-browser-mapping@2.11.12/node_modules/baseline-browser-mapping/dist/cli.cjs" "$@" +fi diff --git a/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node_modules/.bin/browserslist b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node_modules/.bin/browserslist new file mode 100644 index 0000000000000000000000000000000000000000..8d20d3b0316b4344ea006349447b3fa637a2f13e --- /dev/null +++ b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node_modules/.bin/browserslist @@ -0,0 +1,43 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") +basedir_win="$basedir" +exe="" +msys="" + +case `uname -a` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir_win=`cygpath -w "$basedir"` + fi + exe=".exe" + msys="true" + ;; + *WSL2*) + if command -v wslpath > /dev/null 2>&1; then + basedir_win="$(wslpath -w "$basedir" 2> /dev/null)" + if [ $? -ne 0 ] || [ -z "$basedir_win" ]; then + basedir_win="$basedir" + else + exe=".exe" + fi + fi + ;; +esac + +if [ -z "$NODE_PATH" ]; then + export NODE_PATH="/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node_modules:/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules:/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/node_modules" +else + export NODE_PATH="/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node_modules:/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules:/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/node_modules:$NODE_PATH" +fi +if [ -n "$exe" ] && [ -x "$basedir/node.exe" ]; then + exec "$basedir/node.exe" "$basedir_win/../../cli.js" "$@" +elif [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../../cli.js" "$@" +elif command -v node >/dev/null 2>&1; then + exec node "$basedir/../../cli.js" "$@" +elif [ -n "$exe" ] && command -v node.exe >/dev/null 2>&1; then + exec node.exe "$basedir_win/../../cli.js" "$@" +else + exec node "$basedir/../../cli.js" "$@" +fi +# cmd-shim-target=/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/cli.js diff --git a/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node_modules/.bin/update-browserslist-db b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node_modules/.bin/update-browserslist-db new file mode 100644 index 0000000000000000000000000000000000000000..02a54732c4228163225583cd4982e70d552845cc --- /dev/null +++ b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node_modules/.bin/update-browserslist-db @@ -0,0 +1,43 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") +basedir_win="$basedir" +exe="" +msys="" + +case `uname -a` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir_win=`cygpath -w "$basedir"` + fi + exe=".exe" + msys="true" + ;; + *WSL2*) + if command -v wslpath > /dev/null 2>&1; then + basedir_win="$(wslpath -w "$basedir" 2> /dev/null)" + if [ $? -ne 0 ] || [ -z "$basedir_win" ]; then + basedir_win="$basedir" + else + exe=".exe" + fi + fi + ;; +esac + +if [ -z "$NODE_PATH" ]; then + export NODE_PATH="/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/update-browserslist-db@1.2.3_browserslist@4.28.7/node_modules/update-browserslist-db/node_modules:/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/update-browserslist-db@1.2.3_browserslist@4.28.7/node_modules:/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/node_modules" +else + export NODE_PATH="/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/update-browserslist-db@1.2.3_browserslist@4.28.7/node_modules/update-browserslist-db/node_modules:/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/update-browserslist-db@1.2.3_browserslist@4.28.7/node_modules:/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/node_modules:$NODE_PATH" +fi +if [ -n "$exe" ] && [ -x "$basedir/node.exe" ]; then + exec "$basedir/node.exe" "$basedir_win/../../../../../update-browserslist-db@1.2.3_browserslist@4.28.7/node_modules/update-browserslist-db/cli.js" "$@" +elif [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../../../../../update-browserslist-db@1.2.3_browserslist@4.28.7/node_modules/update-browserslist-db/cli.js" "$@" +elif command -v node >/dev/null 2>&1; then + exec node "$basedir/../../../../../update-browserslist-db@1.2.3_browserslist@4.28.7/node_modules/update-browserslist-db/cli.js" "$@" +elif [ -n "$exe" ] && command -v node.exe >/dev/null 2>&1; then + exec node.exe "$basedir_win/../../../../../update-browserslist-db@1.2.3_browserslist@4.28.7/node_modules/update-browserslist-db/cli.js" "$@" +else + exec node "$basedir/../../../../../update-browserslist-db@1.2.3_browserslist@4.28.7/node_modules/update-browserslist-db/cli.js" "$@" +fi +# cmd-shim-target=/Users/hongmingtan/.codex/.chatgpt-projects/g-p-69534aeacdb48191b1d999925db783c8/frontend/node_modules/.pnpm/update-browserslist-db@1.2.3_browserslist@4.28.7/node_modules/update-browserslist-db/cli.js diff --git a/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node_modules/.bin/update-browserslist-db (Hong Ming Tan's conflicted copy 2026-08-07) b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node_modules/.bin/update-browserslist-db (Hong Ming Tan's conflicted copy 2026-08-07) new file mode 100644 index 0000000000000000000000000000000000000000..6866fb702b739c90fb8e8278e1ecea0343a853e8 --- /dev/null +++ b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/node_modules/.bin/update-browserslist-db (Hong Ming Tan's conflicted copy 2026-08-07) @@ -0,0 +1,21 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -z "$NODE_PATH" ]; then + export NODE_PATH="/Users/hongmingtan/Library/CloudStorage/Dropbox-Personal/PHD/Teaching/BME5203 AI From Basics to Execution/AgenticNodeBuilder2/frontend/node_modules/.pnpm/update-browserslist-db@1.2.3_browserslist@4.28.7/node_modules/update-browserslist-db/node_modules:/Users/hongmingtan/Library/CloudStorage/Dropbox-Personal/PHD/Teaching/BME5203 AI From Basics to Execution/AgenticNodeBuilder2/frontend/node_modules/.pnpm/update-browserslist-db@1.2.3_browserslist@4.28.7/node_modules:/Users/hongmingtan/Library/CloudStorage/Dropbox-Personal/PHD/Teaching/BME5203 AI From Basics to Execution/AgenticNodeBuilder2/frontend/node_modules/.pnpm/node_modules" +else + export NODE_PATH="/Users/hongmingtan/Library/CloudStorage/Dropbox-Personal/PHD/Teaching/BME5203 AI From Basics to Execution/AgenticNodeBuilder2/frontend/node_modules/.pnpm/update-browserslist-db@1.2.3_browserslist@4.28.7/node_modules/update-browserslist-db/node_modules:/Users/hongmingtan/Library/CloudStorage/Dropbox-Personal/PHD/Teaching/BME5203 AI From Basics to Execution/AgenticNodeBuilder2/frontend/node_modules/.pnpm/update-browserslist-db@1.2.3_browserslist@4.28.7/node_modules:/Users/hongmingtan/Library/CloudStorage/Dropbox-Personal/PHD/Teaching/BME5203 AI From Basics to Execution/AgenticNodeBuilder2/frontend/node_modules/.pnpm/node_modules:$NODE_PATH" +fi +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../../../../../update-browserslist-db@1.2.3_browserslist@4.28.7/node_modules/update-browserslist-db/cli.js" "$@" +else + exec node "$basedir/../../../../../update-browserslist-db@1.2.3_browserslist@4.28.7/node_modules/update-browserslist-db/cli.js" "$@" +fi diff --git a/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/package.json b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/package.json new file mode 100644 index 0000000000000000000000000000000000000000..0ad01425e4d6867295280d6fdad0369e39c14879 --- /dev/null +++ b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/package.json @@ -0,0 +1,45 @@ +{ + "name": "browserslist", + "version": "4.28.7", + "description": "Share target browsers between different front-end tools, like Autoprefixer, Stylelint and babel-env-preset", + "keywords": [ + "browsers", + "caniuse", + "target" + ], + "license": "MIT", + "author": "Andrey Sitnik ", + "repository": "browserslist/browserslist", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "browserslist": "cli.js" + }, + "browser": { + "./node.js": "./browser.js", + "path": false + }, + "types": "./index.d.ts", + "dependencies": { + "baseline-browser-mapping": "^2.10.44", + "caniuse-lite": "^1.0.30001806", + "electron-to-chromium": "^1.5.393", + "node-releases": "^2.0.51", + "update-browserslist-db": "^1.2.3" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } +} diff --git a/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/parse.js b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/parse.js new file mode 100644 index 0000000000000000000000000000000000000000..5bd74725e8157445cb6fff0a715e22f9fed261f4 --- /dev/null +++ b/frontend/node_modules/.pnpm/browserslist@4.28.7/node_modules/browserslist/parse.js @@ -0,0 +1,136 @@ +var SPACE = /\s/ + +function flatten(array) { + if (!Array.isArray(array)) return [array] + // Iterative flatten: `reduce`+`concat` copies the accumulator on every step, + // which is O(n²) once a query resolves to many nodes. + var result = [] + var stack = [array] + while (stack.length) { + var item = stack.pop() + if (Array.isArray(item)) { + for (var i = item.length - 1; i >= 0; i--) { + stack.push(item[i]) + } + } else { + result.push(item) + } + } + return result +} + +function matchQuery(all, query) { + var node = { query: query } + if (query.indexOf('not ') === 0) { + node.not = true + query = query.slice(4) + } + + for (var name in all) { + var type = all[name] + var match = query.match(type.regexp) + if (match) { + node.type = name + for (var i = 0; i < type.matches.length; i++) { + node[type.matches[i]] = match[i + 1] + } + return node + } + } + + node.type = 'unknown' + return node +} + +function pushClause(all, qs, text, compose) { + var node = matchQuery(all, text.trim()) + node.compose = compose + qs.push(node) +} + +// Splits a query block into clauses on the `\s+and\s+`, `\s+or\s+` and `,\s*` +// delimiters in a single left-to-right pass. The previous implementation grew +// a suffix one character at a time and re-tested anchored `\s+…` regexps at +// every length, which backtracks across whitespace runs and is O(n²) — a +// small padded query could freeze the event loop for tens of seconds. +function parseBlock(all, block, qs) { + if (block.length === 0) return + + var len = block.length + var clauseStart = 0 + // Compose for the clause currently being read; the leftmost clause is `or`. + var compose = 'or' + var i = 0 + + while (i < len) { + var ch = block[i] + + if (ch === ',') { + // `,\s*` delimiter. A delimiter at the very start (i === 0) has no left + // clause — the original never emits one there. + if (i !== 0) pushClause(all, qs, block.slice(clauseStart, i), compose) + i++ + while (i < len && SPACE.test(block[i])) i++ + compose = 'or' + clauseStart = i + continue + } + + if (SPACE.test(ch)) { + // Possible `\s+and\s+` or `\s+or\s+`. Scan the whitespace run once + // (linear, no backtracking), then check the following keyword. + var q = i + while (q < len && SPACE.test(block[q])) q++ + + if ( + q + 3 < len && + (block[q] === 'a' || block[q] === 'A') && + (block[q + 1] === 'n' || block[q + 1] === 'N') && + (block[q + 2] === 'd' || block[q + 2] === 'D') && + SPACE.test(block[q + 3]) + ) { + // The leading `\s+` of `\s+and\s+` absorbs whitespace at the block + // start, so a delimiter at i === 0 has no left clause. + if (i !== 0) pushClause(all, qs, block.slice(clauseStart, i), compose) + var afterAnd = q + 3 + while (afterAnd < len && SPACE.test(block[afterAnd])) afterAnd++ + compose = 'and' + i = afterAnd + clauseStart = afterAnd + continue + } else if ( + q + 2 < len && + (block[q] === 'o' || block[q] === 'O') && + (block[q + 1] === 'r' || block[q + 1] === 'R') && + SPACE.test(block[q + 2]) + ) { + if (i !== 0) pushClause(all, qs, block.slice(clauseStart, i), compose) + var afterOr = q + 2 + while (afterOr < len && SPACE.test(block[afterOr])) afterOr++ + compose = 'or' + i = afterOr + clauseStart = afterOr + continue + } else { + // Whitespace inside a clause; skip the run and keep reading. + i = q + continue + } + } + + i++ + } + + pushClause(all, qs, block.slice(clauseStart), compose) +} + +module.exports = function parse(all, queries) { + if (!Array.isArray(queries)) queries = [queries] + return flatten( + queries.map(function (block) { + var qs = [] + parseBlock(all, block, qs) + return qs + }) + ) +} diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/LICENSE b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..06c608dcf4552094bc86dc48aaa90addb2886049 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/LICENSE @@ -0,0 +1,395 @@ +Attribution 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More_considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution 4.0 International Public License ("Public License"). To the +extent this Public License may be interpreted as a contract, You are +granted the Licensed Rights in consideration of Your acceptance of +these terms and conditions, and the Licensor grants You such rights in +consideration of benefits the Licensor receives from making the +Licensed Material available under these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + d. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + g. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's + License You apply must not prevent recipients of the Adapted + Material from complying with this Public License. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/README.md b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/README.md new file mode 100644 index 0000000000000000000000000000000000000000..7c3440f2cedd142e9b4d2548c2df0c5a696919b7 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/README.md @@ -0,0 +1,3 @@ +# caniuse-lite + +A smaller version of caniuse-db, with only the essentials! diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/agents.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/agents.js new file mode 100644 index 0000000000000000000000000000000000000000..3eadf58e6d99d9482e167d001bed4b664ded11b5 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/agents.js @@ -0,0 +1 @@ +module.exports={A:{A:{L:0,D:0,E:0,F:0,A:0,B:0.217074,"8C":0},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","8C","L","D","E","F","A","B","","",""],E:"IE",F:{"8C":962323200,L:998870400,D:1161129600,E:1237420800,F:1300060800,A:1346716800,B:1381968000}},B:{A:{"0":0,"1":0,"2":0,"3":0.127413,"4":0.136851,"5":0,"6":0.004719,"7":0,"8":0,"9":0,C:0,M:0,N:0,G:0,O:0,P:0,Q:0,R:0,H:0,S:0,T:0,U:0,V:0,W:0,X:0,Y:0,Z:0,a:0,b:0,c:0.009438,d:0,e:0,f:0,g:0,h:0,i:0,j:0,k:0,l:0,m:0,n:0,o:0,p:0,q:0,r:0,s:0,t:0.028314,u:0,v:0,w:0,x:0,y:0,z:0,AB:0,BB:0.004719,NB:0,OB:0,PB:0,CB:0.014157,QB:0.004719,RB:0.004719,SB:0.004719,TB:0.009438,UB:0.009438,VB:0.009438,WB:0.014157,XB:0.009438,YB:0.009438,ZB:0.009438,aB:0.009438,bB:0.014157,cB:0.018876,dB:0.028314,eB:0.033033,fB:0.070785,gB:1.13256,hB:3.19476,I:0.004719},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","C","M","N","G","O","P","Q","R","H","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","NB","OB","PB","CB","QB","RB","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","cB","dB","eB","fB","gB","hB","I","","",""],E:"Edge",F:{"0":1692576000,"1":1694649600,"2":1697155200,"3":1698969600,"4":1701993600,"5":1706227200,"6":1708732800,"7":1711152000,"8":1713398400,"9":1715990400,C:1438128000,M:1447286400,N:1470096000,G:1491868800,O:1508198400,P:1525046400,Q:1542067200,R:1579046400,H:1581033600,S:1586736000,T:1590019200,U:1594857600,V:1598486400,W:1602201600,X:1605830400,Y:1611360000,Z:1614816000,a:1618358400,b:1622073600,c:1626912000,d:1630627200,e:1632441600,f:1634774400,g:1637539200,h:1641427200,i:1643932800,j:1646265600,k:1649635200,l:1651190400,m:1653955200,n:1655942400,o:1659657600,p:1661990400,q:1664755200,r:1666915200,s:1670198400,t:1673481600,u:1675900800,v:1678665600,w:1680825600,x:1683158400,y:1685664000,z:1689897600,AB:1718841600,BB:1721865600,NB:1724371200,OB:1726704000,PB:1729123200,CB:1731542400,QB:1737417600,RB:1740614400,SB:1741219200,TB:1743984000,UB:1746316800,VB:1748476800,WB:1750896000,XB:1754611200,YB:1756944000,ZB:1759363200,aB:1761868800,bB:1764806400,cB:1768780800,dB:1770854400,eB:1773446400,fB:1775692800,gB:1778112000,hB:1780531200,I:1782950400},D:{C:"ms",M:"ms",N:"ms",G:"ms",O:"ms",P:"ms",Q:"ms"}},C:{A:{"0":0,"1":0,"2":0,"3":0,"4":0.127413,"5":0.259545,"6":0,"7":0,"8":0,"9":0.089661,"9C":0,bC:0,J:0,iB:0,L:0,D:0,E:0,F:0,A:0,B:0.028314,C:0,M:0,N:0,G:0,O:0,P:0,Q:0,jB:0,DB:0,EB:0,FB:0,GB:0,HB:0,IB:0,JB:0,K:0,KB:0,LB:0,MB:0,kB:0,lB:0,mB:0,nB:0,oB:0,pB:0,qB:0,rB:0,sB:0,tB:0,uB:0,vB:0,wB:0,xB:0,yB:0,zB:0,"0B":0,"1B":0,"2B":0,"3B":0,"4B":0,"5B":0.004719,"6B":0,"7B":0,"8B":0,"9B":0,AC:0,BC:0,cC:0,CC:0,dC:0,DC:0,EC:0,FC:0,GC:0,HC:0,IC:0,JC:0,KC:0,LC:0,MC:0,NC:0,OC:0,PC:0,QC:0,RC:0,SC:0,TC:0.004719,R:0,H:0,S:0,eC:0,T:0,U:0,V:0,W:0,X:0,Y:0,Z:0,a:0,b:0,c:0,d:0,e:0,f:0,g:0,h:0,i:0,j:0,k:0,l:0,m:0,n:0.004719,o:0,p:0,q:0,r:0,s:0,t:0,u:0,v:0,w:0,x:0.004719,y:0,z:0.122694,AB:0.084942,BB:0.089661,NB:0.066066,OB:0.051909,PB:0.084942,CB:0.089661,QB:0.084942,RB:0.084942,SB:0.056628,TB:0.075504,UB:0.108537,VB:0,WB:0,XB:0,YB:0.070785,ZB:0.009438,aB:0,bB:0,cB:0,dB:0,eB:0.004719,fB:0.014157,gB:0.009438,hB:0.014157,I:0.04719,fC:0.797511,UC:0.4719,gC:0,AD:0,BD:0,CD:0,DD:0},B:"moz",C:["9C","bC","CD","DD","J","iB","L","D","E","F","A","B","C","M","N","G","O","P","Q","jB","DB","EB","FB","GB","HB","IB","JB","K","KB","LB","MB","kB","lB","mB","nB","oB","pB","qB","rB","sB","tB","uB","vB","wB","xB","yB","zB","0B","1B","2B","3B","4B","5B","6B","7B","8B","9B","AC","BC","cC","CC","dC","DC","EC","FC","GC","HC","IC","JC","KC","LC","MC","NC","OC","PC","QC","RC","SC","TC","R","H","S","eC","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","NB","OB","PB","CB","QB","RB","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","cB","dB","eB","fB","gB","hB","I","fC","UC","gC","AD","BD"],E:"Firefox",F:{"0":1690848000,"1":1693267200,"2":1695686400,"3":1698105600,"4":1700524800,"5":1702944000,"6":1705968000,"7":1708387200,"8":1710806400,"9":1713225600,"9C":1161648000,bC:1213660800,CD:1246320000,DD:1264032000,J:1300752000,iB:1308614400,L:1313452800,D:1317081600,E:1317081600,F:1320710400,A:1324339200,B:1327968000,C:1331596800,M:1335225600,N:1338854400,G:1342483200,O:1346112000,P:1349740800,Q:1353628800,jB:1357603200,DB:1361232000,EB:1364860800,FB:1368489600,GB:1372118400,HB:1375747200,IB:1379376000,JB:1386633600,K:1391472000,KB:1395100800,LB:1398729600,MB:1402358400,kB:1405987200,lB:1409616000,mB:1413244800,nB:1417392000,oB:1421107200,pB:1424736000,qB:1428278400,rB:1431475200,sB:1435881600,tB:1439251200,uB:1442880000,vB:1446508800,wB:1450137600,xB:1453852800,yB:1457395200,zB:1461628800,"0B":1465257600,"1B":1470096000,"2B":1474329600,"3B":1479168000,"4B":1485216000,"5B":1488844800,"6B":1492560000,"7B":1497312000,"8B":1502150400,"9B":1506556800,AC:1510617600,BC:1516665600,cC:1520985600,CC:1525824000,dC:1529971200,DC:1536105600,EC:1540252800,FC:1544486400,GC:1548720000,HC:1552953600,IC:1558396800,JC:1562630400,KC:1567468800,LC:1571788800,MC:1575331200,NC:1578355200,OC:1581379200,PC:1583798400,QC:1586304000,RC:1588636800,SC:1591056000,TC:1593475200,R:1595894400,H:1598313600,S:1600732800,eC:1603152000,T:1605571200,U:1607990400,V:1611619200,W:1614038400,X:1616457600,Y:1618790400,Z:1622505600,a:1626134400,b:1628553600,c:1630972800,d:1633392000,e:1635811200,f:1638835200,g:1641859200,h:1644364800,i:1646697600,j:1649116800,k:1651536000,l:1653955200,m:1656374400,n:1658793600,o:1661212800,p:1663632000,q:1666051200,r:1668470400,s:1670889600,t:1673913600,u:1676332800,v:1678752000,w:1681171200,x:1683590400,y:1686009600,z:1688428800,AB:1715644800,BB:1718064000,NB:1720483200,OB:1722902400,PB:1725321600,CB:1727740800,QB:1730160000,RB:1732579200,SB:1736208000,TB:1738627200,UB:1741046400,VB:1743465600,WB:1745884800,XB:1748304000,YB:1750723200,ZB:1753142400,aB:1755561600,bB:1757980800,cB:1760400000,dB:1762819200,eB:1765238400,fB:1768262400,gB:1771891200,hB:1774310400,I:1776729600,fC:1779148800,UC:1781568000,gC:null,AD:null,BD:null}},D:{A:{"0":0.302016,"1":0.160446,"2":1.00515,"3":0.278421,"4":0.453024,"5":0.014157,"6":0.037752,"7":0.018876,"8":0.198198,"9":0.405834,J:0,iB:0,L:0,D:0,E:0,F:0,A:0,B:0,C:0,M:0,N:0,G:0,O:0,P:0,Q:0,jB:0,DB:0,EB:0,FB:0,GB:0,HB:0,IB:0,JB:0,K:0,KB:0,LB:0,MB:0,kB:0,lB:0,mB:0,nB:0,oB:0,pB:0,qB:0,rB:0,sB:0.084942,tB:0.084942,uB:0.084942,vB:0.084942,wB:0.084942,xB:0.084942,yB:0.084942,zB:0.084942,"0B":0.084942,"1B":0.084942,"2B":0.089661,"3B":0.084942,"4B":0.084942,"5B":0.084942,"6B":0.084942,"7B":0.084942,"8B":0.084942,"9B":0.084942,AC:0.084942,BC:0.084942,cC:0.084942,CC:0.084942,dC:0,DC:0,EC:0,FC:0,GC:0,HC:0.004719,IC:0,JC:0,KC:0.009438,LC:0.042471,MC:0,NC:0,OC:0,PC:0,QC:0,RC:0,SC:0,TC:0,R:0.028314,H:0,S:0,T:0,U:0,V:0,W:0.004719,X:0.018876,Y:0,Z:0,a:0,b:0.009438,c:0.009438,d:0.014157,e:0,f:0,g:0,h:0.004719,i:0.023595,j:0.014157,k:0.004719,l:0.009438,m:0.009438,n:0.202917,o:0.155727,p:0.132132,q:0.132132,r:0.132132,s:0.136851,t:0.632346,u:0.132132,v:0.165165,w:0.132132,x:0,y:0.023595,z:0.014157,AB:0.051909,BB:0.033033,NB:0.070785,OB:0.033033,PB:0.061347,CB:0.353925,QB:0.075504,RB:0.311454,SB:0.061347,TB:0.042471,UB:0.037752,VB:0.075504,WB:0.146289,XB:0.179322,YB:0.04719,ZB:0.04719,aB:0.462462,bB:0.09438,cB:0.278421,dB:0.42471,eB:0.495495,fB:0.4719,gB:5.50235,hB:8.70656,I:0.042471,fC:0.009438,UC:0,gC:0},B:"webkit",C:["","","","","","","","J","iB","L","D","E","F","A","B","C","M","N","G","O","P","Q","jB","DB","EB","FB","GB","HB","IB","JB","K","KB","LB","MB","kB","lB","mB","nB","oB","pB","qB","rB","sB","tB","uB","vB","wB","xB","yB","zB","0B","1B","2B","3B","4B","5B","6B","7B","8B","9B","AC","BC","cC","CC","dC","DC","EC","FC","GC","HC","IC","JC","KC","LC","MC","NC","OC","PC","QC","RC","SC","TC","R","H","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","NB","OB","PB","CB","QB","RB","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","cB","dB","eB","fB","gB","hB","I","fC","UC","gC"],E:"Chrome",F:{"0":1692057600,"1":1694476800,"2":1696896000,"3":1698710400,"4":1701993600,"5":1705968000,"6":1708387200,"7":1710806400,"8":1713225600,"9":1715644800,J:1264377600,iB:1274745600,L:1283385600,D:1287619200,E:1291248000,F:1296777600,A:1299542400,B:1303862400,C:1307404800,M:1312243200,N:1316131200,G:1316131200,O:1319500800,P:1323734400,Q:1328659200,jB:1332892800,DB:1337040000,EB:1340668800,FB:1343692800,GB:1348531200,HB:1352246400,IB:1357862400,JB:1361404800,K:1364428800,KB:1369094400,LB:1374105600,MB:1376956800,kB:1384214400,lB:1389657600,mB:1392940800,nB:1397001600,oB:1400544000,pB:1405468800,qB:1409011200,rB:1412640000,sB:1416268800,tB:1421798400,uB:1425513600,vB:1429401600,wB:1432080000,xB:1437523200,yB:1441152000,zB:1444780800,"0B":1449014400,"1B":1453248000,"2B":1456963200,"3B":1460592000,"4B":1464134400,"5B":1469059200,"6B":1472601600,"7B":1476230400,"8B":1480550400,"9B":1485302400,AC:1489017600,BC:1492560000,cC:1496707200,CC:1500940800,dC:1504569600,DC:1508198400,EC:1512518400,FC:1516752000,GC:1520294400,HC:1523923200,IC:1527552000,JC:1532390400,KC:1536019200,LC:1539648000,MC:1543968000,NC:1548720000,OC:1552348800,PC:1555977600,QC:1559606400,RC:1564444800,SC:1568073600,TC:1571702400,R:1575936000,H:1580860800,S:1586304000,T:1589846400,U:1594684800,V:1598313600,W:1601942400,X:1605571200,Y:1611014400,Z:1614556800,a:1618272000,b:1621987200,c:1626739200,d:1630368000,e:1632268800,f:1634601600,g:1637020800,h:1641340800,i:1643673600,j:1646092800,k:1648512000,l:1650931200,m:1653350400,n:1655769600,o:1659398400,p:1661817600,q:1664236800,r:1666656000,s:1669680000,t:1673308800,u:1675728000,v:1678147200,w:1680566400,x:1682985600,y:1685404800,z:1689724800,AB:1718064000,BB:1721174400,NB:1724112000,OB:1726531200,PB:1728950400,CB:1731369600,QB:1736812800,RB:1738627200,SB:1741046400,TB:1743465600,UB:1745884800,VB:1748304000,WB:1750723200,XB:1754352000,YB:1756771200,ZB:1759190400,aB:1761609600,bB:1764633600,cB:1768262400,dB:1770681600,eB:1773100800,fB:1775520000,gB:1777939200,hB:1780358400,I:1782777600,fC:null,UC:null,gC:null}},E:{A:{J:0,iB:0,L:0,D:0,E:0,F:0,A:0,B:0,C:0,M:0,N:0.004719,G:0,K:0,ED:0,hC:0,FD:0,GD:0,HD:0,ID:0,iC:0,VC:0,WC:0,JD:0.014157,KD:0.014157,LD:0,jC:0,kC:0,XC:0,MD:0.066066,YC:0,lC:0.004719,mC:0.004719,nC:0.009438,oC:0.004719,pC:0.009438,ND:0.103818,ZC:0.004719,qC:0.089661,rC:0.004719,sC:0.014157,tC:0.018876,uC:0.033033,OD:0.122694,aC:0.004719,vC:0.014157,wC:0.009438,xC:0.028314,yC:0.009438,zC:0.287859,"0C":0.014157,"1C":0.014157,"2C":0.070785,"3C":0.117975,"4C":0.089661,"5C":1.15144,PD:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","ED","hC","J","iB","FD","L","GD","D","HD","E","F","ID","A","iC","B","VC","C","WC","M","JD","N","KD","G","LD","jC","kC","XC","MD","YC","lC","mC","nC","oC","pC","ND","ZC","qC","rC","sC","tC","uC","OD","aC","vC","wC","xC","yC","zC","0C","1C","2C","3C","4C","5C","K","PD"],E:"Safari",F:{ED:1205798400,hC:1226534400,J:1244419200,iB:1275868800,FD:1311120000,L:1343174400,GD:1382400000,D:1382400000,HD:1410998400,E:1413417600,F:1443657600,ID:1458518400,A:1474329600,iC:1490572800,B:1505779200,VC:1522281600,C:1537142400,WC:1553472000,M:1568851200,JD:1585008000,N:1600214400,KD:1619395200,G:1632096000,LD:1635292800,jC:1639353600,kC:1647216000,XC:1652745600,MD:1658275200,YC:1662940800,lC:1666569600,mC:1670889600,nC:1674432000,oC:1679875200,pC:1684368000,ND:1690156800,ZC:1695686400,qC:1698192000,rC:1702252800,sC:1705881600,tC:1709596800,uC:1715558400,OD:1722211200,aC:1726444800,vC:1730073600,wC:1733875200,xC:1737936000,yC:1743379200,zC:1747008000,"0C":1757894400,"1C":1762128000,"2C":1762041600,"3C":1770854400,"4C":1774310400,"5C":null,K:null,PD:null}},F:{A:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,F:0,B:0,C:0,G:0,O:0,P:0,Q:0,jB:0,DB:0,EB:0,FB:0,GB:0,HB:0,IB:0,JB:0,K:0,KB:0,LB:0,MB:0,kB:0,lB:0,mB:0,nB:0,oB:0,pB:0,qB:0,rB:0,sB:0,tB:0,uB:0,vB:0,wB:0,xB:0,yB:0,zB:0,"0B":0,"1B":0,"2B":0,"3B":0,"4B":0,"5B":0,"6B":0,"7B":0,"8B":0,"9B":0,AC:0,BC:0,CC:0,DC:0,EC:0,FC:0,GC:0,HC:0,IC:0,JC:0,KC:0,LC:0,MC:0,NC:0,OC:0,PC:0,QC:0,RC:0,SC:0,TC:0,R:0,H:0,S:0,eC:0,T:0,U:0,V:0,W:0,X:0,Y:0,Z:0,a:0,b:0,c:0,d:0,e:0,f:0.023595,g:0,h:0,i:0.033033,j:0.09438,k:0,l:0,m:0,n:0,o:0,p:0,q:0,r:0,s:0,t:0,u:0,v:0,w:0,x:0,y:0,z:0,AB:0,BB:0,CB:0.391677,QD:0,RD:0,SD:0,TD:0,VC:0,"6C":0,UD:0,WC:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","F","QD","RD","SD","TD","B","VC","6C","UD","C","WC","G","O","P","Q","jB","DB","EB","FB","GB","HB","IB","JB","K","KB","LB","MB","kB","lB","mB","nB","oB","pB","qB","rB","sB","tB","uB","vB","wB","xB","yB","zB","0B","1B","2B","3B","4B","5B","6B","7B","8B","9B","AC","BC","CC","DC","EC","FC","GC","HC","IC","JC","KC","LC","MC","NC","OC","PC","QC","RC","SC","TC","R","H","S","eC","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","CB","","",""],E:"Opera",F:{"0":1736294400,"1":1739404800,"2":1744675200,"3":1747094400,"4":1751414400,"5":1756339200,"6":1757548800,"7":1761609600,"8":1762992000,"9":1764806400,F:1150761600,QD:1223424000,RD:1251763200,SD:1267488000,TD:1277942400,B:1292457600,VC:1302566400,"6C":1309219200,UD:1323129600,C:1323129600,WC:1352073600,G:1372723200,O:1377561600,P:1381104000,Q:1386288000,jB:1390867200,DB:1393891200,EB:1399334400,FB:1401753600,GB:1405987200,HB:1409616000,IB:1413331200,JB:1417132800,K:1422316800,KB:1425945600,LB:1430179200,MB:1433808000,kB:1438646400,lB:1442448000,mB:1445904000,nB:1449100800,oB:1454371200,pB:1457308800,qB:1462320000,rB:1465344000,sB:1470096000,tB:1474329600,uB:1477267200,vB:1481587200,wB:1486425600,xB:1490054400,yB:1494374400,zB:1498003200,"0B":1502236800,"1B":1506470400,"2B":1510099200,"3B":1515024000,"4B":1517961600,"5B":1521676800,"6B":1525910400,"7B":1530144000,"8B":1534982400,"9B":1537833600,AC:1543363200,BC:1548201600,CC:1554768000,DC:1561593600,EC:1566259200,FC:1570406400,GC:1573689600,HC:1578441600,IC:1583971200,JC:1587513600,KC:1592956800,LC:1595894400,MC:1600128000,NC:1603238400,OC:1613520000,PC:1612224000,QC:1616544000,RC:1619568000,SC:1623715200,TC:1627948800,R:1631577600,H:1633392000,S:1635984000,eC:1638403200,T:1642550400,U:1644969600,V:1647993600,W:1650412800,X:1652745600,Y:1654646400,Z:1657152000,a:1660780800,b:1663113600,c:1668816000,d:1668643200,e:1671062400,f:1675209600,g:1677024000,h:1679529600,i:1681948800,j:1684195200,k:1687219200,l:1690329600,m:1692748800,n:1696204800,o:1699920000,p:1699920000,q:1702944000,r:1707264000,s:1710115200,t:1711497600,u:1716336000,v:1719273600,w:1721088000,x:1724284800,y:1727222400,z:1732665600,AB:1769990400,BB:1772064000,CB:1776124800},D:{F:"o",B:"o",C:"o",QD:"o",RD:"o",SD:"o",TD:"o",VC:"o","6C":"o",UD:"o",WC:"o"}},G:{A:{E:0,hC:0,VD:0,"7C":0.00127431,WD:0,XD:0,YD:0.00382292,ZD:0,aD:0.00127431,bD:0,cD:0,dD:0.0140174,eD:0.421795,fD:0.00254861,gD:0,hD:0.0433264,iD:0,jD:0.0140174,kD:0,lD:0.00254861,mD:0.00892014,nD:0.0140174,oD:0.0127431,jC:0.00764583,kC:0.00892014,XC:0.0114687,pD:0.223003,YC:0.0203889,lC:0.0331319,mC:0.0178403,nC:0.0382292,oC:0.00892014,pC:0.0140174,qD:0.290542,ZC:0.0127431,qC:0.0191146,rC:0.0178403,sC:0.0267604,tC:0.0407778,uC:0.0726354,rD:0.187323,aC:0.0420521,vC:0.0802812,wC:0.0433264,xC:0.132528,yC:0.0598923,zC:1.91528,"0C":0.126156,"1C":0.131253,"2C":0.396309,"3C":0.54158,"4C":0.620587,"5C":7.03671},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","hC","VD","7C","WD","XD","YD","E","ZD","aD","bD","cD","dD","eD","fD","gD","hD","iD","jD","kD","lD","mD","nD","oD","jC","kC","XC","pD","YC","lC","mC","nC","oC","pC","qD","ZC","qC","rC","sC","tC","uC","rD","aC","vC","wC","xC","yC","zC","0C","1C","2C","3C","4C","5C","",""],E:"Safari on iOS",F:{hC:1270252800,VD:1283904000,"7C":1299628800,WD:1331078400,XD:1359331200,YD:1394409600,E:1410912000,ZD:1413763200,aD:1442361600,bD:1458518400,cD:1473724800,dD:1490572800,eD:1505779200,fD:1522281600,gD:1537142400,hD:1553472000,iD:1568851200,jD:1572220800,kD:1580169600,lD:1585008000,mD:1600214400,nD:1619395200,oD:1632096000,jC:1639353600,kC:1647216000,XC:1652659200,pD:1658275200,YC:1662940800,lC:1666569600,mC:1670889600,nC:1674432000,oC:1679875200,pC:1684368000,qD:1690156800,ZC:1694995200,qC:1698192000,rC:1702252800,sC:1705881600,tC:1709596800,uC:1715558400,rD:1722211200,aC:1726444800,vC:1730073600,wC:1733875200,xC:1737936000,yC:1743379200,zC:1747008000,"0C":1757894400,"1C":1762128000,"2C":1765497600,"3C":1770854400,"4C":1774310400,"5C":null}},H:{A:{sD:0},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","sD","","",""],E:"Opera Mini",F:{sD:1426464000}},I:{A:{bC:0,J:0,I:0.142444,tD:0,uD:0,vD:0,wD:0,"7C":0,xD:0,yD:0.0000570348},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","tD","uD","vD","bC","J","wD","7C","xD","yD","I","","",""],E:"Android Browser",F:{tD:1256515200,uD:1274313600,vD:1291593600,bC:1298332800,J:1318896000,wD:1341792000,"7C":1374624000,xD:1386547200,yD:1401667200,I:1782777600}},J:{A:{D:0,A:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","D","A","","",""],E:"Blackberry Browser",F:{D:1325376000,A:1359504000}},K:{A:{A:0,B:0,C:0,H:0.892489,VC:0,"6C":0,WC:0},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","VC","6C","C","WC","H","","",""],E:"Opera Mobile",F:{A:1287100800,B:1300752000,VC:1314835200,"6C":1318291200,C:1330300800,WC:1349740800,H:1709769600},D:{H:"webkit"}},L:{A:{I:44.7497},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","I","","",""],E:"Chrome for Android",F:{I:1782777600}},M:{A:{UC:0.36967},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","UC","","",""],E:"Firefox for Android",F:{UC:1781568000}},N:{A:{A:0,B:0},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","","",""],E:"IE Mobile",F:{A:1340150400,B:1353456000}},O:{A:{XC:0.617877},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","XC","","",""],E:"UC Browser for Android",F:{XC:1710115200},D:{XC:"webkit"}},P:{A:{J:0,DB:0,EB:0,FB:0.0069472,GB:0.0069472,HB:0.0069472,IB:0.0138944,JB:0.034736,K:0.0208416,KB:0.0555776,LB:0.159786,MB:0.986502,zD:0,"0D":0,"1D":0.0069472,"2D":0,"3D":0,iC:0,"4D":0,"5D":0,"6D":0,"7D":0,"8D":0,YC:0,ZC:0,aC:0,"9D":0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","J","zD","0D","1D","2D","3D","iC","4D","5D","6D","7D","8D","YC","ZC","aC","9D","DB","EB","FB","GB","HB","IB","JB","K","KB","LB","MB","","",""],E:"Samsung Internet",F:{J:1461024000,zD:1481846400,"0D":1509408000,"1D":1528329600,"2D":1546128000,"3D":1554163200,iC:1567900800,"4D":1582588800,"5D":1593475200,"6D":1605657600,"7D":1618531200,"8D":1629072000,YC:1640736000,ZC:1651708800,aC:1659657600,"9D":1667260800,DB:1677369600,EB:1684454400,FB:1689292800,GB:1697587200,HB:1711497600,IB:1715126400,JB:1717718400,K:1725667200,KB:1746057600,LB:1761264000,MB:1779235200}},Q:{A:{AE:0.100339},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","AE","","",""],E:"QQ Browser",F:{AE:1710288000}},R:{A:{BE:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","BE","","",""],E:"Baidu Browser",F:{BE:1710201600}},S:{A:{CE:0,DE:0},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","CE","DE","","",""],E:"KaiOS Browser",F:{CE:1527811200,DE:1631664000}}}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/browserVersions.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/browserVersions.js new file mode 100644 index 0000000000000000000000000000000000000000..e878b086c20f88dabd1ec1f63758be7712d462a9 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/browserVersions.js @@ -0,0 +1 @@ +module.exports={"0":"116","1":"117","2":"118","3":"119","4":"120","5":"121","6":"122","7":"123","8":"124","9":"125",A:"10",B:"11",C:"12",D:"7",E:"8",F:"9",G:"15",H:"80",I:"150",J:"4",K:"27",L:"6",M:"13",N:"14",O:"16",P:"17",Q:"18",R:"79",S:"81",T:"83",U:"84",V:"85",W:"86",X:"87",Y:"88",Z:"89",a:"90",b:"91",c:"92",d:"93",e:"94",f:"95",g:"96",h:"97",i:"98",j:"99",k:"100",l:"101",m:"102",n:"103",o:"104",p:"105",q:"106",r:"107",s:"108",t:"109",u:"110",v:"111",w:"112",x:"113",y:"114",z:"115",AB:"126",BB:"127",CB:"131",DB:"20",EB:"21",FB:"22",GB:"23",HB:"24",IB:"25",JB:"26",KB:"28",LB:"29",MB:"30",NB:"128",OB:"129",PB:"130",QB:"132",RB:"133",SB:"134",TB:"135",UB:"136",VB:"137",WB:"138",XB:"139",YB:"140",ZB:"141",aB:"142",bB:"143",cB:"144",dB:"145",eB:"146",fB:"147",gB:"148",hB:"149",iB:"5",jB:"19",kB:"31",lB:"32",mB:"33",nB:"34",oB:"35",pB:"36",qB:"37",rB:"38",sB:"39",tB:"40",uB:"41",vB:"42",wB:"43",xB:"44",yB:"45",zB:"46","0B":"47","1B":"48","2B":"49","3B":"50","4B":"51","5B":"52","6B":"53","7B":"54","8B":"55","9B":"56",AC:"57",BC:"58",CC:"60",DC:"62",EC:"63",FC:"64",GC:"65",HC:"66",IC:"67",JC:"68",KC:"69",LC:"70",MC:"71",NC:"72",OC:"73",PC:"74",QC:"75",RC:"76",SC:"77",TC:"78",UC:"152",VC:"11.1",WC:"12.1",XC:"15.5",YC:"16.0",ZC:"17.0",aC:"18.0",bC:"3",cC:"59",dC:"61",eC:"82",fC:"151",gC:"153",hC:"3.2",iC:"10.1",jC:"15.2-15.3",kC:"15.4",lC:"16.1",mC:"16.2",nC:"16.3",oC:"16.4",pC:"16.5",qC:"17.1",rC:"17.2",sC:"17.3",tC:"17.4",uC:"17.5",vC:"18.1",wC:"18.2",xC:"18.3",yC:"18.4",zC:"18.5-18.7","0C":"26.0","1C":"26.1","2C":"26.2","3C":"26.3","4C":"26.4","5C":"26.5","6C":"11.5","7C":"4.2-4.3","8C":"5.5","9C":"2",AD:"154",BD:"155",CD:"3.5",DD:"3.6",ED:"3.1",FD:"5.1",GD:"6.1",HD:"7.1",ID:"9.1",JD:"13.1",KD:"14.1",LD:"15.1",MD:"15.6",ND:"16.6",OD:"17.6",PD:"TP",QD:"9.5-9.6",RD:"10.0-10.1",SD:"10.5",TD:"10.6",UD:"11.6",VD:"4.0-4.1",WD:"5.0-5.1",XD:"6.0-6.1",YD:"7.0-7.1",ZD:"8.1-8.4",aD:"9.0-9.2",bD:"9.3",cD:"10.0-10.2",dD:"10.3",eD:"11.0-11.2",fD:"11.3-11.4",gD:"12.0-12.1",hD:"12.2-12.5",iD:"13.0-13.1",jD:"13.2",kD:"13.3",lD:"13.4-13.7",mD:"14.0-14.4",nD:"14.5-14.8",oD:"15.0-15.1",pD:"15.6-15.8",qD:"16.6-16.7",rD:"17.6-17.7",sD:"all",tD:"2.1",uD:"2.2",vD:"2.3",wD:"4.1",xD:"4.4",yD:"4.4.3-4.4.4",zD:"5.0-5.4","0D":"6.2-6.4","1D":"7.2-7.4","2D":"8.2","3D":"9.2","4D":"11.1-11.2","5D":"12.0","6D":"13.0","7D":"14.0","8D":"15.0","9D":"19.0",AE:"14.9",BE:"13.52",CE:"2.5",DE:"3.0-3.1"}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/browsers.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/browsers.js new file mode 100644 index 0000000000000000000000000000000000000000..04fbb50f7fe992b33ff8cb5e472356d0085387fd --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/browsers.js @@ -0,0 +1 @@ +module.exports={A:"ie",B:"edge",C:"firefox",D:"chrome",E:"safari",F:"opera",G:"ios_saf",H:"op_mini",I:"android",J:"bb",K:"op_mob",L:"and_chr",M:"and_ff",N:"ie_mob",O:"and_uc",P:"samsung",Q:"and_qq",R:"baidu",S:"kaios"}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/aac.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/aac.js new file mode 100644 index 0000000000000000000000000000000000000000..2f326c82effde167c492d6da7c1445cf0788fd05 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/aac.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_V","2":"_c"},B:{"1":"_J"},C:{"2":"_AF","132":"_PI"},D:{"1":"_ZQ _FC","2":"_RC","16":"_A"},E:{"1":"_CB","2":"_e"},F:{"1":"_a","2":"_T"},G:{"1":"_dB","16":"hC"},H:{"2":"sD"},I:{"1":"_6B","2":"_k"},J:{"1":"A","2":"D"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"132":"UC"},N:{"1":"A","2":"B"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"132":"_C"}},B:6,C:"AAC audio file format",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/abortcontroller.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/abortcontroller.js new file mode 100644 index 0000000000000000000000000000000000000000..ca62fbd1082968a42b0cbe89d1a20aea0912ea98 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/abortcontroller.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_aE","2":"_3B"},C:{"1":"_H _RR","2":"_xC _1E _L"},D:{"1":"_lO","2":"_2Q"},E:{"1":"_DF","2":"_1C","130":"C VC"},F:{"1":"_UO","2":"_UR"},G:{"1":"_KC","2":"_yC"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_qF","2":"_2F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"DE","2":"CE"}},B:1,C:"AbortController & AbortSignal",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/ac3-ec3.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/ac3-ec3.js new file mode 100644 index 0000000000000000000000000000000000000000..fb4f945ce71e86849cf469af4eab7d2d83460191 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/ac3-ec3.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_I","2":"_K"},C:{"2":"_S"},D:{"2":"_Q"},E:{"2":"_R"},F:{"2":"_b"},G:{"2":"_2","132":"_p"},H:{"2":"sD"},I:{"2":"_O"},J:{"2":"D","132":"A"},K:{"2":"_DE H _sB","132":"WC"},L:{"2":"I"},M:{"2":"UC"},N:{"2":"_A"},O:{"2":"XC"},P:{"2":"_F"},Q:{"2":"AE"},R:{"2":"BE"},S:{"2":"_C"}},B:6,C:"AC-3 (Dolby Digital) and EC-3 (Dolby Digital Plus) codecs",D:false}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/accelerometer.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/accelerometer.js new file mode 100644 index 0000000000000000000000000000000000000000..8be328fa4b8dbde66b1bf04474f2a131c855ead1 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/accelerometer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"2":"_S"},D:{"1":"_FK","2":"_LI","194":"_DJ _mC"},E:{"2":"_R"},F:{"1":"_DM","2":"_VK"},G:{"2":"_M"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"2":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"2":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"2":"_C"}},B:4,C:"Accelerometer",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/addeventlistener.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/addeventlistener.js new file mode 100644 index 0000000000000000000000000000000000000000..288042807ff31224438c96b05ac41b236f95303d --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/addeventlistener.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_V","130":"_c"},B:{"1":"_J"},C:{"1":"_WL _IC","257":"_g _vB _L"},D:{"1":"_Q"},E:{"1":"_R"},F:{"1":"_b"},G:{"1":"_M"},H:{"1":"sD"},I:{"1":"_O"},J:{"1":"_B"},K:{"1":"_N"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:1,C:"EventTarget.addEventListener()",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/alternate-stylesheet.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/alternate-stylesheet.js new file mode 100644 index 0000000000000000000000000000000000000000..2101332db3c4a25811dc5e95b84dfeee7c467176 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/alternate-stylesheet.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_JC","2":"_GB"},B:{"2":"_J"},C:{"1":"_S"},D:{"2":"_Q"},E:{"2":"_R"},F:{"1":"_T","16":"_a"},G:{"2":"_M"},H:{"16":"sD"},I:{"2":"_O"},J:{"16":"_B"},K:{"2":"H","16":"_D"},L:{"16":"I"},M:{"16":"UC"},N:{"16":"_A"},O:{"16":"XC"},P:{"16":"_F"},Q:{"2":"AE"},R:{"16":"BE"},S:{"1":"_C"}},B:1,C:"Alternate stylesheet",D:false}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/ambient-light.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/ambient-light.js new file mode 100644 index 0000000000000000000000000000000000000000..48897e2790969d32480ed3b0980a8e380dcf0f3b --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/ambient-light.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"2":"_JB","132":"_ZN","322":"_K"},C:{"2":"_AF","132":"_zB _MJ cC","194":"_DS"},D:{"2":"_LI","322":"_QM"},E:{"2":"_R"},F:{"2":"_QS","322":"_ZJ"},G:{"2":"_M"},H:{"2":"sD"},I:{"2":"_O"},J:{"2":"_B"},K:{"2":"_N"},L:{"322":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"2":"XC"},P:{"2":"_F"},Q:{"2":"AE"},R:{"2":"BE"},S:{"132":"_C"}},B:4,C:"Ambient Light Sensor",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/apng.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/apng.js new file mode 100644 index 0000000000000000000000000000000000000000..bcebf68f19285431147249c36c3adcc57a11176d --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/apng.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"_bD","2":"9C"},D:{"1":"_BS","2":"_FJ"},E:{"1":"_ZL","2":"_pH"},F:{"1":"_tM _nH _ND _P","2":"F _8D _uD"},G:{"1":"_7B","2":"_DB"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"_N"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_wB","2":"_1B"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:4,C:"Animated PNG (APNG)",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/array-find-index.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/array-find-index.js new file mode 100644 index 0000000000000000000000000000000000000000..29ab9494e537cd6bba5bf497a8e2db8c4f8dd3c3 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/array-find-index.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_J"},C:{"1":"_IO","2":"_TK"},D:{"1":"_DK","2":"_3J"},E:{"1":"_TI","2":"_3C"},F:{"1":"_8J","2":"_TM"},G:{"1":"_7B","2":"_DB"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"D","16":"A"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_U","2":"J"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:6,C:"Array.prototype.findIndex",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/array-find.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/array-find.js new file mode 100644 index 0000000000000000000000000000000000000000..5fa45a83500e6fad286ad1f6c3e0e30d633de3a7 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/array-find.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_SE","16":"_v"},C:{"1":"_IO","2":"_TK"},D:{"1":"_DK","2":"_3J"},E:{"1":"_TI","2":"_3C"},F:{"1":"_8J","2":"_TM"},G:{"1":"_7B","2":"_DB"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"D","16":"A"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_U","2":"J"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:6,C:"Array.prototype.find",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/array-flat.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/array-flat.js new file mode 100644 index 0000000000000000000000000000000000000000..316c8ad9b7bc4d1be6d9190707222b8ca5f146cc --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/array-flat.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"_SL","2":"_l _L"},D:{"1":"_tO","2":"_3Q"},E:{"1":"_9H","2":"_FR"},F:{"1":"_wP _sN","2":"_YF _TE _P"},G:{"1":"_TJ","2":"_HI"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_7E","2":"_KD"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"DE","2":"CE"}},B:6,C:"flat & flatMap array methods",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/array-includes.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/array-includes.js new file mode 100644 index 0000000000000000000000000000000000000000..ffc429530b07d254e5a3007eac95d346bf388f9a --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/array-includes.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_zD","2":"_JB"},C:{"1":"_bQ","2":"_ZO"},D:{"1":"_fO","2":"_xN"},E:{"1":"_PB","2":"_TB"},F:{"1":"_TO","2":"_9O"},G:{"1":"_p","2":"_2"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_U","2":"J"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:6,C:"Array.prototype.includes",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/arrow-functions.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/arrow-functions.js new file mode 100644 index 0000000000000000000000000000000000000000..c772dad84aaa12972e4e7f0bb30f9b66b807e70f --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/arrow-functions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_J"},C:{"1":"_PI","2":"_AF"},D:{"1":"_DK","2":"_3J"},E:{"1":"_LB","2":"_SB"},F:{"1":"_8J","2":"_TM"},G:{"1":"_8","2":"_OB"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_U","2":"J"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:6,C:"Arrow functions",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/asmjs.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/asmjs.js new file mode 100644 index 0000000000000000000000000000000000000000..b51e2a632c3b6020ec7c6d298fe01cbb2b4c6ab6 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/asmjs.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_iQ","132":"_K","322":"C"},C:{"1":"_PI","2":"_AF"},D:{"2":"_jJ","132":"_hO"},E:{"2":"_R"},F:{"2":"_T","132":"_a"},G:{"2":"_M"},H:{"2":"sD"},I:{"2":"_G","132":"I"},J:{"2":"_B"},K:{"2":"_D","132":"H"},L:{"132":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"132":"XC"},P:{"2":"J","132":"_U"},Q:{"132":"AE"},R:{"132":"BE"},S:{"1":"_C"}},B:6,C:"asm.js",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/async-clipboard.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/async-clipboard.js new file mode 100644 index 0000000000000000000000000000000000000000..07b5a54b17788b177212d4d465134f943ba5f95c --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/async-clipboard.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"9 _sH","2":"_vL","132":"_kG _ZI _MU _HD _UC"},D:{"1":"_lO","2":"_2Q"},E:{"1":"_cE","2":"_II"},F:{"1":"_UO","2":"_UR"},G:{"1":"_rH","2":"_8N"},H:{"2":"sD"},I:{"2":"_G","260":"I"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_NB","2":"_2F","260":"_GH _QU"},Q:{"1":"AE"},R:{"1":"BE"},S:{"2":"CE","132":"DE"}},B:5,C:"Asynchronous Clipboard API",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/async-functions.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/async-functions.js new file mode 100644 index 0000000000000000000000000000000000000000..82c2a4a90f21dd003a1356ba91317461cfaa8afa --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/async-functions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_SE","2":"_JB","194":"N"},C:{"1":"_CM","2":"_zJ"},D:{"1":"_VL","2":"_CO"},E:{"1":"_oB","2":"_QB","258":"iC"},F:{"1":"_RI","2":"_MM"},G:{"1":"_AB","2":"_hB","258":"dD"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_gB","2":"_pC"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"DE","2":"CE"}},B:6,C:"Async functions",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/atob-btoa.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/atob-btoa.js new file mode 100644 index 0000000000000000000000000000000000000000..6b1a06e4014702a2a5c0f8d7c8fedf40050ba305 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/atob-btoa.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_A","2":"_Z"},B:{"1":"_J"},C:{"1":"_S"},D:{"1":"_Q"},E:{"1":"_R"},F:{"1":"_xF","2":"_eB","16":"SD"},G:{"1":"_M"},H:{"1":"sD"},I:{"1":"_O"},J:{"1":"_B"},K:{"1":"_BB","16":"A"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:1,C:"Base64 encoding and decoding",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/audio-api.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/audio-api.js new file mode 100644 index 0000000000000000000000000000000000000000..83b27abe87b680455c1bf04ead0724931c4e5c88 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/audio-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_J"},C:{"1":"_IO","2":"_TK"},D:{"1":"_CN _SG","2":"_2E","33":"N _tK"},E:{"1":"_tF","2":"_s","33":"_dC _yB _OE"},F:{"1":"_ZG _uB","2":"_T","33":"_bH"},G:{"1":"_IE","2":"_1","33":"_OD _ZR"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:2,C:"Web Audio API",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/audio.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/audio.js new file mode 100644 index 0000000000000000000000000000000000000000..2420637ccd514d419498ca788a05dd3152638d5c --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/audio.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_V","2":"_c"},B:{"1":"_J"},C:{"1":"_dO","2":"_g","132":"_pG _L"},D:{"1":"_Q"},E:{"1":"_R"},F:{"1":"_ZD","2":"F","4":"_iK"},G:{"260":"_M"},H:{"2":"sD"},I:{"1":"_RB","2":"_j"},J:{"1":"_B"},K:{"1":"_BB","2":"A"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:1,C:"Audio element",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/audiotracks.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/audiotracks.js new file mode 100644 index 0000000000000000000000000000000000000000..45e5de52a5428150106a8441b150dd4ea3fba611 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/audiotracks.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_A","2":"_Z"},B:{"1":"_I","322":"_K"},C:{"2":"_XI","194":"_nO"},D:{"2":"_3J","322":"_DK"},E:{"1":"_iB","2":"_2C"},F:{"2":"_TM","322":"_8J"},G:{"1":"_z","2":"_n"},H:{"2":"sD"},I:{"2":"_O"},J:{"2":"_B"},K:{"2":"_D","322":"H"},L:{"322":"I"},M:{"2":"UC"},N:{"1":"_A"},O:{"322":"XC"},P:{"2":"_F"},Q:{"322":"AE"},R:{"322":"BE"},S:{"194":"_C"}},B:1,C:"Audio Tracks",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/autofocus.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/autofocus.js new file mode 100644 index 0000000000000000000000000000000000000000..1822b8e4f213ab82d9a7462943c3a36739d6a6c4 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/autofocus.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_A","2":"_Z"},B:{"1":"_J"},C:{"1":"_x","2":"_f"},D:{"1":"_0D","2":"J"},E:{"1":"_mB","2":"_i"},F:{"1":"_nB","2":"F"},G:{"2":"_M"},H:{"2":"sD"},I:{"1":"_6B","2":"_k"},J:{"1":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"DE","2":"CE"}},B:1,C:"Autofocus attribute",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/auxclick.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/auxclick.js new file mode 100644 index 0000000000000000000000000000000000000000..ef274ba914178ec2a2e87155ec67bed591ac1f08 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/auxclick.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"2":"_yJ","129":"_FM"},D:{"1":"_VL","2":"_CO"},E:{"1":"_OQ","2":"_eG _oE"},F:{"1":"_RI","2":"_MM"},G:{"1":"_jL","2":"_lF _oE"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_U","2":"J"},Q:{"1":"AE"},R:{"1":"BE"},S:{"2":"_C"}},B:5,C:"Auxclick",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/av1.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/av1.js new file mode 100644 index 0000000000000000000000000000000000000000..9f9e1310b03aed54ed4f6eb4c0600105144fbc97 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/av1.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_oH _o","2":"_sD _zF","194":"Q _uH"},C:{"1":"_uR","2":"_xC _eD _L","66":"_kD _qD","260":"GC","516":"HC"},D:{"1":"_FS","2":"_4Q","66":"_ZS KC"},E:{"2":"_yG","1028":"_2D"},F:{"1":"_H _sN","2":"_YF _1E _P"},G:{"2":"_TN","1028":"_VE"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_aJ","2":"_kO"},Q:{"1":"AE"},R:{"1":"BE"},S:{"2":"_C"}},B:6,C:"AV1 video format",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/avif.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/avif.js new file mode 100644 index 0000000000000000000000000000000000000000..0c4b5f2e6234ac7080413471ba3e8d4595dc41ae --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/avif.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_oH _o","2":"_BH 4 _EO","4162":"_IF _YI"},C:{"1":"_xO","2":"_l _2J _L","194":"_0P _0E _dF","257":"_jR","2049":"_8F"},D:{"1":"_JI","2":"_rJ"},E:{"1":"_RE","2":"_IR","1796":"_jI"},F:{"1":"_JK","2":"_GP"},G:{"1":"_8C","2":"_wC","1281":"_pE"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_tD","2":"_XE"},Q:{"2":"AE"},R:{"1":"BE"},S:{"2":"_C"}},B:6,C:"AVIF image format",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-attachment.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-attachment.js new file mode 100644 index 0000000000000000000000000000000000000000..9876c778257ac0efe132d2c2b5fd6a42e576c45b --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-attachment.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_V","132":"_c"},B:{"1":"_J"},C:{"1":"_IO","132":"_TK"},D:{"1":"_Q"},E:{"1":"iB _rN K _QD _oL _pP _sE","132":"J M _e JD","2050":"_qH _zK"},F:{"1":"_ZD","132":"_eB"},G:{"2":"_d","4100":"_5B","4868":"_rD _BJ hD","6148":"_gS _kI _XG"},H:{"2":"sD"},I:{"2":"_JG _k _w","132":"_OH"},J:{"260":"_B"},K:{"1":"_BB","132":"A"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"2":"J","1028":"_U"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:4,C:"CSS background-attachment",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-clip-text.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-clip-text.js new file mode 100644 index 0000000000000000000000000000000000000000..80922dd7614538cd326429c2ede1040ecbab5a5e --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-clip-text.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_UB","33":"_v","129":"_EI","161":"_NC _uH"},C:{"1":"_wD","2":"_VM"},D:{"129":"_2G","161":"_NC _xG"},E:{"2":"ED","129":"K XC MD _sE","388":"_7I G _QD _XN kC","420":"_KQ"},F:{"2":"_T","129":"_OK","161":"_rC _AL"},G:{"129":"XC _CU","388":"_YE kC"},H:{"2":"sD"},I:{"16":"_KB","129":"I","161":"_LL"},J:{"161":"_B"},K:{"16":"_D","129":"H"},L:{"129":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"161":"XC"},P:{"1":"_NB","161":"_OM"},Q:{"161":"AE"},R:{"161":"BE"},S:{"1":"_C"}},B:7,C:"Background-clip: text",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-img-opts.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-img-opts.js new file mode 100644 index 0000000000000000000000000000000000000000..a629b982e08c6202218f567ae13fe9eb616f988f --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-img-opts.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_V","2":"_c"},B:{"1":"_J"},C:{"1":"_x","2":"_LC","36":"DD"},D:{"1":"_VD","516":"_Y"},E:{"1":"_5C","772":"_XC"},F:{"1":"_ZD","2":"_lB","36":"RD"},G:{"1":"_z","4":"_d XD","516":"WD"},H:{"132":"sD"},I:{"1":"_X","36":"tD","516":"_9E","548":"_VQ"},J:{"1":"_B"},K:{"1":"_N"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:4,C:"CSS3 Background-image options",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-position-x-y.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-position-x-y.js new file mode 100644 index 0000000000000000000000000000000000000000..f0c2f0c4261e6a739c79b7d16e9d79cdd4d182f5 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-position-x-y.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_E"},B:{"1":"_J"},C:{"1":"_wD","2":"_VM"},D:{"1":"_Q"},E:{"1":"_R"},F:{"1":"_a","2":"_T"},G:{"1":"_M"},H:{"2":"sD"},I:{"1":"_O"},J:{"1":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"DE","2":"CE"}},B:7,C:"background-position-x & background-position-y",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-repeat-round-space.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-repeat-round-space.js new file mode 100644 index 0000000000000000000000000000000000000000..1f2d5f350542d84c18c04a23cae2eb08df410084 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-repeat-round-space.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_A","2":"_c","132":"F"},B:{"1":"_J"},C:{"1":"_wD","2":"_VM"},D:{"1":"_QO","2":"_fL"},E:{"1":"_5C","2":"_XC"},F:{"1":"_tM _aF _wK","2":"F _UB _iK"},G:{"1":"_z","2":"_n"},H:{"1":"sD"},I:{"1":"_X","2":"_W"},J:{"1":"A","2":"D"},K:{"1":"_BB","2":"A"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"DE","2":"CE"}},B:4,C:"CSS background-repeat round and space",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-sync.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-sync.js new file mode 100644 index 0000000000000000000000000000000000000000..8c71865a6d51b5ad0a1286d534c21aa6d087053f --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/background-sync.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"2":"_9L _XP _L","16":"_eN"},D:{"1":"_bE","2":"_rG"},E:{"2":"_R"},F:{"1":"_RI","2":"_MM"},G:{"2":"_M"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"2":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_U","2":"J"},Q:{"1":"AE"},R:{"1":"BE"},S:{"2":"_C"}},B:7,C:"Background Sync API",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/battery-status.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/battery-status.js new file mode 100644 index 0000000000000000000000000000000000000000..f8d9ee49b8a447db6e00c7fd37e367411e96ffb6 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/battery-status.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"_dJ","2":"_H _VU _lC _kD _vE","132":"_0L _7D","164":"_GO"},D:{"1":"_4J","2":"_9J","66":"qB"},E:{"2":"_R"},F:{"1":"_1F","2":"_WI"},G:{"2":"_M"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"2":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"CE","2":"DE"}},B:4,C:"Battery Status API",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/beacon.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/beacon.js new file mode 100644 index 0000000000000000000000000000000000000000..75e4d3a5cd1c5ce07c479d85f782482637db3ebf --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/beacon.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_zD","2":"_JB"},C:{"1":"_H _kB","2":"_uL"},D:{"1":"_CS","2":"_pR"},E:{"1":"_MC","2":"_1C"},F:{"1":"_5M _uB","2":"_h _SF _P"},G:{"1":"_KC","2":"_yC"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:4,C:"Beacon API",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/beforeafterprint.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/beforeafterprint.js new file mode 100644 index 0000000000000000000000000000000000000000..b89aabba5c9aef483809ef824b6cb6af69d9493e --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/beforeafterprint.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_PC","16":"8C"},B:{"1":"_J"},C:{"1":"_IM","2":"_0C"},D:{"1":"_wR","2":"_3N"},E:{"1":"_ZE","2":"_7J"},F:{"1":"_VR","2":"_AP"},G:{"1":"_UE","2":"_BF"},H:{"2":"sD"},I:{"2":"_O"},J:{"16":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"16":"_A"},O:{"1":"XC"},P:{"2":"_U","16":"J"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:1,C:"Printing Events",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/bigint.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/bigint.js new file mode 100644 index 0000000000000000000000000000000000000000..b5f0f5518bd46a79aae2d0c6495926e833c324a8 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/bigint.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"_7R","2":"_l _qD _L","194":"GC HC IC"},D:{"1":"_FK","2":"_4Q"},E:{"1":"_6L","2":"_WR"},F:{"1":"_DM","2":"_VK"},G:{"1":"_rH","2":"_8N"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_qF","2":"_2F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"DE","2":"CE"}},B:6,C:"BigInt",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/blobbuilder.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/blobbuilder.js new file mode 100644 index 0000000000000000000000000000000000000000..c505fa54e3730292858ca11ca6f7b211c6d36cf6 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/blobbuilder.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_A","2":"_Z"},B:{"1":"_J"},C:{"1":"_nP _IC","2":"_0C","36":"_rN"},D:{"1":"_eO","2":"_HC","36":"_iH _aC"},E:{"1":"_cB","2":"_s"},F:{"1":"_vF","2":"_WE"},G:{"1":"_6C","2":"_1"},H:{"2":"sD"},I:{"1":"I","2":"_k","36":"_mJ"},J:{"1":"A","2":"D"},K:{"1":"_YB","2":"_bB"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:5,C:"Blob constructing",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/bloburls.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/bloburls.js new file mode 100644 index 0000000000000000000000000000000000000000..7c5da3ac009e58268f44864dfc95303b772121cf --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/bloburls.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_Z","129":"_A"},B:{"1":"_SE","129":"_v"},C:{"1":"_x","2":"_f"},D:{"1":"_VO","2":"_HC","33":"_iH _0B"},E:{"1":"_iB","2":"_s","33":"L"},F:{"1":"_a","2":"_T"},G:{"1":"_z","2":"_1","33":"XD"},H:{"2":"sD"},I:{"1":"_X","2":"_KB","33":"_mF"},J:{"1":"A","2":"D"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"B","2":"A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:5,C:"Blob URLs",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/border-image.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/border-image.js new file mode 100644 index 0000000000000000000000000000000000000000..ab64545673b1c27c0770ae148e2ec9ae2c859258 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/border-image.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"_y"},B:{"1":"_zD","129":"_JB"},C:{"1":"_EF","2":"_g","260":"_YG","804":"_Y _L"},D:{"1":"_KK","260":"_TE","388":"MB _NE","1412":"_6I","1956":"_Y"},E:{"1":"_tC","129":"_GO ID _XN","1412":"_OC _qE","1956":"_s"},F:{"1":"_UL","2":"_eB","260":"_OF","388":"_ID","1796":"_lI","1828":"_5 _rE"},G:{"1":"_5B","129":"bD _BE _mL _XG","1412":"_OD aD","1956":"_1"},H:{"1828":"sD"},I:{"1":"I","388":"_w","1956":"_W"},J:{"1412":"A","1924":"D"},K:{"1":"H","2":"A","1828":"_XD"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"B","2":"A"},O:{"1":"XC"},P:{"1":"_wB","260":"_QH","388":"J"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"DE","260":"CE"}},B:4,C:"CSS3 Border images",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/border-radius.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/border-radius.js new file mode 100644 index 0000000000000000000000000000000000000000..322bcd191380ac9be277edaf7378156c837e0892 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/border-radius.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_V","2":"_c"},B:{"1":"_J"},C:{"1":"_EF","257":"_iL","289":"bC _L","292":"9C"},D:{"1":"_0D","33":"J"},E:{"1":"iB _5C","33":"_i","129":"_hG GD"},F:{"1":"_ZD","2":"_eB"},G:{"1":"_dB","33":"hC"},H:{"2":"sD"},I:{"1":"_AR","33":"tD"},J:{"1":"_B"},K:{"1":"_BB","2":"A"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"DE","257":"CE"}},B:4,C:"CSS3 Border-radius (rounded corners)",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/broadcastchannel.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/broadcastchannel.js new file mode 100644 index 0000000000000000000000000000000000000000..83089b7239a90af9cf0a6e9a2fb7c13f4376bcdd --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/broadcastchannel.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"_5J","2":"_PM"},D:{"1":"_EM","2":"_sJ"},E:{"1":"_tC","2":"_AH"},F:{"1":"_KO","2":"_LM"},G:{"1":"_5B","2":"_YE"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_wB","2":"_1B"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:1,C:"BroadcastChannel",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/brotli.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/brotli.js new file mode 100644 index 0000000000000000000000000000000000000000..63d2d28498f091e0ddee6c81438f87ead17912cd --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/brotli.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_SE","2":"_v"},C:{"1":"_8L","2":"_aO"},D:{"1":"_xH","2":"_rG","194":"2B","257":"3B"},E:{"1":"_ZE","2":"_pB","513":"_zQ"},F:{"1":"_5L","2":"_8G","194":"_LF"},G:{"1":"_AB","2":"_WB"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_U","2":"J"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:6,C:"Brotli Accept-Encoding/Content-Encoding",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/calc.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/calc.js new file mode 100644 index 0000000000000000000000000000000000000000..01bf98c32effc536d8e8c443f936e35aeb581c46 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/calc.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_c","260":"F","516":"_A"},B:{"1":"_J"},C:{"1":"_DI","2":"_f","33":"_DC"},D:{"1":"_GF","2":"_eL","33":"_PJ IB"},E:{"1":"_iB","2":"_s","33":"L"},F:{"1":"_a","2":"_T"},G:{"1":"_z","2":"_1","33":"XD"},H:{"2":"sD"},I:{"1":"I","2":"_W","132":"_w"},J:{"1":"A","2":"D"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:4,C:"calc() as CSS unit value",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/canvas-blending.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/canvas-blending.js new file mode 100644 index 0000000000000000000000000000000000000000..8f345a66288cfd6ca79d9608a18963fdf9114dae --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/canvas-blending.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_xD","2":"C"},C:{"1":"_dO","2":"_m _aC _L"},D:{"1":"_AK","2":"_iJ"},E:{"1":"_iB","2":"_2C"},F:{"1":"_0J","2":"_h _9B _P"},G:{"1":"_z","2":"_n"},H:{"2":"sD"},I:{"1":"_X","2":"_W"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:4,C:"Canvas blend modes",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/canvas-text.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/canvas-text.js new file mode 100644 index 0000000000000000000000000000000000000000..5432e3c14338d36142c68fee800d4420d3cc0d17 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/canvas-text.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_V","2":"8C","8":"_FB"},B:{"1":"_J"},C:{"1":"_sC","8":"_g"},D:{"1":"_Q"},E:{"1":"_CB","8":"_e"},F:{"1":"_ZD","8":"_eB"},G:{"1":"_M"},H:{"2":"sD"},I:{"1":"_O"},J:{"1":"_B"},K:{"1":"_BB","8":"A"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:1,C:"Text API for Canvas",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/canvas.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/canvas.js new file mode 100644 index 0000000000000000000000000000000000000000..e365aae06e4f83a60c15e4667c71c8ff609923a3 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/canvas.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_V","2":"8C","8":"_FB"},B:{"1":"_J"},C:{"1":"_wF","132":"_LC"},D:{"1":"_Q"},E:{"1":"_CB","132":"_e"},F:{"1":"_b"},G:{"1":"_M"},H:{"260":"sD"},I:{"1":"_6B","132":"_k"},J:{"1":"_B"},K:{"1":"_N"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:1,C:"Canvas (basic support)",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/ch-unit.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/ch-unit.js new file mode 100644 index 0000000000000000000000000000000000000000..a54a8261cd81ede7237568d59ae0ff4d4a15355a --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/ch-unit.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_c","132":"_V"},B:{"1":"_J"},C:{"1":"_S"},D:{"1":"_xP _EC","2":"_Y _JN"},E:{"1":"_5C","2":"_XC"},F:{"1":"_a","2":"_T"},G:{"1":"_z","2":"_n"},H:{"2":"sD"},I:{"1":"_X","2":"_W"},J:{"1":"A","2":"D"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:4,C:"ch (character) unit",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/chacha20-poly1305.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/chacha20-poly1305.js new file mode 100644 index 0000000000000000000000000000000000000000..5b65cfb8d5bd3b8cbe4c28645e868809572cbcd7 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/chacha20-poly1305.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"_HM","2":"_sL"},D:{"1":"_bE","2":"_Y _bG","129":"_NO _aG"},E:{"1":"_MC","2":"_1C"},F:{"1":"_5E","2":"_8G"},G:{"1":"_AB","2":"_WB"},H:{"2":"sD"},I:{"1":"I","2":"_wG","16":"yD"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:6,C:"ChaCha20-Poly1305 cipher suites for TLS",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/channel-messaging.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/channel-messaging.js new file mode 100644 index 0000000000000000000000000000000000000000..61bc12156da9f0d2639fc91fc689aa96d760ff0b --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/channel-messaging.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_A","2":"_Z"},B:{"1":"_J"},C:{"1":"_7L","2":"_CP","194":"_yK _7G"},D:{"1":"_Q"},E:{"1":"_mB","2":"_i"},F:{"1":"_xF","2":"_eB","16":"SD"},G:{"1":"_r","2":"_d"},H:{"2":"sD"},I:{"1":"_X","2":"_W"},J:{"1":"_B"},K:{"1":"_BB","2":"A"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:1,C:"Channel messaging",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/childnode-remove.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/childnode-remove.js new file mode 100644 index 0000000000000000000000000000000000000000..f8e98b53e1a8059a63ad7b590ac58a7c4405b389 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/childnode-remove.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_xD","16":"C"},C:{"1":"_gR","2":"_m _0B _L"},D:{"1":"_AM","2":"_rF"},E:{"1":"_iB","2":"_s","16":"L"},F:{"1":"_a","2":"_T"},G:{"1":"_z","2":"_n"},H:{"2":"sD"},I:{"1":"_X","2":"_W"},J:{"1":"A","2":"D"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:1,C:"ChildNode.remove()",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/classlist.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/classlist.js new file mode 100644 index 0000000000000000000000000000000000000000..54dc7a2ec594c08e3930c2c6527859fa3b9b8345 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/classlist.js @@ -0,0 +1 @@ +module.exports={A:{A:{"8":"_Z","1924":"_A"},B:{"1":"_J"},C:{"1":"_cR","8":"_LC","516":"HB IB","772":"_rF DD"},D:{"1":"_hO","8":"_HC","516":"HB _NQ","772":"GB","900":"_iH _0B"},E:{"1":"_5C","8":"_3","900":"_hG GD"},F:{"1":"_a","8":"_KR","900":"C _OL"},G:{"1":"_z","8":"_d","900":"_vC"},H:{"900":"sD"},I:{"1":"_X","8":"_k","900":"_9E"},J:{"1":"A","900":"D"},K:{"1":"H","8":"_A","900":"_IL"},L:{"1":"I"},M:{"1":"UC"},N:{"900":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:1,C:"classList (DOMTokenList)",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js new file mode 100644 index 0000000000000000000000000000000000000000..daf963ac74e1ea962357d544b087ed1c600e9832 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"2":"_S"},D:{"1":"_XJ _jD","2":"_LE _uD"},E:{"2":"_R"},F:{"1":"_IN _OG","2":"_h _bG _P"},G:{"2":"_M"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"2":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_U","2":"J"},Q:{"1":"AE"},R:{"1":"BE"},S:{"2":"_C"}},B:6,C:"Client Hints: DPR, Width, Viewport-Width",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/clipboard.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/clipboard.js new file mode 100644 index 0000000000000000000000000000000000000000..daf76cb17936c5166b1fbb02df3e564759434cb6 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/clipboard.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2436":"_E"},B:{"260":"_8B","2436":"_ZB","8196":"_K"},C:{"2":"_AF","772":"_zB _7G","4100":"_7L"},D:{"2":"_RF","2564":"_AC _8D","8196":"_QM","10244":"_6D _CI"},E:{"1":"_9H","16":"_e","2308":"_A _ED","2820":"_RC _QD"},F:{"2":"_vD","16":"C","516":"WC","2564":"_6I","8196":"_nR","10244":"MB _7D _ZC"},G:{"1":"_TJ","2":"_d","2820":"_rD _4O"},H:{"2":"sD"},I:{"2":"_W","260":"I","2308":"_w"},J:{"2":"D","2308":"A"},K:{"2":"_bB","16":"WC","8196":"H"},L:{"8196":"I"},M:{"1028":"UC"},N:{"2":"_A"},O:{"8196":"XC"},P:{"2052":"_QH","2308":"J","8196":"_wB"},Q:{"8196":"AE"},R:{"8196":"BE"},S:{"4100":"_C"}},B:5,C:"Synchronous Clipboard API",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/colr-v1.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/colr-v1.js new file mode 100644 index 0000000000000000000000000000000000000000..9fe6a4c4ce427058778b481ceb058a8e839ea9a9 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/colr-v1.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_H _uJ","2":"_0 _xE"},C:{"1":"_YL _t","2":"_aB _xE _L","258":"_9F","578":"p q"},D:{"1":"_H _zL","2":"_u _HO","194":"a _XK"},E:{"2":"_R"},F:{"1":"_nG _JR","2":"_7 _oD _P"},G:{"2":"_M"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"16":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"16":"_A"},O:{"1":"XC"},P:{"1":"_kQ","2":"_1O"},Q:{"2":"AE"},R:{"2":"BE"},S:{"2":"_C"}},B:6,C:"COLR/CPAL(v1) Font Formats",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/colr.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/colr.js new file mode 100644 index 0000000000000000000000000000000000000000..93a9a4d8421236adc78cd899823ee00a866fc87e --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/colr.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_c","257":"_V"},B:{"1":"_WH _lH _o","513":"_IB _4F"},C:{"1":"_PO","2":"_EP"},D:{"1":"_3H _q","2":"_6 _nD","513":"_gI _NF _4F"},E:{"1":"_qP _CE _eF _hM _wQ","2":"_pB","129":"_5 M VC _AE","1026":"_gM"},F:{"1":"_eQ _ME","2":"_YF _CI _P","513":"BC _oI _1J"},G:{"1":"_pK _kH _hM _3O","2":"_WB","1026":"_gM"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"16":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"16":"_A"},O:{"1":"XC"},P:{"1":"_7E","2":"_KD"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:6,C:"COLR/CPAL(v0) Font Formats",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/comparedocumentposition.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/comparedocumentposition.js new file mode 100644 index 0000000000000000000000000000000000000000..b10dc5b40f19d065efe3e7dc510775f415d0f3ca --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/comparedocumentposition.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_V","2":"_c"},B:{"1":"_J"},C:{"1":"_x","16":"_f"},D:{"1":"_AK","16":"_Y","132":"_6I"},E:{"1":"_LB","16":"_vB _e","132":"_gC _yB","260":"FD"},F:{"1":"_yM _8B _aF _1I","16":"_4C","132":"_9B"},G:{"1":"_8","16":"hC","132":"_QR _eC"},H:{"1":"sD"},I:{"1":"_X","16":"_j","132":"_lL"},J:{"132":"_B"},K:{"1":"_TD","16":"_fB"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:1,C:"Node.compareDocumentPosition()",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/console-basic.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/console-basic.js new file mode 100644 index 0000000000000000000000000000000000000000..fcfb9a759d62db59e80ae4775c36b97cfaa23a65 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/console-basic.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_A","2":"_GB","132":"_uC"},B:{"1":"_J"},C:{"1":"_x","2":"_f"},D:{"1":"_Q"},E:{"1":"_R"},F:{"1":"_wJ","2":"_oC"},G:{"1":"_1","513":"_6C"},H:{"4097":"sD"},I:{"1025":"_O"},J:{"258":"_B"},K:{"2":"A","258":"_XD","1025":"H"},L:{"1025":"I"},M:{"2049":"UC"},N:{"258":"_A"},O:{"258":"XC"},P:{"1025":"_F"},Q:{"1":"AE"},R:{"1025":"BE"},S:{"1":"_C"}},B:1,C:"Basic console logging functions",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/console-time.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/console-time.js new file mode 100644 index 0000000000000000000000000000000000000000..e68b5c301fd58d1366543722eedd62cfdc4b146b --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/console-time.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"_y"},B:{"1":"_J"},C:{"1":"_bU _IC","2":"_PK"},D:{"1":"_Q"},E:{"1":"_CB","2":"_e"},F:{"1":"_SR","2":"_oC","16":"B"},G:{"1":"_M"},H:{"1":"sD"},I:{"1":"_O"},J:{"1":"_B"},K:{"1":"H","16":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"B","2":"A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:1,C:"console.time and console.timeEnd",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/const.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/const.js new file mode 100644 index 0000000000000000000000000000000000000000..71ea85c00cf4bf33bcfb57e9354a936020ac1398 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/const.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_y","2052":"B"},B:{"1":"_J"},C:{"1":"_6E","132":"_g _RF _L","260":"_AC _KG"},D:{"1":"_bE","260":"_sF","772":"_4B _7G","1028":"_YC _aG"},E:{"1":"_oB","260":"_4 A _e iC","772":"_OC _QD"},F:{"1":"_5E","2":"_lB","132":"B RD _lI _sB","644":"_JL","772":"_9M","1028":"_NG _5D"},G:{"1":"_AB","260":"_d _BE","772":"_rD _eC"},H:{"644":"sD"},I:{"1":"I","16":"_j","260":"vD","772":"_mJ"},J:{"772":"_B"},K:{"1":"H","132":"_fB","644":"_HL"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"B","2":"A"},O:{"1":"XC"},P:{"1":"_U","1028":"J"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:6,C:"const",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/constraint-validation.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/constraint-validation.js new file mode 100644 index 0000000000000000000000000000000000000000..95694a32220d0ed5b0b4257a175425a78652300f --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/constraint-validation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_Z","900":"_A"},B:{"1":"_7C","388":"N _9B","900":"_JB"},C:{"1":"_nF","2":"_f","260":"_hI","388":"_qB _5P","900":"_gJ"},D:{"1":"_LJ _JE","16":"_Y","388":"_NB _jH _dD","900":"_wE"},E:{"1":"_LB","16":"_3","388":"_jQ","900":"_cD FD GD"},F:{"1":"_0R","16":"_4C","388":"_JN","900":"_JL"},G:{"1":"_8","16":"_d","388":"_TC _eC","900":"_vC"},H:{"2":"sD"},I:{"1":"I","16":"_KB","388":"_w","900":"_mF"},J:{"16":"D","388":"A"},K:{"1":"H","16":"_fB","900":"_HL"},L:{"1":"I"},M:{"1":"UC"},N:{"900":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"DE","388":"CE"}},B:1,C:"Constraint Validation API",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/contenteditable.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/contenteditable.js new file mode 100644 index 0000000000000000000000000000000000000000..93fa6ecfda902eece830ff6f223a407235ec390b --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/contenteditable.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_E"},B:{"1":"_J"},C:{"1":"_sC","2":"9C","4":"bC"},D:{"1":"_Q"},E:{"1":"_R"},F:{"1":"_b"},G:{"1":"_r","2":"_d"},H:{"2":"sD"},I:{"1":"_6B","2":"_k"},J:{"1":"_B"},K:{"1":"_YB","2":"_bB"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:1,C:"contenteditable attribute (basic support)",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js new file mode 100644 index 0000000000000000000000000000000000000000..229f03eb846375ac26842edaae907f9dcf9bfdee --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_Z","132":"_A"},B:{"1":"_J"},C:{"1":"_gR","2":"_f","129":"_fJ"},D:{"1":"_3G","2":"_2E","257":"N _wE"},E:{"1":"_5C","2":"_3","257":"L GD","260":"FD"},F:{"1":"_a","2":"_T"},G:{"1":"_z","2":"_d","257":"XD","260":"WD"},H:{"2":"sD"},I:{"1":"_X","2":"_W"},J:{"2":"D","257":"A"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"132":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:4,C:"Content Security Policy 1.0",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js new file mode 100644 index 0000000000000000000000000000000000000000..c8adb453083bf7b65e9f143f5642a7580dfdab7e --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_v","4100":"_UB"},C:{"1":"_GN _yE","2":"_uL","132":"_5H","260":"oB","516":"_bC _ZC"},D:{"1":"_LJ _JE","2":"_3E","1028":"_pQ","2052":"sB"},E:{"1":"_LB","2":"_SB"},F:{"1":"_0R","2":"_8O","1028":"_FH IB","2052":"JB"},G:{"1":"_8","2":"_OB"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:2,C:"Content Security Policy Level 2",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/cookie-store-api.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/cookie-store-api.js new file mode 100644 index 0000000000000000000000000000000000000000..1d4ad9da831b33576d814bc4b529da36bdcab4e9 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/cookie-store-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_pN _gH","2":"_I","194":"_lG W"},C:{"1":"_mQ","2":"_SD _bL PB CB _L","322":"QB _cM _YS"},D:{"1":"_pN _fH","2":"_6 _rB","194":"_zM _dL W"},E:{"1":"_GS","2":"_eG _sG"},F:{"1":"_H _mD","2":"_YF _P","194":"_oG _lE"},G:{"1":"_zN","2":"_lF _sG"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_tD","2":"_XE"},Q:{"2":"AE"},R:{"1":"BE"},S:{"2":"_C"}},B:7,C:"Cookie Store API",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/cors.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/cors.js new file mode 100644 index 0000000000000000000000000000000000000000..6e74956c5845a25f2c7a8335d0660fe6adc4c479 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/cors.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"_GB","132":"A","260":"_uC"},B:{"1":"_J"},C:{"1":"_H _XO _gI _VC _L","2":"_g","1025":"dC _nD"},D:{"1":"_4L","132":"_RF"},E:{"2":"_e","513":"_cB","644":"_sQ"},F:{"1":"_1L","2":"_vD"},G:{"513":"_6C","644":"_1"},H:{"2":"sD"},I:{"1":"_X","132":"_W"},J:{"1":"A","132":"D"},K:{"1":"_TD","2":"_fB"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"B","132":"A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:1,C:"Cross-Origin Resource Sharing",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/createimagebitmap.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/createimagebitmap.js new file mode 100644 index 0000000000000000000000000000000000000000..266485deb3f53b0ec11c2b9765a38b21276612d1 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/createimagebitmap.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"2":"_m _ZH uB _L","1028":"_HJ","3076":"vB _fC _VB _dF","8193":"_H _cG"},D:{"1":"_BS","2":"_iL","132":"3B 4B","260":"_SQ","516":"7B _MF"},E:{"1":"_2D","2":"_KI","4100":"G _6M _eF"},F:{"1":"_XJ _ND","2":"_jO","132":"qB rB","260":"sB tB","516":"_YC _uD"},G:{"1":"_VE","2":"_0F","4100":"_HT _kH"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"8193":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_gB","16":"_pC"},Q:{"1":"AE"},R:{"1":"BE"},S:{"3076":"_C"}},B:1,C:"createImageBitmap",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/credential-management.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/credential-management.js new file mode 100644 index 0000000000000000000000000000000000000000..d66b8bc9da2ddb19ec33e3d938d973e0522526b8 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/credential-management.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"2":"_S"},D:{"1":"_oF","2":"_6H","66":"_0M","129":"_1E"},E:{"2":"_R"},F:{"1":"_nR","2":"_eH _ZC _P"},G:{"1":"_rH","2":"_8N"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"2":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_wB","2":"_1B"},Q:{"1":"AE"},R:{"1":"BE"},S:{"2":"_C"}},B:5,C:"Credential Management API",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/cross-document-view-transitions.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/cross-document-view-transitions.js new file mode 100644 index 0000000000000000000000000000000000000000..78f04b2b9fbf40643f5a00a9db60d5dfb3cabe16 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/cross-document-view-transitions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_fE _o","2":"_WH _uH"},C:{"2":"_SD _IK _OP aB _L","194":"bB","260":"_fG"},D:{"1":"_fE _q","2":"_uF _UC"},E:{"1":"_OQ","2":"_eG _oE"},F:{"1":"_gQ CB","2":"_7 _7N _P"},G:{"1":"_jL","2":"_lF _oE"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"260":"UC"},N:{"2":"_A"},O:{"2":"XC"},P:{"2":"_F"},Q:{"2":"AE"},R:{"2":"BE"},S:{"2":"_C"}},B:5,C:"View Transitions (cross-document)",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/cryptography.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/cryptography.js new file mode 100644 index 0000000000000000000000000000000000000000..69294c17161e7f50b95d96edb53ae4848cc8fa36 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/cryptography.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"8C","8":"_zE","164":"B"},B:{"1":"_K","513":"_I"},C:{"1":"_OI","8":"_EP","66":"_bS"},D:{"1":"_SI","8":"_9J"},E:{"1":"_oB","8":"_3C","289":"_4H _dR"},F:{"1":"_5G","8":"_QK"},G:{"1":"_AB","8":"_DB","289":"_jC _FD"},H:{"2":"sD"},I:{"1":"I","8":"_G"},J:{"8":"_B"},K:{"1":"H","8":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"8":"A","164":"B"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:2,C:"Web Cryptography",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-all.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-all.js new file mode 100644 index 0000000000000000000000000000000000000000..17abbbaa26d02cc61b315ac3d9cae6d72e899343 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-all.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"_1R","2":"_PS"},D:{"1":"_SI","2":"_9J"},E:{"1":"_LD","2":"_AI"},F:{"1":"_5G","2":"_QK"},G:{"1":"_jG","2":"_8H"},H:{"2":"sD"},I:{"1":"_UD","2":"_wG"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:2,C:"CSS all property",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-anchor-positioning.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-anchor-positioning.js new file mode 100644 index 0000000000000000000000000000000000000000..cab81892c2df36ba14f1e11ce529cce81894bda8 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-anchor-positioning.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_FQ _o","2":"0 _DO","194":"_iG _CH _ZI"},C:{"1":"fB _eI _kJ","2":"_SD _sR _L","322":"dB eB"},D:{"1":"_FQ _q","2":"0 _xG","194":"_iG _CH _ZI"},E:{"1":"_QJ","2":"_vR"},F:{"1":"_CT CB","2":"_7 _zP _P","194":"_aI _XM"},G:{"1":"_9D","2":"_tR"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"2":"_N"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"2":"XC"},P:{"1":"_hH","2":"_NN _cN _tE"},Q:{"2":"AE"},R:{"2":"BE"},S:{"2":"_C"}},B:5,C:"CSS Anchor Positioning",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-animation.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-animation.js new file mode 100644 index 0000000000000000000000000000000000000000..35855024a681c98936018324124fb4b80aad0167 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-animation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_A","2":"_Z"},B:{"1":"_J"},C:{"1":"_DI","2":"_g J _L","33":"_7I G"},D:{"1":"_aQ","33":"_LE"},E:{"1":"_PB","2":"_e","33":"_FB _SJ","292":"_4"},F:{"1":"_RO WC","2":"_vD","33":"C _6I"},G:{"1":"_p","33":"_OD","164":"_1"},H:{"2":"sD"},I:{"1":"I","33":"_LL","164":"_KB"},J:{"33":"_B"},K:{"1":"_YB","2":"_bB"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:5,C:"CSS Animation",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-any-link.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-any-link.js new file mode 100644 index 0000000000000000000000000000000000000000..c041b28ca05b1c87e059615f77b356e157d01ba7 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-any-link.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"_EF","16":"9C","33":"bC _iL _L"},D:{"1":"_RM","16":"_Y","33":"_QF _qD"},E:{"1":"_PB","16":"_2C","33":"_OJ _qE"},F:{"1":"_QI","2":"_T","33":"_CR"},G:{"1":"_p","16":"_1","33":"_OD"},H:{"2":"sD"},I:{"1":"I","16":"_W","33":"_w"},J:{"16":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_qF","16":"J","33":"_lJ 2D"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"DE","33":"CE"}},B:5,C:"CSS :any-link selector",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-appearance.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-appearance.js new file mode 100644 index 0000000000000000000000000000000000000000..e427f7871760fa45884bdb58ab24b8c9bf573cbb --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-appearance.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_2R","33":"T","164":"_IB","388":"_I"},C:{"1":"_UJ _TQ","164":"_RQ _yD","676":"_NS"},D:{"1":"_3R","33":"T","164":"_u"},E:{"1":"_tC","164":"_AH"},F:{"1":"_ZJ","2":"_T","33":"LC _QP","164":"_NJ _xL"},G:{"1":"_5B","164":"_YE"},H:{"2":"sD"},I:{"1":"I","164":"_G"},J:{"164":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"A","388":"B"},O:{"1":"XC"},P:{"1":"_tD","164":"_XE"},Q:{"164":"AE"},R:{"1":"BE"},S:{"1":"DE","164":"CE"}},B:5,C:"CSS Appearance",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-at-counter-style.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-at-counter-style.js new file mode 100644 index 0000000000000000000000000000000000000000..36924df99e1949d34e508a15abe998af3adb6bca --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-at-counter-style.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"2":"_0 _MB","132":"_kR"},C:{"2":"_XI","132":"_nO"},D:{"2":"_9N","132":"_lR"},E:{"2":"_yG","4":"_2D"},F:{"2":"_2B _2J _P","132":"_XL _3K"},G:{"2":"_TN","4":"_VE"},H:{"2":"sD"},I:{"2":"_G","132":"I"},J:{"2":"_B"},K:{"2":"_D","132":"H"},L:{"132":"I"},M:{"132":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"2":"_iF 8D","132":"_EB YC _kM"},Q:{"2":"AE"},R:{"132":"BE"},S:{"132":"_C"}},B:4,C:"CSS Counter Styles",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-autofill.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-autofill.js new file mode 100644 index 0000000000000000000000000000000000000000..924659f8cace583e244e0c0fe977dfdcb49599f2 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-autofill.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"_3H _q","33":"_u _4F"},L:{"1":"I"},B:{"1":"_3H _o","2":"_I","33":"_IB _4F"},C:{"2":"_S"},M:{"2":"UC"},A:{"2":"_E"},F:{"1":"_eQ _ME","2":"_T","33":"_rC _1J"},K:{"1":"H","2":"_D"},E:{"1":"_LU _PE","2":"PD","33":"_KI"},G:{"1":"_dE","33":"_0F"},P:{"1":"_4B","33":"_ML"},I:{"1":"I","2":"_W","33":"_w"}},B:6,C:":autofill CSS pseudo-class",D:undefined}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-backdrop-filter.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-backdrop-filter.js new file mode 100644 index 0000000000000000000000000000000000000000..044d1f11ff8ea0fc4b3ba983c49c50dbda42b796 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-backdrop-filter.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_ZB","257":"_8B"},C:{"1":"_H _aI _aH _t","2":"_l _xL _L","578":"_eT _HD _zP"},D:{"1":"_H _cK _tH","2":"_xN","194":"_QC _GD _TG"},E:{"1":"_NL","2":"_TB","33":"_V _3B ID _pL"},F:{"1":"_6F","2":"_9O","194":"_jE _bC _vN _rB"},G:{"1":"_gD","2":"_2","33":"_GK"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_aJ","2":"J","194":"_pI iC 4D"},Q:{"2":"AE"},R:{"1":"BE"},S:{"2":"_C"}},B:7,C:"CSS Backdrop Filter",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-background-offsets.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-background-offsets.js new file mode 100644 index 0000000000000000000000000000000000000000..2d01f2ad4afe0ba7316be4c1671e48ae72605fd4 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-background-offsets.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_V","2":"_c"},B:{"1":"_J"},C:{"1":"_nP _IC","2":"_g _RF _L"},D:{"1":"_3G","2":"_qG"},E:{"1":"_5C","2":"_XC"},F:{"1":"_ZD","2":"_eB"},G:{"1":"_z","2":"_n"},H:{"1":"sD"},I:{"1":"_X","2":"_W"},J:{"1":"A","2":"D"},K:{"1":"_BB","2":"A"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:4,C:"CSS background-position edge offsets",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js new file mode 100644 index 0000000000000000000000000000000000000000..4e6b3833aa6709138b8e7279c6ceb44934b4bb13 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"_5K _kB","2":"_FP"},D:{"1":"_BN _bC _uD _QC _jD","2":"_vQ","260":"zB"},E:{"1":"_HB","2":"_3C","132":"_4H _jF"},F:{"1":"_ZG _PQ _jE _OG","2":"_LS","260":"mB"},G:{"1":"_9","2":"_DB","132":"_jC _8E"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:4,C:"CSS background-blend-mode",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js new file mode 100644 index 0000000000000000000000000000000000000000..bebaaa971200111b09bef0570032c2163b434dbd --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_bJ _hE","2":"_I","164":"_kN _bL"},C:{"1":"_PO","2":"_EP"},D:{"1":"_bJ _KE","2":"_gL","164":"_ZG _uG _bL"},E:{"2":"_2C","164":"_iB"},F:{"1":"_H _fE CB","2":"_oC","129":"_5 _rE","164":"_rC _UC"},G:{"2":"_n","164":"_z"},H:{"132":"sD"},I:{"1":"I","2":"_W","164":"_w"},J:{"2":"D","164":"A"},K:{"2":"A","129":"_XD","164":"H"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"164":"XC"},P:{"164":"_F"},Q:{"164":"AE"},R:{"164":"BE"},S:{"1":"_C"}},B:4,C:"CSS box-decoration-break",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-boxshadow.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-boxshadow.js new file mode 100644 index 0000000000000000000000000000000000000000..ae68dd48a298b2a55f181250a65f827a85dea18f --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-boxshadow.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_V","2":"_c"},B:{"1":"_J"},C:{"1":"_x","2":"_g","33":"_L"},D:{"1":"_5O","33":"_RC"},E:{"1":"_XB","33":"iB","164":"_i"},F:{"1":"_ZD","2":"_eB"},G:{"1":"_r","33":"_GG","164":"hC"},H:{"2":"sD"},I:{"1":"_QE","164":"_KB"},J:{"1":"A","33":"D"},K:{"1":"_BB","2":"A"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:4,C:"CSS3 Box-shadow",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-canvas.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-canvas.js new file mode 100644 index 0000000000000000000000000000000000000000..b117e92d3100592b27fa133ce8d1c9c39b97dd2d --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-canvas.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"2":"_J"},C:{"2":"_S"},D:{"2":"_3F","33":"_6H"},E:{"2":"_e","33":"_CB"},F:{"2":"_SC oB _OG _P","33":"_ZF"},G:{"33":"_M"},H:{"2":"sD"},I:{"2":"I","33":"_G"},J:{"33":"_B"},K:{"2":"_N"},L:{"2":"I"},M:{"2":"UC"},N:{"2":"_A"},O:{"2":"XC"},P:{"2":"_U","33":"J"},Q:{"2":"AE"},R:{"2":"BE"},S:{"2":"_C"}},B:7,C:"CSS Canvas Drawings",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-caret-color.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-caret-color.js new file mode 100644 index 0000000000000000000000000000000000000000..b0e7438b93598c88231049aa047098896755e620 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-caret-color.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"_FM","2":"_yJ"},D:{"1":"_oF","2":"_hF"},E:{"1":"_MC","2":"_1C"},F:{"1":"_FF","2":"_VI"},G:{"1":"_KC","2":"_yC"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_wB","2":"_1B"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"DE","2":"CE"}},B:2,C:"CSS caret-color",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-cascade-layers.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-cascade-layers.js new file mode 100644 index 0000000000000000000000000000000000000000..4b91e472748e788f9bb807e7f8fb33b807c1c283 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-cascade-layers.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_qN _o","2":"_0 _1J","322":"_8P i"},C:{"1":"_wH _cG","2":"_aB _6G _L","194":"e _IP"},D:{"1":"_qN _q","2":"_u _1J","322":"_8P i"},E:{"1":"_tC","2":"_AH"},F:{"1":"_nG _JR","2":"_7 _oD _P"},G:{"1":"_5B","2":"_YE"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_kQ","2":"_1O"},Q:{"2":"AE"},R:{"2":"BE"},S:{"2":"_C"}},B:4,C:"CSS Cascade Layers",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-cascade-scope.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-cascade-scope.js new file mode 100644 index 0000000000000000000000000000000000000000..a17288e445e5e35b2d6bc644e2cfe059a81b4edd --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-cascade-scope.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_BH _EI","2":"_0 _LK","194":"_IF o _jN"},C:{"1":"_HH _kJ","2":"_SD _EK _L"},D:{"1":"_BH _2G","2":"_u _LK","194":"_IF o _jN"},E:{"1":"K _wQ","2":"_yG _EG"},F:{"1":"_OK","2":"_7 _HO _P","194":"a _vH p"},G:{"1":"_3O","2":"_yO"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"2":"XC"},P:{"1":"_NB","2":"_OM"},Q:{"2":"AE"},R:{"2":"BE"},S:{"2":"_C"}},B:5,C:"Scoped Styles: the @scope rule",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-case-insensitive.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-case-insensitive.js new file mode 100644 index 0000000000000000000000000000000000000000..5e3c8bb0a891ebe28b97a24ddba3dc1c59da1226 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-case-insensitive.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"_HM","2":"_sL"},D:{"1":"_bE","2":"_rG"},E:{"1":"_PB","2":"_TB"},F:{"1":"_5E","2":"_8G"},G:{"1":"_p","2":"_2"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_U","2":"J"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:5,C:"Case-insensitive CSS attribute selectors",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-clip-path.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-clip-path.js new file mode 100644 index 0000000000000000000000000000000000000000..19348b4bf2baaf225f1b91b8c318f288f1bd5364 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-clip-path.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"2":"_zF","260":"_K","3138":"Q"},C:{"1":"_DN _5I","2":"_g","132":"_Y _cT","644":"_QC _UG"},D:{"2":"_rF","260":"_VL","292":"_UF _MO"},E:{"2":"_XC","260":"_cE","292":"_gC _nJ _jF _oL"},F:{"2":"_T","260":"_RI","292":"_ZH uB"},G:{"2":"_n","260":"_UE","292":"_TC _BJ hD"},H:{"2":"sD"},I:{"2":"_W","260":"I","292":"_w"},J:{"2":"_B"},K:{"2":"_D","260":"H"},L:{"260":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"260":"XC"},P:{"260":"_gB","292":"_pC"},Q:{"260":"AE"},R:{"260":"BE"},S:{"1":"DE","644":"CE"}},B:4,C:"CSS clip-path property (for HTML)",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-color-adjust.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-color-adjust.js new file mode 100644 index 0000000000000000000000000000000000000000..b2a2a0b12f23600d7987142b612a7230a9872bc2 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-color-adjust.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"2":"_I","33":"_K"},C:{"1":"_2L","2":"_UK"},D:{"16":"_eL","33":"_H _wL"},E:{"1":"_tC","2":"_s","33":"_eJ _8Q"},F:{"2":"_T","33":"_a"},G:{"1":"_5B","16":"_YE"},H:{"2":"sD"},I:{"16":"_G","33":"I"},J:{"16":"_B"},K:{"2":"_D","33":"H"},L:{"16":"I"},M:{"1":"UC"},N:{"16":"_A"},O:{"16":"XC"},P:{"16":"_F"},Q:{"33":"AE"},R:{"16":"BE"},S:{"1":"_C"}},B:4,C:"CSS print-color-adjust",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-color-function.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-color-function.js new file mode 100644 index 0000000000000000000000000000000000000000..77a5a3c1311bd42e238576926b391739afd4ab2d --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-color-function.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_BK","2":"_0 _VG","322":"_cI"},C:{"1":"_xO","2":"_aB _EE _L","578":"_8F"},D:{"1":"_CK","2":"_GR","322":"_cI"},E:{"1":"_eE","2":"_QB","132":"_FL _OE KD"},F:{"1":"_WJ","2":"_7 _WF _P","322":"_WK"},G:{"1":"_dE","2":"_hB","132":"dD _mL nD"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"2":"XC"},P:{"1":"_zB","2":"_7O"},Q:{"2":"AE"},R:{"2":"BE"},S:{"2":"_C"}},B:4,C:"CSS color() function",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-conic-gradients.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-conic-gradients.js new file mode 100644 index 0000000000000000000000000000000000000000..9296df4143518a75c877cc98f53ac324127176d0 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-conic-gradients.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"_H _oM","2":"_l _dG _L","578":"_RJ _0E"},D:{"1":"_MN _iC","2":"_FJ","257":"_dM","450":"_CD _FE"},E:{"1":"_DF","2":"_RD"},F:{"1":"_H BC _tI","2":"_eH _uD _P","257":"9B AC","450":"_nH _TE"},G:{"1":"_kC","2":"_JD"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_7E","2":"_KD"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"DE","2":"CE"}},B:5,C:"CSS Conical Gradients",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-container-queries-style.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-container-queries-style.js new file mode 100644 index 0000000000000000000000000000000000000000..c6e9b84fd98977f57721541e64d842f72d9fca57 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-container-queries-style.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"2":"_0 _HK","194":"r _cI","260":"_BK"},C:{"1":"_kJ","2":"_9L _L"},D:{"2":"_u _HK","194":"r _cI","260":"_CK"},E:{"2":"_eG","260":"K vC _hU","772":"aC"},F:{"2":"_7 _dF _P","194":"_HJ","260":"_WJ"},G:{"2":"_lF","260":"vC _jL","772":"aC"},H:{"2":"sD"},I:{"2":"_G","260":"I"},J:{"2":"_B"},K:{"2":"_D","260":"H"},L:{"260":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"2":"XC"},P:{"2":"_7O","260":"_zB"},Q:{"2":"AE"},R:{"2":"BE"},S:{"2":"_C"}},B:5,C:"CSS Container Style Queries",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-container-queries.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-container-queries.js new file mode 100644 index 0000000000000000000000000000000000000000..689c44c6b4d889ec07dee677fffdf2e84a28a0cc --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-container-queries.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_bT _o","2":"_yL","516":"p"},C:{"1":"_3H _t","2":"_aB _4F _L"},D:{"1":"_bT _q","2":"_9N b","194":"_HJ _9F","450":"c","516":"p"},E:{"1":"_zC","2":"_HE"},F:{"1":"_8R","2":"_2B _dH _P","194":"_0E _MB","516":"_HP d"},G:{"1":"_jB","2":"_wC"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"2":"XC"},P:{"1":"_EB","2":"_aN"},Q:{"2":"AE"},R:{"2":"BE"},S:{"2":"_C"}},B:5,C:"CSS Container Queries (Size)",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-container-query-units.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-container-query-units.js new file mode 100644 index 0000000000000000000000000000000000000000..a8d4f9c9ea312fa0063cb26ff38f7f9fe28c85c9 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-container-query-units.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_wO","2":"_yL"},C:{"1":"_3H _t","2":"_aB _4F _L"},D:{"1":"_DL _q","2":"_u _dF","194":"_PL","450":"_HJ _SS k"},E:{"1":"_zC","2":"_HE"},F:{"1":"_cO","2":"_2B _dH _P","194":"_0E _MB"},G:{"1":"_jB","2":"_wC"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"2":"XC"},P:{"1":"_EB","2":"_aN"},Q:{"2":"AE"},R:{"2":"BE"},S:{"2":"_C"}},B:5,C:"CSS Container Query Units",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-containment.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-containment.js new file mode 100644 index 0000000000000000000000000000000000000000..9e91d5900899e8b1308f9866e00f46e82cb504bc --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-containment.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"_uO","2":"_m _ZH _L","194":"_YC _fC _FE"},D:{"1":"_tP _1K","2":"_GC","66":"4B"},E:{"1":"_tC","2":"_AH"},F:{"1":"_JM","2":"_iR","66":"_dD"},G:{"1":"_5B","2":"_YE"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_gB","2":"_pC"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"DE","194":"CE"}},B:2,C:"CSS Containment",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-content-visibility.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-content-visibility.js new file mode 100644 index 0000000000000000000000000000000000000000..3bb458d875826fb1b5b87a299327a5655dc1b962 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-content-visibility.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_BM","2":"_tJ"},C:{"1":"9 _sH","2":"_aB _VG s _L","194":"_kG _ZI t u _gE"},D:{"1":"_JI","2":"_rJ"},E:{"1":"_NL","2":"_eG"},F:{"1":"_JK","2":"_GP"},G:{"1":"_gD","2":"_lF"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_tD","2":"_XE"},Q:{"2":"AE"},R:{"1":"BE"},S:{"2":"_C"}},B:5,C:"CSS content-visibility",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-counters.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-counters.js new file mode 100644 index 0000000000000000000000000000000000000000..917d99ccd221631672835cd52cf2d5f0b2476330 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-counters.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_JC","2":"_GB"},B:{"1":"_J"},C:{"1":"_S"},D:{"1":"_Q"},E:{"1":"_R"},F:{"1":"_b"},G:{"1":"_M"},H:{"1":"sD"},I:{"1":"_O"},J:{"1":"_B"},K:{"1":"_N"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:2,C:"CSS Counters",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-crisp-edges.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-crisp-edges.js new file mode 100644 index 0000000000000000000000000000000000000000..c537f6fff2f189f97746a0303a11d3f2f4e13e90 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-crisp-edges.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_EQ","2340":"_pJ"},B:{"2":"_I","1025":"_K"},C:{"1":"_H _bO","2":"_LC","513":"_EJ _HD _dF","545":"_5Q DD"},D:{"1":"_eI _PF","2":"_WD","1025":"_2M _qL _EK _bM"},E:{"1":"_LB","2":"_s","164":"L","4644":"_gC _yB"},F:{"2":"_uM _9M _RH _sB","545":"_JL","1025":"_gO"},G:{"1":"_8","2":"_d","4260":"_vC","4644":"_TC _eC"},H:{"2":"sD"},I:{"2":"_G","1025":"I"},J:{"2":"D","4260":"A"},K:{"2":"_fB","545":"_HL","1025":"H"},L:{"1025":"I"},M:{"1":"UC"},N:{"2340":"_A"},O:{"1025":"XC"},P:{"1025":"_F"},Q:{"1025":"AE"},R:{"1025":"BE"},S:{"1":"DE","4097":"CE"}},B:4,C:"Crisp edges/pixelated images",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-cross-fade.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-cross-fade.js new file mode 100644 index 0000000000000000000000000000000000000000..93c171a22cfb70be215a9e9ce8daad266b231852 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-cross-fade.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"2":"_I","33":"_K"},C:{"2":"_S"},D:{"2":"_wN","33":"_lP _wL"},E:{"1":"_LB","2":"_3","33":"_OC _QD"},F:{"2":"_T","33":"_a"},G:{"1":"_8","2":"_d","33":"_rD _eC"},H:{"2":"sD"},I:{"2":"_W","33":"_X"},J:{"2":"_B"},K:{"2":"_D","33":"H"},L:{"33":"I"},M:{"2":"UC"},N:{"2":"_A"},O:{"33":"XC"},P:{"33":"_F"},Q:{"33":"AE"},R:{"33":"BE"},S:{"2":"_C"}},B:4,C:"CSS Cross-Fade Function",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-default-pseudo.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-default-pseudo.js new file mode 100644 index 0000000000000000000000000000000000000000..88204dac1d9e596f0f9b8be31e70b8a63e7d64e8 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-default-pseudo.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"_x","16":"_f"},D:{"1":"_xH","16":"_Y","132":"_iD"},E:{"1":"_HB","16":"_3","132":"_BI"},F:{"1":"_5L","16":"_4C","132":"_ID","260":"_JL"},G:{"1":"_9","16":"_n","132":"_TC _8E"},H:{"260":"sD"},I:{"1":"I","16":"_KB","132":"_LL"},J:{"16":"D","132":"A"},K:{"1":"H","16":"_bB","260":"WC"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_U","132":"J"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:5,C:":default CSS pseudo-class",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js new file mode 100644 index 0000000000000000000000000000000000000000..97f938e247a2cda9066500f0e4285ec2e94f3f98 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"2":"_WH _3D _fD","16":"R"},C:{"2":"_S"},D:{"2":"_Q"},E:{"1":"B","2":"_yI _qK _VH _UH"},F:{"2":"_b"},G:{"2":"_M"},H:{"2":"sD"},I:{"2":"_O"},J:{"2":"_B"},K:{"2":"_N"},L:{"2":"I"},M:{"2":"UC"},N:{"2":"_A"},O:{"2":"XC"},P:{"2":"_F"},Q:{"2":"AE"},R:{"2":"BE"},S:{"2":"_C"}},B:7,C:"Explicit descendant combinator >>",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-deviceadaptation.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-deviceadaptation.js new file mode 100644 index 0000000000000000000000000000000000000000..03489839f4e64fa0963ae82cd931db04acb9c905 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-deviceadaptation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_Z","164":"_A"},B:{"66":"_K","164":"_I"},C:{"2":"_S"},D:{"2":"_gJ","66":"_XR"},E:{"2":"_R"},F:{"2":"_6O","66":"_JM"},G:{"2":"_M"},H:{"292":"sD"},I:{"2":"_O"},J:{"2":"_B"},K:{"2":"A H","292":"_XD"},L:{"2":"I"},M:{"2":"UC"},N:{"164":"_A"},O:{"2":"XC"},P:{"2":"_F"},Q:{"66":"AE"},R:{"2":"BE"},S:{"2":"_C"}},B:5,C:"CSS Device Adaptation",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-dir-pseudo.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-dir-pseudo.js new file mode 100644 index 0000000000000000000000000000000000000000..7e7a19ccf0701687c0f37fc48de82d8d4951173e --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-dir-pseudo.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_EI","2":"_yL","194":"_NC _jN"},C:{"1":"_wD","2":"_4N","33":"_iN _5P"},D:{"1":"_2G","2":"_9N","194":"_NC _aK _gE"},E:{"1":"_RE","2":"_YD"},F:{"1":"_OK","2":"_MR","194":"_vH p"},G:{"1":"_8C","2":"_WC"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"2":"XC"},P:{"1":"_NB","2":"_OM"},Q:{"2":"AE"},R:{"2":"BE"},S:{"1":"DE","33":"CE"}},B:5,C:":dir() CSS pseudo-class",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-display-contents.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-display-contents.js new file mode 100644 index 0000000000000000000000000000000000000000..8f929369115beb6d19a502cb8cf44eff9f2d4808 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-display-contents.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"2":"_I","132":"_mG","260":"_2H"},C:{"2":"_SU pB _L","132":"_8I _fC","260":"_SL"},D:{"2":"_LI","132":"_EJ _NF _pD","194":"_DJ _qD","260":"_1H"},E:{"2":"_1C","132":"_3B _UN","260":"_2D","772":"_eF"},F:{"2":"_TR","132":"_lC _cL _TG","260":"_YJ"},G:{"1":"_VE","2":"_yC","132":"_hK _PH","260":"_kI _kK","516":"_jI _MH qD","772":"YC"},H:{"2":"sD"},I:{"2":"_G","260":"I"},J:{"2":"_B"},K:{"2":"_D","260":"H"},L:{"260":"I"},M:{"260":"UC"},N:{"2":"_A"},O:{"132":"XC"},P:{"2":"_2F","132":"3D _0Q","260":"_pF"},Q:{"132":"AE"},R:{"260":"BE"},S:{"132":"CE","260":"DE"}},B:4,C:"CSS display: contents",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-element-function.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-element-function.js new file mode 100644 index 0000000000000000000000000000000000000000..503509017d4b509bd2e2feaac140bfd6fe2babb9 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-element-function.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"2":"_J"},C:{"33":"_x","164":"_f"},D:{"2":"_Q"},E:{"2":"_R"},F:{"2":"_b"},G:{"2":"_M"},H:{"2":"sD"},I:{"2":"_O"},J:{"2":"_B"},K:{"2":"_N"},L:{"2":"I"},M:{"33":"UC"},N:{"2":"_A"},O:{"2":"XC"},P:{"2":"_F"},Q:{"2":"AE"},R:{"2":"BE"},S:{"33":"_C"}},B:5,C:"CSS element() function",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-env-function.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-env-function.js new file mode 100644 index 0000000000000000000000000000000000000000..2cfa0c0a37394825ab3fb6b291584b5a2df62b22 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-env-function.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"_2P _VC","2":"_l _qD _L"},D:{"1":"_tO","2":"_3Q"},E:{"1":"_MC","2":"_pB","132":"B"},F:{"1":"_wP _sN","2":"_YF _TE _P"},G:{"1":"_KC","2":"_WB","132":"eD"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_7E","2":"_KD"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"DE","2":"CE"}},B:7,C:"CSS Environment Variables env()",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-exclusions.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-exclusions.js new file mode 100644 index 0000000000000000000000000000000000000000..06684b193cbc2bbfbff9f11eb6133fecd05a6125 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-exclusions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_Z","33":"_A"},B:{"2":"_K","33":"_I"},C:{"2":"_S"},D:{"2":"_Q"},E:{"2":"_R"},F:{"2":"_b"},G:{"2":"_M"},H:{"2":"sD"},I:{"2":"_O"},J:{"2":"_B"},K:{"2":"_N"},L:{"2":"I"},M:{"2":"UC"},N:{"33":"_A"},O:{"2":"XC"},P:{"2":"_F"},Q:{"2":"AE"},R:{"2":"BE"},S:{"2":"_C"}},B:5,C:"CSS Exclusions Level 1",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-featurequeries.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-featurequeries.js new file mode 100644 index 0000000000000000000000000000000000000000..2c0bc808d7b78b5311227e6b4ad8ca8ea201ef1f --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-featurequeries.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_J"},C:{"1":"_PI","2":"_AF"},D:{"1":"_hO","2":"_jJ"},E:{"1":"_PB","2":"_TB"},F:{"1":"_vF","2":"_WE"},G:{"1":"_p","2":"_2"},H:{"1":"sD"},I:{"1":"_X","2":"_W"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:4,C:"CSS Feature Queries",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-file-selector-button.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-file-selector-button.js new file mode 100644 index 0000000000000000000000000000000000000000..6bd73622816a28a7ee960f899c5f3255ef82653a --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-file-selector-button.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"_1H","33":"_u _pD"},L:{"1":"I"},B:{"1":"_2H","33":"_0 _pD"},C:{"1":"_H _TQ","2":"_l _cC _L"},M:{"1":"UC"},A:{"2":"_Z","33":"_A"},F:{"1":"_hQ","2":"_T","33":"_NJ _dG"},K:{"1":"H","2":"_D"},E:{"1":"_SH _CE _PE","2":"PD","33":"_fF"},G:{"1":"_IE","33":"_TF"},P:{"1":"_pF","33":"_iF"},I:{"1":"I","2":"_W","33":"_w"}},B:6,C:"::file-selector-button CSS pseudo-element",D:undefined}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-filter-function.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-filter-function.js new file mode 100644 index 0000000000000000000000000000000000000000..a1c6286398af30d3ab107f25875bf8d5d74bc8fd --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-filter-function.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"2":"_J"},C:{"2":"_S"},D:{"2":"_Q"},E:{"1":"_LD","2":"_TB","33":"F"},F:{"2":"_b"},G:{"1":"_8","2":"_2","33":"_eC"},H:{"2":"sD"},I:{"2":"_O"},J:{"2":"_B"},K:{"2":"_N"},L:{"2":"I"},M:{"2":"UC"},N:{"2":"_A"},O:{"2":"XC"},P:{"2":"_F"},Q:{"2":"AE"},R:{"2":"BE"},S:{"2":"_C"}},B:5,C:"CSS filter() function",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-filters.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-filters.js new file mode 100644 index 0000000000000000000000000000000000000000..082bf47b698c5b27fcd5e20660c443367bd2df27 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-filters.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","1028":"_iQ","1346":"C"},C:{"1":"_SO","2":"_LC","196":"nB","516":"_yN DD"},D:{"1":"_fR","2":"_hL","33":"_KL _NE _kE"},E:{"1":"_LD","2":"_s","33":"_OC _qE"},F:{"1":"_JM","2":"_T","33":"_ID _dD"},G:{"1":"_jG","2":"_1","33":"_OD aD"},H:{"2":"sD"},I:{"1":"I","2":"_W","33":"_w"},J:{"2":"D","33":"A"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_wB","33":"_1B"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:5,C:"CSS Filter Effects",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-first-letter.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-first-letter.js new file mode 100644 index 0000000000000000000000000000000000000000..4ad26c81b72ed07862ac45a9aec48023853e0079 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-first-letter.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_V","16":"8C","516":"E","1540":"_cD"},B:{"1":"_J"},C:{"1":"_sC","132":"bC","260":"9C"},D:{"1":"_oN _FC","16":"iB _FB","132":"J"},E:{"1":"_XB","16":"iB ED","132":"_KQ"},F:{"1":"_aD","16":"_lB","260":"B RD _lI _sB"},G:{"1":"_r","16":"_d"},H:{"1":"sD"},I:{"1":"_6B","16":"_j","132":"vD"},J:{"1":"_B"},K:{"1":"_TD","260":"_fB"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:2,C:"::first-letter CSS pseudo-element selector",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-first-line.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-first-line.js new file mode 100644 index 0000000000000000000000000000000000000000..6508066f5234bf4e5be702e2c2b35b093888e171 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-first-line.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_V","132":"_c"},B:{"1":"_J"},C:{"1":"_S"},D:{"1":"_Q"},E:{"1":"_R"},F:{"1":"_b"},G:{"1":"_M"},H:{"1":"sD"},I:{"1":"_O"},J:{"1":"_B"},K:{"1":"_N"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:2,C:"CSS first-line pseudo-element",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-fixed.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-fixed.js new file mode 100644 index 0000000000000000000000000000000000000000..3626b287cbc02e438fc005d2aa13756af3d9b696 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-fixed.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_pJ","2":"8C","8":"L"},B:{"1":"_J"},C:{"1":"_S"},D:{"1":"_Q"},E:{"1":"_qM _vM _UH","1025":"ID"},F:{"1":"_b"},G:{"1":"_7B","2":"_d","132":"_nL"},H:{"2":"sD"},I:{"1":"bC _X","260":"_k","513":"_mF"},J:{"1":"_B"},K:{"1":"_N"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_F"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:2,C:"CSS position:fixed",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-focus-visible.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-focus-visible.js new file mode 100644 index 0000000000000000000000000000000000000000..2a35f17a181db0118c1f4b98b6e4f214228462ff --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-focus-visible.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_nG _gH","2":"_I","328":"_lG"},C:{"1":"_8M _t","2":"_f","161":"_6 _VB _4D"},D:{"1":"_nG _fH","2":"_4Q","328":"_3M _dL"},E:{"1":"_tC","2":"_KI","578":"G LD jC"},F:{"1":"_H NC _LN","2":"_LR","328":"_TP _dM MC"},G:{"1":"_5B","2":"_0F","578":"oD jC"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"2":"XC"},P:{"1":"_tD","2":"_XE"},Q:{"2":"AE"},R:{"1":"BE"},S:{"161":"_C"}},B:5,C:":focus-visible CSS pseudo-class",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-focus-within.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-focus-within.js new file mode 100644 index 0000000000000000000000000000000000000000..74e78137cd598154f84d1b360e1225118394183d --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-focus-within.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"_CM","2":"_zJ"},D:{"1":"_DQ _BC","2":"_FJ","194":"cC"},E:{"1":"_HB","2":"_QB"},F:{"1":"_FN _ND","2":"_eH _uD _P","194":"zB"},G:{"1":"_9","2":"_hB"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_xB","2":"_nC"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"DE","2":"CE"}},B:7,C:":focus-within CSS pseudo-class",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-font-palette.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-font-palette.js new file mode 100644 index 0000000000000000000000000000000000000000..27f6dc3e16427d0b807e520619f18811d01de15d --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-font-palette.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_wO","2":"_yL"},C:{"1":"_YL _t","2":"_aB _HK _L"},D:{"1":"_H _PL _aH _q","2":"_u _GI"},E:{"1":"_tC","2":"_AH"},F:{"1":"_pN _JR","2":"_7 _oD W _P"},G:{"1":"_5B","2":"_YE"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"2":"XC"},P:{"1":"_EB 9D","2":"_1O aC"},Q:{"2":"AE"},R:{"2":"BE"},S:{"2":"_C"}},B:5,C:"CSS font-palette",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js new file mode 100644 index 0000000000000000000000000000000000000000..277884daa14cf4f482689f56dd14b603dad7c6f7 --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"_E"},B:{"1":"_K","2":"_I"},C:{"1":"_1P _tB","2":"_GJ _uD _L","194":"_nH _CI"},D:{"1":"_DQ _BC","2":"_rG","66":"_hI _LH cC"},E:{"1":"_MC","2":"_1C"},F:{"1":"_FN _ND","2":"_8G","66":"_bC _KH"},G:{"1":"_KC","2":"_yC"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"2":"_A"},O:{"1":"XC"},P:{"1":"_xB","2":"J","66":"_lJ"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"DE","194":"CE"}},B:5,C:"CSS font-display",D:true}; diff --git a/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-font-stretch.js b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-font-stretch.js new file mode 100644 index 0000000000000000000000000000000000000000..fe61afda65d12d7f1431d6d2f5a52e9106d975fd --- /dev/null +++ b/frontend/node_modules/.pnpm/caniuse-lite@1.0.30001806/node_modules/caniuse-lite/data/features/css-font-stretch.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"_V","2":"_c"},B:{"1":"_J"},C:{"1":"_oN _IC","2":"_g _PG _L"},D:{"1":"_3F","2":"_6H"},E:{"1":"_oB","2":"_pB"},F:{"1":"_NI","2":"_RK"},G:{"1":"_9","2":"_hB"},H:{"2":"sD"},I:{"1":"I","2":"_G"},J:{"2":"_B"},K:{"1":"H","2":"_D"},L:{"1":"I"},M:{"1":"UC"},N:{"1":"_A"},O:{"1":"XC"},P:{"1":"_U","2":"J"},Q:{"1":"AE"},R:{"1":"BE"},S:{"1":"_C"}},B:5,C:"CSS font-stretch",D:true};