From a3710ce8f2d737045a4d0b106758f5f7268f41f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Deuerling?= Date: Thu, 3 Sep 2026 15:08:08 +0200 Subject: [PATCH 1/4] Render branch diffs: change marks, changes-only filter, detail panel with field diffs, init() mount API --- public/sample-review.json | 1 + src/App.jsx | 438 +++++++-- src/DetailPanel.jsx | 910 ++++++++++++++++-- src/EntityNode.jsx | 62 +- src/KnowledgeNode.jsx | 98 +- src/controlIcons.jsx | 41 + src/diffStyles.js | 11 + src/i18n/locales/de.json | 92 +- src/i18n/locales/en.json | 92 +- src/index.css | 7 + src/main.jsx | 57 ++ .../assets/semantic-visualizer/index.css | 2 +- .../assets/semantic-visualizer/index.js | 71 +- src/toolbarStyles.js | 3 +- vite.config.js | 4 + 15 files changed, 1677 insertions(+), 212 deletions(-) create mode 100644 public/sample-review.json create mode 100644 src/diffStyles.js diff --git a/public/sample-review.json b/public/sample-review.json new file mode 100644 index 0000000..5e4225d --- /dev/null +++ b/public/sample-review.json @@ -0,0 +1 @@ +{"nodes": [{"id": "customer", "type": "entity", "data": {"label": "Customer", "properties": [{"name": "Customer Email", "externalId": "customer-email", "type": "string", "shared": true, "description": "The email address of a customer."}, {"name": "loyalty_tier", "externalId": "loyalty-tier", "type": "string", "description": "Loyalty program segment assigned based on rolling 12-month spend."}], "externalId": "customer"}}, {"id": "invoice", "type": "entity", "data": {"label": "Invoice", "properties": [], "externalId": "invoice"}}, {"id": "shipment", "type": "entity", "data": {"label": "Shipment", "properties": [], "externalId": "shipment"}}, {"id": "customer-email", "type": "knowledge", "data": {"label": "Customer Email", "externalId": "customer-email"}}], "edges": [{"id": "e1", "source": "invoice", "target": "customer", "label": "billed to", "data": {"changeOp": "add"}}, {"id": "e2", "source": "customer", "target": "shipment", "label": "ships to", "data": {"changeOp": "add"}}], "changes": [{"externalId": "", "elementType": "namespace", "name": "main", "op": "modify", "owningTeam": "sales", "fields": [{"field": "description", "before": "The original description.", "after": "What the business means by its own vocabulary."}]}, {"externalId": "invoice", "elementType": "entity", "name": "Invoice", "op": "add", "owningTeam": "finance", "evidence": [{"source": "git"}], "properties": [{"externalId": "invoice-total", "name": "Total"}], "relationships": [{"externalId": "billed-to", "name": "billed to"}]}, {"externalId": "customer", "elementType": "entity", "name": "Customer", "op": "modify", "owningTeam": "sales", "relationships": [{"externalId": "ships-to", "name": "ships to"}], "mergeNotes": ["Accepting this without 'shipment' leaves out 1 relationship."], "properties": [{"externalId": "loyalty-tier", "name": "loyalty_tier", "op": "modify", "fields": [{"field": "description", "before": "Loyalty tier.", "after": "Loyalty program segment assigned based on rolling 12-month spend."}]}]}, {"externalId": "shipment", "elementType": "entity", "name": "Shipment", "op": "add", "owningTeam": "sales"}, {"externalId": "customer-email", "elementType": "shared_property", "name": "Customer Email", "op": "modify", "owningTeam": "sales", "decision": "accepted"}]} \ No newline at end of file diff --git a/src/App.jsx b/src/App.jsx index c1445fa..b97b286 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -9,6 +9,8 @@ import { Panel, MarkerType, useReactFlow, + useStore, + useStoreApi, useNodesState, useEdgesState, } from '@xyflow/react'; @@ -20,9 +22,12 @@ import FloatingEdge from './FloatingEdge'; import DetailPanel from './DetailPanel'; import NamespaceFilter from './NamespaceFilter'; import { GroupActionsContext } from './GroupActionsContext'; -import { toggleBtnStyle } from './toolbarStyles'; -import { zoomInIcon, zoomOutIcon, fitViewIcon, autoLayoutIcon, expandAllIcon, collapseAllIcon } from './controlIcons'; +import { + zoomInIcon, zoomOutIcon, fitViewIcon, autoLayoutIcon, expandAllIcon, collapseAllIcon, + changesOnlyIcon, groupsIcon, erdIcon, enlargeIcon, +} from './controlIcons'; import { loadLayout, savePositions, clearPositions, saveToggles } from './storage'; +import { DIFF_STYLES } from './diffStyles'; import '@xyflow/react/dist/style.css'; @@ -80,27 +85,40 @@ function toReactFlowElements(graphData) { edgeParallelData[e.id] = { index: pairAssigned[key]++, total: pairCounts[key] }; }); - const edges = graphData.edges.map((e) => ({ - id: e.id, - source: e.source, - target: e.target, - label: e.label, - type: 'floating', - data: { label: e.label, parallel: edgeParallelData[e.id] }, - style: { - stroke: '#94a3b8', - strokeWidth: 1.5, - }, - markerEnd: { - type: MarkerType.ArrowClosed, - color: '#94a3b8', - width: 14, - height: 14, - }, - labelStyle: { fontSize: 10, fill: '#64748b', fontWeight: 500 }, - labelBgStyle: { fill: '#fff', fillOpacity: 0.9 }, - labelBgPadding: [4, 2], - })); + const edges = graphData.edges.map((e) => { + // A relationship the change request touches is a change in its own right, and is listed as one + // in the proposed-changes list — so it has to be legible in the graph too, not just implied by + // the concepts it happens to connect. + const diff = DIFF_STYLES[e.diff]; + const stroke = diff ? diff.color : '#94a3b8'; + return { + id: e.id, + source: e.source, + target: e.target, + label: e.label, + type: 'floating', + data: { label: e.label, parallel: edgeParallelData[e.id], diff: e.diff, diffDetail: e.diffDetail }, + style: { + stroke, + strokeWidth: diff ? 2.5 : 1.5, + // A removed relationship still has both ends in the graph, so it can only be told apart + // from a surviving one by how it is drawn. + ...(e.diff === 'remove' ? { strokeDasharray: '6 4' } : {}), + }, + markerEnd: { + type: MarkerType.ArrowClosed, + color: stroke, + width: 14, + height: 14, + }, + labelStyle: diff + ? { fontSize: 11, fill: stroke, fontWeight: 700 } + : { fontSize: 10, fill: '#64748b', fontWeight: 500 }, + labelBgStyle: { fill: '#fff', fillOpacity: 0.9 }, + labelBgPadding: [4, 2], + zIndex: diff ? 5 : 0, + }; + }); return { nodes, edges }; } @@ -635,10 +653,37 @@ function applyCollapseTransform({ nodes, edges }, collapsedSet) { return { nodes: filteredNodes, edges: finalEdges }; } +// Toggle button style helper +/** + * A square icon button, stacked with its siblings down the edge of the canvas. + * + * Labels cost horizontal room the graph now needs — "Show as Entity-Relationship-Diagram" was wider + * than the canvas it sat on once the panels stopped overlapping it. A glyph cannot say "on" by + * itself, so the pressed state is carried by the button: filled, tinted and outlined, with the words + * still available as a title. + */ +const toggleBtnStyle = (active) => ({ + width: 32, + height: 32, + borderRadius: 6, + background: active ? '#eef2ff' : '#fff', + padding: 0, + color: active ? '#4f46e5' : '#4b5563', + boxShadow: '0 1px 2px 0 rgba(0,0,0,0.05)', + border: `1px solid ${active ? '#a5b4fc' : '#d1d5db'}`, + cursor: 'pointer', + display: 'inline-flex', + alignItems: 'center', + justifyContent: 'center', +}); + // Past this many foreign-namespace concepts the diagram is more borrowed than its own, so they // all start hidden and the namespace dropdown becomes the way back in. const FOREIGN_NAMESPACE_LIMIT = 10; +/** Sized here rather than in each glyph so the four stay on one grid. */ +const toolbarIconStyle = { width: 17, height: 17, display: 'block' }; + // Enlarge/shrink button function EnlargeButton({ customHeight, containerRef }) { const { t } = useTranslation(); @@ -662,19 +707,44 @@ function EnlargeButton({ customHeight, containerRef }) { }, [enlarged, customHeight, fitView, containerRef]); return ( - ); } -export default function App({ graphData, customHeight, layout, storageKey, showMiniMap }) { +export default function App({ + graphData: sourceGraphData, + customHeight, + layout, + storageKey, + showMiniMap, + changesOnly: changesOnlyProp, + focus, + onSelect, +}) { const { t } = useTranslation(); - const { fitView, getNodes, zoomIn, zoomOut } = useReactFlow(); + const { fitView, getNodes, zoomIn, zoomOut, setCenter, getViewport, getNodesBounds } = useReactFlow(); + const store = useStoreApi(); const containerRef = useRef(null); + const canvasRef = useRef(null); + // React Flow's own measurement, so centring is driven by the number it uses rather than a copy. + const flowWidth = useStore((state) => state.width); const [selectedNode, setSelectedNode] = useState(null); + // Whether the host took the last selection and is showing that element itself, in which case a + // panel here would be a second account of one thing. Set for the element the host focuses on + // arrival, too — otherwise every page load opens a panel nobody asked for. + const [panelClaimed, setPanelClaimed] = useState(true); + // The payload arrives already saying what the proposal does to each element — marks included. It + // used to be annotated here from a change list the host passed in, which meant only a client + // holding that list could read the picture; the server settles it now, for every reader. + const graphData = sourceGraphData; + const [selectedEdge, setSelectedEdge] = useState(null); // Default to ERD mode when a property is highlighted — otherwise the highlight // (which lives inside an entity node's property list) wouldn't be visible. const hasHighlightedProperty = useMemo( @@ -692,6 +762,10 @@ export default function App({ graphData, customHeight, layout, storageKey, showM [graphData], ); const [showGroups, setShowGroups] = useState(initialToggles?.showGroups ?? false); + // A review opens on what is being reviewed. The whole namespace is the context you reach for once + // the change stops making sense on its own, not the thing you start by scrolling past. Inert when + // there is no diff, so a plain graph is unaffected. + const [changesOnly, setChangesOnly] = useState(changesOnlyProp ?? true); const [collapsedGroups, setCollapsedGroups] = useState( () => new Set(initialToggles?.collapsedGroups || []), ); @@ -736,6 +810,14 @@ export default function App({ graphData, customHeight, layout, storageKey, showM const [layoutSeed, setLayoutSeed] = useState(0); const isHierarchy = layout === 'tree'; const groupsActive = hasGroups && showGroups && !isHierarchy; + // A request whose only change is to a concept's own property marks no node and no edge — the + // property is not either. Without counting it the changes-only toggle disappears on exactly the + // request that needs it. + const hasDiff = useMemo( + () => graphData.nodes.some((n) => n.data?.diff || n.data?.changedPropertyCount > 0) || + graphData.edges.some((e) => e.diff), + [graphData], + ); const nodeTypes = showProperties && !isHierarchy ? entityNodeTypes : defaultNodeTypes; // Toggling produces a fresh Set so memoized consumers (layout, context) invalidate cleanly. @@ -848,7 +930,41 @@ export default function App({ graphData, customHeight, layout, storageKey, showM const filteredEdges = sourceData.edges.filter((e) => keepIds.has(e.source) && keepIds.has(e.target)); sourceData = { nodes: filteredNodes, edges: filteredEdges }; } + // Hide what the change request leaves alone — but keep whatever the changed concepts connect to. + // A concept shown alone says nothing about whether changing it is safe; its neighbours are what + // make a removal at a hub look different from a removal at a leaf. Neighbours come through + // dimmed, the treatment search context already uses. + if (changesOnly && hasDiff) { + // A concept whose only change is to one of its own properties carries no diff of its own — + // the property is not a node, so the change lands on the concept as a count. + const changedIds = new Set( + sourceData.nodes.filter((n) => n.data?.diff || n.data?.changedPropertyCount > 0).map((n) => n.id), + ); + // A relationship can change between two concepts that are themselves untouched. Both ends + // count as changed, or the only thing the request actually did would be filtered away. + sourceData.edges.forEach((e) => { + if (!e.diff) return; + changedIds.add(e.source); + changedIds.add(e.target); + }); + const neighbourIds = new Set(); + sourceData.edges.forEach((e) => { + if (changedIds.has(e.source)) neighbourIds.add(e.target); + if (changedIds.has(e.target)) neighbourIds.add(e.source); + }); + const filteredNodes = sourceData.nodes + .filter((n) => changedIds.has(n.id) || neighbourIds.has(n.id) || n.type === 'group') + .map((n) => (changedIds.has(n.id) || n.type === 'group' + ? n + : { ...n, data: { ...n.data, dimmed: true } })); + const keepIds = new Set(filteredNodes.map((n) => n.id)); + const filteredEdges = sourceData.edges.filter((e) => keepIds.has(e.source) && keepIds.has(e.target)); + sourceData = { nodes: filteredNodes, edges: filteredEdges }; + } if (showProperties && !isHierarchy) { + // Filters compose: this reads from whatever the step above produced, not from the original + // graph. Reading from graphData discarded the changes-only filter, so turning on the + // entity-relationship view silently put every unchanged concept back. const filteredNodes = sourceData.nodes.filter((n) => n.type !== 'shared_property'); const keepIds = new Set(filteredNodes.map((n) => n.id)); const filteredEdges = sourceData.edges.filter((e) => keepIds.has(e.source) && keepIds.has(e.target)); @@ -871,7 +987,7 @@ export default function App({ graphData, customHeight, layout, storageKey, showM if (isHierarchy) return treeLayout(rawNodes, rawEdges); if (groupsActive) return layoutWithGroups(rawNodes, rawEdges, { entityMode: showProperties, seed: layoutSeed }); return layoutElements(rawNodes, rawEdges, { entityMode: showProperties, seed: layoutSeed }); - }, [graphData, showProperties, isHierarchy, groupsActive, collapsedGroups, layoutSeed, hiddenNamespaces]); + }, [graphData, showProperties, isHierarchy, groupsActive, collapsedGroups, layoutSeed, changesOnly, hasDiff, hiddenNamespaces]); const adjacency = useMemo( () => buildAdjacency(layouted.edges), @@ -892,6 +1008,15 @@ export default function App({ graphData, customHeight, layout, storageKey, showM // they're never dimmed by search alone. Click-selection always wins over // search dimming so clicking a context node lets the user explore from it. const displayNodes = useMemo(() => { + // Selecting a relationship reduces the graph to the two concepts it joins — the pair is the + // whole subject of the panel. + if (selectedEdge) { + const ends = new Set([selectedEdge.source, selectedEdge.target]); + return layouted.nodes.map((node) => ({ + ...node, + data: { ...node.data, dimmed: !ends.has(node.id), selected: false }, + })); + } if (selectedNode) { const activeNodes = new Set([selectedNode.id]); (adjacency.neighborNodes[selectedNode.id] || new Set()).forEach((id) => activeNodes.add(id)); @@ -917,28 +1042,49 @@ export default function App({ graphData, customHeight, layout, storageKey, showM const shouldDim = isContainer || node.data?.searchMatch === false; return { ...node, data: { ...node.data, dimmed: shouldDim } }; }); - }, [layouted.nodes, selectedNode, adjacency]); + }, [layouted.nodes, selectedNode, selectedEdge, adjacency]); const displayEdges = useMemo(() => { + if (selectedEdge) { + return layouted.edges.map((edge) => { + if (edge.id === selectedEdge.id) { + return { ...edge, style: { ...edge.style, strokeWidth: 3.5 }, zIndex: 10 }; + } + return { + ...edge, + style: { ...edge.style, stroke: '#e2e8f0', strokeWidth: 1 }, + markerEnd: { type: MarkerType.ArrowClosed, color: '#e2e8f0', width: 14, height: 14 }, + data: { ...edge.data, dimmed: true }, + labelStyle: { fontSize: 10, fill: '#e2e8f0', fontWeight: 500 }, + labelBgStyle: { fill: '#fff', fillOpacity: 0.5 }, + zIndex: 0, + }; + }); + } if (selectedNode) { const activeEdges = adjacency.neighborEdges[selectedNode.id] || new Set(); return layouted.edges.map((edge) => { const active = activeEdges.has(edge.id); + // Selecting a concept must not erase the diff channel — a changed relationship keeps its + // own colour and only borrows the selection's emphasis. + const diff = DIFF_STYLES[edge.data?.diff]; + const activeStroke = diff ? diff.color : '#6366f1'; return { ...edge, style: { - stroke: active ? '#6366f1' : '#e2e8f0', + ...edge.style, + stroke: active ? activeStroke : '#e2e8f0', strokeWidth: active ? 2.5 : 1, }, markerEnd: { type: MarkerType.ArrowClosed, - color: active ? '#6366f1' : '#e2e8f0', + color: active ? activeStroke : '#e2e8f0', width: 14, height: 14, }, data: { ...edge.data, dimmed: !active }, labelStyle: active - ? { fontSize: 11, fill: '#4338ca', fontWeight: 600 } + ? { fontSize: 11, fill: diff ? activeStroke : '#4338ca', fontWeight: diff ? 700 : 600 } : { fontSize: 10, fill: '#e2e8f0', fontWeight: 500 }, labelBgStyle: active ? { fill: '#eef2ff', fillOpacity: 1 } @@ -947,6 +1093,20 @@ export default function App({ graphData, customHeight, layout, storageKey, showM }; }); } + // Changes only, with nothing selected: the diff is the subject and the neighbours are context, + // so a relationship the proposal does not touch reads as background. Without this the dimmed + // nodes were joined by full-strength lines and labels, which drew the eye to the context. + if (changesOnly && hasDiff) { + return layouted.edges.map((edge) => (edge.data?.diff ? edge : { + ...edge, + style: { ...edge.style, stroke: '#e2e8f0', strokeWidth: 1 }, + markerEnd: { type: MarkerType.ArrowClosed, color: '#e2e8f0', width: 14, height: 14 }, + data: { ...edge.data, dimmed: true }, + labelStyle: { fontSize: 10, fill: '#cbd5e1', fontWeight: 500 }, + labelBgStyle: { fill: '#fff', fillOpacity: 0.6 }, + zIndex: 0, + })); + } // Search context: dim edges where either endpoint is a non-match (the // server already drops context↔context edges, so what remains is // match↔match — kept full — and match↔context — dimmed). @@ -972,7 +1132,7 @@ export default function App({ graphData, customHeight, layout, storageKey, showM labelBgStyle: { fill: '#fff', fillOpacity: 0.5 }, }; }); - }, [layouted.edges, selectedNode, adjacency, layouted.nodes]); + }, [layouted.edges, selectedNode, selectedEdge, adjacency, layouted.nodes, changesOnly, hasDiff]); // Initial state: skip the saved-position overlay when mounting with a // filtered subgraph. HTMX morph re-mounts this component on each search @@ -1019,17 +1179,167 @@ export default function App({ graphData, customHeight, layout, storageKey, showM setEdges(displayEdges); } - const onNodeClick = useCallback((_event, node) => { - setSelectedNode((prev) => prev?.id === node.id ? null : node); + /** + * Bring the selected element to the middle of the canvas. + * + * Not the same job as getting a node out from under a panel, though one function used to do both — + * and removing the overlap took this with it. Selecting a card in the list has to move the canvas + * to it, because the reader's whole reason for clicking is to see where it sits; and opening the + * panel narrows the canvas, which shifts what is visible even when nothing is covering it. + */ + const focusNode = useCallback((node) => { + if (!node) return; + // With the lookup, so a node inside a group is measured where it actually sits. + const bounds = getNodesBounds([node], { nodeLookup: store.getState().nodeLookup }); + if (!bounds || !bounds.width) return; + setCenter(bounds.x + bounds.width / 2, bounds.y + bounds.height / 2, { + zoom: getViewport().zoom, + duration: 400, + }); + }, [getNodesBounds, getViewport, setCenter, store]); + + /** + * Centre on the selection, once, when React Flow knows how wide it is. + * + * Centring at click time computes against the canvas as it was: selecting the first change opens + * the detail panel and takes half the width, and React Flow measures itself asynchronously. The + * first attempt at this centred immediately and corrected afterwards, which is two pans for every + * click — a fast move and then a small step. + * + * Depending on React Flow's own width instead means the centring happens when the value it is + * computed from actually changes: once per selection, and once more only when the canvas really + * did resize under it. + */ + useEffect(() => { + if (selectedNode) focusNode(selectedNode); + }, [selectedNode, flowWidth, focusNode]); + + /** + * Centre on what the host says is being read. + * + * The graph is beside a page about one element, so it opens on that element rather than on the + * whole picture with the reader left to find it. Marked selected as well as centred: a node in the + * middle of a canvas is not obviously the subject unless it says so. + */ + const focusedRef = useRef(null); + useEffect(() => { + if (!focus || focusedRef.current === focus) return; + const node = getNodes().find((n) => n.data?.externalId === focus); + // Retried through `nodes` because the first render has none yet — and guarded by the ref because + // selecting one recomputes them, which without it is a loop that renders until React gives up. + if (!node) return; + focusedRef.current = focus; + // The host is already showing this one — that is why it asked for it to be centred. + setPanelClaimed(true); + setSelectedNode(node); + }, [focus, getNodes, nodes]); + + const onNodeClick = useCallback((event, node) => { + setSelectedEdge(null); + const deselecting = selectedNode?.id === node.id; + setSelectedNode(deselecting ? null : node); + + // A host may own what a click means — the review does, where picking a changed node is picking + // which change to read, and the page that shows it is not this component. Reported by stable id, + // the only identifier that means anything outside this process. + // + // Whether it owns *this* click is its answer, not a standing arrangement: a review has a page for + // the elements a proposal touches and none for the neighbours drawn around them. Handing an + // unclaimed click back is what lets the panel describe those, as it does anywhere else. + const claimed = Boolean(onSelect) && !deselecting && Boolean(node.data?.externalId) && + onSelect(node.data.externalId, node) === true; + setPanelClaimed(claimed); + }, [selectedNode, onSelect]); + + // A relationship is a change in its own right, so it has to be inspectable on its own — the panel + // is the only place a reviewer can see what a change request did to one. + const onEdgeClick = useCallback((_event, edge) => { + setSelectedNode(null); + setSelectedEdge((prev) => prev?.id === edge.id ? null : edge); }, []); const onPaneClick = useCallback(() => { setSelectedNode(null); + setSelectedEdge(null); }, []); + + // Kept together so the toolbar can live in its own row above the panels rather than under them. + const viewControls = ( + // Down the edge rather than across the top: the canvas is the scarce dimension once the panels + // sit beside it, and a column costs one icon's width instead of four buttons' worth. +
+ {/* Wider than the glyphs below it, and only present when the diagram actually reaches into + another namespace — which is why the column aligns to its right edge rather than + stretching every button to this one's width. */} + {foreignNamespaces.length > 0 && ( +
+ ); + return ( -
+ {/* A row, not a stack. The panels used to float over the canvas, which meant opening one hid the + element it was describing — and every fix for that (panning the node back into view, offsetting + the toolbar) was working around the overlap rather than removing it. Laid out side by side, the + graph keeps whatever width is left and nothing is ever underneath anything. */} +
+
@@ -1092,56 +1403,21 @@ export default function App({ graphData, customHeight, layout, storageKey, showM {showMiniMap && } - -
- {!isHierarchy && hasGroups && ( - - )} - {!isHierarchy && ( - - )} - {foreignNamespaces.length > 0 && ( -
-
+ {viewControls}
+
+ {/* Withheld only for the selections the host claimed — it answers those with its own account + of the element, and two of them side by side is one too many. */} setSelectedNode(null)} + onClose={() => { setSelectedNode(null); setSelectedEdge(null); }} />
diff --git a/src/DetailPanel.jsx b/src/DetailPanel.jsx index c191adb..dfd7e1f 100644 --- a/src/DetailPanel.jsx +++ b/src/DetailPanel.jsx @@ -1,7 +1,101 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; +import { DIFF_STYLES } from './diffStyles'; import NamespaceBadge from './NamespaceBadge'; +// Impact is a separate channel from the diff op: how consequential a change is, independent of +// whether it adds, changes or removes. Ordered as the review order in the change request list. +const IMPACT_COLORS = { + structural: '#dc2626', // red-600 + descriptive: '#d97706', // amber-600 + cosmetic: '#64748b', // slate-500 +}; + +/** + * Half the canvas. A change is read here and merely located out there, so the panel is a working + * surface rather than a slot beside the picture — and being a share of the width rather than a + * pixel count, it stays that on any screen. Published so the canvas knows what it is covering. + */ +export const DETAIL_PANEL_SHARE = 0.5; + +// A column beside the canvas rather than over it. Opening it narrows the graph instead of hiding the +// part of it the reader just clicked, which is what the panning and the toolbar offset existed to +// paper over. +const panelStyle = { + width: `${DETAIL_PANEL_SHARE * 100}%`, + flexShrink: 0, + background: '#fff', + borderLeft: '1px solid #e5e7eb', + display: 'flex', + flexDirection: 'column', + overflow: 'hidden', +}; + +/** + * One entry when several are selected. The panel itself scrolls, so a stacked body flows rather than + * claiming the height, and a rule separates it from the next. + */ +/** A body inside the stack flows to its full height; the panel around it is what scrolls. */ +const scrollerStyle = (stacked, extra = {}) => (stacked + ? { display: 'flex', flexDirection: 'column', ...extra } + : { flex: 1, overflow: 'auto', display: 'flex', flexDirection: 'column', ...extra }); + +const stackedBodyStyle = { + display: 'flex', + flexDirection: 'column', + flexShrink: 0, + borderBottom: '1px solid #e5e7eb', +}; + +const footerStyle = { + borderTop: '1px solid #e5e7eb', + padding: '12px 16px', + flexShrink: 0, + background: '#fff', +}; + +const decisionButtonStyle = (color) => ({ + flex: 1, + border: `1px solid ${color}`, + color, + background: '#fff', + borderRadius: 6, + padding: '5px 10px', + fontSize: 12, + cursor: 'pointer', +}); + +const closeButtonStyle = { + background: 'none', + border: 'none', + cursor: 'pointer', + padding: 4, + color: '#9ca3af', + fontSize: 18, + lineHeight: 1, + flexShrink: 0, + marginLeft: 8, +}; + +const sectionHeaderStyle = { + padding: '10px 16px 6px', + fontSize: 11, + fontWeight: 600, + textTransform: 'uppercase', + letterSpacing: '0.05em', + color: '#9ca3af', + background: '#f9fafb', + borderBottom: '1px solid #e5e7eb', +}; + +const endpointStyle = { + padding: '2px 7px', + borderRadius: 4, + background: '#f1f5f9', + border: '1px solid #e2e8f0', + fontWeight: 600, +}; + const ACCENT_COLORS = { entity: '#3b82f6', property: '#22c55e', @@ -67,36 +161,30 @@ const KeyIcon = () => ( export default function DetailPanel({ node, + edge, + changesOnly, graphData, isCollapsed, onToggleCollapse, onCollapseOthers, onExpandAll, onClose, + stacked, }) { const { t } = useTranslation(); + if (edge) return ; if (!node) return null; const type = node.type || 'entity'; - const accentColor = ACCENT_COLORS[type] || ACCENT_COLORS.entity; + const diff = DIFF_STYLES[node.data.diff]; + // The diff owns the accent when there is one: what a reviewer needs to see first is that this + // element is part of the proposal, not which kind of concept it is. + const accentColor = diff ? diff.color : (ACCENT_COLORS[type] || ACCENT_COLORS.entity); const { label, description, link, foreignNamespace } = node.data; const isGroup = GROUP_TYPES.has(type); return ( -
+
{/* Accent bar */}
@@ -152,25 +240,36 @@ export default function DetailPanel({
)}
- + {onClose ? : null}
+ {/* Stated, not just chipped: a concept borrowed from another namespace is not this + namespace's to change, and that has to be unmissable before anyone reviews it. */} + {node.data.unresolved && ( +
+ {t('detail.unresolved')} + {node.data.removedBy && ( + + )} +
+ )} + {description && (
) : ( - +
+ {/* What changed about it, then inside it, then around it — and only afterwards who says + so. Evidence sat between the relationships and the properties, splitting one account of + the change in half with a statement about its sourcing. */} + + + + + +
+ )} +
+ ); +} + +function EdgePanel({ edge, graphData, onClose, stacked }) { + const { t } = useTranslation(); + // Selection can arrive either as a React Flow edge (clicked in the canvas, diff data nested under + // `data`) or as a raw graph edge (clicked in the related-changes list, diff data at the top level). + const detail = edge.data?.diffDetail ?? edge.diffDetail; + const diff = DIFF_STYLES[edge.data?.diff ?? edge.diff]; + const accentColor = diff ? diff.color : '#64748b'; + const nameOf = (id) => graphData?.nodes?.find((n) => n.id === id)?.data?.label || id; + + return ( +
+
+
+
+
+
+ {t('detail.type.relationship')} +
+
+ {edge.data?.label || edge.label} +
+
+ {onClose ? : null} +
+ + {/* The two ends are what a relationship is; naming them saves tracing the line back. */} +
+ {nameOf(edge.source)} + + {nameOf(edge.target)} +
+
+ +
+ + +
+
+ ); +} + +/** + * What the proposal cites for this element. + * + * A reviewer cannot verify forty generated concepts from knowledge. What they can do is read the + * quote and judge whether it says what the concept says — so the quote belongs on the element, not + * in a document somewhere else. An element changed with nothing cited is called out: absence of + * evidence is the thing worth noticing, and it is invisible unless stated. + */ +/** + * What the proposal does to this concept's relationships. + * + * A relationship is a change in its own right and can be the only one a card carries — connecting an + * existing property to a concept adds no field to either. Nothing rendered them, so such a card read + * as "Approving this request applies the following" followed by nothing at all. + */ +function RelationshipChangesSection({ relationships }) { + const { t } = useTranslation(); + if (!relationships || relationships.length === 0) return null; + const tone = { add: '#15803d', remove: '#b91c1c', modify: '#b45309' }; + return ( +
+
+ {t('detail.relationshipChanges', 'Relationships')} ({relationships.length}) +
+ {relationships.map((relationship) => ( +
+
+ + {t('detail.op.' + relationship.op, relationship.op)} + + {/* "Customer → marketing_consent_at" rather than the id that encodes it. The stored id is + machine-made, and reading it is not the reviewer's job. */} + + {relationship.from && relationship.to + ? `${relationship.from} → ${relationship.to}` + : relationship.name || relationship.externalId} + +
+ {relationship.fields?.map((field) => ( +
+
+ {field.field} +
+ +
+ ))} +
+ ))} +
+ ); +} + +function EvidenceSection({ evidence, missing }) { + const { t } = useTranslation(); + const items = evidence || []; + if (items.length === 0 && !missing) return null; + + if (items.length === 0) { + return ( + // The heading names the section whether or not there is anything to worry about, so it is + // drawn like every other one. Only the warning is coloured, because only the warning is one. +
+
{t('detail.evidence.heading')}
+ {/* Full width, like every other row in the panel — inset in a card of its own, it read as a + floating notice rather than as this section's content. */} +
+ {t('detail.evidence.none')} +
+
+ ); + } + + return ( +
+
+ {t('detail.evidence.heading')} ({items.length}) +
+
+ {items.map((e, i) => ( +
+
+ {e.quote} +
+ {e.label && ( +
+ {e.label} +
+ )} + {e.resolvable === false && ( +
+ {t('detail.evidence.unresolvable')} +
+ )} +
+ ))} +
+
+ ); +} + +/** + * Other pending change requests editing this same element. + * + * Overlap is a risk, not a certainty: approving reshapes the others onto the new state and two edits + * to one concept often merge cleanly. What the reviewer needs is which concept is contested and a way + * to go and look, which is why this hangs off the element rather than sitting in a banner. + */ +function OverlapSection({ overlaps }) { + const { t } = useTranslation(); + if (!overlaps || overlaps.length === 0) return null; + + return ( +
+
+ {t('detail.overlap.heading')} ({overlaps.length}) +
+
+ {t('detail.overlap.description')} +
+ +
+ ); +} + +/** + * What breaks if this removal goes ahead — the consumers that do not get a vote on it. + * + * Deliberately here rather than in a table beside the graph: the removal and its cost are one fact, + * and separating them makes the reviewer join them up by hand. Approving is decided on this. + */ +function ConsumersSection({ consumers }) { + const { t } = useTranslation(); + if (!consumers || consumers.total === 0) return null; + + const groups = [ + ['relationship', consumers.relationships], + ['dataProduct', consumers.dataProducts], + ['dataContract', consumers.dataContracts], + ].filter(([, items]) => items && items.length > 0); + + return ( +
+
+ {t('detail.consumers.heading')} ({consumers.total}) +
+
+ {t('detail.consumers.description')} +
+ {groups.map(([kind, items]) => ( +
+
+ {t(`detail.consumers.${kind}`)} +
+ {items.map((item, i) => ( +
+ {item.link ? ( + e.currentTarget.style.textDecoration = 'underline'} + onMouseOut={(e) => e.currentTarget.style.textDecoration = 'none'}> + {item.label} + + ) : ( + {item.label} + )} + {item.namespace && ( + · {item.namespace} + )} +
+ ))} +
+ ))} +
+ ); +} + +/** + * The changed relationships hanging off an otherwise untouched concept. + * + * Without this a reviewer hits a dead end: the concept is drawn as involved — it survives the + * changes-only filter, it sits at the end of a coloured edge — but its own panel has nothing to do + * with the request, which reads as a bug rather than as "the change is on the line, not the box". + */ +function DiffSection({ detail }) { + const { t } = useTranslation(); + if (!detail) return null; + + const diff = DIFF_STYLES[detail.op] || DIFF_STYLES.modify; + const impactColor = IMPACT_COLORS[detail.impact] || IMPACT_COLORS.cosmetic; + + return ( +
+
+
+ + {diff.symbol} + {t(`detail.diff.op.${detail.op}`)} + + + {t(`detail.diff.impact.${detail.impact}`)} + +
+ +
+ {t(`detail.diff.summary.${detail.op}`)} +
+
+ + {detail.fields?.length > 0 && ( +
+ {detail.fields.map((f) => ( + + ))} +
+ )} +
+ ); +} + +function FieldChange({ change }) { + const { t } = useTranslation(); + const impactColor = IMPACT_COLORS[change.impact] || IMPACT_COLORS.cosmetic; + + return ( +
+
+ {change.field} +
+ +
+ ); +} + + +// --- Decorated values ------------------------------------------------------------------------ +// +// A host may know things about a value that this component cannot: that "Confidential" is a governed +// level with a colour and an icon of its own, that a tier outranks another. Rather than teach those +// concepts here, any value in a change may arrive as `{ display: 'badge', label, color, icon }` and +// is drawn as one wherever a plain value would have been — a field, a list item, a map entry. +// `color` is a palette token, `icon` inline SVG the host is trusted for, exactly as it is trusted +// for the labels beside it. + +const BADGE_PALETTE = { + red: ['#fef2f2', '#b91c1c', '#fecaca'], + orange: ['#fff7ed', '#c2410c', '#fed7aa'], + amber: ['#fffbeb', '#b45309', '#fde68a'], + yellow: ['#fefce8', '#854d0e', '#fef08a'], + green: ['#f0fdf4', '#15803d', '#bbf7d0'], + teal: ['#f0fdfa', '#0f766e', '#99f6e4'], + blue: ['#eff6ff', '#1d4ed8', '#bfdbfe'], + indigo: ['#eef2ff', '#4338ca', '#c7d2fe'], + purple: ['#faf5ff', '#7e22ce', '#e9d5ff'], + pink: ['#fdf2f8', '#be185d', '#fbcfe8'], + gray: ['#f9fafb', '#4b5563', '#e5e7eb'], +}; + +/** + * A decorated value the host can say more about than its text does. When it carries an `href` it is + * a way back to the thing itself — the level that says what "Confidential" obliges, the team taking + * ownership — which is exactly what a reviewer needs and cannot get from the word. + */ +function Decorated({ value, strike }) { + const linked = Boolean(value.href) && !strike; + // A badge is already a thing rather than a word, so it keeps its own colours and says it is + // clickable by being a badge. A plain value has nothing to go on, and hover is no help to someone + // who does not know there is anything to hover — so the link is underlined standing still. + const inner = value.display === 'badge' ? : ( + + {value.label} + + ); + if (!value.href) return inner; + return ( + { e.currentTarget.style.opacity = 0.75; }} + onMouseOut={(e) => { e.currentTarget.style.opacity = 1; }}> + {inner} + + ); +} + +function Badge({ badge, strike }) { + const [bg, fg, ring] = BADGE_PALETTE[(badge.color || 'gray').toLowerCase()] || BADGE_PALETTE.gray; + return ( + + {badge.icon ? ( + + ) : null} + {badge.label} + + ); +} + +// A translation key names a locale, and a flag is how the application shows one. +const LOCALE_FLAGS = { + de: '\u{1F1E9}\u{1F1EA}', fr: '\u{1F1EB}\u{1F1F7}', es: '\u{1F1EA}\u{1F1F8}', it: '\u{1F1EE}\u{1F1F9}', + nl: '\u{1F1F3}\u{1F1F1}', pt: '\u{1F1F5}\u{1F1F9}', pl: '\u{1F1F5}\u{1F1F1}', en: '\u{1F1EC}\u{1F1E7}', +}; + +/** `description@de` reads as a German description, not as a key with a suffix. */ +function TranslationKey({ name }) { + const at = name.lastIndexOf('@'); + if (at < 0) { + return ( + + {name} + + ); + } + const field = name.slice(0, at); + const locale = name.slice(at + 1).toLowerCase(); + return ( + // Room between the parts, not a line break: the flag, the tag and the field name ran together at + // 10.5px with three pixels between them, which is a spacing problem rather than a width one. + + + {LOCALE_FLAGS[locale] || '\u{1F310}'} + {locale.toUpperCase()} + + + {field} + + + ); +} + +// --- Field rendering, by shape --------------------------------------------------------------- +// +// A change is not always prose. A classification is one value from a small set, `required` is a +// state, `examples` is a set of items, and `custom_properties` holds translations keyed by locale. +// Rendering all of them as before-and-after paragraphs made the small changes hard to see and the +// map of translations unreadable — one struck-through block where the reviewer needed to know which +// locale moved. + +// OSI's own small vocabularies: one value out of a handful, which reads better as a chip than as a +// sentence. Governed values are not listed here — those arrive decorated and are recognised by shape. +const ENUM_FIELDS = new Set(['status', 'kind', 'element_type', 'better_when']); +const CODE_FIELDS = new Set(['pattern', 'formula', 'iri', 'data_type', 'extends', 'unit']); + +const isBlank = (v) => v === null || v === undefined || v === '' || (Array.isArray(v) && v.length === 0); +const isList = (v) => Array.isArray(v); +const isMap = (v) => v !== null && typeof v === 'object' && !Array.isArray(v) && !v.display; +const isBool = (v) => typeof v === 'boolean'; +const isDecorated = (v) => v !== null && typeof v === 'object' && typeof v.display === 'string'; + +const chipStyle = (kind) => ({ + display: 'inline-block', + fontSize: 11.5, + padding: '1px 7px', + borderRadius: 4, + border: '1px solid', + marginRight: 4, + marginTop: 3, + ...(kind === 'add' + ? { color: '#15803d', borderColor: '#bbf7d0', background: '#f0fdf4' } + : kind === 'remove' + ? { color: '#b91c1c', borderColor: '#fecaca', background: '#fef2f2', textDecoration: 'line-through' } + : { color: '#374151', borderColor: '#e5e7eb', background: '#f9fafb' }), +}); + +/** One value as a chip, so a small vocabulary reads as a value rather than a sentence. */ +function Chip({ value, kind, mono }) { + const { t } = useTranslation(); + if (isDecorated(value)) return ; + if (isBlank(value)) { + return {t('detail.diff.unset')}; + } + return ( + + {String(value)} + + ); +} + +/** Old and new side by side. For one-of-a-few values, the arrow says more than two labelled rows. */ +function ChipTransition({ before, after, mono }) { + return ( +
+ + {/* The arrow travels with the value it points at. A long value wrapping to the next line + otherwise strands the arrow at the end of the previous one, and the pair stops reading + as one transition. */} + + + + +
+ ); +} + +/** A set difference: what stayed, what went, what arrived — rather than two printed lists. */ +function ListDiff({ before, after }) { + const key = (v) => (isDecorated(v) ? `d:${v.display}:${v.label}` : String(v)); + const b = (before || []).map(key); + const a = (after || []).map(key); + const byKey = new Map([...(before || []), ...(after || [])].map((v) => [key(v), v])); + const chip = (k, kind) => ; + const removed = b.filter((x) => !a.includes(x)); + const added = a.filter((x) => !b.includes(x)); + const kept = a.filter((x) => b.includes(x)); + return ( +
+ {kept.map((k) => chip(k, 'same'))} + {removed.map((k) => chip(k, 'remove'))} + {added.map((k) => chip(k, 'add'))} +
+ ); +} + +/** + * A map, key by key. Translations live here, and a reviewer's question is which locale changed — + * not what the whole map used to print as. + */ +function MapDiff({ before, after }) { + const b = isMap(before) ? before : {}; + const a = isMap(after) ? after : {}; + // `evidence` rides in custom_properties but has a section of its own above; showing the raw + // entry here would print the same citation twice, once unreadably. + const keys = [...new Set([...Object.keys(b), ...Object.keys(a)])].filter((k) => k !== 'evidence').sort(); + const moved = keys.filter((k) => JSON.stringify(b[k]) !== JSON.stringify(a[k])); + if (moved.length === 0) return null; + return ( +
+ {moved.map((k) => ( +
+ + {isBlank(b[k]) + ? + : isBlank(a[k]) + ? + : isDecorated(b[k]) || isDecorated(a[k]) + ? + : } +
+ ))} +
+ ); +} + +/** The original treatment, kept for what it suits: sentences. */ +function ProseDiff({ before, after, base }) { + const { t } = useTranslation(); + // Two sentences one above the other, each wrapped to four lines, are compared by memory. Side by + // side at the same width, the words that moved are the ones that do not line up. `auto-fit` drops + // back to one column where two would be too narrow to read, without anything measuring anything. + return ( +
+ {/* The version the author wrote against, shown only where the target has moved away from it. + Without it a conflict reads as an ordinary change that was refused for no reason. */} + {base !== undefined && base !== null && ( + )} + +
); } -function EntityBody({ node }) { +function ProseColumn({ label, value, color, strike }) { + const { t } = useTranslation(); + const isUnset = value === null || value === undefined || value === ''; + return ( +
+
+ {label} +
+
+ {isUnset ? t('detail.diff.unset') : String(value)} +
+
+ ); +} + +/** Picks the rendering from the value's shape, falling back to prose. */ +function FieldDiff({ field, before, after, base }) { + // A three-way situation is a diff of prose whatever the field's shape: the point is the third + // value, and chips side by side cannot say which of them the author never saw. + const threeWay = base !== undefined && base !== null; + if (!threeWay) { + if (isDecorated(before) || isDecorated(after)) return ; + if (isMap(before) || isMap(after)) return ; + if (isList(before) || isList(after)) return ; + if (isBool(before) || isBool(after)) return ; + if (ENUM_FIELDS.has(field)) return ; + } + if (!threeWay && CODE_FIELDS.has(field)) return ; + return ; +} + +function EntityBody({ node, changesOnly }) { const { t } = useTranslation(); const { description, properties = [] } = node.data; const ownProperties = properties.filter((p) => !p.inherited); const inheritedProperties = properties.filter((p) => p.inherited); return ( -
+
{ownProperties.length > 0 && ( - + )} {inheritedProperties.length > 0 && ( - + )} {properties.length === 0 && !description && (
@@ -395,37 +1157,32 @@ function MemberRow({ member }) { return row; } -function PropertySection({ title, properties, count, inherited }) { +function PropertySection({ title, properties, count, inherited, changesOnly }) { + const { t } = useTranslation(); + const changed = properties.filter((p) => p.diff); + const shown = changesOnly ? changed : properties; + if (shown.length === 0) return null; return (
-
- {title} ({count}) + {/* The total and how much of it moved: with fourteen properties and one change, the count is + what tells a reviewer whether they are looking at a rewrite or a typo. */} +
+ {title} ({count}{changed.length > 0 ? t('detail.propertiesChanged', { count: changed.length }) : ''})
- {properties.map((prop, i) => ( + {shown.map((prop, i) => (
+
)} + {/* A shared property is carried by several concepts, so a change to it reaches all of + them — which is exactly what a reviewer looking at one concept cannot otherwise see. */} + {prop.shared && ( + + {t('detail.shared', 'shared')} + + )} {prop.primaryKey && } + {prop.diff && ( + + {DIFF_STYLES[prop.diff]?.label} + + )} +
+
+ {prop.description && ( +
+ {prop.description}
+ )} + {/* The property is what changed, so its before and after belong on its row — not one level + up on the concept, which did not change. */} + {prop.diffDetail?.fields?.length > 0 && ( +
+ {prop.diffDetail.fields.map((f) => ( +
+
+ {f.field} +
+ +
+ ))} +
+ )}
))}
diff --git a/src/EntityNode.jsx b/src/EntityNode.jsx index 913c723..cde2cfa 100644 --- a/src/EntityNode.jsx +++ b/src/EntityNode.jsx @@ -1,6 +1,7 @@ import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Handle, Position } from '@xyflow/react'; +import { DIFF_STYLES } from './diffStyles'; import NamespaceBadge from './NamespaceBadge'; const MAX_VISIBLE_PROPERTIES = 8; @@ -47,8 +48,9 @@ export default function EntityNode({ data, type }) { const icon = TYPE_ICONS[type] || TYPE_ICONS.entity; const hideProperties = data.hideProperties; const allProperties = hideProperties ? [] : (data.properties || []); - // Auto-expand if a highlighted property would otherwise be hidden behind "+N more". - const highlightHidden = allProperties.some((p, i) => p.highlight && i >= MAX_VISIBLE_PROPERTIES); + // Auto-expand if a highlighted or changed property would otherwise be hidden behind "+N more". + // A change a reviewer has to click to discover is a change they will approve without reading. + const highlightHidden = allProperties.some((p, i) => (p.highlight || p.diff) && i >= MAX_VISIBLE_PROPERTIES); const [expanded, setExpanded] = useState(highlightHidden); const hasMore = !expanded && allProperties.length > MAX_VISIBLE_PROPERTIES; const properties = hasMore ? allProperties.slice(0, MAX_VISIBLE_PROPERTIES) : allProperties; @@ -60,18 +62,44 @@ export default function EntityNode({ data, type }) { setExpanded((v) => !v); }; + // How a pending change request would affect this concept. Rendered as a ring and a corner label + // rather than by recolouring the node, so the type accent still reads: a reviewer needs to see + // *what* a concept is at the same time as what happens to it. + const diff = DIFF_STYLES[data.diff]; + // A concept can be untouched itself and still be where the change lands, when the request only + // edits one of its properties. The rows below say which one; this is what carries that across a + // graph, where rows are unreadable until you zoom in. + const changedProperties = data.changedPropertyCount || 0; + const ring = diff || (changedProperties > 0 ? DIFF_STYLES.modify : null); + const ringLabel = diff ? diff.label : t('node.propertiesChanged', { count: changedProperties }); + return (
+ {ring && ( +
{ringLabel}
+ )} @@ -114,7 +142,13 @@ export default function EntityNode({ data, type }) {
{properties.length > 0 ? ( <> - {properties.map((prop, i) => ( + {properties.map((prop, i) => { + // The rail and tint follow the diff colour rather than the property accent, so a + // changed property reads the same as a changed concept or relationship elsewhere in + // the graph. Search highlighting keeps the green accent it always had. + const propDiff = DIFF_STYLES[prop.diff]; + const rail = propDiff ? propDiff.color : prop.highlight ? ACCENT_COLORS.property : null; + return (
- {prop.type && ( + {propDiff ? ( + + {t(`detail.diff.op.${prop.diff}`)} + + ) : prop.type && ( {prop.type} @@ -150,7 +193,8 @@ export default function EntityNode({ data, type }) { {prop.primaryKey && }
- ))} + ); + })} {(hasMore || (expanded && allProperties.length > MAX_VISIBLE_PROPERTIES)) && (
+ {diff && ( + {diff.symbol} + )} + {/* Named by a relationship but present nowhere. Marked rather than hidden: a change request + pointing at a concept that does not exist cannot be applied, and silently dropping the edge + would show the reviewer an empty diff. */} + {data.unresolved && ( + + missing + + )} + + {/* Only its properties changed, so the concept itself carries no diff mark. Without this the + node looks untouched and the change request reads as empty. */} + {!diff && data.changedPropertyCount > 0 && ( + + {data.changedPropertyCount} + + )} + {/* Changed, but citing nothing. Marked on the node because a reviewer scanning a large + proposal needs to see which parts are unsupported without opening each one. */} + {data.evidenceMissing && ( + + ? + + )} + {/* Another pending request edits this same element. Indigo rather than the diff or impact + colours: it is not a property of this change, it is a warning about a different one. */} + {data.overlaps?.length > 0 && ( + + {data.overlaps.length > 1 ? data.overlaps.length : '⇄'} + + )} + {/* How many things break if this removal goes ahead. On the node itself because it is the one + number that decides whether a removal is routine or serious, and a reviewer should not have + to open anything to see it. */} + {data.consumers?.total > 0 && ( + + + {data.consumers.total} + + )} {icon} ); + +// --- Toolbar toggles ----------------------------------------------------------------------------- +// +// Drawn in the same stroke language as the zoom and fit-view glyphs above, at 24×24 so they sit on +// the same grid. Each is a state rather than an action, so the button around it carries the pressed +// styling and a title — a glyph alone cannot say "on". + +/** Changes only: a funnel, the ordinary sign for showing a subset. */ +export const changesOnlyIcon = ( + + + +); + +/** Groups: nested containers. */ +export const groupsIcon = ( + + + + + +); + +/** Entity-relationship view: a table of rows, which is what the concepts become. */ +export const erdIcon = ( + + + + +); + +/** Enlarge: arrows pushing out to the corners. */ +export const enlargeIcon = ( + + + +); diff --git a/src/diffStyles.js b/src/diffStyles.js new file mode 100644 index 0000000..089d455 --- /dev/null +++ b/src/diffStyles.js @@ -0,0 +1,11 @@ +// How a change request's proposed changes are marked up. Kept out of the node +// components because edges carry the same three states and must match them. +// +// Deliberately not a recolour of the element itself: colour already encodes +// concept type (entity/property/...), so diff state is a ring and a badge on +// nodes, and stroke colour on edges — which have no type colour of their own. +export const DIFF_STYLES = { + add: { color: '#16a34a', label: 'added', symbol: '+' }, // green-600 + modify: { color: '#d97706', label: 'changed', symbol: '~' }, // amber-600 + remove: { color: '#dc2626', label: 'removed', symbol: '−' }, // red-600 +}; diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index 37d775d..59ef080 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json @@ -21,6 +21,10 @@ "label": "Als Entity-Relationship-Diagramm anzeigen", "title": "Als Entity-Relationship-Diagramm anzeigen — Eigenschaften innerhalb der Konzept- und Metrik-Knoten darstellen" }, + "changesOnly": { + "label": "Nur Änderungen", + "title": "Nur die Konzepte und Beziehungen anzeigen, die dieser Change Request betrifft" + }, "namespaces": { "label": "Andere Namespaces", "title": "Konzepte aus anderen Namespaces ein- oder ausblenden", @@ -42,16 +46,100 @@ "entity": "Entität", "property": "Eigenschaft", "metric": "Metrik", - "group": "Gruppe" + "group": "Gruppe", + "relationship": "Beziehung" }, "expandThisGroup": "Diese Gruppe aufklappen", - "collapseThisGroup": "Diese Gruppe einklappen" + "collapseThisGroup": "Diese Gruppe einklappen", + "diff": { + "heading": "Vorgeschlagene Änderung", + "op": { + "add": "Hinzugefügt", + "modify": "Geändert", + "remove": "Entfernt" + }, + "impact": { + "structural": "Strukturell", + "descriptive": "Beschreibend", + "cosmetic": "Kosmetisch" + }, + "impactHint": { + "structural": "Ändert die Bedeutung des Modells.", + "descriptive": "Ändert die Lesart des Modells, nicht seine Bedeutung.", + "cosmetic": "Nur die Formulierung." + }, + "summary": { + "add": "Existiert noch nicht. Mit der Freigabe dieses Requests wird es angelegt.", + "remove": "Mit der Freigabe dieses Requests wird es gelöscht.", + "modify": "Mit der Freigabe dieses Requests wird Folgendes übernommen." + }, + "before": "Aktuell", + "after": "Vorgeschlagen", + "unset": "nicht gesetzt", + "related": "Geänderte Beziehungen" + }, + "consumers": { + "heading": "Bricht beim Entfernen", + "description": "Diese hängen von diesem Konzept ab und entscheiden diese Änderung nicht. Beim Entfernen bleiben ihre Referenzen kaputt.", + "relationship": "Beziehungen in anderen Namespaces", + "dataProduct": "Data Products", + "dataContract": "Data Contracts" + }, + "overlap": { + "heading": "Wird ebenfalls geändert", + "description": "Ein anderer offener Change Request bearbeitet dieses Element ebenfalls. Mit der Freigabe wird der andere auf den neuen Stand übertragen, was meist sauber zusammengeführt wird.", + "view": "Anderen Change Request ansehen" + }, + "unresolved": "Dieses Konzept existiert nicht. Eine Beziehung in diesem Change Request zeigt darauf, deshalb kann er so nicht angewendet werden.", + "unresolvedRemovedBy": "Change Request ansehen, der es entfernt hat", + "evidence": { + "heading": "Belege", + "none": "Diese Änderung zitiert nichts. Sie lässt sich gegen keine Quelle prüfen.", + "unresolvable": "Nicht erneut prüfbar — kein Repository, Pfad und Commit" + }, + "propertiesChanged": ", {{count}} geändert", + "relationshipChanges": "Beziehungen", + "op": { + "add": "fügt hinzu", + "remove": "entfernt", + "modify": "ändert" + } }, "node": { "noProperties": "Keine Eigenschaften", "group": "Gruppe", "expandGroup": "Gruppe aufklappen", "collapseGroup": "Gruppe einklappen", + "propertiesChanged_one": "{{count}} Eigenschaft geändert", + "propertiesChanged_other": "{{count}} Eigenschaften geändert", "foreignNamespace": "Aus dem Namespace \"{{namespace}}\"" + }, + "diff": { + "base": "Vorher" + }, + "review": { + "frozenByConflict": "Konflikt muss zuerst gelöst werden", + "conflict": { + "target": "dem Namespace", + "by": "durch", + "bothChanged": "Ebenfalls in {{target}} geändert", + "changedHereRemovedThere": "In {{target}} entfernt", + "removedHereChangedThere": "In {{target}} geändert, nachdem dieses Proposal es entfernt hat", + "bothAdded": "Ebenfalls in {{target}} hinzugefügt, mit anderem Inhalt" + }, + "decision": { + "accepted": "Angenommen", + "rejected": "Abgelehnt" + }, + "summary": { + "accepted": "{{count}} angenommen", + "rejected": "{{count}} abgelehnt" + }, + "willChange": "{{count}} bereits entschieden", + "impact": { + "structural": "Strukturell", + "descriptive": "Beschreibend", + "cosmetic": "Kosmetisch" + } } } diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 21c4610..fbab1ae 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -21,6 +21,10 @@ "label": "Show as Entity-Relationship-Diagram", "title": "Show as Entity-Relationship Diagram — render properties inside concept and metric nodes" }, + "changesOnly": { + "label": "Changes only", + "title": "Show only the concepts and relationships this change request touches" + }, "namespaces": { "label": "Other namespaces", "title": "Show or hide the concepts that come from other namespaces", @@ -42,16 +46,100 @@ "entity": "Entity", "property": "Property", "metric": "Metric", - "group": "Group" + "group": "Group", + "relationship": "Relationship" }, "expandThisGroup": "Expand this group", - "collapseThisGroup": "Collapse this group" + "collapseThisGroup": "Collapse this group", + "diff": { + "heading": "Proposed change", + "op": { + "add": "Added", + "modify": "Changed", + "remove": "Removed" + }, + "impact": { + "structural": "Structural", + "descriptive": "Descriptive", + "cosmetic": "Cosmetic" + }, + "impactHint": { + "structural": "Changes what the model means.", + "descriptive": "Changes how the model reads, not what it means.", + "cosmetic": "Wording only." + }, + "summary": { + "add": "Does not exist yet. Approving this request creates it.", + "remove": "Approving this request deletes it.", + "modify": "Approving this request applies the following." + }, + "before": "Now", + "after": "Proposed", + "unset": "not set", + "related": "Changed relationships" + }, + "consumers": { + "heading": "Breaks on removal", + "description": "These depend on this concept and do not decide this change. Removing it leaves their references broken.", + "relationship": "relationships in other namespaces", + "dataProduct": "data products", + "dataContract": "data contracts" + }, + "overlap": { + "heading": "Also being changed", + "description": "Another pending change request edits this element too. Approving this one reshapes the other onto the new state, which usually merges cleanly.", + "view": "View the other change request" + }, + "unresolved": "This concept does not exist. A relationship in this change request points at it, so the request cannot be applied as it stands.", + "unresolvedRemovedBy": "See the change request that removed it", + "evidence": { + "heading": "Evidence", + "none": "This change cites nothing. It cannot be checked against a source.", + "unresolvable": "Cannot be checked again — no repository, path and commit" + }, + "propertiesChanged": ", {{count}} changed", + "relationshipChanges": "Relationships", + "op": { + "add": "adds", + "remove": "removes", + "modify": "changes" + } }, "node": { "noProperties": "No properties", "group": "Group", "expandGroup": "Expand group", "collapseGroup": "Collapse group", + "propertiesChanged_one": "{{count}} property changed", + "propertiesChanged_other": "{{count}} properties changed", "foreignNamespace": "From the \"{{namespace}}\" namespace" + }, + "diff": { + "base": "Was" + }, + "review": { + "frozenByConflict": "conflict must be resolved first", + "conflict": { + "target": "the namespace", + "by": "by", + "bothChanged": "Also changed in {{target}}", + "changedHereRemovedThere": "Removed from {{target}}", + "removedHereChangedThere": "Changed in {{target}} after this proposal removed it", + "bothAdded": "Also added in {{target}}, with different content" + }, + "decision": { + "accepted": "Accepted", + "rejected": "Rejected" + }, + "summary": { + "accepted": "{{count}} accepted", + "rejected": "{{count}} rejected" + }, + "willChange": "{{count}} already decided", + "impact": { + "structural": "Structural", + "descriptive": "Descriptive", + "cosmetic": "Cosmetic" + } } } diff --git a/src/index.css b/src/index.css index ee1f5d6..f1f8f3a 100644 --- a/src/index.css +++ b/src/index.css @@ -62,3 +62,10 @@ stroke: #888 !important; stroke-width: 2.5px !important; } + +/* Edge labels read as chips over the graph, so they belong above every edge layer. React Flow gives + each zIndex band its own SVG and leaves this container below the raised ones, which put a diff + edge's dashes through a neighbouring label. Pointer events stay off, so nothing else changes. */ +.react-flow__edgelabel-renderer { + z-index: 11; +} diff --git a/src/main.jsx b/src/main.jsx index 3168a35..0111423 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -60,3 +60,60 @@ if (document.readyState === 'loading') { } document.addEventListener('htmx:load', mountAll); + +/** + * Explicit mount, for a host that has more to supply than a URL. + * + * Deliberately shaped like the data contract editor's `init({...})` rather than inventing a + * convention: entropy-data already embeds components that way, and a callback is what lets this stay + * ignorant of authentication and of the endpoint behind it. The auto-mount above is untouched, so the + * read-only embeds keep working without knowing this exists. + * + * @param {object} options + * @param {string|Element} options.container selector or element to mount into + * @param {object} options.graphData `{nodes, edges}`, e.g. from the namespace graph endpoint + * @param {boolean} [options.changesOnly] open showing only what carries a diff + * @param {string} [options.focus] external id to centre and select on mount + * @param {Function} [options.onSelect] `(externalId, node) => void` — the host owns what a + * click means; supplying this also withholds the built-in + * detail panel, so one click opens one account of an + * element rather than two + * @param {string} [options.locale] + * @param {string} [options.height] + */ +export function init(options) { + const container = typeof options.container === 'string' + ? document.querySelector(options.container) + : options.container; + if (!container) return null; + + const height = options.height || '600px'; + container.style.height = height; + // Everything that reaches for its own container does so via `.semantic-visualizer` — the enlarge + // button among them, which silently did nothing when mounted this way because `closest()` found no + // such ancestor. Marking it initialised too keeps the auto-mount from claiming it as well. + container.classList.add('semantic-visualizer'); + container.dataset.svInit = 'true'; + if (options.locale) i18n.changeLanguage(options.locale); + + const root = createRoot(container); + const render = () => root.render( + + + + + + ); + + render(); + return { update: render }; +} diff --git a/src/main/resources/static/assets/semantic-visualizer/index.css b/src/main/resources/static/assets/semantic-visualizer/index.css index ef01e9c..59320aa 100644 --- a/src/main/resources/static/assets/semantic-visualizer/index.css +++ b/src/main/resources/static/assets/semantic-visualizer/index.css @@ -1 +1 @@ -.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}#semantic-visualizer .react-flow__node{cursor:grab}#semantic-visualizer .react-flow__node:active{cursor:grabbing}#semantic-visualizer .react-flow__node.selected{outline:2px solid #6366f1;outline-offset:2px;border-radius:20px}#semantic-visualizer .react-flow__edge-textbg{rx:4}#semantic-visualizer .react-flow__edge.selected .react-flow__edge-path{stroke:#888!important;stroke-width:3px!important}#semantic-visualizer .react-flow__edge-path{cursor:pointer}#semantic-visualizer .react-flow__edge:hover .react-flow__edge-path{stroke:#888!important;stroke-width:2.5px!important}#semantic-visualizer .react-flow__controls-button{width:24px;height:24px}#semantic-visualizer .react-flow__controls-button svg{max-width:12px;max-height:12px} +.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 .5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#555;--xy-background-pattern-lines-color-default:#333;--xy-background-pattern-cross-color-default:#333;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 .5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;color:var(--xy-node-color,var(--xy-node-color-default));text-align:center;border:var(--xy-node-border,var(--xy-node-border-default));background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));padding:10px;font-size:12px}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var(--xy-controls-button-background-color-hover-props,var(--xy-controls-button-background-color-hover,var(--xy-controls-button-background-color-hover-default)));color:var(--xy-controls-button-color-hover-props,var(--xy-controls-button-color-hover,var(--xy-controls-button-color-hover-default)))}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)))}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}#semantic-visualizer .react-flow__node{cursor:grab}#semantic-visualizer .react-flow__node:active{cursor:grabbing}#semantic-visualizer .react-flow__node:not(.dragging){transition:transform .25s ease-out,width .25s ease-out,height .25s ease-out}#semantic-visualizer .react-flow__edge-path,#semantic-visualizer .react-flow__edge-interaction{transition:d .25s ease-out}#semantic-visualizer .react-flow__node-collapsed_group.selected{outline-offset:2px;border-radius:20px;outline:2px solid #6366f1}#semantic-visualizer .react-flow__node-group,#semantic-visualizer .react-flow__node-group.selected{box-shadow:none!important;pointer-events:auto!important;background:0 0!important;border:none!important;border-radius:0!important;outline:none!important;padding:0!important}#semantic-visualizer .react-flow__edge-textbg{rx:4}#semantic-visualizer .react-flow__edge.selected .react-flow__edge-path{stroke:#888!important;stroke-width:3px!important}#semantic-visualizer .react-flow__edge-path{cursor:pointer}#semantic-visualizer .react-flow__edge:hover .react-flow__edge-path{stroke:#888!important;stroke-width:2.5px!important} diff --git a/src/main/resources/static/assets/semantic-visualizer/index.js b/src/main/resources/static/assets/semantic-visualizer/index.js index f521f68..8f7ef08 100644 --- a/src/main/resources/static/assets/semantic-visualizer/index.js +++ b/src/main/resources/static/assets/semantic-visualizer/index.js @@ -1,62 +1,17 @@ -function wp(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Sa={exports:{}},ti={},_a={exports:{}},ke={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Ud;function Wm(){if(Ud)return ke;Ud=1;var t=Symbol.for("react.element"),r=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),u=Symbol.for("react.profiler"),a=Symbol.for("react.provider"),c=Symbol.for("react.context"),d=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),g=Symbol.for("react.memo"),v=Symbol.for("react.lazy"),m=Symbol.iterator;function y(M){return M===null||typeof M!="object"?null:(M=m&&M[m]||M["@@iterator"],typeof M=="function"?M:null)}var x={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},S=Object.assign,_={};function w(M,R,te){this.props=M,this.context=R,this.refs=_,this.updater=te||x}w.prototype.isReactComponent={},w.prototype.setState=function(M,R){if(typeof M!="object"&&typeof M!="function"&&M!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,M,R,"setState")},w.prototype.forceUpdate=function(M){this.updater.enqueueForceUpdate(this,M,"forceUpdate")};function k(){}k.prototype=w.prototype;function P(M,R,te){this.props=M,this.context=R,this.refs=_,this.updater=te||x}var N=P.prototype=new k;N.constructor=P,S(N,w.prototype),N.isPureReactComponent=!0;var C=Array.isArray,j=Object.prototype.hasOwnProperty,D={current:null},H={key:!0,ref:!0,__self:!0,__source:!0};function B(M,R,te){var re,le={},ue=null,ae=null;if(R!=null)for(re in R.ref!==void 0&&(ae=R.ref),R.key!==void 0&&(ue=""+R.key),R)j.call(R,re)&&!H.hasOwnProperty(re)&&(le[re]=R[re]);var ee=arguments.length-2;if(ee===1)le.children=te;else if(1>>1,R=T[M];if(0>>1;Mu(le,V))ueu(ae,le)?(T[M]=ae,T[ue]=V,M=ue):(T[M]=le,T[re]=V,M=re);else if(ueu(ae,V))T[M]=ae,T[ue]=V,M=ue;else break e}}return L}function u(T,L){var V=T.sortIndex-L.sortIndex;return V!==0?V:T.id-L.id}if(typeof performance=="object"&&typeof performance.now=="function"){var a=performance;t.unstable_now=function(){return a.now()}}else{var c=Date,d=c.now();t.unstable_now=function(){return c.now()-d}}var p=[],g=[],v=1,m=null,y=3,x=!1,S=!1,_=!1,w=typeof setTimeout=="function"?setTimeout:null,k=typeof clearTimeout=="function"?clearTimeout:null,P=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function N(T){for(var L=i(g);L!==null;){if(L.callback===null)s(g);else if(L.startTime<=T)s(g),L.sortIndex=L.expirationTime,r(p,L);else break;L=i(g)}}function C(T){if(_=!1,N(T),!S)if(i(p)!==null)S=!0,F(j);else{var L=i(g);L!==null&&Y(C,L.startTime-T)}}function j(T,L){S=!1,_&&(_=!1,k(B),B=-1),x=!0;var V=y;try{for(N(L),m=i(p);m!==null&&(!(m.expirationTime>L)||T&&!W());){var M=m.callback;if(typeof M=="function"){m.callback=null,y=m.priorityLevel;var R=M(m.expirationTime<=L);L=t.unstable_now(),typeof R=="function"?m.callback=R:m===i(p)&&s(p),N(L)}else s(p);m=i(p)}if(m!==null)var te=!0;else{var re=i(g);re!==null&&Y(C,re.startTime-L),te=!1}return te}finally{m=null,y=V,x=!1}}var D=!1,H=null,B=-1,X=5,J=-1;function W(){return!(t.unstable_now()-JT||125M?(T.sortIndex=V,r(g,T),i(p)===null&&T===i(g)&&(_?(k(B),B=-1):_=!0,Y(C,V-M))):(T.sortIndex=R,r(p,T),S||x||(S=!0,F(j))),T},t.unstable_shouldYield=W,t.unstable_wrapCallback=function(T){var L=y;return function(){var V=y;y=L;try{return T.apply(this,arguments)}finally{y=V}}}})(Na)),Na}var Kd;function Qm(){return Kd||(Kd=1,ka.exports=Xm()),ka.exports}/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Gd;function Km(){if(Gd)return ht;Gd=1;var t=vi(),r=Qm();function i(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,o=1;o"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),p=Object.prototype.hasOwnProperty,g=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,v={},m={};function y(e){return p.call(m,e)?!0:p.call(v,e)?!1:g.test(e)?m[e]=!0:(v[e]=!0,!1)}function x(e,n,o,l){if(o!==null&&o.type===0)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return l?!1:o!==null?!o.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function S(e,n,o,l){if(n===null||typeof n>"u"||x(e,n,o,l))return!0;if(l)return!1;if(o!==null)switch(o.type){case 3:return!n;case 4:return n===!1;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}function _(e,n,o,l,f,h,E){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=l,this.attributeNamespace=f,this.mustUseProperty=o,this.propertyName=e,this.type=n,this.sanitizeURL=h,this.removeEmptyString=E}var w={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){w[e]=new _(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];w[n]=new _(n,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){w[e]=new _(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){w[e]=new _(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){w[e]=new _(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){w[e]=new _(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){w[e]=new _(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){w[e]=new _(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){w[e]=new _(e,5,!1,e.toLowerCase(),null,!1,!1)});var k=/[\-:]([a-z])/g;function P(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var n=e.replace(k,P);w[n]=new _(n,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var n=e.replace(k,P);w[n]=new _(n,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var n=e.replace(k,P);w[n]=new _(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){w[e]=new _(e,1,!1,e.toLowerCase(),null,!1,!1)}),w.xlinkHref=new _("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){w[e]=new _(e,1,!1,e.toLowerCase(),null,!0,!0)});function N(e,n,o,l){var f=w.hasOwnProperty(n)?w[n]:null;(f!==null?f.type!==0:l||!(2I||f[E]!==h[I]){var $=` -`+f[E].replace(" at new "," at ");return e.displayName&&$.includes("")&&($=$.replace("",e.displayName)),$}while(1<=E&&0<=I);break}}}finally{te=!1,Error.prepareStackTrace=o}return(e=e?e.displayName||e.name:"")?R(e):""}function le(e){switch(e.tag){case 5:return R(e.type);case 16:return R("Lazy");case 13:return R("Suspense");case 19:return R("SuspenseList");case 0:case 2:case 15:return e=re(e.type,!1),e;case 11:return e=re(e.type.render,!1),e;case 1:return e=re(e.type,!0),e;default:return""}}function ue(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case H:return"Fragment";case D:return"Portal";case X:return"Profiler";case B:return"StrictMode";case Z:return"Suspense";case z:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case W:return(e.displayName||"Context")+".Consumer";case J:return(e._context.displayName||"Context")+".Provider";case U:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case b:return n=e.displayName||null,n!==null?n:ue(e.type)||"Memo";case F:n=e._payload,e=e._init;try{return ue(e(n))}catch{}}return null}function ae(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=n.render,e=e.displayName||e.name||"",n.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ue(n);case 8:return n===B?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof n=="function")return n.displayName||n.name||null;if(typeof n=="string")return n}return null}function ee(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function ce(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function we(e){var n=ce(e)?"checked":"value",o=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),l=""+e[n];if(!e.hasOwnProperty(n)&&typeof o<"u"&&typeof o.get=="function"&&typeof o.set=="function"){var f=o.get,h=o.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return f.call(this)},set:function(E){l=""+E,h.call(this,E)}}),Object.defineProperty(e,n,{enumerable:o.enumerable}),{getValue:function(){return l},setValue:function(E){l=""+E},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function _e(e){e._valueTracker||(e._valueTracker=we(e))}function Se(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var o=n.getValue(),l="";return e&&(l=ce(e)?e.checked?"true":"false":e.value),e=l,e!==o?(n.setValue(e),!0):!1}function ye(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Ce(e,n){var o=n.checked;return V({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:o??e._wrapperState.initialChecked})}function Te(e,n){var o=n.defaultValue==null?"":n.defaultValue,l=n.checked!=null?n.checked:n.defaultChecked;o=ee(n.value!=null?n.value:o),e._wrapperState={initialChecked:l,initialValue:o,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function Me(e,n){n=n.checked,n!=null&&N(e,"checked",n,!1)}function We(e,n){Me(e,n);var o=ee(n.value),l=n.type;if(o!=null)l==="number"?(o===0&&e.value===""||e.value!=o)&&(e.value=""+o):e.value!==""+o&&(e.value=""+o);else if(l==="submit"||l==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?gt(e,n.type,o):n.hasOwnProperty("defaultValue")&>(e,n.type,ee(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function At(e,n,o){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var l=n.type;if(!(l!=="submit"&&l!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,o||n===e.value||(e.value=n),e.defaultValue=n}o=e.name,o!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,o!==""&&(e.name=o)}function gt(e,n,o){(n!=="number"||ye(e.ownerDocument)!==e)&&(o==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+o&&(e.defaultValue=""+o))}var mt=Array.isArray;function kt(e,n,o,l){if(e=e.options,n){n={};for(var f=0;f"+n.valueOf().toString()+"",n=Yn.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function on(e,n){if(n){var o=e.firstChild;if(o&&o===e.lastChild&&o.nodeType===3){o.nodeValue=n;return}}e.textContent=n}var Xn={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},zl=["Webkit","ms","Moz","O"];Object.keys(Xn).forEach(function(e){zl.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),Xn[n]=Xn[e]})});function zi(e,n,o){return n==null||typeof n=="boolean"||n===""?"":o||typeof n!="number"||n===0||Xn.hasOwnProperty(e)&&Xn[e]?(""+n).trim():n+"px"}function Ii(e,n){e=e.style;for(var o in n)if(n.hasOwnProperty(o)){var l=o.indexOf("--")===0,f=zi(o,n[o],l);o==="float"&&(o="cssFloat"),l?e.setProperty(o,f):e[o]=f}}var Il=V({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function co(e,n){if(n){if(Il[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(i(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(i(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(i(61))}if(n.style!=null&&typeof n.style!="object")throw Error(i(62))}}function fo(e,n){if(e.indexOf("-")===-1)return typeof n.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ho=null;function po(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var go=null,xn=null,wn=null;function Ti(e){if(e=Ho(e)){if(typeof go!="function")throw Error(i(280));var n=e.stateNode;n&&(n=ls(n),go(e.stateNode,e.type,n))}}function Ai(e){xn?wn?wn.push(e):wn=[e]:xn=e}function Li(){if(xn){var e=xn,n=wn;if(wn=xn=null,Ti(e),n)for(e=0;e>>=0,e===0?32:31-(Hl(e)/Vl|0)|0}var Er=64,kr=4194304;function bt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Nr(e,n){var o=e.pendingLanes;if(o===0)return 0;var l=0,f=e.suspendedLanes,h=e.pingedLanes,E=o&268435455;if(E!==0){var I=E&~f;I!==0?l=bt(I):(h&=E,h!==0&&(l=bt(h)))}else E=o&~f,E!==0?l=bt(E):h!==0&&(l=bt(h));if(l===0)return 0;if(n!==0&&n!==l&&(n&f)===0&&(f=l&-l,h=n&-n,f>=h||f===16&&(h&4194240)!==0))return n;if((l&4)!==0&&(l|=o&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=l;0o;o++)n.push(e);return n}function qn(e,n,o){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-yt(n),e[n]=o}function bi(e,n){var o=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var l=e.eventTimes;for(e=e.expirationTimes;0=To),$c=" ",jc=!1;function Oc(e,n){switch(e){case"keyup":return Og.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Fc(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var zr=!1;function Hg(e,n){switch(e){case"compositionend":return Fc(n);case"keypress":return n.which!==32?null:(jc=!0,$c);case"textInput":return e=n.data,e===$c&&jc?null:e;default:return null}}function Vg(e,n){if(zr)return e==="compositionend"||!tu&&Oc(e,n)?(e=Ic(),Gi=Kl=Nn=null,zr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1=n)return{node:o,offset:n-e};e=l}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=Yc(o)}}function Qc(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?Qc(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function Kc(){for(var e=window,n=ye();n instanceof e.HTMLIFrameElement;){try{var o=typeof n.contentWindow.location.href=="string"}catch{o=!1}if(o)e=n.contentWindow;else break;n=ye(e.document)}return n}function ou(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}function Gg(e){var n=Kc(),o=e.focusedElem,l=e.selectionRange;if(n!==o&&o&&o.ownerDocument&&Qc(o.ownerDocument.documentElement,o)){if(l!==null&&ou(o)){if(n=l.start,e=l.end,e===void 0&&(e=n),"selectionStart"in o)o.selectionStart=n,o.selectionEnd=Math.min(e,o.value.length);else if(e=(n=o.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var f=o.textContent.length,h=Math.min(l.start,f);l=l.end===void 0?h:Math.min(l.end,f),!e.extend&&h>l&&(f=l,l=h,h=f),f=Xc(o,h);var E=Xc(o,l);f&&E&&(e.rangeCount!==1||e.anchorNode!==f.node||e.anchorOffset!==f.offset||e.focusNode!==E.node||e.focusOffset!==E.offset)&&(n=n.createRange(),n.setStart(f.node,f.offset),e.removeAllRanges(),h>l?(e.addRange(n),e.extend(E.node,E.offset)):(n.setEnd(E.node,E.offset),e.addRange(n)))}}for(n=[],e=o;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof o.focus=="function"&&o.focus(),o=0;o=document.documentMode,Ir=null,iu=null,Do=null,su=!1;function Gc(e,n,o){var l=o.window===o?o.document:o.nodeType===9?o:o.ownerDocument;su||Ir==null||Ir!==ye(l)||(l=Ir,"selectionStart"in l&&ou(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),Do&&Ro(Do,l)||(Do=l,l=os(iu,"onSelect"),0Dr||(e.current=vu[Dr],vu[Dr]=null,Dr--)}function Ae(e,n){Dr++,vu[Dr]=e.current,e.current=n}var zn={},Je=Pn(zn),ut=Pn(!1),er=zn;function $r(e,n){var o=e.type.contextTypes;if(!o)return zn;var l=e.stateNode;if(l&&l.__reactInternalMemoizedUnmaskedChildContext===n)return l.__reactInternalMemoizedMaskedChildContext;var f={},h;for(h in o)f[h]=n[h];return l&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=f),f}function at(e){return e=e.childContextTypes,e!=null}function us(){Re(ut),Re(Je)}function df(e,n,o){if(Je.current!==zn)throw Error(i(168));Ae(Je,n),Ae(ut,o)}function hf(e,n,o){var l=e.stateNode;if(n=n.childContextTypes,typeof l.getChildContext!="function")return o;l=l.getChildContext();for(var f in l)if(!(f in n))throw Error(i(108,ae(e)||"Unknown",f));return V({},o,l)}function as(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||zn,er=Je.current,Ae(Je,e),Ae(ut,ut.current),!0}function pf(e,n,o){var l=e.stateNode;if(!l)throw Error(i(169));o?(e=hf(e,n,er),l.__reactInternalMemoizedMergedChildContext=e,Re(ut),Re(Je),Ae(Je,e)):Re(ut),Ae(ut,o)}var ln=null,cs=!1,xu=!1;function gf(e){ln===null?ln=[e]:ln.push(e)}function um(e){cs=!0,gf(e)}function In(){if(!xu&&ln!==null){xu=!0;var e=0,n=Ie;try{var o=ln;for(Ie=1;e>=E,f-=E,un=1<<32-yt(n)+f|o<Ee?(Ge=xe,xe=null):Ge=xe.sibling;var ze=ne(Q,xe,K[Ee],se);if(ze===null){xe===null&&(xe=Ge);break}e&&xe&&ze.alternate===null&&n(Q,xe),O=h(ze,O,Ee),ve===null?ge=ze:ve.sibling=ze,ve=ze,xe=Ge}if(Ee===K.length)return o(Q,xe),$e&&nr(Q,Ee),ge;if(xe===null){for(;EeEe?(Ge=xe,xe=null):Ge=xe.sibling;var Fn=ne(Q,xe,ze.value,se);if(Fn===null){xe===null&&(xe=Ge);break}e&&xe&&Fn.alternate===null&&n(Q,xe),O=h(Fn,O,Ee),ve===null?ge=Fn:ve.sibling=Fn,ve=Fn,xe=Ge}if(ze.done)return o(Q,xe),$e&&nr(Q,Ee),ge;if(xe===null){for(;!ze.done;Ee++,ze=K.next())ze=ie(Q,ze.value,se),ze!==null&&(O=h(ze,O,Ee),ve===null?ge=ze:ve.sibling=ze,ve=ze);return $e&&nr(Q,Ee),ge}for(xe=l(Q,xe);!ze.done;Ee++,ze=K.next())ze=fe(xe,Q,Ee,ze.value,se),ze!==null&&(e&&ze.alternate!==null&&xe.delete(ze.key===null?Ee:ze.key),O=h(ze,O,Ee),ve===null?ge=ze:ve.sibling=ze,ve=ze);return e&&xe.forEach(function(Bm){return n(Q,Bm)}),$e&&nr(Q,Ee),ge}function Be(Q,O,K,se){if(typeof K=="object"&&K!==null&&K.type===H&&K.key===null&&(K=K.props.children),typeof K=="object"&&K!==null){switch(K.$$typeof){case j:e:{for(var ge=K.key,ve=O;ve!==null;){if(ve.key===ge){if(ge=K.type,ge===H){if(ve.tag===7){o(Q,ve.sibling),O=f(ve,K.props.children),O.return=Q,Q=O;break e}}else if(ve.elementType===ge||typeof ge=="object"&&ge!==null&&ge.$$typeof===F&&Sf(ge)===ve.type){o(Q,ve.sibling),O=f(ve,K.props),O.ref=Vo(Q,ve,K),O.return=Q,Q=O;break e}o(Q,ve);break}else n(Q,ve);ve=ve.sibling}K.type===H?(O=cr(K.props.children,Q.mode,se,K.key),O.return=Q,Q=O):(se=Os(K.type,K.key,K.props,null,Q.mode,se),se.ref=Vo(Q,O,K),se.return=Q,Q=se)}return E(Q);case D:e:{for(ve=K.key;O!==null;){if(O.key===ve)if(O.tag===4&&O.stateNode.containerInfo===K.containerInfo&&O.stateNode.implementation===K.implementation){o(Q,O.sibling),O=f(O,K.children||[]),O.return=Q,Q=O;break e}else{o(Q,O);break}else n(Q,O);O=O.sibling}O=ma(K,Q.mode,se),O.return=Q,Q=O}return E(Q);case F:return ve=K._init,Be(Q,O,ve(K._payload),se)}if(mt(K))return he(Q,O,K,se);if(L(K))return pe(Q,O,K,se);ps(Q,K)}return typeof K=="string"&&K!==""||typeof K=="number"?(K=""+K,O!==null&&O.tag===6?(o(Q,O.sibling),O=f(O,K),O.return=Q,Q=O):(o(Q,O),O=ga(K,Q.mode,se),O.return=Q,Q=O),E(Q)):o(Q,O)}return Be}var Hr=_f(!0),Ef=_f(!1),gs=Pn(null),ms=null,Vr=null,Nu=null;function Cu(){Nu=Vr=ms=null}function Mu(e){var n=gs.current;Re(gs),e._currentValue=n}function Pu(e,n,o){for(;e!==null;){var l=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,l!==null&&(l.childLanes|=n)):l!==null&&(l.childLanes&n)!==n&&(l.childLanes|=n),e===o)break;e=e.return}}function Br(e,n){ms=e,Nu=Vr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&n)!==0&&(ct=!0),e.firstContext=null)}function Pt(e){var n=e._currentValue;if(Nu!==e)if(e={context:e,memoizedValue:n,next:null},Vr===null){if(ms===null)throw Error(i(308));Vr=e,ms.dependencies={lanes:0,firstContext:e}}else Vr=Vr.next=e;return n}var rr=null;function zu(e){rr===null?rr=[e]:rr.push(e)}function kf(e,n,o,l){var f=n.interleaved;return f===null?(o.next=o,zu(n)):(o.next=f.next,f.next=o),n.interleaved=o,cn(e,l)}function cn(e,n){e.lanes|=n;var o=e.alternate;for(o!==null&&(o.lanes|=n),o=e,e=e.return;e!==null;)e.childLanes|=n,o=e.alternate,o!==null&&(o.childLanes|=n),o=e,e=e.return;return o.tag===3?o.stateNode:null}var Tn=!1;function Iu(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Nf(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function fn(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function An(e,n,o){var l=e.updateQueue;if(l===null)return null;if(l=l.shared,(Pe&2)!==0){var f=l.pending;return f===null?n.next=n:(n.next=f.next,f.next=n),l.pending=n,cn(e,o)}return f=l.interleaved,f===null?(n.next=n,zu(l)):(n.next=f.next,f.next=n),l.interleaved=n,cn(e,o)}function ys(e,n,o){if(n=n.updateQueue,n!==null&&(n=n.shared,(o&4194240)!==0)){var l=n.lanes;l&=e.pendingLanes,o|=l,n.lanes=o,Ul(e,o)}}function Cf(e,n){var o=e.updateQueue,l=e.alternate;if(l!==null&&(l=l.updateQueue,o===l)){var f=null,h=null;if(o=o.firstBaseUpdate,o!==null){do{var E={eventTime:o.eventTime,lane:o.lane,tag:o.tag,payload:o.payload,callback:o.callback,next:null};h===null?f=h=E:h=h.next=E,o=o.next}while(o!==null);h===null?f=h=n:h=h.next=n}else f=h=n;o={baseState:l.baseState,firstBaseUpdate:f,lastBaseUpdate:h,shared:l.shared,effects:l.effects},e.updateQueue=o;return}e=o.lastBaseUpdate,e===null?o.firstBaseUpdate=n:e.next=n,o.lastBaseUpdate=n}function vs(e,n,o,l){var f=e.updateQueue;Tn=!1;var h=f.firstBaseUpdate,E=f.lastBaseUpdate,I=f.shared.pending;if(I!==null){f.shared.pending=null;var $=I,G=$.next;$.next=null,E===null?h=G:E.next=G,E=$;var oe=e.alternate;oe!==null&&(oe=oe.updateQueue,I=oe.lastBaseUpdate,I!==E&&(I===null?oe.firstBaseUpdate=G:I.next=G,oe.lastBaseUpdate=$))}if(h!==null){var ie=f.baseState;E=0,oe=G=$=null,I=h;do{var ne=I.lane,fe=I.eventTime;if((l&ne)===ne){oe!==null&&(oe=oe.next={eventTime:fe,lane:0,tag:I.tag,payload:I.payload,callback:I.callback,next:null});e:{var he=e,pe=I;switch(ne=n,fe=o,pe.tag){case 1:if(he=pe.payload,typeof he=="function"){ie=he.call(fe,ie,ne);break e}ie=he;break e;case 3:he.flags=he.flags&-65537|128;case 0:if(he=pe.payload,ne=typeof he=="function"?he.call(fe,ie,ne):he,ne==null)break e;ie=V({},ie,ne);break e;case 2:Tn=!0}}I.callback!==null&&I.lane!==0&&(e.flags|=64,ne=f.effects,ne===null?f.effects=[I]:ne.push(I))}else fe={eventTime:fe,lane:ne,tag:I.tag,payload:I.payload,callback:I.callback,next:null},oe===null?(G=oe=fe,$=ie):oe=oe.next=fe,E|=ne;if(I=I.next,I===null){if(I=f.shared.pending,I===null)break;ne=I,I=ne.next,ne.next=null,f.lastBaseUpdate=ne,f.shared.pending=null}}while(!0);if(oe===null&&($=ie),f.baseState=$,f.firstBaseUpdate=G,f.lastBaseUpdate=oe,n=f.shared.interleaved,n!==null){f=n;do E|=f.lane,f=f.next;while(f!==n)}else h===null&&(f.shared.lanes=0);sr|=E,e.lanes=E,e.memoizedState=ie}}function Mf(e,n,o){if(e=n.effects,n.effects=null,e!==null)for(n=0;no?o:4,e(!0);var l=Du.transition;Du.transition={};try{e(!1),n()}finally{Ie=o,Du.transition=l}}function Yf(){return zt().memoizedState}function dm(e,n,o){var l=$n(e);if(o={lane:l,action:o,hasEagerState:!1,eagerState:null,next:null},Xf(e))Qf(n,o);else if(o=kf(e,n,o,l),o!==null){var f=ot();Ot(o,e,l,f),Kf(o,n,l)}}function hm(e,n,o){var l=$n(e),f={lane:l,action:o,hasEagerState:!1,eagerState:null,next:null};if(Xf(e))Qf(n,f);else{var h=e.alternate;if(e.lanes===0&&(h===null||h.lanes===0)&&(h=n.lastRenderedReducer,h!==null))try{var E=n.lastRenderedState,I=h(E,o);if(f.hasEagerState=!0,f.eagerState=I,Lt(I,E)){var $=n.interleaved;$===null?(f.next=f,zu(n)):(f.next=$.next,$.next=f),n.interleaved=f;return}}catch{}finally{}o=kf(e,n,f,l),o!==null&&(f=ot(),Ot(o,e,l,f),Kf(o,n,l))}}function Xf(e){var n=e.alternate;return e===He||n!==null&&n===He}function Qf(e,n){bo=Ss=!0;var o=e.pending;o===null?n.next=n:(n.next=o.next,o.next=n),e.pending=n}function Kf(e,n,o){if((o&4194240)!==0){var l=n.lanes;l&=e.pendingLanes,o|=l,n.lanes=o,Ul(e,o)}}var ks={readContext:Pt,useCallback:et,useContext:et,useEffect:et,useImperativeHandle:et,useInsertionEffect:et,useLayoutEffect:et,useMemo:et,useReducer:et,useRef:et,useState:et,useDebugValue:et,useDeferredValue:et,useTransition:et,useMutableSource:et,useSyncExternalStore:et,useId:et,unstable_isNewReconciler:!1},pm={readContext:Pt,useCallback:function(e,n){return Qt().memoizedState=[e,n===void 0?null:n],e},useContext:Pt,useEffect:Of,useImperativeHandle:function(e,n,o){return o=o!=null?o.concat([e]):null,_s(4194308,4,Vf.bind(null,n,e),o)},useLayoutEffect:function(e,n){return _s(4194308,4,e,n)},useInsertionEffect:function(e,n){return _s(4,2,e,n)},useMemo:function(e,n){var o=Qt();return n=n===void 0?null:n,e=e(),o.memoizedState=[e,n],e},useReducer:function(e,n,o){var l=Qt();return n=o!==void 0?o(n):n,l.memoizedState=l.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},l.queue=e,e=e.dispatch=dm.bind(null,He,e),[l.memoizedState,e]},useRef:function(e){var n=Qt();return e={current:e},n.memoizedState=e},useState:$f,useDebugValue:Bu,useDeferredValue:function(e){return Qt().memoizedState=e},useTransition:function(){var e=$f(!1),n=e[0];return e=fm.bind(null,e[1]),Qt().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,o){var l=He,f=Qt();if($e){if(o===void 0)throw Error(i(407));o=o()}else{if(o=n(),Ke===null)throw Error(i(349));(ir&30)!==0||Tf(l,n,o)}f.memoizedState=o;var h={value:o,getSnapshot:n};return f.queue=h,Of(Lf.bind(null,l,h,e),[e]),l.flags|=2048,Qo(9,Af.bind(null,l,h,o,n),void 0,null),o},useId:function(){var e=Qt(),n=Ke.identifierPrefix;if($e){var o=an,l=un;o=(l&~(1<<32-yt(l)-1)).toString(32)+o,n=":"+n+"R"+o,o=Yo++,0<\/script>",e=e.removeChild(e.firstChild)):typeof l.is=="string"?e=E.createElement(o,{is:l.is}):(e=E.createElement(o),o==="select"&&(E=e,l.multiple?E.multiple=!0:l.size&&(E.size=l.size))):e=E.createElementNS(e,o),e[Yt]=n,e[Fo]=l,gd(e,n,!1,!1),n.stateNode=e;e:{switch(E=fo(o,l),o){case"dialog":Le("cancel",e),Le("close",e),f=l;break;case"iframe":case"object":case"embed":Le("load",e),f=l;break;case"video":case"audio":for(f=0;f<$o.length;f++)Le($o[f],e);f=l;break;case"source":Le("error",e),f=l;break;case"img":case"image":case"link":Le("error",e),Le("load",e),f=l;break;case"details":Le("toggle",e),f=l;break;case"input":Te(e,l),f=Ce(e,l),Le("invalid",e);break;case"option":f=l;break;case"select":e._wrapperState={wasMultiple:!!l.multiple},f=V({},l,{value:void 0}),Le("invalid",e);break;case"textarea":vn(e,l),f=tn(e,l),Le("invalid",e);break;default:f=l}co(o,f),I=f;for(h in I)if(I.hasOwnProperty(h)){var $=I[h];h==="style"?Ii(e,$):h==="dangerouslySetInnerHTML"?($=$?$.__html:void 0,$!=null&&Pi(e,$)):h==="children"?typeof $=="string"?(o!=="textarea"||$!=="")&&on(e,$):typeof $=="number"&&on(e,""+$):h!=="suppressContentEditableWarning"&&h!=="suppressHydrationWarning"&&h!=="autoFocus"&&(u.hasOwnProperty(h)?$!=null&&h==="onScroll"&&Le("scroll",e):$!=null&&N(e,h,$,E))}switch(o){case"input":_e(e),At(e,l,!1);break;case"textarea":_e(e),bn(e);break;case"option":l.value!=null&&e.setAttribute("value",""+ee(l.value));break;case"select":e.multiple=!!l.multiple,h=l.value,h!=null?kt(e,!!l.multiple,h,!1):l.defaultValue!=null&&kt(e,!!l.multiple,l.defaultValue,!0);break;default:typeof f.onClick=="function"&&(e.onclick=ss)}switch(o){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}}l&&(n.flags|=4)}n.ref!==null&&(n.flags|=512,n.flags|=2097152)}return tt(n),null;case 6:if(e&&n.stateNode!=null)yd(e,n,e.memoizedProps,l);else{if(typeof l!="string"&&n.stateNode===null)throw Error(i(166));if(o=or(Uo.current),or(Xt.current),hs(n)){if(l=n.stateNode,o=n.memoizedProps,l[Yt]=n,(h=l.nodeValue!==o)&&(e=xt,e!==null))switch(e.tag){case 3:is(l.nodeValue,o,(e.mode&1)!==0);break;case 5:e.memoizedProps.suppressHydrationWarning!==!0&&is(l.nodeValue,o,(e.mode&1)!==0)}h&&(n.flags|=4)}else l=(o.nodeType===9?o:o.ownerDocument).createTextNode(l),l[Yt]=n,n.stateNode=l}return tt(n),null;case 13:if(Re(Fe),l=n.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if($e&&wt!==null&&(n.mode&1)!==0&&(n.flags&128)===0)wf(),Fr(),n.flags|=98560,h=!1;else if(h=hs(n),l!==null&&l.dehydrated!==null){if(e===null){if(!h)throw Error(i(318));if(h=n.memoizedState,h=h!==null?h.dehydrated:null,!h)throw Error(i(317));h[Yt]=n}else Fr(),(n.flags&128)===0&&(n.memoizedState=null),n.flags|=4;tt(n),h=!1}else Rt!==null&&(ca(Rt),Rt=null),h=!0;if(!h)return n.flags&65536?n:null}return(n.flags&128)!==0?(n.lanes=o,n):(l=l!==null,l!==(e!==null&&e.memoizedState!==null)&&l&&(n.child.flags|=8192,(n.mode&1)!==0&&(e===null||(Fe.current&1)!==0?Xe===0&&(Xe=3):ha())),n.updateQueue!==null&&(n.flags|=4),tt(n),null);case 4:return Wr(),Ju(e,n),e===null&&jo(n.stateNode.containerInfo),tt(n),null;case 10:return Mu(n.type._context),tt(n),null;case 17:return at(n.type)&&us(),tt(n),null;case 19:if(Re(Fe),h=n.memoizedState,h===null)return tt(n),null;if(l=(n.flags&128)!==0,E=h.rendering,E===null)if(l)Ko(h,!1);else{if(Xe!==0||e!==null&&(e.flags&128)!==0)for(e=n.child;e!==null;){if(E=xs(e),E!==null){for(n.flags|=128,Ko(h,!1),l=E.updateQueue,l!==null&&(n.updateQueue=l,n.flags|=4),n.subtreeFlags=0,l=o,o=n.child;o!==null;)h=o,e=l,h.flags&=14680066,E=h.alternate,E===null?(h.childLanes=0,h.lanes=e,h.child=null,h.subtreeFlags=0,h.memoizedProps=null,h.memoizedState=null,h.updateQueue=null,h.dependencies=null,h.stateNode=null):(h.childLanes=E.childLanes,h.lanes=E.lanes,h.child=E.child,h.subtreeFlags=0,h.deletions=null,h.memoizedProps=E.memoizedProps,h.memoizedState=E.memoizedState,h.updateQueue=E.updateQueue,h.type=E.type,e=E.dependencies,h.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext}),o=o.sibling;return Ae(Fe,Fe.current&1|2),n.child}e=e.sibling}h.tail!==null&&Oe()>Xr&&(n.flags|=128,l=!0,Ko(h,!1),n.lanes=4194304)}else{if(!l)if(e=xs(E),e!==null){if(n.flags|=128,l=!0,o=e.updateQueue,o!==null&&(n.updateQueue=o,n.flags|=4),Ko(h,!0),h.tail===null&&h.tailMode==="hidden"&&!E.alternate&&!$e)return tt(n),null}else 2*Oe()-h.renderingStartTime>Xr&&o!==1073741824&&(n.flags|=128,l=!0,Ko(h,!1),n.lanes=4194304);h.isBackwards?(E.sibling=n.child,n.child=E):(o=h.last,o!==null?o.sibling=E:n.child=E,h.last=E)}return h.tail!==null?(n=h.tail,h.rendering=n,h.tail=n.sibling,h.renderingStartTime=Oe(),n.sibling=null,o=Fe.current,Ae(Fe,l?o&1|2:o&1),n):(tt(n),null);case 22:case 23:return da(),l=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==l&&(n.flags|=8192),l&&(n.mode&1)!==0?(St&1073741824)!==0&&(tt(n),n.subtreeFlags&6&&(n.flags|=8192)):tt(n),null;case 24:return null;case 25:return null}throw Error(i(156,n.tag))}function _m(e,n){switch(Su(n),n.tag){case 1:return at(n.type)&&us(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return Wr(),Re(ut),Re(Je),Ru(),e=n.flags,(e&65536)!==0&&(e&128)===0?(n.flags=e&-65537|128,n):null;case 5:return Au(n),null;case 13:if(Re(Fe),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(i(340));Fr()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return Re(Fe),null;case 4:return Wr(),null;case 10:return Mu(n.type._context),null;case 22:case 23:return da(),null;case 24:return null;default:return null}}var Ps=!1,nt=!1,Em=typeof WeakSet=="function"?WeakSet:Set,de=null;function br(e,n){var o=e.ref;if(o!==null)if(typeof o=="function")try{o(null)}catch(l){Ve(e,n,l)}else o.current=null}function ea(e,n,o){try{o()}catch(l){Ve(e,n,l)}}var vd=!1;function km(e,n){if(du=Qi,e=Kc(),ou(e)){if("selectionStart"in e)var o={start:e.selectionStart,end:e.selectionEnd};else e:{o=(o=e.ownerDocument)&&o.defaultView||window;var l=o.getSelection&&o.getSelection();if(l&&l.rangeCount!==0){o=l.anchorNode;var f=l.anchorOffset,h=l.focusNode;l=l.focusOffset;try{o.nodeType,h.nodeType}catch{o=null;break e}var E=0,I=-1,$=-1,G=0,oe=0,ie=e,ne=null;t:for(;;){for(var fe;ie!==o||f!==0&&ie.nodeType!==3||(I=E+f),ie!==h||l!==0&&ie.nodeType!==3||($=E+l),ie.nodeType===3&&(E+=ie.nodeValue.length),(fe=ie.firstChild)!==null;)ne=ie,ie=fe;for(;;){if(ie===e)break t;if(ne===o&&++G===f&&(I=E),ne===h&&++oe===l&&($=E),(fe=ie.nextSibling)!==null)break;ie=ne,ne=ie.parentNode}ie=fe}o=I===-1||$===-1?null:{start:I,end:$}}else o=null}o=o||{start:0,end:0}}else o=null;for(hu={focusedElem:e,selectionRange:o},Qi=!1,de=n;de!==null;)if(n=de,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,de=e;else for(;de!==null;){n=de;try{var he=n.alternate;if((n.flags&1024)!==0)switch(n.tag){case 0:case 11:case 15:break;case 1:if(he!==null){var pe=he.memoizedProps,Be=he.memoizedState,Q=n.stateNode,O=Q.getSnapshotBeforeUpdate(n.elementType===n.type?pe:Dt(n.type,pe),Be);Q.__reactInternalSnapshotBeforeUpdate=O}break;case 3:var K=n.stateNode.containerInfo;K.nodeType===1?K.textContent="":K.nodeType===9&&K.documentElement&&K.removeChild(K.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(i(163))}}catch(se){Ve(n,n.return,se)}if(e=n.sibling,e!==null){e.return=n.return,de=e;break}de=n.return}return he=vd,vd=!1,he}function Go(e,n,o){var l=n.updateQueue;if(l=l!==null?l.lastEffect:null,l!==null){var f=l=l.next;do{if((f.tag&e)===e){var h=f.destroy;f.destroy=void 0,h!==void 0&&ea(n,o,h)}f=f.next}while(f!==l)}}function zs(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var o=n=n.next;do{if((o.tag&e)===e){var l=o.create;o.destroy=l()}o=o.next}while(o!==n)}}function ta(e){var n=e.ref;if(n!==null){var o=e.stateNode;switch(e.tag){case 5:e=o;break;default:e=o}typeof n=="function"?n(e):n.current=e}}function xd(e){var n=e.alternate;n!==null&&(e.alternate=null,xd(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[Yt],delete n[Fo],delete n[yu],delete n[sm],delete n[lm])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function wd(e){return e.tag===5||e.tag===3||e.tag===4}function Sd(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||wd(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function na(e,n,o){var l=e.tag;if(l===5||l===6)e=e.stateNode,n?o.nodeType===8?o.parentNode.insertBefore(e,n):o.insertBefore(e,n):(o.nodeType===8?(n=o.parentNode,n.insertBefore(e,o)):(n=o,n.appendChild(e)),o=o._reactRootContainer,o!=null||n.onclick!==null||(n.onclick=ss));else if(l!==4&&(e=e.child,e!==null))for(na(e,n,o),e=e.sibling;e!==null;)na(e,n,o),e=e.sibling}function ra(e,n,o){var l=e.tag;if(l===5||l===6)e=e.stateNode,n?o.insertBefore(e,n):o.appendChild(e);else if(l!==4&&(e=e.child,e!==null))for(ra(e,n,o),e=e.sibling;e!==null;)ra(e,n,o),e=e.sibling}var Ze=null,$t=!1;function Ln(e,n,o){for(o=o.child;o!==null;)_d(e,n,o),o=o.sibling}function _d(e,n,o){if(Nt&&typeof Nt.onCommitFiberUnmount=="function")try{Nt.onCommitFiberUnmount(Zn,o)}catch{}switch(o.tag){case 5:nt||br(o,n);case 6:var l=Ze,f=$t;Ze=null,Ln(e,n,o),Ze=l,$t=f,Ze!==null&&($t?(e=Ze,o=o.stateNode,e.nodeType===8?e.parentNode.removeChild(o):e.removeChild(o)):Ze.removeChild(o.stateNode));break;case 18:Ze!==null&&($t?(e=Ze,o=o.stateNode,e.nodeType===8?mu(e.parentNode,o):e.nodeType===1&&mu(e,o),Po(e)):mu(Ze,o.stateNode));break;case 4:l=Ze,f=$t,Ze=o.stateNode.containerInfo,$t=!0,Ln(e,n,o),Ze=l,$t=f;break;case 0:case 11:case 14:case 15:if(!nt&&(l=o.updateQueue,l!==null&&(l=l.lastEffect,l!==null))){f=l=l.next;do{var h=f,E=h.destroy;h=h.tag,E!==void 0&&((h&2)!==0||(h&4)!==0)&&ea(o,n,E),f=f.next}while(f!==l)}Ln(e,n,o);break;case 1:if(!nt&&(br(o,n),l=o.stateNode,typeof l.componentWillUnmount=="function"))try{l.props=o.memoizedProps,l.state=o.memoizedState,l.componentWillUnmount()}catch(I){Ve(o,n,I)}Ln(e,n,o);break;case 21:Ln(e,n,o);break;case 22:o.mode&1?(nt=(l=nt)||o.memoizedState!==null,Ln(e,n,o),nt=l):Ln(e,n,o);break;default:Ln(e,n,o)}}function Ed(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var o=e.stateNode;o===null&&(o=e.stateNode=new Em),n.forEach(function(l){var f=Lm.bind(null,e,l);o.has(l)||(o.add(l),l.then(f,f))})}}function jt(e,n){var o=n.deletions;if(o!==null)for(var l=0;lf&&(f=E),l&=~h}if(l=f,l=Oe()-l,l=(120>l?120:480>l?480:1080>l?1080:1920>l?1920:3e3>l?3e3:4320>l?4320:1960*Cm(l/1960))-l,10e?16:e,Dn===null)var l=!1;else{if(e=Dn,Dn=null,Rs=0,(Pe&6)!==0)throw Error(i(331));var f=Pe;for(Pe|=4,de=e.current;de!==null;){var h=de,E=h.child;if((de.flags&16)!==0){var I=h.deletions;if(I!==null){for(var $=0;$Oe()-sa?ur(e,0):ia|=o),dt(e,n)}function $d(e,n){n===0&&((e.mode&1)===0?n=1:(n=kr,kr<<=1,(kr&130023424)===0&&(kr=4194304)));var o=ot();e=cn(e,n),e!==null&&(qn(e,n,o),dt(e,o))}function Am(e){var n=e.memoizedState,o=0;n!==null&&(o=n.retryLane),$d(e,o)}function Lm(e,n){var o=0;switch(e.tag){case 13:var l=e.stateNode,f=e.memoizedState;f!==null&&(o=f.retryLane);break;case 19:l=e.stateNode;break;default:throw Error(i(314))}l!==null&&l.delete(n),$d(e,o)}var jd;jd=function(e,n,o){if(e!==null)if(e.memoizedProps!==n.pendingProps||ut.current)ct=!0;else{if((e.lanes&o)===0&&(n.flags&128)===0)return ct=!1,wm(e,n,o);ct=(e.flags&131072)!==0}else ct=!1,$e&&(n.flags&1048576)!==0&&mf(n,ds,n.index);switch(n.lanes=0,n.tag){case 2:var l=n.type;Ms(e,n),e=n.pendingProps;var f=$r(n,Je.current);Br(n,o),f=ju(null,n,l,e,f,o);var h=Ou();return n.flags|=1,typeof f=="object"&&f!==null&&typeof f.render=="function"&&f.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,at(l)?(h=!0,as(n)):h=!1,n.memoizedState=f.state!==null&&f.state!==void 0?f.state:null,Iu(n),f.updater=Ns,n.stateNode=f,f._reactInternals=n,Uu(n,l,e,o),n=Qu(null,n,l,!0,h,o)):(n.tag=0,$e&&h&&wu(n),rt(null,n,f,o),n=n.child),n;case 16:l=n.elementType;e:{switch(Ms(e,n),e=n.pendingProps,f=l._init,l=f(l._payload),n.type=l,f=n.tag=Dm(l),e=Dt(l,e),f){case 0:n=Xu(null,n,l,e,o);break e;case 1:n=ad(null,n,l,e,o);break e;case 11:n=od(null,n,l,e,o);break e;case 14:n=id(null,n,l,Dt(l.type,e),o);break e}throw Error(i(306,l,""))}return n;case 0:return l=n.type,f=n.pendingProps,f=n.elementType===l?f:Dt(l,f),Xu(e,n,l,f,o);case 1:return l=n.type,f=n.pendingProps,f=n.elementType===l?f:Dt(l,f),ad(e,n,l,f,o);case 3:e:{if(cd(n),e===null)throw Error(i(387));l=n.pendingProps,h=n.memoizedState,f=h.element,Nf(e,n),vs(n,l,null,o);var E=n.memoizedState;if(l=E.element,h.isDehydrated)if(h={element:l,isDehydrated:!1,cache:E.cache,pendingSuspenseBoundaries:E.pendingSuspenseBoundaries,transitions:E.transitions},n.updateQueue.baseState=h,n.memoizedState=h,n.flags&256){f=Ur(Error(i(423)),n),n=fd(e,n,l,o,f);break e}else if(l!==f){f=Ur(Error(i(424)),n),n=fd(e,n,l,o,f);break e}else for(wt=Mn(n.stateNode.containerInfo.firstChild),xt=n,$e=!0,Rt=null,o=Ef(n,null,l,o),n.child=o;o;)o.flags=o.flags&-3|4096,o=o.sibling;else{if(Fr(),l===f){n=dn(e,n,o);break e}rt(e,n,l,o)}n=n.child}return n;case 5:return Pf(n),e===null&&Eu(n),l=n.type,f=n.pendingProps,h=e!==null?e.memoizedProps:null,E=f.children,pu(l,f)?E=null:h!==null&&pu(l,h)&&(n.flags|=32),ud(e,n),rt(e,n,E,o),n.child;case 6:return e===null&&Eu(n),null;case 13:return dd(e,n,o);case 4:return Tu(n,n.stateNode.containerInfo),l=n.pendingProps,e===null?n.child=Hr(n,null,l,o):rt(e,n,l,o),n.child;case 11:return l=n.type,f=n.pendingProps,f=n.elementType===l?f:Dt(l,f),od(e,n,l,f,o);case 7:return rt(e,n,n.pendingProps,o),n.child;case 8:return rt(e,n,n.pendingProps.children,o),n.child;case 12:return rt(e,n,n.pendingProps.children,o),n.child;case 10:e:{if(l=n.type._context,f=n.pendingProps,h=n.memoizedProps,E=f.value,Ae(gs,l._currentValue),l._currentValue=E,h!==null)if(Lt(h.value,E)){if(h.children===f.children&&!ut.current){n=dn(e,n,o);break e}}else for(h=n.child,h!==null&&(h.return=n);h!==null;){var I=h.dependencies;if(I!==null){E=h.child;for(var $=I.firstContext;$!==null;){if($.context===l){if(h.tag===1){$=fn(-1,o&-o),$.tag=2;var G=h.updateQueue;if(G!==null){G=G.shared;var oe=G.pending;oe===null?$.next=$:($.next=oe.next,oe.next=$),G.pending=$}}h.lanes|=o,$=h.alternate,$!==null&&($.lanes|=o),Pu(h.return,o,n),I.lanes|=o;break}$=$.next}}else if(h.tag===10)E=h.type===n.type?null:h.child;else if(h.tag===18){if(E=h.return,E===null)throw Error(i(341));E.lanes|=o,I=E.alternate,I!==null&&(I.lanes|=o),Pu(E,o,n),E=h.sibling}else E=h.child;if(E!==null)E.return=h;else for(E=h;E!==null;){if(E===n){E=null;break}if(h=E.sibling,h!==null){h.return=E.return,E=h;break}E=E.return}h=E}rt(e,n,f.children,o),n=n.child}return n;case 9:return f=n.type,l=n.pendingProps.children,Br(n,o),f=Pt(f),l=l(f),n.flags|=1,rt(e,n,l,o),n.child;case 14:return l=n.type,f=Dt(l,n.pendingProps),f=Dt(l.type,f),id(e,n,l,f,o);case 15:return sd(e,n,n.type,n.pendingProps,o);case 17:return l=n.type,f=n.pendingProps,f=n.elementType===l?f:Dt(l,f),Ms(e,n),n.tag=1,at(l)?(e=!0,as(n)):e=!1,Br(n,o),Zf(n,l,f),Uu(n,l,f,o),Qu(null,n,l,!0,e,o);case 19:return pd(e,n,o);case 22:return ld(e,n,o)}throw Error(i(156,n.tag))};function Od(e,n){return Fi(e,n)}function Rm(e,n,o,l){this.tag=e,this.key=o,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=l,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Tt(e,n,o,l){return new Rm(e,n,o,l)}function pa(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Dm(e){if(typeof e=="function")return pa(e)?1:0;if(e!=null){if(e=e.$$typeof,e===U)return 11;if(e===b)return 14}return 2}function On(e,n){var o=e.alternate;return o===null?(o=Tt(e.tag,n,e.key,e.mode),o.elementType=e.elementType,o.type=e.type,o.stateNode=e.stateNode,o.alternate=e,e.alternate=o):(o.pendingProps=n,o.type=e.type,o.flags=0,o.subtreeFlags=0,o.deletions=null),o.flags=e.flags&14680064,o.childLanes=e.childLanes,o.lanes=e.lanes,o.child=e.child,o.memoizedProps=e.memoizedProps,o.memoizedState=e.memoizedState,o.updateQueue=e.updateQueue,n=e.dependencies,o.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},o.sibling=e.sibling,o.index=e.index,o.ref=e.ref,o}function Os(e,n,o,l,f,h){var E=2;if(l=e,typeof e=="function")pa(e)&&(E=1);else if(typeof e=="string")E=5;else e:switch(e){case H:return cr(o.children,f,h,n);case B:E=8,f|=8;break;case X:return e=Tt(12,o,n,f|2),e.elementType=X,e.lanes=h,e;case Z:return e=Tt(13,o,n,f),e.elementType=Z,e.lanes=h,e;case z:return e=Tt(19,o,n,f),e.elementType=z,e.lanes=h,e;case Y:return Fs(o,f,h,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case J:E=10;break e;case W:E=9;break e;case U:E=11;break e;case b:E=14;break e;case F:E=16,l=null;break e}throw Error(i(130,e==null?e:typeof e,""))}return n=Tt(E,o,n,f),n.elementType=e,n.type=l,n.lanes=h,n}function cr(e,n,o,l){return e=Tt(7,e,l,n),e.lanes=o,e}function Fs(e,n,o,l){return e=Tt(22,e,l,n),e.elementType=Y,e.lanes=o,e.stateNode={isHidden:!1},e}function ga(e,n,o){return e=Tt(6,e,null,n),e.lanes=o,e}function ma(e,n,o){return n=Tt(4,e.children!==null?e.children:[],e.key,n),n.lanes=o,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function $m(e,n,o,l,f){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Eo(0),this.expirationTimes=Eo(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Eo(0),this.identifierPrefix=l,this.onRecoverableError=f,this.mutableSourceEagerHydrationData=null}function ya(e,n,o,l,f,h,E,I,$){return e=new $m(e,n,o,I,$),n===1?(n=1,h===!0&&(n|=8)):n=0,h=Tt(3,null,null,n),e.current=h,h.stateNode=e,h.memoizedState={element:l,isDehydrated:o,cache:null,transitions:null,pendingSuspenseBoundaries:null},Iu(h),e}function jm(e,n,o){var l=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(r){console.error(r)}}return t(),Ea.exports=Km(),Ea.exports}var qd;function Gm(){if(qd)return Ys;qd=1;var t=Sp();return Ys.createRoot=t.createRoot,Ys.hydrateRoot=t.hydrateRoot,Ys}var Zm=Gm();function be(t){if(typeof t=="string"||typeof t=="number")return""+t;let r="";if(Array.isArray(t))for(let i=0,s;i{}};function xi(){for(var t=0,r=arguments.length,i={},s;t=0&&(s=i.slice(u+1),i=i.slice(0,u)),i&&!r.hasOwnProperty(i))throw new Error("unknown type: "+i);return{type:i,name:s}})}il.prototype=xi.prototype={constructor:il,on:function(t,r){var i=this._,s=Jm(t+"",i),u,a=-1,c=s.length;if(arguments.length<2){for(;++a0)for(var i=new Array(u),s=0,u,a;s=0&&(r=t.slice(0,i))!=="xmlns"&&(t=t.slice(i+1)),eh.hasOwnProperty(r)?{space:eh[r],local:t}:t}function ty(t){return function(){var r=this.ownerDocument,i=this.namespaceURI;return i===Fa&&r.documentElement.namespaceURI===Fa?r.createElement(t):r.createElementNS(i,t)}}function ny(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function _p(t){var r=wl(t);return(r.local?ny:ty)(r)}function ry(){}function tc(t){return t==null?ry:function(){return this.querySelector(t)}}function oy(t){typeof t!="function"&&(t=tc(t));for(var r=this._groups,i=r.length,s=new Array(i),u=0;u=N&&(N=P+1);!(j=w[N])&&++N=0;)(c=s[u])&&(a&&c.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(c,a),a=c);return this}function zy(t){t||(t=Iy);function r(m,y){return m&&y?t(m.__data__,y.__data__):!m-!y}for(var i=this._groups,s=i.length,u=new Array(s),a=0;ar?1:t>=r?0:NaN}function Ty(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Ay(){return Array.from(this)}function Ly(){for(var t=this._groups,r=0,i=t.length;r1?this.each((r==null?Uy:typeof r=="function"?Yy:by)(t,r,i??"")):to(this.node(),t)}function to(t,r){return t.style.getPropertyValue(r)||Mp(t).getComputedStyle(t,null).getPropertyValue(r)}function Qy(t){return function(){delete this[t]}}function Ky(t,r){return function(){this[t]=r}}function Gy(t,r){return function(){var i=r.apply(this,arguments);i==null?delete this[t]:this[t]=i}}function Zy(t,r){return arguments.length>1?this.each((r==null?Qy:typeof r=="function"?Gy:Ky)(t,r)):this.node()[t]}function Pp(t){return t.trim().split(/^|\s+/)}function nc(t){return t.classList||new zp(t)}function zp(t){this._node=t,this._names=Pp(t.getAttribute("class")||"")}zp.prototype={add:function(t){var r=this._names.indexOf(t);r<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var r=this._names.indexOf(t);r>=0&&(this._names.splice(r,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function Ip(t,r){for(var i=nc(t),s=-1,u=r.length;++s=0&&(i=r.slice(s+1),r=r.slice(0,s)),{type:r,name:i}})}function Nv(t){return function(){var r=this.__on;if(r){for(var i=0,s=-1,u=r.length,a;i()=>t;function Ha(t,{sourceEvent:r,subject:i,target:s,identifier:u,active:a,x:c,y:d,dx:p,dy:g,dispatch:v}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:r,enumerable:!0,configurable:!0},subject:{value:i,enumerable:!0,configurable:!0},target:{value:s,enumerable:!0,configurable:!0},identifier:{value:u,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:c,enumerable:!0,configurable:!0},y:{value:d,enumerable:!0,configurable:!0},dx:{value:p,enumerable:!0,configurable:!0},dy:{value:g,enumerable:!0,configurable:!0},_:{value:v}})}Ha.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function Dv(t){return!t.ctrlKey&&!t.button}function $v(){return this.parentNode}function jv(t,r){return r??{x:t.x,y:t.y}}function Ov(){return navigator.maxTouchPoints||"ontouchstart"in this}function $p(){var t=Dv,r=$v,i=jv,s=Ov,u={},a=xi("start","drag","end"),c=0,d,p,g,v,m=0;function y(C){C.on("mousedown.drag",x).filter(s).on("touchstart.drag",w).on("touchmove.drag",k,Rv).on("touchend.drag touchcancel.drag",P).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function x(C,j){if(!(v||!t.call(this,C,j))){var D=N(this,r.call(this,C,j),C,j,"mouse");D&&(_t(C.view).on("mousemove.drag",S,ai).on("mouseup.drag",_,ai),Rp(C.view),Ca(C),g=!1,d=C.clientX,p=C.clientY,D("start",C))}}function S(C){if(Jr(C),!g){var j=C.clientX-d,D=C.clientY-p;g=j*j+D*D>m}u.mouse("drag",C)}function _(C){_t(C.view).on("mousemove.drag mouseup.drag",null),Dp(C.view,g),Jr(C),u.mouse("end",C)}function w(C,j){if(t.call(this,C,j)){var D=C.changedTouches,H=r.call(this,C,j),B=D.length,X,J;for(X=0;X>8&15|r>>4&240,r>>4&15|r&240,(r&15)<<4|r&15,1):i===8?Qs(r>>24&255,r>>16&255,r>>8&255,(r&255)/255):i===4?Qs(r>>12&15|r>>8&240,r>>8&15|r>>4&240,r>>4&15|r&240,((r&15)<<4|r&15)/255):null):(r=Hv.exec(t))?new pt(r[1],r[2],r[3],1):(r=Vv.exec(t))?new pt(r[1]*255/100,r[2]*255/100,r[3]*255/100,1):(r=Bv.exec(t))?Qs(r[1],r[2],r[3],r[4]):(r=Wv.exec(t))?Qs(r[1]*255/100,r[2]*255/100,r[3]*255/100,r[4]):(r=Uv.exec(t))?lh(r[1],r[2]/100,r[3]/100,1):(r=bv.exec(t))?lh(r[1],r[2]/100,r[3]/100,r[4]):th.hasOwnProperty(t)?oh(th[t]):t==="transparent"?new pt(NaN,NaN,NaN,0):null}function oh(t){return new pt(t>>16&255,t>>8&255,t&255,1)}function Qs(t,r,i,s){return s<=0&&(t=r=i=NaN),new pt(t,r,i,s)}function Qv(t){return t instanceof Si||(t=gr(t)),t?(t=t.rgb(),new pt(t.r,t.g,t.b,t.opacity)):new pt}function Va(t,r,i,s){return arguments.length===1?Qv(t):new pt(t,r,i,s??1)}function pt(t,r,i,s){this.r=+t,this.g=+r,this.b=+i,this.opacity=+s}rc(pt,Va,jp(Si,{brighter(t){return t=t==null?fl:Math.pow(fl,t),new pt(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?ci:Math.pow(ci,t),new pt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new pt(hr(this.r),hr(this.g),hr(this.b),dl(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:ih,formatHex:ih,formatHex8:Kv,formatRgb:sh,toString:sh}));function ih(){return`#${dr(this.r)}${dr(this.g)}${dr(this.b)}`}function Kv(){return`#${dr(this.r)}${dr(this.g)}${dr(this.b)}${dr((isNaN(this.opacity)?1:this.opacity)*255)}`}function sh(){const t=dl(this.opacity);return`${t===1?"rgb(":"rgba("}${hr(this.r)}, ${hr(this.g)}, ${hr(this.b)}${t===1?")":`, ${t})`}`}function dl(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function hr(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function dr(t){return t=hr(t),(t<16?"0":"")+t.toString(16)}function lh(t,r,i,s){return s<=0?t=r=i=NaN:i<=0||i>=1?t=r=NaN:r<=0&&(t=NaN),new Ht(t,r,i,s)}function Op(t){if(t instanceof Ht)return new Ht(t.h,t.s,t.l,t.opacity);if(t instanceof Si||(t=gr(t)),!t)return new Ht;if(t instanceof Ht)return t;t=t.rgb();var r=t.r/255,i=t.g/255,s=t.b/255,u=Math.min(r,i,s),a=Math.max(r,i,s),c=NaN,d=a-u,p=(a+u)/2;return d?(r===a?c=(i-s)/d+(i0&&p<1?0:c,new Ht(c,d,p,t.opacity)}function Gv(t,r,i,s){return arguments.length===1?Op(t):new Ht(t,r,i,s??1)}function Ht(t,r,i,s){this.h=+t,this.s=+r,this.l=+i,this.opacity=+s}rc(Ht,Gv,jp(Si,{brighter(t){return t=t==null?fl:Math.pow(fl,t),new Ht(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?ci:Math.pow(ci,t),new Ht(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,r=isNaN(t)||isNaN(this.s)?0:this.s,i=this.l,s=i+(i<.5?i:1-i)*r,u=2*i-s;return new pt(Ma(t>=240?t-240:t+120,u,s),Ma(t,u,s),Ma(t<120?t+240:t-120,u,s),this.opacity)},clamp(){return new Ht(uh(this.h),Ks(this.s),Ks(this.l),dl(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=dl(this.opacity);return`${t===1?"hsl(":"hsla("}${uh(this.h)}, ${Ks(this.s)*100}%, ${Ks(this.l)*100}%${t===1?")":`, ${t})`}`}}));function uh(t){return t=(t||0)%360,t<0?t+360:t}function Ks(t){return Math.max(0,Math.min(1,t||0))}function Ma(t,r,i){return(t<60?r+(i-r)*t/60:t<180?i:t<240?r+(i-r)*(240-t)/60:r)*255}const oc=t=>()=>t;function Zv(t,r){return function(i){return t+i*r}}function qv(t,r,i){return t=Math.pow(t,i),r=Math.pow(r,i)-t,i=1/i,function(s){return Math.pow(t+s*r,i)}}function Jv(t){return(t=+t)==1?Fp:function(r,i){return i-r?qv(r,i,t):oc(isNaN(r)?i:r)}}function Fp(t,r){var i=r-t;return i?Zv(t,i):oc(isNaN(t)?r:t)}const hl=(function t(r){var i=Jv(r);function s(u,a){var c=i((u=Va(u)).r,(a=Va(a)).r),d=i(u.g,a.g),p=i(u.b,a.b),g=Fp(u.opacity,a.opacity);return function(v){return u.r=c(v),u.g=d(v),u.b=p(v),u.opacity=g(v),u+""}}return s.gamma=t,s})(1);function e1(t,r){r||(r=[]);var i=t?Math.min(r.length,t.length):0,s=r.slice(),u;return function(a){for(u=0;ui&&(a=r.slice(i,a),d[c]?d[c]+=a:d[++c]=a),(s=s[0])===(u=u[0])?d[c]?d[c]+=u:d[++c]=u:(d[++c]=null,p.push({i:c,x:Gt(s,u)})),i=Pa.lastIndex;return i180?v+=360:v-g>180&&(g+=360),y.push({i:m.push(u(m)+"rotate(",null,s)-2,x:Gt(g,v)})):v&&m.push(u(m)+"rotate("+v+s)}function d(g,v,m,y){g!==v?y.push({i:m.push(u(m)+"skewX(",null,s)-2,x:Gt(g,v)}):v&&m.push(u(m)+"skewX("+v+s)}function p(g,v,m,y,x,S){if(g!==m||v!==y){var _=x.push(u(x)+"scale(",null,",",null,")");S.push({i:_-4,x:Gt(g,m)},{i:_-2,x:Gt(v,y)})}else(m!==1||y!==1)&&x.push(u(x)+"scale("+m+","+y+")")}return function(g,v){var m=[],y=[];return g=t(g),v=t(v),a(g.translateX,g.translateY,v.translateX,v.translateY,m,y),c(g.rotate,v.rotate,m,y),d(g.skewX,v.skewX,m,y),p(g.scaleX,g.scaleY,v.scaleX,v.scaleY,m,y),g=v=null,function(x){for(var S=-1,_=y.length,w;++S<_;)m[(w=y[S]).i]=w.x(x);return m.join("")}}}var a1=Bp(l1,"px, ","px)","deg)"),c1=Bp(u1,", ",")",")"),f1=1e-12;function ch(t){return((t=Math.exp(t))+1/t)/2}function d1(t){return((t=Math.exp(t))-1/t)/2}function h1(t){return((t=Math.exp(2*t))-1)/(t+1)}const sl=(function t(r,i,s){function u(a,c){var d=a[0],p=a[1],g=a[2],v=c[0],m=c[1],y=c[2],x=v-d,S=m-p,_=x*x+S*S,w,k;if(_=0&&t._call.call(void 0,r),t=t._next;--no}function fh(){mr=(gl=di.now())+Sl,no=ii=0;try{g1()}finally{no=0,y1(),mr=0}}function m1(){var t=di.now(),r=t-gl;r>Wp&&(Sl-=r,gl=t)}function y1(){for(var t,r=pl,i,s=1/0;r;)r._call?(s>r._time&&(s=r._time),t=r,r=r._next):(i=r._next,r._next=null,r=t?t._next=i:pl=i);si=t,Ua(s)}function Ua(t){if(!no){ii&&(ii=clearTimeout(ii));var r=t-mr;r>24?(t<1/0&&(ii=setTimeout(fh,t-di.now()-Sl)),ni&&(ni=clearInterval(ni))):(ni||(gl=di.now(),ni=setInterval(m1,Wp)),no=1,Up(fh))}}function dh(t,r,i){var s=new ml;return r=r==null?0:+r,s.restart(u=>{s.stop(),t(u+r)},r,i),s}var v1=xi("start","end","cancel","interrupt"),x1=[],bp=0,hh=1,ba=2,ll=3,ph=4,Ya=5,ul=6;function _l(t,r,i,s,u,a){var c=t.__transition;if(!c)t.__transition={};else if(i in c)return;w1(t,i,{name:r,index:s,group:u,on:v1,tween:x1,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:bp})}function lc(t,r){var i=Wt(t,r);if(i.state>bp)throw new Error("too late; already scheduled");return i}function en(t,r){var i=Wt(t,r);if(i.state>ll)throw new Error("too late; already running");return i}function Wt(t,r){var i=t.__transition;if(!i||!(i=i[r]))throw new Error("transition not found");return i}function w1(t,r,i){var s=t.__transition,u;s[r]=i,i.timer=sc(a,0,i.time);function a(g){i.state=hh,i.timer.restart(c,i.delay,i.time),i.delay<=g&&c(g-i.delay)}function c(g){var v,m,y,x;if(i.state!==hh)return p();for(v in s)if(x=s[v],x.name===i.name){if(x.state===ll)return dh(c);x.state===ph?(x.state=ul,x.timer.stop(),x.on.call("interrupt",t,t.__data__,x.index,x.group),delete s[v]):+vba&&s.state=0&&(r=r.slice(0,i)),!r||r==="start"})}function G1(t,r,i){var s,u,a=K1(r)?lc:en;return function(){var c=a(this,t),d=c.on;d!==s&&(u=(s=d).copy()).on(r,i),c.on=u}}function Z1(t,r){var i=this._id;return arguments.length<2?Wt(this.node(),i).on.on(t):this.each(G1(i,t,r))}function q1(t){return function(){var r=this.parentNode;for(var i in this.__transition)if(+i!==t)return;r&&r.removeChild(this)}}function J1(){return this.on("end.remove",q1(this._id))}function ex(t){var r=this._name,i=this._id;typeof t!="function"&&(t=tc(t));for(var s=this._groups,u=s.length,a=new Array(u),c=0;c()=>t;function Nx(t,{sourceEvent:r,target:i,transform:s,dispatch:u}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:r,enumerable:!0,configurable:!0},target:{value:i,enumerable:!0,configurable:!0},transform:{value:s,enumerable:!0,configurable:!0},_:{value:u}})}function gn(t,r,i){this.k=t,this.x=r,this.y=i}gn.prototype={constructor:gn,scale:function(t){return t===1?this:new gn(this.k*t,this.x,this.y)},translate:function(t,r){return t===0&r===0?this:new gn(this.k,this.x+this.k*t,this.y+this.k*r)},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 El=new gn(1,0,0);Kp.prototype=gn.prototype;function Kp(t){for(;!t.__zoom;)if(!(t=t.parentNode))return El;return t.__zoom}function za(t){t.stopImmediatePropagation()}function ri(t){t.preventDefault(),t.stopImmediatePropagation()}function Cx(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function Mx(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.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 gh(){return this.__zoom||El}function Px(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function zx(){return navigator.maxTouchPoints||"ontouchstart"in this}function Ix(t,r,i){var s=t.invertX(r[0][0])-i[0][0],u=t.invertX(r[1][0])-i[1][0],a=t.invertY(r[0][1])-i[0][1],c=t.invertY(r[1][1])-i[1][1];return t.translate(u>s?(s+u)/2:Math.min(0,s)||Math.max(0,u),c>a?(a+c)/2:Math.min(0,a)||Math.max(0,c))}function Gp(){var t=Cx,r=Mx,i=Ix,s=Px,u=zx,a=[0,1/0],c=[[-1/0,-1/0],[1/0,1/0]],d=250,p=sl,g=xi("start","zoom","end"),v,m,y,x=500,S=150,_=0,w=10;function k(z){z.property("__zoom",gh).on("wheel.zoom",B,{passive:!1}).on("mousedown.zoom",X).on("dblclick.zoom",J).filter(u).on("touchstart.zoom",W).on("touchmove.zoom",U).on("touchend.zoom touchcancel.zoom",Z).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}k.transform=function(z,b,F,Y){var T=z.selection?z.selection():z;T.property("__zoom",gh),z!==T?j(z,b,F,Y):T.interrupt().each(function(){D(this,arguments).event(Y).start().zoom(null,typeof b=="function"?b.apply(this,arguments):b).end()})},k.scaleBy=function(z,b,F,Y){k.scaleTo(z,function(){var T=this.__zoom.k,L=typeof b=="function"?b.apply(this,arguments):b;return T*L},F,Y)},k.scaleTo=function(z,b,F,Y){k.transform(z,function(){var T=r.apply(this,arguments),L=this.__zoom,V=F==null?C(T):typeof F=="function"?F.apply(this,arguments):F,M=L.invert(V),R=typeof b=="function"?b.apply(this,arguments):b;return i(N(P(L,R),V,M),T,c)},F,Y)},k.translateBy=function(z,b,F,Y){k.transform(z,function(){return i(this.__zoom.translate(typeof b=="function"?b.apply(this,arguments):b,typeof F=="function"?F.apply(this,arguments):F),r.apply(this,arguments),c)},null,Y)},k.translateTo=function(z,b,F,Y,T){k.transform(z,function(){var L=r.apply(this,arguments),V=this.__zoom,M=Y==null?C(L):typeof Y=="function"?Y.apply(this,arguments):Y;return i(El.translate(M[0],M[1]).scale(V.k).translate(typeof b=="function"?-b.apply(this,arguments):-b,typeof F=="function"?-F.apply(this,arguments):-F),L,c)},Y,T)};function P(z,b){return b=Math.max(a[0],Math.min(a[1],b)),b===z.k?z:new gn(b,z.x,z.y)}function N(z,b,F){var Y=b[0]-F[0]*z.k,T=b[1]-F[1]*z.k;return Y===z.x&&T===z.y?z:new gn(z.k,Y,T)}function C(z){return[(+z[0][0]+ +z[1][0])/2,(+z[0][1]+ +z[1][1])/2]}function j(z,b,F,Y){z.on("start.zoom",function(){D(this,arguments).event(Y).start()}).on("interrupt.zoom end.zoom",function(){D(this,arguments).event(Y).end()}).tween("zoom",function(){var T=this,L=arguments,V=D(T,L).event(Y),M=r.apply(T,L),R=F==null?C(M):typeof F=="function"?F.apply(T,L):F,te=Math.max(M[1][0]-M[0][0],M[1][1]-M[0][1]),re=T.__zoom,le=typeof b=="function"?b.apply(T,L):b,ue=p(re.invert(R).concat(te/re.k),le.invert(R).concat(te/le.k));return function(ae){if(ae===1)ae=le;else{var ee=ue(ae),ce=te/ee[2];ae=new gn(ce,R[0]-ee[0]*ce,R[1]-ee[1]*ce)}V.zoom(null,ae)}})}function D(z,b,F){return!F&&z.__zooming||new H(z,b)}function H(z,b){this.that=z,this.args=b,this.active=0,this.sourceEvent=null,this.extent=r.apply(z,b),this.taps=0}H.prototype={event:function(z){return z&&(this.sourceEvent=z),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(z,b){return this.mouse&&z!=="mouse"&&(this.mouse[1]=b.invert(this.mouse[0])),this.touch0&&z!=="touch"&&(this.touch0[1]=b.invert(this.touch0[0])),this.touch1&&z!=="touch"&&(this.touch1[1]=b.invert(this.touch1[0])),this.that.__zoom=b,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(z){var b=_t(this.that).datum();g.call(z,this.that,new Nx(z,{sourceEvent:this.sourceEvent,target:k,transform:this.that.__zoom,dispatch:g}),b)}};function B(z,...b){if(!t.apply(this,arguments))return;var F=D(this,b).event(z),Y=this.__zoom,T=Math.max(a[0],Math.min(a[1],Y.k*Math.pow(2,s.apply(this,arguments)))),L=Ft(z);if(F.wheel)(F.mouse[0][0]!==L[0]||F.mouse[0][1]!==L[1])&&(F.mouse[1]=Y.invert(F.mouse[0]=L)),clearTimeout(F.wheel);else{if(Y.k===T)return;F.mouse=[L,Y.invert(L)],al(this),F.start()}ri(z),F.wheel=setTimeout(V,S),F.zoom("mouse",i(N(P(Y,T),F.mouse[0],F.mouse[1]),F.extent,c));function V(){F.wheel=null,F.end()}}function X(z,...b){if(y||!t.apply(this,arguments))return;var F=z.currentTarget,Y=D(this,b,!0).event(z),T=_t(z.view).on("mousemove.zoom",R,!0).on("mouseup.zoom",te,!0),L=Ft(z,F),V=z.clientX,M=z.clientY;Rp(z.view),za(z),Y.mouse=[L,this.__zoom.invert(L)],al(this),Y.start();function R(re){if(ri(re),!Y.moved){var le=re.clientX-V,ue=re.clientY-M;Y.moved=le*le+ue*ue>_}Y.event(re).zoom("mouse",i(N(Y.that.__zoom,Y.mouse[0]=Ft(re,F),Y.mouse[1]),Y.extent,c))}function te(re){T.on("mousemove.zoom mouseup.zoom",null),Dp(re.view,Y.moved),ri(re),Y.event(re).end()}}function J(z,...b){if(t.apply(this,arguments)){var F=this.__zoom,Y=Ft(z.changedTouches?z.changedTouches[0]:z,this),T=F.invert(Y),L=F.k*(z.shiftKey?.5:2),V=i(N(P(F,L),Y,T),r.apply(this,b),c);ri(z),d>0?_t(this).transition().duration(d).call(j,V,Y,z):_t(this).call(k.transform,V,Y,z)}}function W(z,...b){if(t.apply(this,arguments)){var F=z.touches,Y=F.length,T=D(this,b,z.changedTouches.length===Y).event(z),L,V,M,R;for(za(z),V=0;V"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.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 React Flow 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:r,sourceHandle:i,targetHandle:s})=>`Couldn't create edge for ${t} handle id: "${t==="source"?i:s}", edge id: ${r}.`,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."},hi=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Zp=["Enter"," ","Escape"],qp={"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:r,y:i})=>`Moved selected node ${t}. New position, x: ${r}, y: ${i}`,"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 ro;(function(t){t.Strict="strict",t.Loose="loose"})(ro||(ro={}));var pr;(function(t){t.Free="free",t.Vertical="vertical",t.Horizontal="horizontal"})(pr||(pr={}));var pi;(function(t){t.Partial="partial",t.Full="full"})(pi||(pi={}));const Jp={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null};var Bn;(function(t){t.Bezier="default",t.Straight="straight",t.Step="step",t.SmoothStep="smoothstep",t.SimpleBezier="simplebezier"})(Bn||(Bn={}));var oo;(function(t){t.Arrow="arrow",t.ArrowClosed="arrowclosed"})(oo||(oo={}));var me;(function(t){t.Left="left",t.Top="top",t.Right="right",t.Bottom="bottom"})(me||(me={}));const mh={[me.Left]:me.Right,[me.Right]:me.Left,[me.Top]:me.Bottom,[me.Bottom]:me.Top};function e0(t){return t===null?null:t?"valid":"invalid"}const t0=t=>"id"in t&&"source"in t&&"target"in t,Tx=t=>"id"in t&&"position"in t&&!("source"in t)&&!("target"in t),ac=t=>"id"in t&&"internals"in t&&!("source"in t)&&!("target"in t),_i=(t,r=[0,0])=>{const{width:i,height:s}=yn(t),u=t.origin??r,a=i*u[0],c=s*u[1];return{x:t.position.x-a,y:t.position.y-c}},Ax=(t,r={nodeOrigin:[0,0]})=>{if(t.length===0)return{x:0,y:0,width:0,height:0};const i=t.reduce((s,u)=>{const a=typeof u=="string";let c=!r.nodeLookup&&!a?u:void 0;r.nodeLookup&&(c=a?r.nodeLookup.get(u):ac(u)?u:r.nodeLookup.get(u.id));const d=c?yl(c,r.nodeOrigin):{x:0,y:0,x2:0,y2:0};return kl(s,d)},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return Nl(i)},Ei=(t,r={})=>{let i={x:1/0,y:1/0,x2:-1/0,y2:-1/0},s=!1;return t.forEach(u=>{(r.filter===void 0||r.filter(u))&&(i=kl(i,yl(u)),s=!0)}),s?Nl(i):{x:0,y:0,width:0,height:0}},cc=(t,r,[i,s,u]=[0,0,1],a=!1,c=!1)=>{const d={...Ni(r,[i,s,u]),width:r.width/u,height:r.height/u},p=[];for(const g of t.values()){const{measured:v,selectable:m=!0,hidden:y=!1}=g;if(c&&!m||y)continue;const x=v.width??g.width??g.initialWidth??null,S=v.height??g.height??g.initialHeight??null,_=gi(d,so(g)),w=(x??0)*(S??0),k=a&&_>0;(!g.internals.handleBounds||k||_>=w||g.dragging)&&p.push(g)}return p},Lx=(t,r)=>{const i=new Set;return t.forEach(s=>{i.add(s.id)}),r.filter(s=>i.has(s.source)||i.has(s.target))};function Rx(t,r){const i=new Map,s=r!=null&&r.nodes?new Set(r.nodes.map(u=>u.id)):null;return t.forEach(u=>{u.measured.width&&u.measured.height&&((r==null?void 0:r.includeHiddenNodes)||!u.hidden)&&(!s||s.has(u.id))&&i.set(u.id,u)}),i}async function Dx({nodes:t,width:r,height:i,panZoom:s,minZoom:u,maxZoom:a},c){if(t.size===0)return Promise.resolve(!0);const d=Rx(t,c),p=Ei(d),g=fc(p,r,i,(c==null?void 0:c.minZoom)??u,(c==null?void 0:c.maxZoom)??a,(c==null?void 0:c.padding)??.1);return await s.setViewport(g,{duration:c==null?void 0:c.duration,ease:c==null?void 0:c.ease,interpolate:c==null?void 0:c.interpolate}),Promise.resolve(!0)}function n0({nodeId:t,nextPosition:r,nodeLookup:i,nodeOrigin:s=[0,0],nodeExtent:u,onError:a}){const c=i.get(t),d=c.parentId?i.get(c.parentId):void 0,{x:p,y:g}=d?d.internals.positionAbsolute:{x:0,y:0},v=c.origin??s;let m=c.extent||u;if(c.extent==="parent"&&!c.expandParent)if(!d)a==null||a("005",Jt.error005());else{const x=d.measured.width,S=d.measured.height;x&&S&&(m=[[p,g],[p+x,g+S]])}else d&&lo(c.extent)&&(m=[[c.extent[0][0]+p,c.extent[0][1]+g],[c.extent[1][0]+p,c.extent[1][1]+g]]);const y=lo(m)?yr(r,m,c.measured):r;return(c.measured.width===void 0||c.measured.height===void 0)&&(a==null||a("015",Jt.error015())),{position:{x:y.x-p+(c.measured.width??0)*v[0],y:y.y-g+(c.measured.height??0)*v[1]},positionAbsolute:y}}async function $x({nodesToRemove:t=[],edgesToRemove:r=[],nodes:i,edges:s,onBeforeDelete:u}){const a=new Set(t.map(y=>y.id)),c=[];for(const y of i){if(y.deletable===!1)continue;const x=a.has(y.id),S=!x&&y.parentId&&c.find(_=>_.id===y.parentId);(x||S)&&c.push(y)}const d=new Set(r.map(y=>y.id)),p=s.filter(y=>y.deletable!==!1),v=Lx(c,p);for(const y of p)d.has(y.id)&&!v.find(S=>S.id===y.id)&&v.push(y);if(!u)return{edges:v,nodes:c};const m=await u({nodes:c,edges:v});return typeof m=="boolean"?m?{edges:v,nodes:c}:{edges:[],nodes:[]}:m}const io=(t,r=0,i=1)=>Math.min(Math.max(t,r),i),yr=(t={x:0,y:0},r,i)=>({x:io(t.x,r[0][0],r[1][0]-((i==null?void 0:i.width)??0)),y:io(t.y,r[0][1],r[1][1]-((i==null?void 0:i.height)??0))});function r0(t,r,i){const{width:s,height:u}=yn(i),{x:a,y:c}=i.internals.positionAbsolute;return yr(t,[[a,c],[a+s,c+u]],r)}const yh=(t,r,i)=>ti?-io(Math.abs(t-i),1,r)/r:0,o0=(t,r,i=15,s=40)=>{const u=yh(t.x,s,r.width-s)*i,a=yh(t.y,s,r.height-s)*i;return[u,a]},kl=(t,r)=>({x:Math.min(t.x,r.x),y:Math.min(t.y,r.y),x2:Math.max(t.x2,r.x2),y2:Math.max(t.y2,r.y2)}),Xa=({x:t,y:r,width:i,height:s})=>({x:t,y:r,x2:t+i,y2:r+s}),Nl=({x:t,y:r,x2:i,y2:s})=>({x:t,y:r,width:i-t,height:s-r}),so=(t,r=[0,0])=>{var u,a;const{x:i,y:s}=ac(t)?t.internals.positionAbsolute:_i(t,r);return{x:i,y:s,width:((u=t.measured)==null?void 0:u.width)??t.width??t.initialWidth??0,height:((a=t.measured)==null?void 0:a.height)??t.height??t.initialHeight??0}},yl=(t,r=[0,0])=>{var u,a;const{x:i,y:s}=ac(t)?t.internals.positionAbsolute:_i(t,r);return{x:i,y:s,x2:i+(((u=t.measured)==null?void 0:u.width)??t.width??t.initialWidth??0),y2:s+(((a=t.measured)==null?void 0:a.height)??t.height??t.initialHeight??0)}},i0=(t,r)=>Nl(kl(Xa(t),Xa(r))),gi=(t,r)=>{const i=Math.max(0,Math.min(t.x+t.width,r.x+r.width)-Math.max(t.x,r.x)),s=Math.max(0,Math.min(t.y+t.height,r.y+r.height)-Math.max(t.y,r.y));return Math.ceil(i*s)},vh=t=>Vt(t.width)&&Vt(t.height)&&Vt(t.x)&&Vt(t.y),Vt=t=>!isNaN(t)&&isFinite(t),jx=(t,r)=>{},ki=(t,r=[1,1])=>({x:r[0]*Math.round(t.x/r[0]),y:r[1]*Math.round(t.y/r[1])}),Ni=({x:t,y:r},[i,s,u],a=!1,c=[1,1])=>{const d={x:(t-i)/u,y:(r-s)/u};return a?ki(d,c):d},vl=({x:t,y:r},[i,s,u])=>({x:t*u+i,y:r*u+s});function Kr(t,r){if(typeof t=="number")return Math.floor((r-r/(1+t))*.5);if(typeof t=="string"&&t.endsWith("px")){const i=parseFloat(t);if(!Number.isNaN(i))return Math.floor(i)}if(typeof t=="string"&&t.endsWith("%")){const i=parseFloat(t);if(!Number.isNaN(i))return Math.floor(r*i*.01)}return console.error(`[React Flow] The padding value "${t}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function Ox(t,r,i){if(typeof t=="string"||typeof t=="number"){const s=Kr(t,i),u=Kr(t,r);return{top:s,right:u,bottom:s,left:u,x:u*2,y:s*2}}if(typeof t=="object"){const s=Kr(t.top??t.y??0,i),u=Kr(t.bottom??t.y??0,i),a=Kr(t.left??t.x??0,r),c=Kr(t.right??t.x??0,r);return{top:s,right:c,bottom:u,left:a,x:a+c,y:s+u}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function Fx(t,r,i,s,u,a){const{x:c,y:d}=vl(t,[r,i,s]),{x:p,y:g}=vl({x:t.x+t.width,y:t.y+t.height},[r,i,s]),v=u-p,m=a-g;return{left:Math.floor(c),top:Math.floor(d),right:Math.floor(v),bottom:Math.floor(m)}}const fc=(t,r,i,s,u,a)=>{const c=Ox(a,r,i),d=(r-c.x)/t.width,p=(i-c.y)/t.height,g=Math.min(d,p),v=io(g,s,u),m=t.x+t.width/2,y=t.y+t.height/2,x=r/2-m*v,S=i/2-y*v,_=Fx(t,x,S,v,r,i),w={left:Math.min(_.left-c.left,0),top:Math.min(_.top-c.top,0),right:Math.min(_.right-c.right,0),bottom:Math.min(_.bottom-c.bottom,0)};return{x:x-w.left+w.right,y:S-w.top+w.bottom,zoom:v}},mi=()=>{var t;return typeof navigator<"u"&&((t=navigator==null?void 0:navigator.userAgent)==null?void 0:t.indexOf("Mac"))>=0};function lo(t){return t!=null&&t!=="parent"}function yn(t){var r,i;return{width:((r=t.measured)==null?void 0:r.width)??t.width??t.initialWidth??0,height:((i=t.measured)==null?void 0:i.height)??t.height??t.initialHeight??0}}function s0(t){var r,i;return(((r=t.measured)==null?void 0:r.width)??t.width??t.initialWidth)!==void 0&&(((i=t.measured)==null?void 0:i.height)??t.height??t.initialHeight)!==void 0}function l0(t,r={width:0,height:0},i,s,u){const a={...t},c=s.get(i);if(c){const d=c.origin||u;a.x+=c.internals.positionAbsolute.x-(r.width??0)*d[0],a.y+=c.internals.positionAbsolute.y-(r.height??0)*d[1]}return a}function xh(t,r){if(t.size!==r.size)return!1;for(const i of t)if(!r.has(i))return!1;return!0}function Hx(){let t,r;return{promise:new Promise((s,u)=>{t=s,r=u}),resolve:t,reject:r}}function Vx(t){return{...qp,...t||{}}}function ui(t,{snapGrid:r=[0,0],snapToGrid:i=!1,transform:s,containerBounds:u}){const{x:a,y:c}=Bt(t),d=Ni({x:a-((u==null?void 0:u.left)??0),y:c-((u==null?void 0:u.top)??0)},s),{x:p,y:g}=i?ki(d,r):d;return{xSnapped:p,ySnapped:g,...d}}const dc=t=>({width:t.offsetWidth,height:t.offsetHeight}),u0=t=>{var r;return((r=t==null?void 0:t.getRootNode)==null?void 0:r.call(t))||(window==null?void 0:window.document)},Bx=["INPUT","SELECT","TEXTAREA"];function a0(t){var s,u;const r=((u=(s=t.composedPath)==null?void 0:s.call(t))==null?void 0:u[0])||t.target;return(r==null?void 0:r.nodeType)!==1?!1:Bx.includes(r.nodeName)||r.hasAttribute("contenteditable")||!!r.closest(".nokey")}const c0=t=>"clientX"in t,Bt=(t,r)=>{var a,c;const i=c0(t),s=i?t.clientX:(a=t.touches)==null?void 0:a[0].clientX,u=i?t.clientY:(c=t.touches)==null?void 0:c[0].clientY;return{x:s-((r==null?void 0:r.left)??0),y:u-((r==null?void 0:r.top)??0)}},wh=(t,r,i,s,u)=>{const a=r.querySelectorAll(`.${t}`);return!a||!a.length?null:Array.from(a).map(c=>{const d=c.getBoundingClientRect();return{id:c.getAttribute("data-handleid"),type:t,nodeId:u,position:c.getAttribute("data-handlepos"),x:(d.left-i.left)/s,y:(d.top-i.top)/s,...dc(c)}})};function f0({sourceX:t,sourceY:r,targetX:i,targetY:s,sourceControlX:u,sourceControlY:a,targetControlX:c,targetControlY:d}){const p=t*.125+u*.375+c*.375+i*.125,g=r*.125+a*.375+d*.375+s*.125,v=Math.abs(p-t),m=Math.abs(g-r);return[p,g,v,m]}function qs(t,r){return t>=0?.5*t:r*25*Math.sqrt(-t)}function Sh({pos:t,x1:r,y1:i,x2:s,y2:u,c:a}){switch(t){case me.Left:return[r-qs(r-s,a),i];case me.Right:return[r+qs(s-r,a),i];case me.Top:return[r,i-qs(i-u,a)];case me.Bottom:return[r,i+qs(u-i,a)]}}function d0({sourceX:t,sourceY:r,sourcePosition:i=me.Bottom,targetX:s,targetY:u,targetPosition:a=me.Top,curvature:c=.25}){const[d,p]=Sh({pos:i,x1:t,y1:r,x2:s,y2:u,c}),[g,v]=Sh({pos:a,x1:s,y1:u,x2:t,y2:r,c}),[m,y,x,S]=f0({sourceX:t,sourceY:r,targetX:s,targetY:u,sourceControlX:d,sourceControlY:p,targetControlX:g,targetControlY:v});return[`M${t},${r} C${d},${p} ${g},${v} ${s},${u}`,m,y,x,S]}function h0({sourceX:t,sourceY:r,targetX:i,targetY:s}){const u=Math.abs(i-t)/2,a=i0}const bx=({source:t,sourceHandle:r,target:i,targetHandle:s})=>`xy-edge__${t}${r||""}-${i}${s||""}`,Yx=(t,r)=>r.some(i=>i.source===t.source&&i.target===t.target&&(i.sourceHandle===t.sourceHandle||!i.sourceHandle&&!t.sourceHandle)&&(i.targetHandle===t.targetHandle||!i.targetHandle&&!t.targetHandle)),Xx=(t,r,i={})=>{if(!t.source||!t.target)return r;const s=i.getEdgeId||bx;let u;return t0(t)?u={...t}:u={...t,id:s(t)},Yx(u,r)?r:(u.sourceHandle===null&&delete u.sourceHandle,u.targetHandle===null&&delete u.targetHandle,r.concat(u))};function p0({sourceX:t,sourceY:r,targetX:i,targetY:s}){const[u,a,c,d]=h0({sourceX:t,sourceY:r,targetX:i,targetY:s});return[`M ${t},${r}L ${i},${s}`,u,a,c,d]}const _h={[me.Left]:{x:-1,y:0},[me.Right]:{x:1,y:0},[me.Top]:{x:0,y:-1},[me.Bottom]:{x:0,y:1}},Qx=({source:t,sourcePosition:r=me.Bottom,target:i})=>r===me.Left||r===me.Right?t.xMath.sqrt(Math.pow(r.x-t.x,2)+Math.pow(r.y-t.y,2));function Kx({source:t,sourcePosition:r=me.Bottom,target:i,targetPosition:s=me.Top,center:u,offset:a,stepPosition:c}){const d=_h[r],p=_h[s],g={x:t.x+d.x*a,y:t.y+d.y*a},v={x:i.x+p.x*a,y:i.y+p.y*a},m=Qx({source:g,sourcePosition:r,target:v}),y=m.x!==0?"x":"y",x=m[y];let S=[],_,w;const k={x:0,y:0},P={x:0,y:0},[,,N,C]=h0({sourceX:t.x,sourceY:t.y,targetX:i.x,targetY:i.y});if(d[y]*p[y]===-1){y==="x"?(_=u.x??g.x+(v.x-g.x)*c,w=u.y??(g.y+v.y)/2):(_=u.x??(g.x+v.x)/2,w=u.y??g.y+(v.y-g.y)*c);const B=[{x:_,y:g.y},{x:_,y:v.y}],X=[{x:g.x,y:w},{x:v.x,y:w}];d[y]===x?S=y==="x"?B:X:S=y==="x"?X:B}else{const B=[{x:g.x,y:v.y}],X=[{x:v.x,y:g.y}];if(y==="x"?S=d.x===x?X:B:S=d.y===x?B:X,r===s){const z=Math.abs(t[y]-i[y]);if(z<=a){const b=Math.min(a-1,a-z);d[y]===x?k[y]=(g[y]>t[y]?-1:1)*b:P[y]=(v[y]>i[y]?-1:1)*b}}if(r!==s){const z=y==="x"?"y":"x",b=d[y]===p[z],F=g[z]>v[z],Y=g[z]=Z?(_=(J.x+W.x)/2,w=S[0].y):(_=S[0].x,w=(J.y+W.y)/2)}const j={x:g.x+k.x,y:g.y+k.y},D={x:v.x+P.x,y:v.y+P.y};return[[t,...j.x!==S[0].x||j.y!==S[0].y?[j]:[],...S,...D.x!==S[S.length-1].x||D.y!==S[S.length-1].y?[D]:[],i],_,w,N,C]}function Gx(t,r,i,s){const u=Math.min(Eh(t,r)/2,Eh(r,i)/2,s),{x:a,y:c}=r;if(t.x===a&&a===i.x||t.y===c&&c===i.y)return`L${a} ${c}`;if(t.y===c){const g=t.xi.id===r):t[0])||null}function Ka(t,r){return t?typeof t=="string"?t:`${r?`${r}__`:""}${Object.keys(t).sort().map(s=>`${s}=${t[s]}`).join("&")}`:""}function qx(t,{id:r,defaultColor:i,defaultMarkerStart:s,defaultMarkerEnd:u}){const a=new Set;return t.reduce((c,d)=>([d.markerStart||s,d.markerEnd||u].forEach(p=>{if(p&&typeof p=="object"){const g=Ka(p,r);a.has(g)||(c.push({id:g,color:p.color||i,...p}),a.add(g))}}),c),[]).sort((c,d)=>c.id.localeCompare(d.id))}const g0=1e3,Jx=10,hc={nodeOrigin:[0,0],nodeExtent:hi,elevateNodesOnSelect:!0,zIndexMode:"basic",defaults:{}},ew={...hc,checkEquality:!0};function pc(t,r){const i={...t};for(const s in r)r[s]!==void 0&&(i[s]=r[s]);return i}function tw(t,r,i){const s=pc(hc,i);for(const u of t.values())if(u.parentId)mc(u,t,r,s);else{const a=_i(u,s.nodeOrigin),c=lo(u.extent)?u.extent:s.nodeExtent,d=yr(a,c,yn(u));u.internals.positionAbsolute=d}}function nw(t,r){if(!t.handles)return t.measured?r==null?void 0:r.internals.handleBounds:void 0;const i=[],s=[];for(const u of t.handles){const a={id:u.id,width:u.width??1,height:u.height??1,nodeId:t.id,x:u.x,y:u.y,position:u.position,type:u.type};u.type==="source"?i.push(a):u.type==="target"&&s.push(a)}return{source:i,target:s}}function gc(t){return t==="manual"}function Ga(t,r,i,s={}){var v,m;const u=pc(ew,s),a={i:0},c=new Map(r),d=u!=null&&u.elevateNodesOnSelect&&!gc(u.zIndexMode)?g0:0;let p=t.length>0,g=!1;r.clear(),i.clear();for(const y of t){let x=c.get(y.id);if(u.checkEquality&&y===(x==null?void 0:x.internals.userNode))r.set(y.id,x);else{const S=_i(y,u.nodeOrigin),_=lo(y.extent)?y.extent:u.nodeExtent,w=yr(S,_,yn(y));x={...u.defaults,...y,measured:{width:(v=y.measured)==null?void 0:v.width,height:(m=y.measured)==null?void 0:m.height},internals:{positionAbsolute:w,handleBounds:nw(y,x),z:m0(y,d,u.zIndexMode),userNode:y}},r.set(y.id,x)}(x.measured===void 0||x.measured.width===void 0||x.measured.height===void 0)&&!x.hidden&&(p=!1),y.parentId&&mc(x,r,i,s,a),g||(g=y.selected??!1)}return{nodesInitialized:p,hasSelectedNodes:g}}function rw(t,r){if(!t.parentId)return;const i=r.get(t.parentId);i?i.set(t.id,t):r.set(t.parentId,new Map([[t.id,t]]))}function mc(t,r,i,s,u){const{elevateNodesOnSelect:a,nodeOrigin:c,nodeExtent:d,zIndexMode:p}=pc(hc,s),g=t.parentId,v=r.get(g);if(!v){console.warn(`Parent node ${g} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}rw(t,i),u&&!v.parentId&&v.internals.rootParentIndex===void 0&&p==="auto"&&(v.internals.rootParentIndex=++u.i,v.internals.z=v.internals.z+u.i*Jx),u&&v.internals.rootParentIndex!==void 0&&(u.i=v.internals.rootParentIndex);const m=a&&!gc(p)?g0:0,{x:y,y:x,z:S}=ow(t,v,c,d,m,p),{positionAbsolute:_}=t.internals,w=y!==_.x||x!==_.y;(w||S!==t.internals.z)&&r.set(t.id,{...t,internals:{...t.internals,positionAbsolute:w?{x:y,y:x}:_,z:S}})}function m0(t,r,i){const s=Vt(t.zIndex)?t.zIndex:0;return gc(i)?s:s+(t.selected?r:0)}function ow(t,r,i,s,u,a){const{x:c,y:d}=r.internals.positionAbsolute,p=yn(t),g=_i(t,i),v=lo(t.extent)?yr(g,t.extent,p):g;let m=yr({x:c+v.x,y:d+v.y},s,p);t.extent==="parent"&&(m=r0(m,p,r));const y=m0(t,u,a),x=r.internals.z??0;return{x:m.x,y:m.y,z:x>=y?x+1:y}}function yc(t,r,i,s=[0,0]){var c;const u=[],a=new Map;for(const d of t){const p=r.get(d.parentId);if(!p)continue;const g=((c=a.get(d.parentId))==null?void 0:c.expandedRect)??so(p),v=i0(g,d.rect);a.set(d.parentId,{expandedRect:v,parent:p})}return a.size>0&&a.forEach(({expandedRect:d,parent:p},g)=>{var N;const v=p.internals.positionAbsolute,m=yn(p),y=p.origin??s,x=d.x0||S>0||k||P)&&(u.push({id:g,type:"position",position:{x:p.position.x-x+k,y:p.position.y-S+P}}),(N=i.get(g))==null||N.forEach(C=>{t.some(j=>j.id===C.id)||u.push({id:C.id,type:"position",position:{x:C.position.x+x,y:C.position.y+S}})})),(m.width0){const x=yc(y,r,i,u);g.push(...x)}return{changes:g,updatedInternals:p}}async function sw({delta:t,panZoom:r,transform:i,translateExtent:s,width:u,height:a}){if(!r||!t.x&&!t.y)return Promise.resolve(!1);const c=await r.setViewportConstrained({x:i[0]+t.x,y:i[1]+t.y,zoom:i[2]},[[0,0],[u,a]],s),d=!!c&&(c.x!==i[0]||c.y!==i[1]||c.k!==i[2]);return Promise.resolve(d)}function Mh(t,r,i,s,u,a){let c=u;const d=s.get(c)||new Map;s.set(c,d.set(i,r)),c=`${u}-${t}`;const p=s.get(c)||new Map;if(s.set(c,p.set(i,r)),a){c=`${u}-${t}-${a}`;const g=s.get(c)||new Map;s.set(c,g.set(i,r))}}function y0(t,r,i){t.clear(),r.clear();for(const s of i){const{source:u,target:a,sourceHandle:c=null,targetHandle:d=null}=s,p={edgeId:s.id,source:u,target:a,sourceHandle:c,targetHandle:d},g=`${u}-${c}--${a}-${d}`,v=`${a}-${d}--${u}-${c}`;Mh("source",p,v,t,u,c),Mh("target",p,g,t,a,d),r.set(s.id,s)}}function v0(t,r){if(!t.parentId)return!1;const i=r.get(t.parentId);return i?i.selected?!0:v0(i,r):!1}function Ph(t,r,i){var u;let s=t;do{if((u=s==null?void 0:s.matches)!=null&&u.call(s,r))return!0;if(s===i)return!1;s=s==null?void 0:s.parentElement}while(s);return!1}function lw(t,r,i,s){const u=new Map;for(const[a,c]of t)if((c.selected||c.id===s)&&(!c.parentId||!v0(c,t))&&(c.draggable||r&&typeof c.draggable>"u")){const d=t.get(a);d&&u.set(a,{id:a,position:d.position||{x:0,y:0},distance:{x:i.x-d.internals.positionAbsolute.x,y:i.y-d.internals.positionAbsolute.y},extent:d.extent,parentId:d.parentId,origin:d.origin,expandParent:d.expandParent,internals:{positionAbsolute:d.internals.positionAbsolute||{x:0,y:0}},measured:{width:d.measured.width??0,height:d.measured.height??0}})}return u}function Ia({nodeId:t,dragItems:r,nodeLookup:i,dragging:s=!0}){var c,d,p;const u=[];for(const[g,v]of r){const m=(c=i.get(g))==null?void 0:c.internals.userNode;m&&u.push({...m,position:v.position,dragging:s})}if(!t)return[u[0],u];const a=(d=i.get(t))==null?void 0:d.internals.userNode;return[a?{...a,position:((p=r.get(t))==null?void 0:p.position)||a.position,dragging:s}:u[0],u]}function uw({dragItems:t,snapGrid:r,x:i,y:s}){const u=t.values().next().value;if(!u)return null;const a={x:i-u.distance.x,y:s-u.distance.y},c=ki(a,r);return{x:c.x-a.x,y:c.y-a.y}}function aw({onNodeMouseDown:t,getStoreItems:r,onDragStart:i,onDrag:s,onDragStop:u}){let a={x:null,y:null},c=0,d=new Map,p=!1,g={x:0,y:0},v=null,m=!1,y=null,x=!1,S=!1,_=null;function w({noDragClassName:P,handleSelector:N,domNode:C,isSelectable:j,nodeId:D,nodeClickDistance:H=0}){y=_t(C);function B({x:U,y:Z}){const{nodeLookup:z,nodeExtent:b,snapGrid:F,snapToGrid:Y,nodeOrigin:T,onNodeDrag:L,onSelectionDrag:V,onError:M,updateNodePositions:R}=r();a={x:U,y:Z};let te=!1;const re=d.size>1,le=re&&b?Xa(Ei(d)):null,ue=re&&Y?uw({dragItems:d,snapGrid:F,x:U,y:Z}):null;for(const[ae,ee]of d){if(!z.has(ae))continue;let ce={x:U-ee.distance.x,y:Z-ee.distance.y};Y&&(ce=ue?{x:Math.round(ce.x+ue.x),y:Math.round(ce.y+ue.y)}:ki(ce,F));let we=null;if(re&&b&&!ee.extent&&le){const{positionAbsolute:ye}=ee.internals,Ce=ye.x-le.x+b[0][0],Te=ye.x+ee.measured.width-le.x2+b[1][0],Me=ye.y-le.y+b[0][1],We=ye.y+ee.measured.height-le.y2+b[1][1];we=[[Ce,Me],[Te,We]]}const{position:_e,positionAbsolute:Se}=n0({nodeId:ae,nextPosition:ce,nodeLookup:z,nodeExtent:we||b,nodeOrigin:T,onError:M});te=te||ee.position.x!==_e.x||ee.position.y!==_e.y,ee.position=_e,ee.internals.positionAbsolute=Se}if(S=S||te,!!te&&(R(d,!0),_&&(s||L||!D&&V))){const[ae,ee]=Ia({nodeId:D,dragItems:d,nodeLookup:z});s==null||s(_,d,ae,ee),L==null||L(_,ae,ee),D||V==null||V(_,ee)}}async function X(){if(!v)return;const{transform:U,panBy:Z,autoPanSpeed:z,autoPanOnNodeDrag:b}=r();if(!b){p=!1,cancelAnimationFrame(c);return}const[F,Y]=o0(g,v,z);(F!==0||Y!==0)&&(a.x=(a.x??0)-F/U[2],a.y=(a.y??0)-Y/U[2],await Z({x:F,y:Y})&&B(a)),c=requestAnimationFrame(X)}function J(U){var re;const{nodeLookup:Z,multiSelectionActive:z,nodesDraggable:b,transform:F,snapGrid:Y,snapToGrid:T,selectNodesOnDrag:L,onNodeDragStart:V,onSelectionDragStart:M,unselectNodesAndEdges:R}=r();m=!0,(!L||!j)&&!z&&D&&((re=Z.get(D))!=null&&re.selected||R()),j&&L&&D&&(t==null||t(D));const te=ui(U.sourceEvent,{transform:F,snapGrid:Y,snapToGrid:T,containerBounds:v});if(a=te,d=lw(Z,b,te,D),d.size>0&&(i||V||!D&&M)){const[le,ue]=Ia({nodeId:D,dragItems:d,nodeLookup:Z});i==null||i(U.sourceEvent,d,le,ue),V==null||V(U.sourceEvent,le,ue),D||M==null||M(U.sourceEvent,ue)}}const W=$p().clickDistance(H).on("start",U=>{const{domNode:Z,nodeDragThreshold:z,transform:b,snapGrid:F,snapToGrid:Y}=r();v=(Z==null?void 0:Z.getBoundingClientRect())||null,x=!1,S=!1,_=U.sourceEvent,z===0&&J(U),a=ui(U.sourceEvent,{transform:b,snapGrid:F,snapToGrid:Y,containerBounds:v}),g=Bt(U.sourceEvent,v)}).on("drag",U=>{const{autoPanOnNodeDrag:Z,transform:z,snapGrid:b,snapToGrid:F,nodeDragThreshold:Y,nodeLookup:T}=r(),L=ui(U.sourceEvent,{transform:z,snapGrid:b,snapToGrid:F,containerBounds:v});if(_=U.sourceEvent,(U.sourceEvent.type==="touchmove"&&U.sourceEvent.touches.length>1||D&&!T.has(D))&&(x=!0),!x){if(!p&&Z&&m&&(p=!0,X()),!m){const V=Bt(U.sourceEvent,v),M=V.x-g.x,R=V.y-g.y;Math.sqrt(M*M+R*R)>Y&&J(U)}(a.x!==L.xSnapped||a.y!==L.ySnapped)&&d&&m&&(g=Bt(U.sourceEvent,v),B(L))}}).on("end",U=>{if(!(!m||x)&&(p=!1,m=!1,cancelAnimationFrame(c),d.size>0)){const{nodeLookup:Z,updateNodePositions:z,onNodeDragStop:b,onSelectionDragStop:F}=r();if(S&&(z(d,!1),S=!1),u||b||!D&&F){const[Y,T]=Ia({nodeId:D,dragItems:d,nodeLookup:Z,dragging:!1});u==null||u(U.sourceEvent,d,Y,T),b==null||b(U.sourceEvent,Y,T),D||F==null||F(U.sourceEvent,T)}}}).filter(U=>{const Z=U.target;return!U.button&&(!P||!Ph(Z,`.${P}`,C))&&(!N||Ph(Z,N,C))});y.call(W)}function k(){y==null||y.on(".drag",null)}return{update:w,destroy:k}}function cw(t,r,i){const s=[],u={x:t.x-i,y:t.y-i,width:i*2,height:i*2};for(const a of r.values())gi(u,so(a))>0&&s.push(a);return s}const fw=250;function dw(t,r,i,s){var d,p;let u=[],a=1/0;const c=cw(t,i,r+fw);for(const g of c){const v=[...((d=g.internals.handleBounds)==null?void 0:d.source)??[],...((p=g.internals.handleBounds)==null?void 0:p.target)??[]];for(const m of v){if(s.nodeId===m.nodeId&&s.type===m.type&&s.id===m.id)continue;const{x:y,y:x}=vr(g,m,m.position,!0),S=Math.sqrt(Math.pow(y-t.x,2)+Math.pow(x-t.y,2));S>r||(S1){const g=s.type==="source"?"target":"source";return u.find(v=>v.type===g)??u[0]}return u[0]}function x0(t,r,i,s,u,a=!1){var g,v,m;const c=s.get(t);if(!c)return null;const d=u==="strict"?(g=c.internals.handleBounds)==null?void 0:g[r]:[...((v=c.internals.handleBounds)==null?void 0:v.source)??[],...((m=c.internals.handleBounds)==null?void 0:m.target)??[]],p=(i?d==null?void 0:d.find(y=>y.id===i):d==null?void 0:d[0])??null;return p&&a?{...p,...vr(c,p,p.position,!0)}:p}function w0(t,r){return t||(r!=null&&r.classList.contains("target")?"target":r!=null&&r.classList.contains("source")?"source":null)}function hw(t,r){let i=null;return r?i=!0:t&&!r&&(i=!1),i}const S0=()=>!0;function pw(t,{connectionMode:r,connectionRadius:i,handleId:s,nodeId:u,edgeUpdaterType:a,isTarget:c,domNode:d,nodeLookup:p,lib:g,autoPanOnConnect:v,flowId:m,panBy:y,cancelConnection:x,onConnectStart:S,onConnect:_,onConnectEnd:w,isValidConnection:k=S0,onReconnectEnd:P,updateConnection:N,getTransform:C,getFromHandle:j,autoPanSpeed:D,dragThreshold:H=1,handleDomNode:B}){const X=u0(t.target);let J=0,W;const{x:U,y:Z}=Bt(t),z=w0(a,B),b=d==null?void 0:d.getBoundingClientRect();let F=!1;if(!b||!z)return;const Y=x0(u,z,s,p,r);if(!Y)return;let T=Bt(t,b),L=!1,V=null,M=!1,R=null;function te(){if(!v||!b)return;const[_e,Se]=o0(T,b,D);y({x:_e,y:Se}),J=requestAnimationFrame(te)}const re={...Y,nodeId:u,type:z,position:Y.position},le=p.get(u);let ae={inProgress:!0,isValid:null,from:vr(le,re,me.Left,!0),fromHandle:re,fromPosition:re.position,fromNode:le,to:T,toHandle:null,toPosition:mh[re.position],toNode:null,pointer:T};function ee(){F=!0,N(ae),S==null||S(t,{nodeId:u,handleId:s,handleType:z})}H===0&&ee();function ce(_e){if(!F){const{x:We,y:At}=Bt(_e),gt=We-U,mt=At-Z;if(!(gt*gt+mt*mt>H*H))return;ee()}if(!j()||!re){we(_e);return}const Se=C();T=Bt(_e,b),W=dw(Ni(T,Se,!1,[1,1]),i,p,re),L||(te(),L=!0);const ye=_0(_e,{handle:W,connectionMode:r,fromNodeId:u,fromHandleId:s,fromType:c?"target":"source",isValidConnection:k,doc:X,lib:g,flowId:m,nodeLookup:p});R=ye.handleDomNode,V=ye.connection,M=hw(!!W,ye.isValid);const Ce=p.get(u),Te=Ce?vr(Ce,re,me.Left,!0):ae.from,Me={...ae,from:Te,isValid:M,to:ye.toHandle&&M?vl({x:ye.toHandle.x,y:ye.toHandle.y},Se):T,toHandle:ye.toHandle,toPosition:M&&ye.toHandle?ye.toHandle.position:mh[re.position],toNode:ye.toHandle?p.get(ye.toHandle.nodeId):null,pointer:T};N(Me),ae=Me}function we(_e){if(!("touches"in _e&&_e.touches.length>0)){if(F){(W||R)&&V&&M&&(_==null||_(V));const{inProgress:Se,...ye}=ae,Ce={...ye,toPosition:ae.toHandle?ae.toPosition:null};w==null||w(_e,Ce),a&&(P==null||P(_e,Ce))}x(),cancelAnimationFrame(J),L=!1,M=!1,V=null,R=null,X.removeEventListener("mousemove",ce),X.removeEventListener("mouseup",we),X.removeEventListener("touchmove",ce),X.removeEventListener("touchend",we)}}X.addEventListener("mousemove",ce),X.addEventListener("mouseup",we),X.addEventListener("touchmove",ce),X.addEventListener("touchend",we)}function _0(t,{handle:r,connectionMode:i,fromNodeId:s,fromHandleId:u,fromType:a,doc:c,lib:d,flowId:p,isValidConnection:g=S0,nodeLookup:v}){const m=a==="target",y=r?c.querySelector(`.${d}-flow__handle[data-id="${p}-${r==null?void 0:r.nodeId}-${r==null?void 0:r.id}-${r==null?void 0:r.type}"]`):null,{x,y:S}=Bt(t),_=c.elementFromPoint(x,S),w=_!=null&&_.classList.contains(`${d}-flow__handle`)?_:y,k={handleDomNode:w,isValid:!1,connection:null,toHandle:null};if(w){const P=w0(void 0,w),N=w.getAttribute("data-nodeid"),C=w.getAttribute("data-handleid"),j=w.classList.contains("connectable"),D=w.classList.contains("connectableend");if(!N||!P)return k;const H={source:m?N:s,sourceHandle:m?C:u,target:m?s:N,targetHandle:m?u:C};k.connection=H;const X=j&&D&&(i===ro.Strict?m&&P==="source"||!m&&P==="target":N!==s||C!==u);k.isValid=X&&g(H),k.toHandle=x0(N,P,C,v,i,!0)}return k}const Za={onPointerDown:pw,isValid:_0};function gw({domNode:t,panZoom:r,getTransform:i,getViewScale:s}){const u=_t(t);function a({translateExtent:d,width:p,height:g,zoomStep:v=1,pannable:m=!0,zoomable:y=!0,inversePan:x=!1}){const S=N=>{if(N.sourceEvent.type!=="wheel"||!r)return;const C=i(),j=N.sourceEvent.ctrlKey&&mi()?10:1,D=-N.sourceEvent.deltaY*(N.sourceEvent.deltaMode===1?.05:N.sourceEvent.deltaMode?1:.002)*v,H=C[2]*Math.pow(2,D*j);r.scaleTo(H)};let _=[0,0];const w=N=>{(N.sourceEvent.type==="mousedown"||N.sourceEvent.type==="touchstart")&&(_=[N.sourceEvent.clientX??N.sourceEvent.touches[0].clientX,N.sourceEvent.clientY??N.sourceEvent.touches[0].clientY])},k=N=>{const C=i();if(N.sourceEvent.type!=="mousemove"&&N.sourceEvent.type!=="touchmove"||!r)return;const j=[N.sourceEvent.clientX??N.sourceEvent.touches[0].clientX,N.sourceEvent.clientY??N.sourceEvent.touches[0].clientY],D=[j[0]-_[0],j[1]-_[1]];_=j;const H=s()*Math.max(C[2],Math.log(C[2]))*(x?-1:1),B={x:C[0]-D[0]*H,y:C[1]-D[1]*H},X=[[0,0],[p,g]];r.setViewportConstrained({x:B.x,y:B.y,zoom:C[2]},X,d)},P=Gp().on("start",w).on("zoom",m?k:null).on("zoom.wheel",y?S:null);u.call(P,{})}function c(){u.on("zoom",null)}return{update:a,destroy:c,pointer:Ft}}const Cl=t=>({x:t.x,y:t.y,zoom:t.k}),Ta=({x:t,y:r,zoom:i})=>El.translate(t,r).scale(i),Gr=(t,r)=>t.target.closest(`.${r}`),E0=(t,r)=>r===2&&Array.isArray(t)&&t.includes(2),mw=t=>((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2,Aa=(t,r=0,i=mw,s=()=>{})=>{const u=typeof r=="number"&&r>0;return u||s(),u?t.transition().duration(r).ease(i).on("end",s):t},k0=t=>{const r=t.ctrlKey&&mi()?10:1;return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*r};function yw({zoomPanValues:t,noWheelClassName:r,d3Selection:i,d3Zoom:s,panOnScrollMode:u,panOnScrollSpeed:a,zoomOnPinch:c,onPanZoomStart:d,onPanZoom:p,onPanZoomEnd:g}){return v=>{if(Gr(v,r))return v.ctrlKey&&v.preventDefault(),!1;v.preventDefault(),v.stopImmediatePropagation();const m=i.property("__zoom").k||1;if(v.ctrlKey&&c){const w=Ft(v),k=k0(v),P=m*Math.pow(2,k);s.scaleTo(i,P,w,v);return}const y=v.deltaMode===1?20:1;let x=u===pr.Vertical?0:v.deltaX*y,S=u===pr.Horizontal?0:v.deltaY*y;!mi()&&v.shiftKey&&u!==pr.Vertical&&(x=v.deltaY*y,S=0),s.translateBy(i,-(x/m)*a,-(S/m)*a,{internal:!0});const _=Cl(i.property("__zoom"));clearTimeout(t.panScrollTimeout),t.isPanScrolling?(p==null||p(v,_),t.panScrollTimeout=setTimeout(()=>{g==null||g(v,_),t.isPanScrolling=!1},150)):(t.isPanScrolling=!0,d==null||d(v,_))}}function vw({noWheelClassName:t,preventScrolling:r,d3ZoomHandler:i}){return function(s,u){const a=s.type==="wheel",c=!r&&a&&!s.ctrlKey,d=Gr(s,t);if(s.ctrlKey&&a&&d&&s.preventDefault(),c||d)return null;s.preventDefault(),i.call(this,s,u)}}function xw({zoomPanValues:t,onDraggingChange:r,onPanZoomStart:i}){return s=>{var a,c,d;if((a=s.sourceEvent)!=null&&a.internal)return;const u=Cl(s.transform);t.mouseButton=((c=s.sourceEvent)==null?void 0:c.button)||0,t.isZoomingOrPanning=!0,t.prevViewport=u,((d=s.sourceEvent)==null?void 0:d.type)==="mousedown"&&r(!0),i&&(i==null||i(s.sourceEvent,u))}}function ww({zoomPanValues:t,panOnDrag:r,onPaneContextMenu:i,onTransformChange:s,onPanZoom:u}){return a=>{var c,d;t.usedRightMouseButton=!!(i&&E0(r,t.mouseButton??0)),(c=a.sourceEvent)!=null&&c.sync||s([a.transform.x,a.transform.y,a.transform.k]),u&&!((d=a.sourceEvent)!=null&&d.internal)&&(u==null||u(a.sourceEvent,Cl(a.transform)))}}function Sw({zoomPanValues:t,panOnDrag:r,panOnScroll:i,onDraggingChange:s,onPanZoomEnd:u,onPaneContextMenu:a}){return c=>{var d;if(!((d=c.sourceEvent)!=null&&d.internal)&&(t.isZoomingOrPanning=!1,a&&E0(r,t.mouseButton??0)&&!t.usedRightMouseButton&&c.sourceEvent&&a(c.sourceEvent),t.usedRightMouseButton=!1,s(!1),u)){const p=Cl(c.transform);t.prevViewport=p,clearTimeout(t.timerId),t.timerId=setTimeout(()=>{u==null||u(c.sourceEvent,p)},i?150:0)}}}function _w({zoomActivationKeyPressed:t,zoomOnScroll:r,zoomOnPinch:i,panOnDrag:s,panOnScroll:u,zoomOnDoubleClick:a,userSelectionActive:c,noWheelClassName:d,noPanClassName:p,lib:g,connectionInProgress:v}){return m=>{var w;const y=t||r,x=i&&m.ctrlKey,S=m.type==="wheel";if(m.button===1&&m.type==="mousedown"&&(Gr(m,`${g}-flow__node`)||Gr(m,`${g}-flow__edge`)))return!0;if(!s&&!y&&!u&&!a&&!i||c||v&&!S||Gr(m,d)&&S||Gr(m,p)&&(!S||u&&S&&!t)||!i&&m.ctrlKey&&S)return!1;if(!i&&m.type==="touchstart"&&((w=m.touches)==null?void 0:w.length)>1)return m.preventDefault(),!1;if(!y&&!u&&!x&&S||!s&&(m.type==="mousedown"||m.type==="touchstart")||Array.isArray(s)&&!s.includes(m.button)&&m.type==="mousedown")return!1;const _=Array.isArray(s)&&s.includes(m.button)||!m.button||m.button<=1;return(!m.ctrlKey||S)&&_}}function Ew({domNode:t,minZoom:r,maxZoom:i,translateExtent:s,viewport:u,onPanZoom:a,onPanZoomStart:c,onPanZoomEnd:d,onDraggingChange:p}){const g={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},v=t.getBoundingClientRect(),m=Gp().scaleExtent([r,i]).translateExtent(s),y=_t(t).call(m);P({x:u.x,y:u.y,zoom:io(u.zoom,r,i)},[[0,0],[v.width,v.height]],s);const x=y.on("wheel.zoom"),S=y.on("dblclick.zoom");m.wheelDelta(k0);function _(W,U){return y?new Promise(Z=>{m==null||m.interpolate((U==null?void 0:U.interpolate)==="linear"?li:sl).transform(Aa(y,U==null?void 0:U.duration,U==null?void 0:U.ease,()=>Z(!0)),W)}):Promise.resolve(!1)}function w({noWheelClassName:W,noPanClassName:U,onPaneContextMenu:Z,userSelectionActive:z,panOnScroll:b,panOnDrag:F,panOnScrollMode:Y,panOnScrollSpeed:T,preventScrolling:L,zoomOnPinch:V,zoomOnScroll:M,zoomOnDoubleClick:R,zoomActivationKeyPressed:te,lib:re,onTransformChange:le,connectionInProgress:ue,paneClickDistance:ae,selectionOnDrag:ee}){z&&!g.isZoomingOrPanning&&k();const ce=b&&!te&&!z;m.clickDistance(ee?1/0:!Vt(ae)||ae<0?0:ae);const we=ce?yw({zoomPanValues:g,noWheelClassName:W,d3Selection:y,d3Zoom:m,panOnScrollMode:Y,panOnScrollSpeed:T,zoomOnPinch:V,onPanZoomStart:c,onPanZoom:a,onPanZoomEnd:d}):vw({noWheelClassName:W,preventScrolling:L,d3ZoomHandler:x});if(y.on("wheel.zoom",we,{passive:!1}),!z){const Se=xw({zoomPanValues:g,onDraggingChange:p,onPanZoomStart:c});m.on("start",Se);const ye=ww({zoomPanValues:g,panOnDrag:F,onPaneContextMenu:!!Z,onPanZoom:a,onTransformChange:le});m.on("zoom",ye);const Ce=Sw({zoomPanValues:g,panOnDrag:F,panOnScroll:b,onPaneContextMenu:Z,onPanZoomEnd:d,onDraggingChange:p});m.on("end",Ce)}const _e=_w({zoomActivationKeyPressed:te,panOnDrag:F,zoomOnScroll:M,panOnScroll:b,zoomOnDoubleClick:R,zoomOnPinch:V,userSelectionActive:z,noPanClassName:U,noWheelClassName:W,lib:re,connectionInProgress:ue});m.filter(_e),R?y.on("dblclick.zoom",S):y.on("dblclick.zoom",null)}function k(){m.on("zoom",null)}async function P(W,U,Z){const z=Ta(W),b=m==null?void 0:m.constrain()(z,U,Z);return b&&await _(b),new Promise(F=>F(b))}async function N(W,U){const Z=Ta(W);return await _(Z,U),new Promise(z=>z(Z))}function C(W){if(y){const U=Ta(W),Z=y.property("__zoom");(Z.k!==W.zoom||Z.x!==W.x||Z.y!==W.y)&&(m==null||m.transform(y,U,null,{sync:!0}))}}function j(){const W=y?Kp(y.node()):{x:0,y:0,k:1};return{x:W.x,y:W.y,zoom:W.k}}function D(W,U){return y?new Promise(Z=>{m==null||m.interpolate((U==null?void 0:U.interpolate)==="linear"?li:sl).scaleTo(Aa(y,U==null?void 0:U.duration,U==null?void 0:U.ease,()=>Z(!0)),W)}):Promise.resolve(!1)}function H(W,U){return y?new Promise(Z=>{m==null||m.interpolate((U==null?void 0:U.interpolate)==="linear"?li:sl).scaleBy(Aa(y,U==null?void 0:U.duration,U==null?void 0:U.ease,()=>Z(!0)),W)}):Promise.resolve(!1)}function B(W){m==null||m.scaleExtent(W)}function X(W){m==null||m.translateExtent(W)}function J(W){const U=!Vt(W)||W<0?0:W;m==null||m.clickDistance(U)}return{update:w,destroy:k,setViewport:N,setViewportConstrained:P,getViewport:j,scaleTo:D,scaleBy:H,setScaleExtent:B,setTranslateExtent:X,syncViewport:C,setClickDistance:J}}var uo;(function(t){t.Line="line",t.Handle="handle"})(uo||(uo={}));function kw({width:t,prevWidth:r,height:i,prevHeight:s,affectsX:u,affectsY:a}){const c=t-r,d=i-s,p=[c>0?1:c<0?-1:0,d>0?1:d<0?-1:0];return c&&u&&(p[0]=p[0]*-1),d&&a&&(p[1]=p[1]*-1),p}function zh(t){const r=t.includes("right")||t.includes("left"),i=t.includes("bottom")||t.includes("top"),s=t.includes("left"),u=t.includes("top");return{isHorizontal:r,isVertical:i,affectsX:s,affectsY:u}}function Hn(t,r){return Math.max(0,r-t)}function Vn(t,r){return Math.max(0,t-r)}function Js(t,r,i){return Math.max(0,r-t,t-i)}function Ih(t,r){return t?!r:r}function Nw(t,r,i,s,u,a,c,d){let{affectsX:p,affectsY:g}=r;const{isHorizontal:v,isVertical:m}=r,y=v&&m,{xSnapped:x,ySnapped:S}=i,{minWidth:_,maxWidth:w,minHeight:k,maxHeight:P}=s,{x:N,y:C,width:j,height:D,aspectRatio:H}=t;let B=Math.floor(v?x-t.pointerX:0),X=Math.floor(m?S-t.pointerY:0);const J=j+(p?-B:B),W=D+(g?-X:X),U=-a[0]*j,Z=-a[1]*D;let z=Js(J,_,w),b=Js(W,k,P);if(c){let T=0,L=0;p&&B<0?T=Hn(N+B+U,c[0][0]):!p&&B>0&&(T=Vn(N+J+U,c[1][0])),g&&X<0?L=Hn(C+X+Z,c[0][1]):!g&&X>0&&(L=Vn(C+W+Z,c[1][1])),z=Math.max(z,T),b=Math.max(b,L)}if(d){let T=0,L=0;p&&B>0?T=Vn(N+B,d[0][0]):!p&&B<0&&(T=Hn(N+J,d[1][0])),g&&X>0?L=Vn(C+X,d[0][1]):!g&&X<0&&(L=Hn(C+W,d[1][1])),z=Math.max(z,T),b=Math.max(b,L)}if(u){if(v){const T=Js(J/H,k,P)*H;if(z=Math.max(z,T),c){let L=0;!p&&!g||p&&!g&&y?L=Vn(C+Z+J/H,c[1][1])*H:L=Hn(C+Z+(p?B:-B)/H,c[0][1])*H,z=Math.max(z,L)}if(d){let L=0;!p&&!g||p&&!g&&y?L=Hn(C+J/H,d[1][1])*H:L=Vn(C+(p?B:-B)/H,d[0][1])*H,z=Math.max(z,L)}}if(m){const T=Js(W*H,_,w)/H;if(b=Math.max(b,T),c){let L=0;!p&&!g||g&&!p&&y?L=Vn(N+W*H+U,c[1][0])/H:L=Hn(N+(g?X:-X)*H+U,c[0][0])/H,b=Math.max(b,L)}if(d){let L=0;!p&&!g||g&&!p&&y?L=Hn(N+W*H,d[1][0])/H:L=Vn(N+(g?X:-X)*H,d[0][0])/H,b=Math.max(b,L)}}}X=X+(X<0?b:-b),B=B+(B<0?z:-z),u&&(y?J>W*H?X=(Ih(p,g)?-B:B)/H:B=(Ih(p,g)?-X:X)*H:v?(X=B/H,g=p):(B=X*H,p=g));const F=p?N+B:N,Y=g?C+X:C;return{width:j+(p?-B:B),height:D+(g?-X:X),x:a[0]*B*(p?-1:1)+F,y:a[1]*X*(g?-1:1)+Y}}const N0={width:0,height:0,x:0,y:0},Cw={...N0,pointerX:0,pointerY:0,aspectRatio:1};function Mw(t){return[[0,0],[t.measured.width,t.measured.height]]}function Pw(t,r,i){const s=r.position.x+t.position.x,u=r.position.y+t.position.y,a=t.measured.width??0,c=t.measured.height??0,d=i[0]*a,p=i[1]*c;return[[s-d,u-p],[s+a-d,u+c-p]]}function zw({domNode:t,nodeId:r,getStoreItems:i,onChange:s,onEnd:u}){const a=_t(t);let c={controlDirection:zh("bottom-right"),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function d({controlPosition:g,boundaries:v,keepAspectRatio:m,resizeDirection:y,onResizeStart:x,onResize:S,onResizeEnd:_,shouldResize:w}){let k={...N0},P={...Cw};c={boundaries:v,resizeDirection:y,keepAspectRatio:m,controlDirection:zh(g)};let N,C=null,j=[],D,H,B,X=!1;const J=$p().on("start",W=>{const{nodeLookup:U,transform:Z,snapGrid:z,snapToGrid:b,nodeOrigin:F,paneDomNode:Y}=i();if(N=U.get(r),!N)return;C=(Y==null?void 0:Y.getBoundingClientRect())??null;const{xSnapped:T,ySnapped:L}=ui(W.sourceEvent,{transform:Z,snapGrid:z,snapToGrid:b,containerBounds:C});k={width:N.measured.width??0,height:N.measured.height??0,x:N.position.x??0,y:N.position.y??0},P={...k,pointerX:T,pointerY:L,aspectRatio:k.width/k.height},D=void 0,N.parentId&&(N.extent==="parent"||N.expandParent)&&(D=U.get(N.parentId),H=D&&N.extent==="parent"?Mw(D):void 0),j=[],B=void 0;for(const[V,M]of U)if(M.parentId===r&&(j.push({id:V,position:{...M.position},extent:M.extent}),M.extent==="parent"||M.expandParent)){const R=Pw(M,N,M.origin??F);B?B=[[Math.min(R[0][0],B[0][0]),Math.min(R[0][1],B[0][1])],[Math.max(R[1][0],B[1][0]),Math.max(R[1][1],B[1][1])]]:B=R}x==null||x(W,{...k})}).on("drag",W=>{const{transform:U,snapGrid:Z,snapToGrid:z,nodeOrigin:b}=i(),F=ui(W.sourceEvent,{transform:U,snapGrid:Z,snapToGrid:z,containerBounds:C}),Y=[];if(!N)return;const{x:T,y:L,width:V,height:M}=k,R={},te=N.origin??b,{width:re,height:le,x:ue,y:ae}=Nw(P,c.controlDirection,F,c.boundaries,c.keepAspectRatio,te,H,B),ee=re!==V,ce=le!==M,we=ue!==T&&ee,_e=ae!==L&&ce;if(!we&&!_e&&!ee&&!ce)return;if((we||_e||te[0]===1||te[1]===1)&&(R.x=we?ue:k.x,R.y=_e?ae:k.y,k.x=R.x,k.y=R.y,j.length>0)){const Te=ue-T,Me=ae-L;for(const We of j)We.position={x:We.position.x-Te+te[0]*(re-V),y:We.position.y-Me+te[1]*(le-M)},Y.push(We)}if((ee||ce)&&(R.width=ee&&(!c.resizeDirection||c.resizeDirection==="horizontal")?re:k.width,R.height=ce&&(!c.resizeDirection||c.resizeDirection==="vertical")?le:k.height,k.width=R.width,k.height=R.height),D&&N.expandParent){const Te=te[0]*(R.width??0);R.x&&R.x{X&&(_==null||_(W,{...k}),u==null||u({...k}),X=!1)});a.call(J)}function p(){a.on(".drag",null)}return{update:d,destroy:p}}var La={exports:{}},Ra={},Da={exports:{}},$a={};/** - * @license React - * use-sync-external-store-shim.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. - */var Th;function Iw(){if(Th)return $a;Th=1;var t=vi();function r(m,y){return m===y&&(m!==0||1/m===1/y)||m!==m&&y!==y}var i=typeof Object.is=="function"?Object.is:r,s=t.useState,u=t.useEffect,a=t.useLayoutEffect,c=t.useDebugValue;function d(m,y){var x=y(),S=s({inst:{value:x,getSnapshot:y}}),_=S[0].inst,w=S[1];return a(function(){_.value=x,_.getSnapshot=y,p(_)&&w({inst:_})},[m,x,y]),u(function(){return p(_)&&w({inst:_}),m(function(){p(_)&&w({inst:_})})},[m]),c(x),x}function p(m){var y=m.getSnapshot;m=m.value;try{var x=y();return!i(m,x)}catch{return!0}}function g(m,y){return y()}var v=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?g:d;return $a.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:v,$a}var Ah;function Tw(){return Ah||(Ah=1,Da.exports=Iw()),Da.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. - */var Lh;function Aw(){if(Lh)return Ra;Lh=1;var t=vi(),r=Tw();function i(g,v){return g===v&&(g!==0||1/g===1/v)||g!==g&&v!==v}var s=typeof Object.is=="function"?Object.is:i,u=r.useSyncExternalStore,a=t.useRef,c=t.useEffect,d=t.useMemo,p=t.useDebugValue;return Ra.useSyncExternalStoreWithSelector=function(g,v,m,y,x){var S=a(null);if(S.current===null){var _={hasValue:!1,value:null};S.current=_}else _=S.current;S=d(function(){function k(D){if(!P){if(P=!0,N=D,D=y(D),x!==void 0&&_.hasValue){var H=_.value;if(x(H,D))return C=H}return C=D}if(H=C,s(N,D))return H;var B=y(D);return x!==void 0&&x(H,B)?(N=D,H):(N=D,C=B)}var P=!1,N,C,j=m===void 0?null:m;return[function(){return k(v())},j===null?void 0:function(){return k(j())}]},[v,m,y,x]);var w=u(g,S[0],S[1]);return c(function(){_.hasValue=!0,_.value=w},[w]),p(w),w},Ra}var Rh;function Lw(){return Rh||(Rh=1,La.exports=Aw()),La.exports}var Rw=Lw();const Dw=wp(Rw),$w={},Dh=t=>{let r;const i=new Set,s=(v,m)=>{const y=typeof v=="function"?v(r):v;if(!Object.is(y,r)){const x=r;r=m??(typeof y!="object"||y===null)?y:Object.assign({},r,y),i.forEach(S=>S(r,x))}},u=()=>r,p={setState:s,getState:u,getInitialState:()=>g,subscribe:v=>(i.add(v),()=>i.delete(v)),destroy:()=>{($w?"production":void 0)!=="production"&&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."),i.clear()}},g=r=t(s,u,p);return p},jw=t=>t?Dh(t):Dh,{useDebugValue:Ow}=Ym,{useSyncExternalStoreWithSelector:Fw}=Dw,Hw=t=>t;function C0(t,r=Hw,i){const s=Fw(t.subscribe,t.getState,t.getServerState||t.getInitialState,r,i);return Ow(s),s}const $h=(t,r)=>{const i=jw(t),s=(u,a=r)=>C0(i,u,a);return Object.assign(s,i),s},Vw=(t,r)=>t?$h(t,r):$h;function De(t,r){if(Object.is(t,r))return!0;if(typeof t!="object"||t===null||typeof r!="object"||r===null)return!1;if(t instanceof Map&&r instanceof Map){if(t.size!==r.size)return!1;for(const[s,u]of t)if(!Object.is(u,r.get(s)))return!1;return!0}if(t instanceof Set&&r instanceof Set){if(t.size!==r.size)return!1;for(const s of t)if(!r.has(s))return!1;return!0}const i=Object.keys(t);if(i.length!==Object.keys(r).length)return!1;for(const s of i)if(!Object.prototype.hasOwnProperty.call(r,s)||!Object.is(t[s],r[s]))return!1;return!0}var Bw=Sp();const Ml=q.createContext(null),Ww=Ml.Provider,M0=Jt.error001();function Ne(t,r){const i=q.useContext(Ml);if(i===null)throw new Error(M0);return C0(i,t,r)}function je(){const t=q.useContext(Ml);if(t===null)throw new Error(M0);return q.useMemo(()=>({getState:t.getState,setState:t.setState,subscribe:t.subscribe}),[t])}const jh={display:"none"},Uw={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},P0="react-flow__node-desc",z0="react-flow__edge-desc",bw="react-flow__aria-live",Yw=t=>t.ariaLiveMessage,Xw=t=>t.ariaLabelConfig;function Qw({rfId:t}){const r=Ne(Yw);return A.jsx("div",{id:`${bw}-${t}`,"aria-live":"assertive","aria-atomic":"true",style:Uw,children:r})}function Kw({rfId:t,disableKeyboardA11y:r}){const i=Ne(Xw);return A.jsxs(A.Fragment,{children:[A.jsx("div",{id:`${P0}-${t}`,style:jh,children:r?i["node.a11yDescription.default"]:i["node.a11yDescription.keyboardDisabled"]}),A.jsx("div",{id:`${z0}-${t}`,style:jh,children:i["edge.a11yDescription.default"]}),!r&&A.jsx(Qw,{rfId:t})]})}const Ci=q.forwardRef(({position:t="top-left",children:r,className:i,style:s,...u},a)=>{const c=`${t}`.split("-");return A.jsx("div",{className:be(["react-flow__panel",i,...c]),style:s,ref:a,...u,children:r})});Ci.displayName="Panel";function Gw({proOptions:t,position:r="bottom-right"}){return t!=null&&t.hideAttribution?null:A.jsx(Ci,{position:r,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev",children:A.jsx("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const Zw=t=>{const r=[],i=[];for(const[,s]of t.nodeLookup)s.selected&&r.push(s.internals.userNode);for(const[,s]of t.edgeLookup)s.selected&&i.push(s);return{selectedNodes:r,selectedEdges:i}},el=t=>t.id;function qw(t,r){return De(t.selectedNodes.map(el),r.selectedNodes.map(el))&&De(t.selectedEdges.map(el),r.selectedEdges.map(el))}function Jw({onSelectionChange:t}){const r=je(),{selectedNodes:i,selectedEdges:s}=Ne(Zw,qw);return q.useEffect(()=>{const u={nodes:i,edges:s};t==null||t(u),r.getState().onSelectionChangeHandlers.forEach(a=>a(u))},[i,s,t]),null}const e2=t=>!!t.onSelectionChangeHandlers;function t2({onSelectionChange:t}){const r=Ne(e2);return t||r?A.jsx(Jw,{onSelectionChange:t}):null}const qa=typeof window<"u"?q.useLayoutEffect:q.useEffect,I0=[0,0],n2={x:0,y:0,zoom:1},r2=["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"],Oh=[...r2,"rfId"],o2=t=>({setNodes:t.setNodes,setEdges:t.setEdges,setMinZoom:t.setMinZoom,setMaxZoom:t.setMaxZoom,setTranslateExtent:t.setTranslateExtent,setNodeExtent:t.setNodeExtent,reset:t.reset,setDefaultNodesAndEdges:t.setDefaultNodesAndEdges}),Fh={translateExtent:hi,nodeOrigin:I0,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function i2(t){const{setNodes:r,setEdges:i,setMinZoom:s,setMaxZoom:u,setTranslateExtent:a,setNodeExtent:c,reset:d,setDefaultNodesAndEdges:p}=Ne(o2,De),g=je();qa(()=>(p(t.defaultNodes,t.defaultEdges),()=>{v.current=Fh,d()}),[]);const v=q.useRef(Fh);return qa(()=>{for(const m of Oh){const y=t[m],x=v.current[m];y!==x&&(typeof t[m]>"u"||(m==="nodes"?r(y):m==="edges"?i(y):m==="minZoom"?s(y):m==="maxZoom"?u(y):m==="translateExtent"?a(y):m==="nodeExtent"?c(y):m==="ariaLabelConfig"?g.setState({ariaLabelConfig:Vx(y)}):m==="fitView"?g.setState({fitViewQueued:y}):m==="fitViewOptions"?g.setState({fitViewOptions:y}):g.setState({[m]:y})))}v.current=t},Oh.map(m=>t[m])),null}function Hh(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function s2(t){var s;const[r,i]=q.useState(t==="system"?null:t);return q.useEffect(()=>{if(t!=="system"){i(t);return}const u=Hh(),a=()=>i(u!=null&&u.matches?"dark":"light");return a(),u==null||u.addEventListener("change",a),()=>{u==null||u.removeEventListener("change",a)}},[t]),r!==null?r:(s=Hh())!=null&&s.matches?"dark":"light"}const Vh=typeof document<"u"?document:null;function yi(t=null,r={target:Vh,actInsideInputWithModifier:!0}){const[i,s]=q.useState(!1),u=q.useRef(!1),a=q.useRef(new Set([])),[c,d]=q.useMemo(()=>{if(t!==null){const g=(Array.isArray(t)?t:[t]).filter(m=>typeof m=="string").map(m=>m.replace("+",` +var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),l=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function D(e,t){return E(e.type,t,e.props)}function O(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function k(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var A=/\/+/g;function j(e,t){return typeof e==`object`&&e&&e.key!=null?k(``+e.key):t.toString(36)}function M(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function N(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,N(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+j(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(A,`$&/`)+`/`),N(o,r,i,``,function(e){return e})):o!=null&&(O(o)&&(o=D(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(A,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u{t.exports=l()})),d=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,O());else{var t=n(l);t!==null&&j(x,t.startTime-e)}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-Tt&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&j(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var k=new MessageChannel,A=k.port2;k.port1.onmessage=D,O=function(){A.postMessage(null)}}else O=function(){_(D,0)};function j(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,j(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,O()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),f=o(((e,t)=>{t.exports=d()})),p=o((e=>{var t=u();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=p()})),h=o((e=>{var t=f(),n=u(),r=m();function i(e){var t=`https://react.dev/errors/`+e;if(1R||(e.current=te[R],te[R]=null,R--)}function V(e,t){R++,te[R]=e.current,e.current=t}var ne=z(null),re=z(null),ie=z(null),ae=z(null);function oe(e,t){switch(V(ie,t),V(re,e),V(ne,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Hd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Hd(t),e=Ud(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}B(ne),V(ne,e)}function se(){B(ne),B(re),B(ie)}function ce(e){e.memoizedState!==null&&V(ae,e);var t=ne.current,n=Ud(t,e.type);t!==n&&(V(re,e),V(ne,n))}function le(e){re.current===e&&(B(ne),B(re)),ae.current===e&&(B(ae),Qf._currentValue=L)}var ue,de;function fe(e){if(ue===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);ue=t&&t[1]||``,de=-1)`:-1i||c[r]!==l[i]){var u=` +`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{pe=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?fe(n):``}function he(e,t){switch(e.tag){case 26:case 27:case 5:return fe(e.type);case 16:return fe(`Lazy`);case 13:return e.child!==t&&t!==null?fe(`Suspense Fallback`):fe(`Suspense`);case 19:return fe(`SuspenseList`);case 0:case 15:return me(e.type,!1);case 11:return me(e.type.render,!1);case 1:return me(e.type,!0);case 31:return fe(`Activity`);default:return``}}function ge(e){try{var t=``,n=null;do t+=he(e,n),n=e,e=e.return;while(e);return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}var _e=Object.prototype.hasOwnProperty,ve=t.unstable_scheduleCallback,ye=t.unstable_cancelCallback,be=t.unstable_shouldYield,xe=t.unstable_requestPaint,Se=t.unstable_now,Ce=t.unstable_getCurrentPriorityLevel,we=t.unstable_ImmediatePriority,Te=t.unstable_UserBlockingPriority,Ee=t.unstable_NormalPriority,De=t.unstable_LowPriority,Oe=t.unstable_IdlePriority,ke=t.log,Ae=t.unstable_setDisableYieldValue,je=null,Me=null;function Ne(e){if(typeof ke==`function`&&Ae(e),Me&&typeof Me.setStrictMode==`function`)try{Me.setStrictMode(je,e)}catch{}}var Pe=Math.clz32?Math.clz32:Le,Fe=Math.log,Ie=Math.LN2;function Le(e){return e>>>=0,e===0?32:31-(Fe(e)/Ie|0)|0}var Re=256,ze=262144,Be=4194304;function Ve(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function He(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=Ve(n))):i=Ve(o):i=Ve(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=Ve(n))):i=Ve(o)):i=Ve(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function Ue(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function We(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ge(){var e=Be;return Be<<=1,!(Be&62914560)&&(Be=4194304),e}function Ke(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function qe(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Je(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),sn=!1;if(on)try{var cn={};Object.defineProperty(cn,"passive",{get:function(){sn=!0}}),window.addEventListener(`test`,cn,cn),window.removeEventListener(`test`,cn,cn)}catch{sn=!1}var ln=null,un=null,dn=null;function fn(){if(dn)return dn;var e,t=un,n=t.length,r,i=`value`in ln?ln.value:ln.textContent,a=i.length;for(e=0;e=Wn),qn=` `,Jn=!1;function Yn(e,t){switch(e){case`keyup`:return Hn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function Xn(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var Zn=!1;function Qn(e,t){switch(e){case`compositionend`:return Xn(t);case`keypress`:return t.which===32?(Jn=!0,qn):null;case`textInput`:return e=t.data,e===qn&&Jn?null:e;default:return null}}function $n(e,t){if(Zn)return e===`compositionend`||!Un&&Yn(e,t)?(e=fn(),dn=un=ln=null,Zn=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=xr(n)}}function Cr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Cr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function wr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Nt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Nt(e.document)}return t}function Tr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Er=on&&`documentMode`in document&&11>=document.documentMode,Dr=null,Or=null,kr=null,Ar=!1;function jr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Ar||Dr==null||Dr!==Nt(r)||(r=Dr,`selectionStart`in r&&Tr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),kr&&br(kr,r)||(kr=r,r=Ed(Or,`onSelect`),0>=o,i-=o,Ci=1<<32-Pe(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),H&&Ti(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),H&&Ti(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return H&&Ti(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),H&&Ti(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===O&&Ta(l)===r.type){n(e,r.sibling),c=a(r,o.props),ja(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===y?(c=ui(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=li(o.type,o.key,o.props,null,e.mode,c),ja(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=pi(o,e.mode,c),c.return=e,e=c}return s(e);case O:return o=Ta(o),b(e,r,o,c)}if(ee(o))return h(e,r,o,c);if(M(o)){if(l=M(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,Aa(o),c);if(o.$$typeof===C)return b(e,r,$i(e,o),c);Ma(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=di(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{ka=0;var i=b(e,t,n,r);return Oa=null,i}catch(t){if(t===ya||t===xa)throw t;var a=ai(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Pa=Na(!0),Fa=Na(!1),Ia=!1;function La(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ra(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function za(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Ba(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,q&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=ni(e),ti(e,null,n),t}return Qr(e,r,t,n),ni(e)}function Va(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Xe(e,n)}}function Ha(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Ua=!1;function Wa(){if(Ua){var e=ua;if(e!==null)throw e}}function Ga(e,t,n,r){Ua=!1;var i=e.updateQueue;Ia=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Y&f)===f:(r&f)===f){f!==0&&f===la&&(Ua=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(m=g.payload,typeof m==`function`){d=m.call(_,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=g.payload,f=typeof m==`function`?m.call(_,d,f):m,f==null)break a;d=h({},d,f);break a;case 2:Ia=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Gl|=o,e.lanes=o,e.memoizedState=d}}function Ka(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function qa(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=F.T,s={};F.T=s,Ms(e,!1,t,n);try{var c=i(),l=F.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?js(e,t,pa(c,r),pu(e)):js(e,t,r,pu(e))}catch(n){js(e,t,{then:function(){},status:`rejected`,reason:n},pu())}finally{I.p=a,o!==null&&s.types!==null&&(o.types=s.types),F.T=o}}function xs(){}function Ss(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=Cs(e).queue;bs(e,a,t,L,n===null?xs:function(){return ws(e),n(r)})}function Cs(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:L,baseState:L,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:No,lastRenderedState:L},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:No,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function ws(e){var t=Cs(e);t.next===null&&(t=e.alternate.memoizedState),js(e,t.next.queue,{},pu())}function Ts(){return Qi(Qf)}function Es(){return Oo().memoizedState}function Ds(){return Oo().memoizedState}function Os(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=pu();e=za(n);var r=Ba(t,e,n);r!==null&&(hu(r,t,n),Va(r,t,n)),t={cache:aa()},e.payload=t;return}t=t.return}}function ks(e,t,n){var r=pu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Ns(e)?Ps(t,n):(n=$r(e,t,n,r),n!==null&&(hu(n,e,r),Fs(n,t,r)))}function As(e,t,n){js(e,t,n,pu())}function js(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ns(e))Ps(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,yr(s,o))return Qr(e,t,i,0),Rl===null&&Zr(),!1}catch{}if(n=$r(e,t,i,r),n!==null)return hu(n,e,r),Fs(n,t,r),!0}return!1}function Ms(e,t,n,r){if(r={lane:2,revertLane:dd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Ns(e)){if(t)throw Error(i(479))}else t=$r(e,n,r,2),t!==null&&hu(t,e,2)}function Ns(e){var t=e.alternate;return e===W||t!==null&&t===W}function Ps(e,t){fo=uo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Fs(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Xe(e,n)}}var Is={readContext:Qi,use:jo,useCallback:vo,useContext:vo,useEffect:vo,useImperativeHandle:vo,useLayoutEffect:vo,useInsertionEffect:vo,useMemo:vo,useReducer:vo,useRef:vo,useState:vo,useDebugValue:vo,useDeferredValue:vo,useTransition:vo,useSyncExternalStore:vo,useId:vo,useHostTransitionStatus:vo,useFormState:vo,useActionState:vo,useOptimistic:vo,useMemoCache:vo,useCacheRefresh:vo};Is.useEffectEvent=vo;var Ls={readContext:Qi,use:jo,useCallback:function(e,t){return Do().memoizedState=[e,t===void 0?null:t],e},useContext:Qi,useEffect:ss,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),as(4194308,4,ps.bind(null,t,e),n)},useLayoutEffect:function(e,t){return as(4194308,4,e,t)},useInsertionEffect:function(e,t){as(4,2,e,t)},useMemo:function(e,t){var n=Do();t=t===void 0?null:t;var r=e();if(po){Ne(!0);try{e()}finally{Ne(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Do();if(n!==void 0){var i=n(t);if(po){Ne(!0);try{n(t)}finally{Ne(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=ks.bind(null,W,e),[r.memoizedState,e]},useRef:function(e){var t=Do();return e={current:e},t.memoizedState=e},useState:function(e){e=Uo(e);var t=e.queue,n=As.bind(null,W,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:hs,useDeferredValue:function(e,t){return vs(Do(),e,t)},useTransition:function(){var e=Uo(!1);return e=bs.bind(null,W,e.queue,!0,!1),Do().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=W,a=Do();if(H){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),Rl===null)throw Error(i(349));Y&127||Ro(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,ss(Bo.bind(null,r,o,e),[e]),r.flags|=2048,rs(9,{destroy:void 0},zo.bind(null,r,o,n,t),null),n},useId:function(){var e=Do(),t=Rl.identifierPrefix;if(H){var n=wi,r=Ci;n=(r&~(1<<32-Pe(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=mo++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[rt]=t,o[it]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Fd(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Ac(t)}}return Fc(t),jc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Ac(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=ie.current,Ri(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=Ai,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[rt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Md(e.nodeValue,n)),e||Fi(t,!0)}else e=Vd(e).createTextNode(r),e[rt]=t,t.stateNode=e}return Fc(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Ri(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[rt]=t}else zi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Fc(t),e=!1}else n=Bi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(ao(t),t):(ao(t),null);if(t.flags&128)throw Error(i(558))}return Fc(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=Ri(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[rt]=t}else zi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Fc(t),a=!1}else a=Bi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(ao(t),t):(ao(t),null)}return ao(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Nc(t,t.updateQueue),Fc(t),null);case 4:return se(),e===null&&Sd(t.stateNode.containerInfo),Fc(t),null;case 10:return Ki(t.type),Fc(t),null;case 19:if(B(oo),r=t.memoizedState,r===null)return Fc(t),null;if(a=(t.flags&128)!=0,o=r.rendering,o===null)if(a)Pc(r,!1);else{if(Wl!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=so(e),o!==null){for(t.flags|=128,Pc(r,!1),e=o.updateQueue,t.updateQueue=e,Nc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)ci(n,e),n=n.sibling;return V(oo,oo.current&1|2),H&&Ti(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Se()>tu&&(t.flags|=128,a=!0,Pc(r,!1),t.lanes=4194304)}else{if(!a)if(e=so(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Nc(t,e),Pc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!H)return Fc(t),null}else 2*Se()-r.renderingStartTime>tu&&n!==536870912&&(t.flags|=128,a=!0,Pc(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(Fc(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Se(),e.sibling=null,n=oo.current,V(oo,a?n&1|2:n&1),H&&Ti(t,r.treeForkCount),e);case 22:case 23:return ao(t),Qa(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(Fc(t),t.subtreeFlags&6&&(t.flags|=8192)):Fc(t),n=t.updateQueue,n!==null&&Nc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&B(ha),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Ki(ia),Fc(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function Lc(e,t){switch(Oi(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ki(ia),se(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return le(t),null;case 31:if(t.memoizedState!==null){if(ao(t),t.alternate===null)throw Error(i(340));zi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(ao(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));zi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return B(oo),null;case 4:return se(),null;case 10:return Ki(t.type),null;case 22:case 23:return ao(t),Qa(),e!==null&&B(ha),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Ki(ia),null;case 25:return null;default:return null}}function Rc(e,t){switch(Oi(t),t.tag){case 3:Ki(ia),se();break;case 26:case 27:case 5:le(t);break;case 4:se();break;case 31:t.memoizedState!==null&&ao(t);break;case 13:ao(t);break;case 19:B(oo);break;case 10:Ki(t.type);break;case 22:case 23:ao(t),Qa(),e!==null&&B(ha);break;case 24:Ki(ia)}}function zc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Bc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Vc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{qa(t,n)}catch(t){Z(e,e.return,t)}}}function Hc(e,t,n){n.props=Ws(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Uc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Wc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}function Gc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Z(e,e.return,t)}}function Kc(e,t,n){try{var r=e.stateNode;Id(r,e.type,n,t),r[it]=t}catch(t){Z(e,e.return,t)}}function qc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Qd(e.type)||e.tag===4}function Jc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||qc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Qd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Yc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Xt));else if(r!==4&&(r===27&&Qd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Yc(e,t,n),e=e.sibling;e!==null;)Yc(e,t,n),e=e.sibling}function Xc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Qd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Xc(e,t,n),e=e.sibling;e!==null;)Xc(e,t,n),e=e.sibling}function Zc(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Fd(t,r,n),t[rt]=e,t[it]=n}catch(t){Z(e,e.return,t)}}var Qc=!1,$c=!1,el=!1,tl=typeof WeakSet==`function`?WeakSet:Set,nl=null;function rl(e,t){if(e=e.containerInfo,zd=sp,e=wr(e),Tr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(Bd={focusedElem:e,selectionRange:n},sp=!1,nl=t;nl!==null;)if(t=nl,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,nl=e;else for(;nl!==null;){switch(t=nl,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Fd(o,r,n),o[rt]=e,gt(o),r=o;break a;case`link`:var s=Vf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=Sr(s,h),v=Sr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,F.T=null,n=lu,lu=null;var o=au,s=su;if(iu=0,ou=au=null,su=0,q&6)throw Error(i(331));var c=q;if(q|=4,Nl(o.current),Tl(o,o.current,s,n),q=c,id(0,!1),Me&&typeof Me.onPostCommitFiberRoot==`function`)try{Me.onPostCommitFiberRoot(je,o)}catch{}return!0}finally{I.p=a,F.T=r,Vu(e,t)}}function Wu(e,t,n){t=hi(n,t),t=Xs(e.stateNode,t,2),e=Ba(e,t,2),e!==null&&(qe(e,2),rd(e))}function Z(e,t,n){if(e.tag===3)Wu(e,e,n);else for(;t!==null;){if(t.tag===3){Wu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(ru===null||!ru.has(r))){e=hi(n,e),n=Zs(2),r=Ba(t,n,2),r!==null&&(Qs(n,r,t,e),qe(r,2),rd(r));break}}t=t.return}}function Gu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Ll;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Hl=!0,i.add(n),e=Ku.bind(null,e,t,n),t.then(e,e))}function Ku(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Rl===e&&(Y&n)===n&&(Wl===4||Wl===3&&(Y&62914560)===Y&&300>Se()-$l?!(q&2)&&Su(e,0):ql|=n,Yl===Y&&(Yl=0)),rd(e)}function qu(e,t){t===0&&(t=Ge()),e=ei(e,t),e!==null&&(qe(e,t),rd(e))}function Ju(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),qu(e,n)}function Yu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),qu(e,n)}function Xu(e,t){return ve(e,t)}var Zu=null,Qu=null,$u=!1,ed=!1,td=!1,nd=0;function rd(e){e!==Qu&&e.next===null&&(Qu===null?Zu=Qu=e:Qu=Qu.next=e),ed=!0,$u||($u=!0,ud())}function id(e,t){if(!td&&ed){td=!0;do for(var n=!1,r=Zu;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-Pe(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,ld(r,a))}else a=Y,a=He(r,r===Rl?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||Ue(r,a)||(n=!0,ld(r,a));r=r.next}while(n);td=!1}}function ad(){od()}function od(){ed=$u=!1;var e=0;nd!==0&&Kd()&&(e=nd);for(var t=Se(),n=null,r=Zu;r!==null;){var i=r.next,a=sd(r,t);a===0?(r.next=null,n===null?Zu=i:n.next=i,i===null&&(Qu=n)):(n=r,(e!==0||a&3)&&(ed=!0)),r=i}iu!==0&&iu!==5||id(e,!1),nd!==0&&(nd=0)}function sd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&Ld(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=Ft(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Fd(t,`link`,e),gt(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Ft(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Ft(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Ft(n.imageSizes)+`"]`)):i+=`[href="`+Ft(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=h({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Fd(t,`link`,e),gt(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Ft(r)+`"][href="`+Ft(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=h({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Fd(r,`link`,e),gt(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=ht(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=h({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);gt(c),Fd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=ht(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),gt(a),Fd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=ht(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),gt(a),Fd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var a=(a=ie.current)?gf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=ht(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var o=ht(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(jf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),o||Nf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=ht(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Af(e){return`href="`+Ft(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return h({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Fd(t,`link`,n),gt(t),e.head.appendChild(t))}function Pf(e){return`[src="`+Ft(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Ft(n.href)+`"]`);if(r)return t.instance=r,gt(r),r;var a=h({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),gt(r),Fd(r,`style`,a),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Af(n.href);var o=e.querySelector(jf(a));if(o)return t.state.loading|=4,t.instance=o,gt(o),o;r=Mf(n),(a=mf.get(a))&&Rf(r,a),o=(e.ownerDocument||e).createElement(`link`),gt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Fd(o,`link`,r),t.state.loading|=4,Lf(o,n.precedence,e),t.instance=o;case`script`:return o=Pf(n.src),(a=e.querySelector(Ff(o)))?(t.instance=a,gt(a),a):(r=n,(a=mf.get(o))&&(r=h({},n),zf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),gt(a),Fd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,gt(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),gt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Fd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()})),_=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),v=o(((e,t)=>{t.exports=_()})),y=c(u(),1),b=g(),x=v();function S(e){if(typeof e==`string`||typeof e==`number`)return``+e;let t=``;if(Array.isArray(e))for(let n=0,r;n{}};function w(){for(var e=0,t=arguments.length,n={},r;e=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw Error(`unknown type: `+e);return{type:e,name:n}})}T.prototype=w.prototype={constructor:T,on:function(e,t){var n=this._,r=E(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a0)for(var n=Array(i),r=0,i,a;r=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),k.hasOwnProperty(t)?{space:k[t],local:e}:e}function j(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===`http://www.w3.org/1999/xhtml`&&t.documentElement.namespaceURI===`http://www.w3.org/1999/xhtml`?t.createElement(e):t.createElementNS(n,e)}}function M(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function N(e){var t=A(e);return(t.local?M:j)(t)}function P(){}function ee(e){return e==null?P:function(){return this.querySelector(e)}}function F(e){typeof e!=`function`&&(e=ee(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i=v&&(v=_+1);!(b=g[v])&&++v=0;)(o=r[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function we(e){e||=Te;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,i=Array(r),a=0;at?1:e>=t?0:NaN}function Ee(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function De(){return Array.from(this)}function Oe(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?Be:typeof t==`function`?He:Ve)(e,t,n??``)):We(this.node(),e)}function We(e,t){return e.style.getPropertyValue(t)||ze(e).getComputedStyle(e,null).getPropertyValue(t)}function Ge(e){return function(){delete this[e]}}function Ke(e,t){return function(){this[e]=t}}function qe(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function Je(e,t){return arguments.length>1?this.each((t==null?Ge:typeof t==`function`?qe:Ke)(e,t)):this.node()[e]}function Ye(e){return e.trim().split(/^|\s+/)}function Xe(e){return e.classList||new Ze(e)}function Ze(e){this._node=e,this._names=Ye(e.getAttribute(`class`)||``)}Ze.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(`class`,this._names.join(` `)))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(`class`,this._names.join(` `)))},contains:function(e){return this._names.indexOf(e)>=0}};function Qe(e,t){for(var n=Xe(e),r=-1,i=t.length;++r=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function Dt(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n()=>e;function Yt(e,{sourceEvent:t,subject:n,target:r,identifier:i,active:a,x:o,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:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:o,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}})}Yt.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Xt(e){return!e.ctrlKey&&!e.button}function Zt(){return this.parentNode}function Qt(e,t){return t??{x:e.x,y:e.y}}function $t(){return navigator.maxTouchPoints||`ontouchstart`in this}function en(){var e=Xt,t=Zt,n=Qt,r=$t,i={},a=w(`start`,`drag`,`end`),o=0,s,c,l,u,d=0;function f(e){e.on(`mousedown.drag`,p).filter(r).on(`touchstart.drag`,g).on(`touchmove.drag`,_,Ht).on(`touchend.drag touchcancel.drag`,v).style(`touch-action`,`none`).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}function p(n,r){if(!(u||!e.call(this,n,r))){var i=y(this,t.call(this,n,r),n,r,`mouse`);i&&(zt(n.view).on(`mousemove.drag`,m,Ut).on(`mouseup.drag`,h,Ut),Kt(n.view),Wt(n),l=!1,s=n.clientX,c=n.clientY,i(`start`,n))}}function m(e){if(Gt(e),!l){var t=e.clientX-s,n=e.clientY-c;l=t*t+n*n>d}i.mouse(`drag`,e)}function h(e){zt(e.view).on(`mousemove.drag mouseup.drag`,null),qt(e.view,l),Gt(e),i.mouse(`end`,e)}function g(n,r){if(e.call(this,n,r)){var i=n.changedTouches,a=t.call(this,n,r),o=i.length,s,c;for(s=0;s>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?wn(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?wn(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=dn.exec(e))?new Dn(t[1],t[2],t[3],1):(t=fn.exec(e))?new Dn(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=pn.exec(e))?wn(t[1],t[2],t[3],t[4]):(t=mn.exec(e))?wn(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=hn.exec(e))?Pn(t[1],t[2]/100,t[3]/100,1):(t=gn.exec(e))?Pn(t[1],t[2]/100,t[3]/100,t[4]):_n.hasOwnProperty(e)?Cn(_n[e]):e===`transparent`?new Dn(NaN,NaN,NaN,0):null}function Cn(e){return new Dn(e>>16&255,e>>8&255,e&255,1)}function wn(e,t,n,r){return r<=0&&(e=t=n=NaN),new Dn(e,t,n,r)}function Tn(e){return e instanceof rn||(e=Sn(e)),e?(e=e.rgb(),new Dn(e.r,e.g,e.b,e.opacity)):new Dn}function En(e,t,n,r){return arguments.length===1?Tn(e):new Dn(e,t,n,r??1)}function Dn(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}tn(Dn,En,nn(rn,{brighter(e){return e=e==null?on:on**+e,new Dn(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?an:an**+e,new Dn(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Dn(Mn(this.r),Mn(this.g),Mn(this.b),jn(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:On,formatHex:On,formatHex8:kn,formatRgb:An,toString:An}));function On(){return`#${Nn(this.r)}${Nn(this.g)}${Nn(this.b)}`}function kn(){return`#${Nn(this.r)}${Nn(this.g)}${Nn(this.b)}${Nn((isNaN(this.opacity)?1:this.opacity)*255)}`}function An(){let e=jn(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Mn(this.r)}, ${Mn(this.g)}, ${Mn(this.b)}${e===1?`)`:`, ${e})`}`}function jn(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Mn(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Nn(e){return e=Mn(e),(e<16?`0`:``)+e.toString(16)}function Pn(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Ln(e,t,n,r)}function Fn(e){if(e instanceof Ln)return new Ln(e.h,e.s,e.l,e.opacity);if(e instanceof rn||(e=Sn(e)),!e)return new Ln;if(e instanceof Ln)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n0&&c<1?0:o,new Ln(o,s,c,e.opacity)}function In(e,t,n,r){return arguments.length===1?Fn(e):new Ln(e,t,n,r??1)}function Ln(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}tn(Ln,In,nn(rn,{brighter(e){return e=e==null?on:on**+e,new Ln(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?an:an**+e,new Ln(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new Dn(Bn(e>=240?e-240:e+120,i,r),Bn(e,i,r),Bn(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Ln(Rn(this.h),zn(this.s),zn(this.l),jn(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(){let e=jn(this.opacity);return`${e===1?`hsl(`:`hsla(`}${Rn(this.h)}, ${zn(this.s)*100}%, ${zn(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function Rn(e){return e=(e||0)%360,e<0?e+360:e}function zn(e){return Math.max(0,Math.min(1,e||0))}function Bn(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var Vn=e=>()=>e;function Hn(e,t){return function(n){return e+n*t}}function Un(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Wn(e){return(e=+e)==1?Gn:function(t,n){return n-t?Un(t,n,e):Vn(isNaN(t)?n:t)}}function Gn(e,t){var n=t-e;return n?Hn(e,n):Vn(isNaN(e)?t:e)}var Kn=(function e(t){var n=Wn(t);function r(e,t){var r=n((e=En(e)).r,(t=En(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Gn(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function qn(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;in&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:Zn(r,i)})),n=er.lastIndex;return n180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:Zn(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:Zn(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:Zn(e,n)},{i:s-2,x:Zn(t,r)})}else(n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t=0&&e._call.call(void 0,t),e=e._next;--yr}function Fr(){Er=(Tr=Or.now())+Dr,yr=br=0;try{Pr()}finally{yr=0,Lr(),Er=0}}function Ir(){var e=Or.now(),t=e-Tr;t>Sr&&(Dr-=t,Tr=e)}function Lr(){for(var e,t=Cr,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:Cr=n);wr=e,Rr(r)}function Rr(e){yr||(br&&=clearTimeout(br),e-Er>24?(e<1/0&&(br=setTimeout(Fr,e-Or.now()-Dr)),xr&&=clearInterval(xr)):(xr||=(Tr=Or.now(),setInterval(Ir,Sr)),yr=1,kr(Fr)))}function zr(e,t,n){var r=new Mr;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var Br=w(`start`,`end`,`cancel`,`interrupt`),Vr=[];function Hr(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;Kr(e,n,{name:t,index:r,group:i,on:Br,tween:Vr,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function Ur(e,t){var n=Gr(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function Wr(e,t){var n=Gr(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function Gr(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function Kr(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=Nr(a,0,n.time);function a(e){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=e&&o(e-n.delay)}function o(a){var l,u,d,f;if(n.state!==1)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===3)return zr(o);f.state===4?(f.state=6,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]}a&&delete e.__transition}}function Jr(e){return this.each(function(){qr(this,e)})}function Yr(e,t){var n,r;return function(){var i=Wr(this,e),a=i.tween;if(a!==n){r=n=a;for(var o=0,s=r.length;o=0&&(e=e.slice(0,t)),!e||e===`start`})}function Ti(e,t,n){var r,i,a=wi(t)?Ur:Wr;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function Ei(e,t){var n=this._id;return arguments.length<2?Gr(this.node(),n).on.on(e):this.each(Ti(n,e,t))}function Di(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function Oi(){return this.on(`end.remove`,Di(this._id))}function ki(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=ee(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o()=>e;function aa(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){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:r,enumerable:!0,configurable:!0},_:{value:i}})}function oa(e,t,n){this.k=e,this.x=t,this.y=n}oa.prototype={constructor:oa,scale:function(e){return e===1?this:new oa(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new oa(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 sa=new oa(1,0,0);ca.prototype=oa.prototype;function ca(e){for(;!e.__zoom;)if(!(e=e.parentNode))return sa;return e.__zoom}function la(e){e.stopImmediatePropagation()}function ua(e){e.preventDefault(),e.stopImmediatePropagation()}function da(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function fa(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute(`viewBox`)?(e=e.viewBox.baseVal,[[e.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 pa(){return this.__zoom||sa}function ma(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function ha(){return navigator.maxTouchPoints||`ontouchstart`in this}function ga(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],a=e.invertY(t[0][1])-n[0][1],o=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function _a(){var e=da,t=fa,n=ga,r=ma,i=ha,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=vr,l=w(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,pa).on(`wheel.zoom`,T,{passive:!1}).on(`mousedown.zoom`,E).on(`dblclick.zoom`,D).filter(i).on(`touchstart.zoom`,O).on(`touchmove.zoom`,k).on(`touchend.zoom touchcancel.zoom`,A).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}_.transform=function(e,t,n,r){var i=e.selection?e.selection():e;i.property(`__zoom`,pa),e===i?i.interrupt().each(function(){S(this,arguments).event(r).start().zoom(null,typeof t==`function`?t.apply(this,arguments):t).end()}):x(e,t,n,r)},_.scaleBy=function(e,t,n,r){_.scaleTo(e,function(){return this.__zoom.k*(typeof t==`function`?t.apply(this,arguments):t)},n,r)},_.scaleTo=function(e,r,i,a){_.transform(e,function(){var e=t.apply(this,arguments),a=this.__zoom,s=i==null?b(e):typeof i==`function`?i.apply(this,arguments):i,c=a.invert(s),l=typeof r==`function`?r.apply(this,arguments):r;return n(y(v(a,l),s,c),e,o)},i,a)},_.translateBy=function(e,r,i,a){_.transform(e,function(){return n(this.__zoom.translate(typeof r==`function`?r.apply(this,arguments):r,typeof i==`function`?i.apply(this,arguments):i),t.apply(this,arguments),o)},null,a)},_.translateTo=function(e,r,i,a,s){_.transform(e,function(){var e=t.apply(this,arguments),s=this.__zoom,c=a==null?b(e):typeof a==`function`?a.apply(this,arguments):a;return n(sa.translate(c[0],c[1]).scale(s.k).translate(typeof r==`function`?-r.apply(this,arguments):-r,typeof i==`function`?-i.apply(this,arguments):-i),e,o)},a,s)};function v(e,t){return t=Math.max(a[0],Math.min(a[1],t)),t===e.k?e:new oa(t,e.x,e.y)}function y(e,t,n){var r=t[0]-n[0]*e.k,i=t[1]-n[1]*e.k;return r===e.x&&i===e.y?e:new oa(e.k,r,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function x(e,n,r,i){e.on(`start.zoom`,function(){S(this,arguments).event(i).start()}).on(`interrupt.zoom end.zoom`,function(){S(this,arguments).event(i).end()}).tween(`zoom`,function(){var e=this,a=arguments,o=S(e,a).event(i),s=t.apply(e,a),l=r==null?b(s):typeof r==`function`?r.apply(e,a):r,u=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),d=e.__zoom,f=typeof n==`function`?n.apply(e,a):n,p=c(d.invert(l).concat(u/d.k),f.invert(l).concat(u/f.k));return function(e){if(e===1)e=f;else{var t=p(e),n=u/t[2];e=new oa(n,l[0]-t[0]*n,l[1]-t[1]*n)}o.zoom(null,e)}})}function S(e,t,n){return!n&&e.__zooming||new C(e,t)}function C(e,n){this.that=e,this.args=n,this.active=0,this.sourceEvent=null,this.extent=t.apply(e,n),this.taps=0}C.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit(`start`)),this},zoom:function(e,t){return this.mouse&&e!==`mouse`&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&e!==`touch`&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&e!==`touch`&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit(`zoom`),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit(`end`)),this},emit:function(e){var t=zt(this.that).datum();l.call(e,this.that,new aa(e,{sourceEvent:this.sourceEvent,target:_,type:e,transform:this.that.__zoom,dispatch:l}),t)}};function T(t,...i){if(!e.apply(this,arguments))return;var s=S(this,i).event(t),c=this.__zoom,l=Math.max(a[0],Math.min(a[1],c.k*2**r.apply(this,arguments))),u=Vt(t);if(s.wheel)(s.mouse[0][0]!==u[0]||s.mouse[0][1]!==u[1])&&(s.mouse[1]=c.invert(s.mouse[0]=u)),clearTimeout(s.wheel);else if(c.k===l)return;else s.mouse=[u,c.invert(u)],qr(this),s.start();ua(t),s.wheel=setTimeout(d,m),s.zoom(`mouse`,n(y(v(c,l),s.mouse[0],s.mouse[1]),s.extent,o));function d(){s.wheel=null,s.end()}}function E(t,...r){if(f||!e.apply(this,arguments))return;var i=t.currentTarget,a=S(this,r,!0).event(t),s=zt(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=Vt(t,i),l=t.clientX,u=t.clientY;Kt(t.view),la(t),a.mouse=[c,this.__zoom.invert(c)],qr(this),a.start();function d(e){if(ua(e),!a.moved){var t=e.clientX-l,r=e.clientY-u;a.moved=t*t+r*r>h}a.event(e).zoom(`mouse`,n(y(a.that.__zoom,a.mouse[0]=Vt(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),qt(e.view,a.moved),ua(e),a.event(e).end()}}function D(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=Vt(r.changedTouches?r.changedTouches[0]:r,this),l=a.invert(c),u=a.k*(r.shiftKey?.5:2),d=n(y(v(a,u),c,l),t.apply(this,i),o);ua(r),s>0?zt(this).transition().duration(s).call(x,d,c,r):zt(this).call(_.transform,d,c,r)}}function O(t,...n){if(e.apply(this,arguments)){var r=t.touches,i=r.length,a=S(this,n,t.changedTouches.length===i).event(t),o,s,c,l;for(la(t),s=0;s`Seems like you have not used ${e===`svelte`?`SvelteFlowProvider`:`ReactFlowProvider`} as an ancestor. Help: https://${e}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:e=>`Node type "${e}" 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:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:t,sourceHandle:n,targetHandle:r})=>`Couldn't create edge for ${e} handle id: "${e===`source`?n:r}", edge id: ${t}.`,error010:()=>`Handle: No node id found. Make sure to only use a Handle inside a custom Node.`,error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012: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.`,error013:(e=`react`)=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/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:e=>`Edge with id "${e}" does not exist, it may have been removed. This can happen when an edge is deleted before the "onEdgeClick" handler is called.`},ya=[[-1/0,-1/0],[1/0,1/0]],ba=[`Enter`,` `,`Escape`],xa={"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`},Sa;(function(e){e.Strict=`strict`,e.Loose=`loose`})(Sa||={});var Ca;(function(e){e.Free=`free`,e.Vertical=`vertical`,e.Horizontal=`horizontal`})(Ca||={});var wa;(function(e){e.Partial=`partial`,e.Full=`full`})(wa||={});var Ta={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null},Ea;(function(e){e.Bezier=`default`,e.Straight=`straight`,e.Step=`step`,e.SmoothStep=`smoothstep`,e.SimpleBezier=`simplebezier`})(Ea||={});var Da;(function(e){e.Arrow=`arrow`,e.ArrowClosed=`arrowclosed`})(Da||={});var U;(function(e){e.Left=`left`,e.Top=`top`,e.Right=`right`,e.Bottom=`bottom`})(U||={});var Oa={[U.Left]:U.Right,[U.Right]:U.Left,[U.Top]:U.Bottom,[U.Bottom]:U.Top};function ka(e){return e===null?null:e?`valid`:`invalid`}var Aa=e=>!!e&&typeof e==`object`&&`id`in e&&`source`in e&&`target`in e,ja=e=>!!e&&typeof e==`object`&&`id`in e&&`position`in e&&!(`source`in e)&&!(`target`in e),Ma=e=>!!e&&typeof e==`object`&&`id`in e&&`internals`in e&&!(`source`in e)&&!(`target`in e),Na=(e,t=[0,0])=>{let{width:n,height:r}=fo(e),i=e.origin??t,a=n*i[0],o=r*i[1];return{x:e.position.x-a,y:e.position.y-o}},Pa=(e,t={nodeOrigin:[0,0]})=>e.length===0?{x:0,y:0,width:0,height:0}:Ya(e.reduce((e,n)=>{let r=typeof n==`string`,i=!t.nodeLookup&&!r?n:void 0;return t.nodeLookup&&(i=r?t.nodeLookup.get(n):Ma(n)?n:t.nodeLookup.get(n.id)),qa(e,i?Za(i,t.nodeOrigin):{x:0,y:0,x2:0,y2:0})},{x:1/0,y:1/0,x2:-1/0,y2:-1/0})),Fa=(e,t={})=>{let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0},r=!1;return e.forEach(e=>{(t.filter===void 0||t.filter(e))&&(n=qa(n,Za(e)),r=!0)}),r?Ya(n):{x:0,y:0,width:0,height:0}},Ia=(e,t,[n,r,i]=[0,0,1],a=!1,o=!1)=>{let s=(t.x-n)/i,c=(t.y-r)/i,l=t.width/i,u=t.height/i,d=[];for(let t of e.values()){let{measured:e,selectable:n=!0,hidden:r=!1}=t;if(o&&!n||r)continue;let i=e.width??t.width??t.initialWidth??0,f=e.height??t.height??t.initialHeight??0,{x:p,y:m}=t.internals.positionAbsolute,h=$a(s,c,l,u,p,m,i,f),g=i*f,_=a&&h>0;(!t.internals.handleBounds||_||h>=g||t.dragging)&&d.push(t)}return d},La=(e,t)=>{let n=new Set;return e.forEach(e=>{n.add(e.id)}),t.filter(e=>n.has(e.source)||n.has(e.target))};function Ra(e,t){let n=new Map,r=t?.nodes?new Set(t.nodes.map(e=>e.id)):null;return e.forEach(e=>{let i;if(t?.includeHiddenNodes){let{width:t,height:n}=fo(e);i=t>0&&n>0}else i=!!(e.measured.width&&e.measured.height&&!e.hidden);i&&(!r||r.has(e.id))&&n.set(e.id,e)}),n}async function za({nodes:e,width:t,height:n,panZoom:r,minZoom:i,maxZoom:a},o){if(e.size===0)return!0;let s=G(Fa(Ra(e,o)),t,n,o?.minZoom??i,o?.maxZoom??a,o?.padding??.1);return await r.setViewport(s,{duration:o?.duration,ease:o?.ease,interpolate:o?.interpolate}),!0}function Ba({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:r=[0,0],nodeExtent:i,onError:a}){let o=n.get(e),s=o.parentId?n.get(o.parentId):void 0,{x:c,y:l}=s?s.internals.positionAbsolute:{x:0,y:0},u=o.origin??r,d=o.extent||i;if(o.extent===`parent`&&!o.expandParent)if(!s)a?.(`005`,va.error005());else{let e=s.measured.width,t=s.measured.height;e&&t&&(d=[[c,l],[c+e,l+t]])}else s&&uo(o.extent)&&(d=[[o.extent[0][0]+c,o.extent[0][1]+l],[o.extent[1][0]+c,o.extent[1][1]+l]]);let f=uo(d)?Ua(t,d,o.measured):t;return(o.measured.width===void 0||o.measured.height===void 0)&&a?.(`015`,va.error015()),{position:{x:f.x-c+(o.measured.width??0)*u[0],y:f.y-l+(o.measured.height??0)*u[1]},positionAbsolute:f}}async function Va({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:r,onBeforeDelete:i}){let a=new Set(e.map(e=>e.id)),o=[];for(let e of n){if(e.deletable===!1)continue;let t=a.has(e.id),n=!t&&e.parentId&&o.find(t=>t.id===e.parentId);(t||n)&&o.push(e)}let s=new Set(t.map(e=>e.id)),c=r.filter(e=>e.deletable!==!1),l=La(o,c);for(let e of c)s.has(e.id)&&!l.find(t=>t.id===e.id)&&l.push(e);if(!i)return{edges:l,nodes:o};let u=await i({nodes:o,edges:l});return typeof u==`boolean`?u?{edges:l,nodes:o}:{edges:[],nodes:[]}:u}var Ha=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),Ua=(e={x:0,y:0},t,n)=>({x:Ha(e.x,t[0][0],t[1][0]-(n?.width??0)),y:Ha(e.y,t[0][1],t[1][1]-(n?.height??0))});function Wa(e,t,n){let{width:r,height:i}=fo(n),{x:a,y:o}=n.internals.positionAbsolute;return Ua(e,[[a,o],[a+r,o+i]],t)}var Ga=(e,t,n)=>en?-Ha(Math.abs(e-n),1,t)/t:0,Ka=(e,t,n=15,r=40)=>[Ga(e.x,r,t.width-r)*n,Ga(e.y,r,t.height-r)*n],qa=(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)}),Ja=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),Ya=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),Xa=(e,t=[0,0])=>{let{x:n,y:r}=Ma(e)?e.internals.positionAbsolute:Na(e,t);return{x:n,y:r,width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}},Za=(e,t=[0,0])=>{let{x:n,y:r}=Ma(e)?e.internals.positionAbsolute:Na(e,t);return{x:n,y:r,x2:n+(e.measured?.width??e.width??e.initialWidth??0),y2:r+(e.measured?.height??e.height??e.initialHeight??0)}},Qa=(e,t)=>Ya(qa(Ja(e),Ja(t))),$a=(e,t,n,r,i,a,o,s)=>{let c=Math.max(0,Math.min(e+n,i+o)-Math.max(e,i)),l=Math.max(0,Math.min(t+r,a+s)-Math.max(t,a));return Math.ceil(c*l)},eo=(e,t)=>$a(e.x,e.y,e.width,e.height,t.x,t.y,t.width,t.height),to=e=>no(e.width)&&no(e.height)&&no(e.x)&&no(e.y),no=e=>!isNaN(e)&&isFinite(e),ro=(e,t)=>(e,t)=>{},io=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),ao=({x:e,y:t},[n,r,i],a=!1,o=[1,1])=>{let s={x:(e-n)/i,y:(t-r)/i};return a?io(s,o):s},oo=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r});function so(e,t){if(typeof e==`number`)return Math.floor((t-t/(1+e))*.5);if(typeof e==`string`&&e.endsWith(`px`)){let t=parseFloat(e);if(!Number.isNaN(t))return Math.floor(t)}if(typeof e==`string`&&e.endsWith(`%`)){let 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}function co(e,t,n){if(typeof e==`string`||typeof e==`number`){let r=so(e,n),i=so(e,t);return{top:r,right:i,bottom:r,left:i,x:i*2,y:r*2}}if(typeof e==`object`){let r=so(e.top??e.y??0,n),i=so(e.bottom??e.y??0,n),a=so(e.left??e.x??0,t),o=so(e.right??e.x??0,t);return{top:r,right:o,bottom:i,left:a,x:a+o,y:r+i}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function W(e,t,n,r,i,a){let{x:o,y:s}=oo(e,[t,n,r]),{x:c,y:l}=oo({x:e.x+e.width,y:e.y+e.height},[t,n,r]),u=i-c,d=a-l;return{left:Math.floor(o),top:Math.floor(s),right:Math.floor(u),bottom:Math.floor(d)}}var G=(e,t,n,r,i,a)=>{let o=co(a,t,n),s=(t-o.x)/e.width,c=(n-o.y)/e.height,l=Ha(Math.min(s,c),r,i),u=e.x+e.width/2,d=e.y+e.height/2,f=t/2-u*l,p=n/2-d*l,m=W(e,f,p,l,t,n),h={left:Math.min(m.left-o.left,0),top:Math.min(m.top-o.top,0),right:Math.min(m.right-o.right,0),bottom:Math.min(m.bottom-o.bottom,0)};return{x:f-h.left+h.right,y:p-h.top+h.bottom,zoom:l}},lo=()=>typeof navigator<`u`&&navigator?.userAgent?.indexOf(`Mac`)>=0;function uo(e){return e!=null&&e!==`parent`}function fo(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function po(e){return(e.measured?.width??e.width??e.initialWidth)!==void 0&&(e.measured?.height??e.height??e.initialHeight)!==void 0}function mo(e,t={width:0,height:0},n,r,i){let a={...e},o=r.get(n);if(o){let e=o.origin||i;a.x+=o.internals.positionAbsolute.x-(t.width??0)*e[0],a.y+=o.internals.positionAbsolute.y-(t.height??0)*e[1]}return a}function ho(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function go(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function _o(e){return{...xa,...e||{}}}function vo(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:i}){let{x:a,y:o}=wo(e),s=ao({x:a-(i?.left??0),y:o-(i?.top??0)},r),{x:c,y:l}=n?io(s,t):s;return{xSnapped:c,ySnapped:l,...s}}var yo=e=>({width:e.offsetWidth,height:e.offsetHeight}),bo=e=>e?.getRootNode?.()||window?.document,xo=[`INPUT`,`SELECT`,`TEXTAREA`];function So(e){let t=e.composedPath?.()?.[0]||e.target;return t?.nodeType===1?xo.includes(t.nodeName)||t.hasAttribute(`contenteditable`)||!!t.closest(`.nokey`):!1}var Co=e=>`clientX`in e,wo=(e,t)=>{let n=Co(e),r=n?e.clientX:e.touches?.[0].clientX,i=n?e.clientY:e.touches?.[0].clientY;return{x:r-(t?.left??0),y:i-(t?.top??0)}},To=(e,t,n,r,i)=>{let a=t.querySelectorAll(`.${e}`);return!a||!a.length?null:Array.from(a).map(t=>{let a=t.getBoundingClientRect();return{id:t.getAttribute(`data-handleid`),type:e,nodeId:i,position:t.getAttribute(`data-handlepos`),x:(a.left-n.left)/r,y:(a.top-n.top)/r,...yo(t)}})};function Eo({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:i,sourceControlY:a,targetControlX:o,targetControlY:s}){let c=e*.125+i*.375+o*.375+n*.125,l=t*.125+a*.375+s*.375+r*.125;return[c,l,Math.abs(c-e),Math.abs(l-t)]}function Do(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function Oo({pos:e,x1:t,y1:n,x2:r,y2:i,c:a}){switch(e){case U.Left:return[t-Do(t-r,a),n];case U.Right:return[t+Do(r-t,a),n];case U.Top:return[t,n-Do(n-i,a)];case U.Bottom:return[t,n+Do(i-n,a)]}}function ko({sourceX:e,sourceY:t,sourcePosition:n=U.Bottom,targetX:r,targetY:i,targetPosition:a=U.Top,curvature:o=.25}){let[s,c]=Oo({pos:n,x1:e,y1:t,x2:r,y2:i,c:o}),[l,u]=Oo({pos:a,x1:r,y1:i,x2:e,y2:t,c:o}),[d,f,p,m]=Eo({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:s,sourceControlY:c,targetControlX:l,targetControlY:u});return[`M${e},${t} C${s},${c} ${l},${u} ${r},${i}`,d,f,p,m]}function Ao({sourceX:e,sourceY:t,targetX:n,targetY:r}){let i=Math.abs(n-e)/2,a=n0}var No=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||``}-${n}${r||``}`,Po=(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)),Fo=(e,t,n={})=>{if(!e.source||!e.target)return n.onError?.(`006`,va.error006()),t;let r=n.getEdgeId||No,i;return i=Aa(e)?{...e}:{...e,id:r(e)},Po(i,t)?t:(i.sourceHandle===null&&delete i.sourceHandle,i.targetHandle===null&&delete i.targetHandle,t.concat(i))};function Io({sourceX:e,sourceY:t,targetX:n,targetY:r}){let[i,a,o,s]=Ao({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,a,o,s]}var Lo={[U.Left]:{x:-1,y:0},[U.Right]:{x:1,y:0},[U.Top]:{x:0,y:-1},[U.Bottom]:{x:0,y:1}},Ro=({source:e,sourcePosition:t=U.Bottom,target:n})=>t===U.Left||t===U.Right?e.xMath.sqrt((t.x-e.x)**2+(t.y-e.y)**2);function Bo({source:e,sourcePosition:t=U.Bottom,target:n,targetPosition:r=U.Top,center:i,offset:a,stepPosition:o}){let s=Lo[t],c=Lo[r],l={x:e.x+s.x*a,y:e.y+s.y*a},u={x:n.x+c.x*a,y:n.y+c.y*a},d=Ro({source:l,sourcePosition:t,target:u}),f=d.x===0?`y`:`x`,p=d[f],m=[],h,g,_={x:0,y:0},v={x:0,y:0},[,,y,b]=Ao({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[f]*c[f]===-1){f===`x`?(h=i.x??l.x+(u.x-l.x)*o,g=i.y??(l.y+u.y)/2):(h=i.x??(l.x+u.x)/2,g=i.y??l.y+(u.y-l.y)*o);let e=[{x:h,y:l.y},{x:h,y:u.y}],t=[{x:l.x,y:g},{x:u.x,y:g}];m=s[f]===p?f===`x`?e:t:f===`x`?t:e}else{let i=[{x:l.x,y:u.y}],o=[{x:u.x,y:l.y}];if(m=f===`x`?s.x===p?o:i:s.y===p?i:o,t===r){let t=Math.abs(e[f]-n[f]);if(t<=a){let r=Math.min(a-1,a-t);s[f]===p?_[f]=(l[f]>e[f]?-1:1)*r:v[f]=(u[f]>n[f]?-1:1)*r}}if(t!==r){let e=f===`x`?`y`:`x`,t=s[f]===c[e],n=l[e]>u[e],r=l[e]=Math.max(Math.abs(d.y-m[0].y),Math.abs(y.y-m[0].y))?(h=(d.x+y.x)/2,g=m[0].y):(h=m[0].x,g=(d.y+y.y)/2)}let x={x:l.x+_.x,y:l.y+_.y},S={x:u.x+v.x,y:u.y+v.y};return[[e,...x.x!==m[0].x||x.y!==m[0].y?[x]:[],...m,...S.x!==m[m.length-1].x||S.y!==m[m.length-1].y?[S]:[],n],h,g,y,b]}function Vo(e,t,n,r){let i=Math.min(zo(e,t)/2,zo(t,n)/2,r),{x:a,y:o}=t;if(e.x===a&&a===n.x||e.y===o&&o===n.y)return`L${a} ${o}`;if(e.y===o){let t=e.xe.id===t):e[0])||null}function Jo(e,t){return e?typeof e==`string`?e:`${t?`${t}__`:``}${Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(`&`)}`:``}function Yo(e,{id:t,defaultColor:n,defaultMarkerStart:r,defaultMarkerEnd:i}){let a=new Set;return e.reduce((e,o)=>([o.markerStart||r,o.markerEnd||i].forEach(r=>{if(r&&typeof r==`object`){let i=Jo(r,t);a.has(i)||(e.push({id:i,color:r.color||n,...r}),a.add(i))}}),e),[]).sort((e,t)=>e.id.localeCompare(t.id))}var Xo=1e3,Zo=10,Qo={nodeOrigin:[0,0],nodeExtent:ya,elevateNodesOnSelect:!0,zIndexMode:`basic`,defaults:{}},$o={...Qo,checkEquality:!0};function es(e,t){let n={...e};for(let e in t)t[e]!==void 0&&(n[e]=t[e]);return n}function ts(e,t,n){let r=es(Qo,n);for(let n of e.values())if(n.parentId)os(n,e,t,r);else{let e=Ua(Na(n,r.nodeOrigin),uo(n.extent)?n.extent:r.nodeExtent,fo(n));n.internals.positionAbsolute=e}}function ns(e,t){if(!e.handles)return e.measured?t?.internals.handleBounds:void 0;let n=[],r=[];for(let t of e.handles){let i={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};t.type===`source`?n.push(i):t.type===`target`&&r.push(i)}return{source:n,target:r}}function rs(e){return e===`manual`}function is(e,t,n,r={}){let i=es($o,r),a={i:0},o=new Map(t),s=i?.elevateNodesOnSelect&&!rs(i.zIndexMode)?Xo:0,c=e.length>0,l=!1;t.clear(),n.clear();for(let u of e){let e=o.get(u.id);if(i.checkEquality&&u===e?.internals.userNode)t.set(u.id,e);else{let n=Ua(Na(u,i.nodeOrigin),uo(u.extent)?u.extent:i.nodeExtent,fo(u));e={...i.defaults,...u,measured:{width:u.measured?.width,height:u.measured?.height},internals:{positionAbsolute:n,handleBounds:ns(u,e),z:ss(u,s,i.zIndexMode),userNode:u}},t.set(u.id,e)}(e.measured===void 0||e.measured.width===void 0||e.measured.height===void 0)&&!e.hidden&&(c=!1),u.parentId&&os(e,t,n,r,a),l||=u.selected??!1}return{nodesInitialized:c,hasSelectedNodes:l}}function as(e,t){if(!e.parentId)return;let n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}function os(e,t,n,r,i){let{elevateNodesOnSelect:a,nodeOrigin:o,nodeExtent:s,zIndexMode:c}=es(Qo,r),l=e.parentId,u=t.get(l);if(!u){console.warn(`Parent node ${l} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}as(e,n),i&&!u.parentId&&u.internals.rootParentIndex===void 0&&c===`auto`&&(u.internals.rootParentIndex=++i.i,u.internals.z=u.internals.z+i.i*Zo),i&&u.internals.rootParentIndex!==void 0&&(i.i=u.internals.rootParentIndex);let{x:d,y:f,z:p}=cs(e,u,o,s,a&&!rs(c)?Xo:0,c),{positionAbsolute:m}=e.internals,h=d!==m.x||f!==m.y;(h||p!==e.internals.z)&&t.set(e.id,{...e,internals:{...e.internals,positionAbsolute:h?{x:d,y:f}:m,z:p}})}function ss(e,t,n){let r=no(e.zIndex)?e.zIndex:0;return rs(n)?r:r+(e.selected?t:0)}function cs(e,t,n,r,i,a){let{x:o,y:s}=t.internals.positionAbsolute,c=fo(e),l=Na(e,n),u=uo(e.extent)?Ua(l,e.extent,c):l,d=Ua({x:o+u.x,y:s+u.y},r,c);e.extent===`parent`&&(d=Wa(d,c,t));let f=ss(e,i,a),p=t.internals.z??0;return{x:d.x,y:d.y,z:p>=f?p+1:f}}function ls(e,t,n,r=[0,0]){let i=[],a=new Map;for(let n of e){let e=t.get(n.parentId);if(!e)continue;let r=Qa(a.get(n.parentId)?.expandedRect??Xa(e),n.rect);a.set(n.parentId,{expandedRect:r,parent:e})}return a.size>0&&a.forEach(({expandedRect:t,parent:a},o)=>{let s=a.internals.positionAbsolute,c=fo(a),l=a.origin??r,u=t.x0||d>0||m||h)&&(i.push({id:o,type:`position`,position:{x:a.position.x-u+m,y:a.position.y-d+h}}),n.get(o)?.forEach(t=>{e.some(e=>e.id===t.id)||i.push({id:t.id,type:`position`,position:{x:t.position.x+u,y:t.position.y+d}})})),(c.width0){let e=ls(f,t,n,i);l.push(...e)}return{changes:l,updatedInternals:c}}async function ds({delta:e,panZoom:t,transform:n,translateExtent:r,width:i,height:a}){if(!t||!e.x&&!e.y)return!1;let o=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[i,a]],r);return!!o&&(o.x!==n[0]||o.y!==n[1]||o.k!==n[2])}function fs(e,t,n,r,i,a){let o=i,s=r.get(o)||new Map;r.set(o,s.set(n,t)),o=`${i}-${e}`;let c=r.get(o)||new Map;if(r.set(o,c.set(n,t)),a){o=`${i}-${e}-${a}`;let s=r.get(o)||new Map;r.set(o,s.set(n,t))}}function ps(e,t,n){e.clear(),t.clear();for(let r of n){let{source:n,target:i,sourceHandle:a=null,targetHandle:o=null}=r,s={edgeId:r.id,source:n,target:i,sourceHandle:a,targetHandle:o},c=`${n}-${a}--${i}-${o}`;fs(`source`,s,`${i}-${o}--${n}-${a}`,e,n,a),fs(`target`,s,c,e,i,o),t.set(r.id,r)}}function ms(e,t){if(!e.parentId)return!1;let n=t.get(e.parentId);return n?n.selected?!0:ms(n,t):!1}function hs(e,t,n){let r=e;do{if(r?.matches?.(t))return!0;if(r===n)return!1;r=r?.parentElement}while(r);return!1}function gs(e,t,n,r){let i=new Map;for(let[a,o]of e)if((o.selected||o.id===r)&&(!o.parentId||!ms(o,e))&&(o.draggable||t&&o.draggable===void 0)){let t=e.get(a);t&&i.set(a,{id:a,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 i}function _s({nodeId:e,dragItems:t,nodeLookup:n,dragging:r=!0}){let i=[];for(let[e,a]of t){let t=n.get(e)?.internals.userNode;t&&i.push({...t,position:a.position,dragging:r})}if(!e)return[i[0],i];let a=n.get(e)?.internals.userNode;return[a?{...a,position:t.get(e)?.position||a.position,dragging:r}:i[0],i]}function vs({dragItems:e,snapGrid:t,x:n,y:r}){let i=e.values().next().value;if(!i)return null;let a={x:n-i.distance.x,y:r-i.distance.y},o=io(a,t);return{x:o.x-a.x,y:o.y-a.y}}function ys({onNodeMouseDown:e,getStoreItems:t,onDragStart:n,onDrag:r,onDragStop:i}){let a={x:null,y:null},o=0,s=new Map,c=!1,l={x:0,y:0},u=null,d=!1,f=null,p=!1,m=!1,h=null;function g({noDragClassName:g,handleSelector:_,domNode:v,isSelectable:y,nodeId:b,nodeClickDistance:x=0}){f=zt(v);function S({x:e,y:n}){let{nodeLookup:i,nodeExtent:o,snapGrid:c,snapToGrid:l,nodeOrigin:u,onNodeDrag:d,onSelectionDrag:f,onError:p,updateNodePositions:g}=t();a={x:e,y:n};let _=!1,v=s.size>1,y=v&&o?Ja(Fa(s)):null,x=v&&l?vs({dragItems:s,snapGrid:c,x:e,y:n}):null;for(let[t,r]of s){if(!i.has(t))continue;let a={x:e-r.distance.x,y:n-r.distance.y};l&&(a=x?{x:Math.round(a.x+x.x),y:Math.round(a.y+x.y)}:io(a,c));let s=null;if(v&&o&&!r.extent&&y){let{positionAbsolute:e}=r.internals,t=e.x-y.x+o[0][0],n=e.x+r.measured.width-y.x2+o[1][0],i=e.y-y.y+o[0][1],a=e.y+r.measured.height-y.y2+o[1][1];s=[[t,i],[n,a]]}let{position:d,positionAbsolute:f}=Ba({nodeId:t,nextPosition:a,nodeLookup:i,nodeExtent:s||o,nodeOrigin:u,onError:p});_=_||r.position.x!==d.x||r.position.y!==d.y,r.position=d,r.internals.positionAbsolute=f}if(m||=_,_&&(g(s,!0),h&&(r||d||!b&&f))){let[e,t]=_s({nodeId:b,dragItems:s,nodeLookup:i});r?.(h,s,e,t),d?.(h,e,t),b||f?.(h,t)}}async function C(){if(!u)return;let{transform:e,panBy:n,autoPanSpeed:r,autoPanOnNodeDrag:i}=t();if(!i){c=!1,cancelAnimationFrame(o);return}let[s,d]=Ka(l,u,r);(s!==0||d!==0)&&(a.x=(a.x??0)-s/e[2],a.y=(a.y??0)-d/e[2],await n({x:s,y:d})&&S(a)),o=requestAnimationFrame(C)}function w(r){let{nodeLookup:i,multiSelectionActive:o,nodesDraggable:c,transform:l,snapGrid:f,snapToGrid:p,selectNodesOnDrag:m,onNodeDragStart:h,onSelectionDragStart:g,unselectNodesAndEdges:_}=t();d=!0,(!m||!y)&&!o&&b&&(i.get(b)?.selected||_()),y&&m&&b&&e?.(b);let v=vo(r.sourceEvent,{transform:l,snapGrid:f,snapToGrid:p,containerBounds:u});if(a=v,s=gs(i,c,v,b),s.size>0&&(n||h||!b&&g)){let[e,t]=_s({nodeId:b,dragItems:s,nodeLookup:i});n?.(r.sourceEvent,s,e,t),h?.(r.sourceEvent,e,t),b||g?.(r.sourceEvent,t)}}let T=en().clickDistance(x).on(`start`,e=>{let{domNode:n,nodeDragThreshold:r,transform:i,snapGrid:o,snapToGrid:s}=t();u=n?.getBoundingClientRect()||null,p=!1,m=!1,h=e.sourceEvent,r===0&&w(e),a=vo(e.sourceEvent,{transform:i,snapGrid:o,snapToGrid:s,containerBounds:u}),l=wo(e.sourceEvent,u)}).on(`drag`,e=>{let{autoPanOnNodeDrag:n,transform:r,snapGrid:i,snapToGrid:o,nodeDragThreshold:f,nodeLookup:m}=t(),g=vo(e.sourceEvent,{transform:r,snapGrid:i,snapToGrid:o,containerBounds:u});if(h=e.sourceEvent,(e.sourceEvent.type===`touchmove`&&e.sourceEvent.touches.length>1||b&&!m.has(b))&&(p=!0),!p){if(!c&&n&&d&&(c=!0,C()),!d){let t=wo(e.sourceEvent,u),n=t.x-l.x,r=t.y-l.y;Math.sqrt(n*n+r*r)>f&&w(e)}(a.x!==g.xSnapped||a.y!==g.ySnapped)&&s&&d&&(l=wo(e.sourceEvent,u),S(g))}}).on(`end`,e=>{if(!d||p){p&&s.size>0&&t().updateNodePositions(s,!1);return}if(c=!1,d=!1,cancelAnimationFrame(o),s.size>0){let{nodeLookup:n,updateNodePositions:r,onNodeDragStop:a,onSelectionDragStop:o}=t();if(m&&=(r(s,!1),!1),i||a||!b&&o){let[t,r]=_s({nodeId:b,dragItems:s,nodeLookup:n,dragging:!1});i?.(e.sourceEvent,s,t,r),a?.(e.sourceEvent,t,r),b||o?.(e.sourceEvent,r)}}}).filter(e=>{let t=e.target;return!e.button&&(!g||!hs(t,`.${g}`,v))&&(!_||hs(t,_,v))});f.call(T)}function _(){f?.on(`.drag`,null)}return{update:g,destroy:_}}function bs(e,t,n){let r=[],i={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(let e of t.values())eo(i,Xa(e))>0&&r.push(e);return r}var xs=250;function Ss(e,t,n,r){let i=[],a=1/0,o=bs(e,n,t+xs);for(let n of o){let o=[...n.internals.handleBounds?.source??[],...n.internals.handleBounds?.target??[]];for(let s of o){if(r.nodeId===s.nodeId&&r.type===s.type&&r.id===s.id)continue;let{x:o,y:c}=Ko(n,s,s.position,!0),l=Math.sqrt((o-e.x)**2+(c-e.y)**2);l>t||(l1){let e=r.type===`source`?`target`:`source`;return i.find(t=>t.type===e)??i[0]}return i[0]}function Cs(e,t,n,r,i,a=!1){let o=r.get(e);if(!o)return null;let s=i===`strict`?o.internals.handleBounds?.[t]:[...o.internals.handleBounds?.source??[],...o.internals.handleBounds?.target??[]],c=(n?s?.find(e=>e.id===n):s?.[0])??null;return c&&a?{...c,...Ko(o,c,c.position,!0)}:c}function ws(e,t){return e||(t?.classList.contains(`target`)?`target`:t?.classList.contains(`source`)?`source`:null)}function Ts(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}var Es=()=>!0;function Ds(e,{connectionMode:t,connectionRadius:n,handleId:r,nodeId:i,edgeUpdaterType:a,isTarget:o,domNode:s,nodeLookup:c,lib:l,autoPanOnConnect:u,flowId:d,panBy:f,cancelConnection:p,onConnectStart:m,onConnect:h,onConnectEnd:g,isValidConnection:_=Es,onReconnectEnd:v,updateConnection:y,getTransform:b,getFromHandle:x,autoPanSpeed:S,dragThreshold:C=1,handleDomNode:w}){let T=bo(e.target),E=0,D,{x:O,y:k}=wo(e),A=ws(a,w),j=s?.getBoundingClientRect(),M=!1;if(!j||!A)return;let N=Cs(i,A,r,c,t);if(!N)return;let P=wo(e,j),ee=!1,F=null,I=!1,L=null;function te(){if(!u||!j)return;let[e,t]=Ka(P,j,S);f({x:e,y:t}),E=requestAnimationFrame(te)}let R={...N,nodeId:i,type:A,position:N.position},z=c.get(i),B={inProgress:!0,isValid:null,from:Ko(z,R,U.Left,!0),fromHandle:R,fromPosition:R.position,fromNode:z,to:P,toHandle:null,toPosition:Oa[R.position],toNode:null,pointer:P};function V(){M=!0,y(B),m?.(e,{nodeId:i,handleId:r,handleType:A})}C===0&&V();function ne(e){if(!M){let{x:t,y:n}=wo(e),r=t-O,i=n-k;if(!(r*r+i*i>C*C))return;V()}if(!x()||!R){re(e);return}let a=b();P=wo(e,j),D=Ss(ao(P,a,!1,[1,1]),n,c,R),ee||=(te(),!0);let s=Os(e,{handle:D,connectionMode:t,fromNodeId:i,fromHandleId:r,fromType:o?`target`:`source`,isValidConnection:_,doc:T,lib:l,flowId:d,nodeLookup:c});L=s.handleDomNode,F=s.connection,I=Ts(!!D,s.isValid);let u=c.get(i),f=u?Ko(u,R,U.Left,!0):B.from,p={...B,from:f,isValid:I,to:s.toHandle&&I?oo({x:s.toHandle.x,y:s.toHandle.y},a):P,toHandle:s.toHandle,toPosition:I&&s.toHandle?s.toHandle.position:Oa[R.position],toNode:s.toHandle?c.get(s.toHandle.nodeId):null,pointer:P};y(p),B=p}function re(e){if(!(`touches`in e&&e.touches.length>0)){if(M){(D||L)&&F&&I&&h?.(F);let{inProgress:t,...n}=B,r={...n,toPosition:B.toHandle?B.toPosition:null};g?.(e,r),a&&v?.(e,r)}p(),cancelAnimationFrame(E),ee=!1,I=!1,F=null,L=null,T.removeEventListener(`mousemove`,ne),T.removeEventListener(`mouseup`,re),T.removeEventListener(`touchmove`,ne),T.removeEventListener(`touchend`,re)}}T.addEventListener(`mousemove`,ne),T.addEventListener(`mouseup`,re),T.addEventListener(`touchmove`,ne),T.addEventListener(`touchend`,re)}function Os(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:i,fromType:a,doc:o,lib:s,flowId:c,isValidConnection:l=Es,nodeLookup:u}){let d=a===`target`,f=t?o.querySelector(`.${s}-flow__handle[data-id="${c}-${t?.nodeId}-${t?.id}-${t?.type}"]`):null,{x:p,y:m}=wo(e),h=o.elementFromPoint(p,m),g=h?.classList.contains(`${s}-flow__handle`)?h:f,_={handleDomNode:g,isValid:!1,connection:null,toHandle:null};if(g){let e=ws(void 0,g),t=g.getAttribute(`data-nodeid`),a=g.getAttribute(`data-handleid`),o=g.classList.contains(`connectable`),s=g.classList.contains(`connectableend`);if(!t||!e)return _;let c={source:d?t:r,sourceHandle:d?a:i,target:d?r:t,targetHandle:d?i:a};_.connection=c,_.isValid=o&&s&&(n===Sa.Strict?d&&e===`source`||!d&&e===`target`:t!==r||a!==i)&&l(c),_.toHandle=Cs(t,e,a,u,n,!0)}return _}var ks={onPointerDown:Ds,isValid:Os};function As({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){let i=zt(e);function a({translateExtent:e,width:a,height:o,zoomStep:s=1,pannable:c=!0,zoomable:l=!0,inversePan:u=!1}){let d=e=>{if(e.sourceEvent.type!==`wheel`||!t)return;let r=n(),i=e.sourceEvent.ctrlKey&&lo()?10:1,a=-e.sourceEvent.deltaY*(e.sourceEvent.deltaMode===1?.05:e.sourceEvent.deltaMode?1:.002)*s,o=r[2]*2**(a*i);t.scaleTo(o)},f=[0,0],p=_a().on(`start`,e=>{(e.sourceEvent.type===`mousedown`||e.sourceEvent.type===`touchstart`)&&(f=[e.sourceEvent.clientX??e.sourceEvent.touches[0].clientX,e.sourceEvent.clientY??e.sourceEvent.touches[0].clientY])}).on(`zoom`,c?i=>{let s=n();if(i.sourceEvent.type!==`mousemove`&&i.sourceEvent.type!==`touchmove`||!t)return;let c=[i.sourceEvent.clientX??i.sourceEvent.touches[0].clientX,i.sourceEvent.clientY??i.sourceEvent.touches[0].clientY],l=[c[0]-f[0],c[1]-f[1]];f=c;let d=r()*Math.max(s[2],Math.log(s[2]))*(u?-1:1),p={x:s[0]-l[0]*d,y:s[1]-l[1]*d},m=[[0,0],[a,o]];t.setViewportConstrained({x:p.x,y:p.y,zoom:s[2]},m,e)}:null).on(`zoom.wheel`,l?d:null);i.call(p,{})}function o(){i.on(`zoom`,null)}return{update:a,destroy:o,pointer:Vt}}var js=e=>({x:e.x,y:e.y,zoom:e.k}),Ms=({x:e,y:t,zoom:n})=>sa.translate(e,t).scale(n),Ns=(e,t)=>e.target.closest(`.${t}`),Ps=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),Fs=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,Is=(e,t=0,n=Fs,r=()=>{})=>{let i=typeof t==`number`&&t>0;return i||r(),i?e.transition().duration(t).ease(n).on(`end`,r):e},Ls=e=>{let t=e.ctrlKey&&lo()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function Rs({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:i,panOnScrollSpeed:a,zoomOnPinch:o,onPanZoomStart:s,onPanZoom:c,onPanZoomEnd:l}){return u=>{if(Ns(u,t))return u.ctrlKey&&u.preventDefault(),!1;u.preventDefault(),u.stopImmediatePropagation();let d=n.property(`__zoom`).k||1;if(u.ctrlKey&&o){let e=Vt(u),t=d*2**Ls(u);r.scaleTo(n,t,e,u);return}let f=u.deltaMode===1?20:1,p=i===Ca.Vertical?0:u.deltaX*f,m=i===Ca.Horizontal?0:u.deltaY*f;!lo()&&u.shiftKey&&i!==Ca.Vertical&&(p=u.deltaY*f,m=0),r.translateBy(n,-(p/d)*a,-(m/d)*a,{internal:!0});let h=js(n.property(`__zoom`));clearTimeout(e.panScrollTimeout),e.isPanScrolling?c?.(u,h):(e.isPanScrolling=!0,s?.(u,h)),e.panScrollTimeout=setTimeout(()=>{l?.(u,h),e.isPanScrolling=!1},150)}}function zs({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,i){let a=r.type===`wheel`,o=!t&&a&&!r.ctrlKey,s=Ns(r,e);if(r.ctrlKey&&a&&s&&r.preventDefault(),o||s)return null;r.preventDefault(),n.call(this,r,i)}}function Bs({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{if(r.sourceEvent?.internal)return;let i=js(r.transform);e.mouseButton=r.sourceEvent?.button||0,e.isZoomingOrPanning=!0,e.prevViewport=i,r.sourceEvent?.type===`mousedown`&&t(!0),n&&n?.(r.sourceEvent,i)}}function Vs({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:i}){return a=>{e.usedRightMouseButton=!!(n&&Ps(t,e.mouseButton??0)),a.sourceEvent?.sync||r([a.transform.x,a.transform.y,a.transform.k]),i&&!a.sourceEvent?.internal&&i?.(a.sourceEvent,js(a.transform))}}function Hs({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:i,onPaneContextMenu:a}){return o=>{if(!o.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,a&&Ps(t,e.mouseButton??0)&&!e.usedRightMouseButton&&o.sourceEvent&&a(o.sourceEvent),e.usedRightMouseButton=!1,r(!1),i)){let t=js(o.transform);e.prevViewport=t,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{i?.(o.sourceEvent,t)},n?150:0)}}}function Us({zoomActivationKeyPressed:e,zoomOnScroll:t,zoomOnPinch:n,panOnDrag:r,panOnScroll:i,zoomOnDoubleClick:a,userSelectionActive:o,noWheelClassName:s,noPanClassName:c,lib:l,connectionInProgress:u}){return d=>{let f=e||t,p=n&&d.ctrlKey,m=d.type===`wheel`;if(d.button===1&&d.type===`mousedown`&&(Ns(d,`${l}-flow__node`)||Ns(d,`${l}-flow__edge`)))return!0;if(!r&&!f&&!i&&!a&&!n||o||u&&!m||Ns(d,s)&&m||Ns(d,c)&&(!m||i&&m&&!e)||!n&&d.ctrlKey&&m)return!1;if(!n&&d.type===`touchstart`&&d.touches?.length>1)return d.preventDefault(),!1;if(!f&&!i&&!p&&m||!r&&(d.type===`mousedown`||d.type===`touchstart`)||Array.isArray(r)&&!r.includes(d.button)&&d.type===`mousedown`)return!1;let h=Array.isArray(r)&&r.includes(d.button)||!d.button||d.button<=1;return(!d.ctrlKey||m)&&h}}function Ws({domNode:e,minZoom:t,maxZoom:n,translateExtent:r,viewport:i,onPanZoom:a,onPanZoomStart:o,onPanZoomEnd:s,onDraggingChange:c}){let l={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},u=e.getBoundingClientRect(),d=[[0,0],[u.width,u.height]];(typeof ResizeObserver<`u`?new ResizeObserver(e=>{let t=e[0];t&&(d=[[0,0],[t.contentRect.width,t.contentRect.height]])}):null)?.observe(e);let f=_a().extent(()=>d).scaleExtent([t,n]).translateExtent(r),p=zt(e).call(f);y({x:i.x,y:i.y,zoom:Ha(i.zoom,t,n)},[[0,0],[u.width,u.height]],r);let m=p.on(`wheel.zoom`),h=p.on(`dblclick.zoom`);f.wheelDelta(Ls);async function g(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?ir:vr).transform(Is(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}function _({noWheelClassName:e,noPanClassName:t,onPaneContextMenu:n,userSelectionActive:r,panOnScroll:i,panOnDrag:u,panOnScrollMode:d,panOnScrollSpeed:g,preventScrolling:_,zoomOnPinch:y,zoomOnScroll:b,zoomOnDoubleClick:x,zoomActivationKeyPressed:S,lib:C,onTransformChange:w,connectionInProgress:T,paneClickDistance:E,selectionOnDrag:D}){r&&!l.isZoomingOrPanning&&v();let O=i&&!S&&!r;f.clickDistance(D?1/0:!no(E)||E<0?0:E);let k=O?Rs({zoomPanValues:l,noWheelClassName:e,d3Selection:p,d3Zoom:f,panOnScrollMode:d,panOnScrollSpeed:g,zoomOnPinch:y,onPanZoomStart:o,onPanZoom:a,onPanZoomEnd:s}):zs({noWheelClassName:e,preventScrolling:_,d3ZoomHandler:m});p.on(`wheel.zoom`,k,{passive:!1});let A=Bs({zoomPanValues:l,onDraggingChange:c,onPanZoomStart:o});f.on(`start`,A);let j=Vs({zoomPanValues:l,panOnDrag:u,onPaneContextMenu:!!n,onPanZoom:a,onTransformChange:w});f.on(`zoom`,j);let M=Hs({zoomPanValues:l,panOnDrag:u,panOnScroll:i,onPaneContextMenu:n,onPanZoomEnd:s,onDraggingChange:c});f.on(`end`,M);let N=Us({zoomActivationKeyPressed:S,panOnDrag:u,zoomOnScroll:b,panOnScroll:i,zoomOnDoubleClick:x,zoomOnPinch:y,userSelectionActive:r,noPanClassName:t,noWheelClassName:e,lib:C,connectionInProgress:T});f.filter(N),x?p.on(`dblclick.zoom`,h):p.on(`dblclick.zoom`,null)}function v(){f.on(`zoom`,null)}async function y(e,t,n){let r=Ms(e),i=f?.constrain()(r,t,n);return i&&await g(i),i}async function b(e,t){let n=Ms(e);return await g(n,t),n}function x(e){if(p){let t=Ms(e),n=p.property(`__zoom`);(n.k!==e.zoom||n.x!==e.x||n.y!==e.y)&&f?.transform(p,t,null,{sync:!0})}}function S(){let e=p?ca(p.node()):{x:0,y:0,k:1};return{x:e.x,y:e.y,zoom:e.k}}async function C(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?ir:vr).scaleTo(Is(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}async function w(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?ir:vr).scaleBy(Is(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}function T(e){f?.scaleExtent(e)}function E(e){f?.translateExtent(e)}function D(e){let t=!no(e)||e<0?0:e;f?.clickDistance(t)}return{update:_,destroy:v,setViewport:b,setViewportConstrained:y,getViewport:S,scaleTo:C,scaleBy:w,setScaleExtent:T,setTranslateExtent:E,syncViewport:x,setClickDistance:D}}var Gs;(function(e){e.Line=`line`,e.Handle=`handle`})(Gs||={});function Ks({width:e,prevWidth:t,height:n,prevHeight:r,affectsX:i,affectsY:a}){let o=e-t,s=n-r,c=[o>0?1:o<0?-1:0,s>0?1:s<0?-1:0];return o&&i&&(c[0]*=-1),s&&a&&(c[1]*=-1),c}function qs(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 Js(e,t){return Math.max(0,t-e)}function Ys(e,t){return Math.max(0,e-t)}function Xs(e,t,n){return Math.max(0,t-e,e-n)}function Zs(e,t){return e?!t:t}function Qs(e,t,n,r,i,a,o,s){let{affectsX:c,affectsY:l}=t,{isHorizontal:u,isVertical:d}=t,f=u&&d,{xSnapped:p,ySnapped:m}=n,{minWidth:h,maxWidth:g,minHeight:_,maxHeight:v}=r,{x:y,y:b,width:x,height:S,aspectRatio:C}=e,w=Math.floor(u?p-e.pointerX:0),T=Math.floor(d?m-e.pointerY:0),E=x+(c?-w:w),D=S+(l?-T:T),O=-a[0]*x,k=-a[1]*S,A=Xs(E,h,g),j=Xs(D,_,v);if(o){let e=0,t=0;c&&w<0?e=Js(y+w+O,o[0][0]):!c&&w>0&&(e=Ys(y+E+O,o[1][0])),l&&T<0?t=Js(b+T+k,o[0][1]):!l&&T>0&&(t=Ys(b+D+k,o[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(s){let e=0,t=0;c&&w>0?e=Ys(y+w,s[0][0]):!c&&w<0&&(e=Js(y+E,s[1][0])),l&&T>0?t=Ys(b+T,s[0][1]):!l&&T<0&&(t=Js(b+D,s[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(i){if(u){let e=Xs(E/C,_,v)*C;if(A=Math.max(A,e),o){let e=0;e=!c&&!l||c&&!l&&f?Ys(b+k+E/C,o[1][1])*C:Js(b+k+(c?w:-w)/C,o[0][1])*C,A=Math.max(A,e)}if(s){let e=0;e=!c&&!l||c&&!l&&f?Js(b+E/C,s[1][1])*C:Ys(b+(c?w:-w)/C,s[0][1])*C,A=Math.max(A,e)}}if(d){let e=Xs(D*C,h,g)/C;if(j=Math.max(j,e),o){let e=0;e=!c&&!l||l&&!c&&f?Ys(y+D*C+O,o[1][0])/C:Js(y+(l?T:-T)*C+O,o[0][0])/C,j=Math.max(j,e)}if(s){let e=0;e=!c&&!l||l&&!c&&f?Js(y+D*C,s[1][0])/C:Ys(y+(l?T:-T)*C,s[0][0])/C,j=Math.max(j,e)}}}T+=T<0?j:-j,w+=w<0?A:-A,i&&(f?E>D*C?T=(Zs(c,l)?-w:w)/C:w=(Zs(c,l)?-T:T)*C:u?(T=w/C,l=c):(w=T*C,c=l));let M=c?y+w:y,N=l?b+T:b;return{width:x+(c?-w:w),height:S+(l?-T:T),x:a[0]*w*(c?-1:1)+M,y:a[1]*T*(l?-1:1)+N}}var $s={width:0,height:0,x:0,y:0},ec={...$s,pointerX:0,pointerY:0,aspectRatio:1};function tc(e,t,n){let r=t.position.x+e.position.x,i=t.position.y+e.position.y,a=e.measured.width??0,o=e.measured.height??0,s=n[0]*a,c=n[1]*o;return[[r-s,i-c],[r+a-s,i+o-c]]}function nc({domNode:e,nodeId:t,getStoreItems:n,onChange:r,onEnd:i}){let a=zt(e),o={controlDirection:qs(`bottom-right`),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function s({controlPosition:e,boundaries:s,keepAspectRatio:c,resizeDirection:l,onResizeStart:u,onResize:d,onResizeEnd:f,shouldResize:p}){let m={...$s},h={...ec};o={boundaries:s,resizeDirection:l,keepAspectRatio:c,controlDirection:qs(e)};let g,_=null,v=[],y,b,x,S=!1,C=en().on(`start`,e=>{let{nodeLookup:r,transform:i,snapGrid:a,snapToGrid:o,nodeOrigin:s,paneDomNode:c}=n();if(g=r.get(t),!g)return;_=c?.getBoundingClientRect()??null;let{xSnapped:l,ySnapped:d}=vo(e.sourceEvent,{transform:i,snapGrid:a,snapToGrid:o,containerBounds:_});m={width:g.measured.width??0,height:g.measured.height??0,x:g.position.x??0,y:g.position.y??0},h={...m,pointerX:l,pointerY:d,aspectRatio:m.width/m.height},y=void 0,b=uo(g.extent)?g.extent:void 0,g.parentId&&(g.extent===`parent`||g.expandParent)&&(y=r.get(g.parentId)),y&&g.extent===`parent`&&(b=[[0,0],[y.measured.width,y.measured.height]]),v=[],x=void 0;for(let[e,n]of r)if(n.parentId===t&&(v.push({id:e,position:{...n.position},extent:n.extent}),n.extent===`parent`||n.expandParent)){let e=tc(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,{...m})}).on(`drag`,e=>{let{transform:t,snapGrid:i,snapToGrid:a,nodeOrigin:s}=n(),c=vo(e.sourceEvent,{transform:t,snapGrid:i,snapToGrid:a,containerBounds:_}),l=[];if(!g)return;let{x:u,y:f,width:C,height:w}=m,T={},E=g.origin??s,{width:D,height:O,x:k,y:A}=Qs(h,o.controlDirection,c,o.boundaries,o.keepAspectRatio,E,b,x),j=D!==C,M=O!==w,N=k!==u&&j,P=A!==f&&M;if(!N&&!P&&!j&&!M)return;if((N||P||E[0]===1||E[1]===1)&&(T.x=N?k:m.x,T.y=P?A:m.y,m.x=T.x,m.y=T.y,v.length>0)){let e=k-u,t=A-f;for(let n of v)n.position={x:n.position.x-e+E[0]*(D-C),y:n.position.y-t+E[1]*(O-w)},l.push(n)}if((j||M)&&(T.width=j&&(!o.resizeDirection||o.resizeDirection===`horizontal`)?D:m.width,T.height=M&&(!o.resizeDirection||o.resizeDirection===`vertical`)?O:m.height,m.width=T.width,m.height=T.height),y&&g.expandParent){let e=E[0]*(T.width??0);T.x&&T.x{S&&=(f?.(e,{...m}),i?.({...m}),!1)});a.call(C)}function c(){a.on(`.drag`,null)}return{update:s,destroy:c}}var rc=o((e=>{var t=u();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?f:t.useSyncExternalStore})),ic=o(((e,t)=>{t.exports=rc()})),ac=o((e=>{var t=u(),n=ic();function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=n.useSyncExternalStore,o=t.useRef,s=t.useEffect,c=t.useMemo,l=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,u){var d=o(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=c(function(){function e(e){if(!a){if(a=!0,o=e,e=r(e),u!==void 0&&f.hasValue){var t=f.value;if(u(t,e))return s=t}return s=e}if(t=s,i(o,e))return t;var n=r(e);return u!==void 0&&u(t,n)?(o=e,t):(o=e,s=n)}var a=!1,o,s,c=n===void 0?null:n;return[function(){return e(t())},c===null?void 0:function(){return e(c())}]},[t,n,r,u]);var p=a(e,d[0],d[1]);return s(function(){f.hasValue=!0,f.value=p},[p]),l(p),p}})),oc=c(o(((e,t)=>{t.exports=ac()}))(),1),sc=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e)),destroy:()=>{n.clear()}},o=t=e(r,i,a);return a},cc=e=>e?sc(e):sc,{useDebugValue:lc}=y.default,{useSyncExternalStoreWithSelector:uc}=oc.default,dc=e=>e;function fc(e,t=dc,n){let r=uc(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return lc(r),r}var pc=(e,t)=>{let n=cc(e),r=(e,r=t)=>fc(n,e,r);return Object.assign(r,n),r},mc=(e,t)=>e?pc(e,t):pc;function hc(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||!Object.is(e[r],t[r]))return!1;return!0}var gc=m(),_c=(0,y.createContext)(null),vc=_c.Provider,yc=va.error001(`react`);function K(e,t){let n=(0,y.useContext)(_c);if(n===null)throw Error(yc);return fc(n,e,t)}function bc(){let e=(0,y.useContext)(_c);if(e===null)throw Error(yc);return(0,y.useMemo)(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}var xc={display:`none`},Sc={position:`absolute`,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0px, 0px, 0px, 0px)`,clipPath:`inset(100%)`},Cc=`react-flow__node-desc`,wc=`react-flow__edge-desc`,Tc=`react-flow__aria-live`,Ec=e=>e.ariaLiveMessage,Dc=e=>e.ariaLabelConfig;function Oc({rfId:e}){let t=K(Ec);return(0,x.jsx)(`div`,{id:`${Tc}-${e}`,"aria-live":`assertive`,"aria-atomic":`true`,style:Sc,children:t})}function kc({rfId:e,disableKeyboardA11y:t}){let n=K(Dc);return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`div`,{id:`${Cc}-${e}`,style:xc,children:t?n[`node.a11yDescription.default`]:n[`node.a11yDescription.keyboardDisabled`]}),(0,x.jsx)(`div`,{id:`${wc}-${e}`,style:xc,children:n[`edge.a11yDescription.default`]}),!t&&(0,x.jsx)(Oc,{rfId:e})]})}var Ac=(0,y.forwardRef)(({position:e=`top-left`,children:t,className:n,style:r,...i},a)=>(0,x.jsx)(`div`,{className:S([`react-flow__panel`,n,...`${e}`.split(`-`)]),style:r,ref:a,...i,children:t}));Ac.displayName=`Panel`;var jc=`https://reactflow.dev?utm_source=attribution`;function Mc({proOptions:e,position:t=`bottom-right`}){return e?.hideAttribution?null:(0,x.jsx)(Ac,{position:t,className:`react-flow__attribution`,"data-message":`Please only hide this attribution when you are subscribed to React Flow Pro: ${jc}`,children:(0,x.jsx)(`a`,{href:jc,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`React Flow attribution`,children:`React Flow`})})}var Nc=e=>{let t=[],n=[];for(let[,n]of e.nodeLookup)n.selected&&t.push(n.internals.userNode);for(let[,t]of e.edgeLookup)t.selected&&n.push(t);return{selectedNodes:t,selectedEdges:n}},Pc=e=>e.id;function Fc(e,t){return hc(e.selectedNodes.map(Pc),t.selectedNodes.map(Pc))&&hc(e.selectedEdges.map(Pc),t.selectedEdges.map(Pc))}function Ic({onSelectionChange:e}){let t=bc(),{selectedNodes:n,selectedEdges:r}=K(Nc,Fc);return(0,y.useEffect)(()=>{let i={nodes:n,edges:r};e?.(i),t.getState().onSelectionChangeHandlers.forEach(e=>e(i))},[n,r,e]),null}var Lc=e=>!!e.onSelectionChangeHandlers;function Rc({onSelectionChange:e}){let t=K(Lc);return e||t?(0,x.jsx)(Ic,{onSelectionChange:e}):null}var zc=[0,0],Bc={x:0,y:0,zoom:1},Vc=[...`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`.split(`.`),`rfId`],Hc=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}),Uc={translateExtent:ya,nodeOrigin:zc,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:`nopan`,rfId:`1`};function Wc(e){let{setNodes:t,setEdges:n,setMinZoom:r,setMaxZoom:i,setTranslateExtent:a,setNodeExtent:o,reset:s,setDefaultNodesAndEdges:c}=K(Hc,hc),l=bc();(0,y.useEffect)(()=>(c(e.defaultNodes,e.defaultEdges),()=>{u.current=Uc,s()}),[]);let u=(0,y.useRef)(Uc);return(0,y.useEffect)(()=>{for(let s of Vc){let c=e[s];c!==u.current[s]&&e[s]!==void 0&&(s===`nodes`?t(c):s===`edges`?n(c):s===`minZoom`?r(c):s===`maxZoom`?i(c):s===`translateExtent`?a(c):s===`nodeExtent`?o(c):s===`ariaLabelConfig`?l.setState({ariaLabelConfig:_o(c)}):s===`fitView`?l.setState({fitViewQueued:c}):s===`fitViewOptions`?l.setState({fitViewOptions:c}):l.setState({[s]:c}))}u.current=e},Vc.map(t=>e[t])),null}function Gc(){return typeof window>`u`||!window.matchMedia?null:window.matchMedia(`(prefers-color-scheme: dark)`)}function Kc(e){let[t,n]=(0,y.useState)(e===`system`?null:e);return(0,y.useEffect)(()=>{if(e!==`system`){n(e);return}let t=Gc(),r=()=>n(t?.matches?`dark`:`light`);return r(),t?.addEventListener(`change`,r),()=>{t?.removeEventListener(`change`,r)}},[e]),t===null?Gc()?.matches?`dark`:`light`:t}var qc=typeof document<`u`?document:null;function Jc(e=null,t={target:qc,actInsideInputWithModifier:!0}){let[n,r]=(0,y.useState)(!1),i=(0,y.useRef)(!1),a=(0,y.useRef)(new Set([])),[o,s]=(0,y.useMemo)(()=>{if(e!==null){let t=(Array.isArray(e)?e:[e]).filter(e=>typeof e==`string`).map(e=>e.replace(`+`,` `).replace(` `,` +`).split(` -`)),v=g.reduce((m,y)=>m.concat(...y),[]);return[g,v]}return[[],[]]},[t]);return q.useEffect(()=>{const p=(r==null?void 0:r.target)??Vh,g=(r==null?void 0:r.actInsideInputWithModifier)??!0;if(t!==null){const v=x=>{var w,k;if(u.current=x.ctrlKey||x.metaKey||x.shiftKey||x.altKey,(!u.current||u.current&&!g)&&a0(x))return!1;const _=Wh(x.code,d);if(a.current.add(x[_]),Bh(c,a.current,!1)){const P=((k=(w=x.composedPath)==null?void 0:w.call(x))==null?void 0:k[0])||x.target,N=(P==null?void 0:P.nodeName)==="BUTTON"||(P==null?void 0:P.nodeName)==="A";r.preventDefault!==!1&&(u.current||!N)&&x.preventDefault(),s(!0)}},m=x=>{const S=Wh(x.code,d);Bh(c,a.current,!0)?(s(!1),a.current.clear()):a.current.delete(x[S]),x.key==="Meta"&&a.current.clear(),u.current=!1},y=()=>{a.current.clear(),s(!1)};return p==null||p.addEventListener("keydown",v),p==null||p.addEventListener("keyup",m),window.addEventListener("blur",y),window.addEventListener("contextmenu",y),()=>{p==null||p.removeEventListener("keydown",v),p==null||p.removeEventListener("keyup",m),window.removeEventListener("blur",y),window.removeEventListener("contextmenu",y)}}},[t,s]),i}function Bh(t,r,i){return t.filter(s=>i||s.length===r.size).some(s=>s.every(u=>r.has(u)))}function Wh(t,r){return r.includes(t)?"code":"key"}const l2=()=>{const t=je();return q.useMemo(()=>({zoomIn:r=>{const{panZoom:i}=t.getState();return i?i.scaleBy(1.2,r):Promise.resolve(!1)},zoomOut:r=>{const{panZoom:i}=t.getState();return i?i.scaleBy(1/1.2,r):Promise.resolve(!1)},zoomTo:(r,i)=>{const{panZoom:s}=t.getState();return s?s.scaleTo(r,i):Promise.resolve(!1)},getZoom:()=>t.getState().transform[2],setViewport:async(r,i)=>{const{transform:[s,u,a],panZoom:c}=t.getState();return c?(await c.setViewport({x:r.x??s,y:r.y??u,zoom:r.zoom??a},i),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{const[r,i,s]=t.getState().transform;return{x:r,y:i,zoom:s}},setCenter:async(r,i,s)=>t.getState().setCenter(r,i,s),fitBounds:async(r,i)=>{const{width:s,height:u,minZoom:a,maxZoom:c,panZoom:d}=t.getState(),p=fc(r,s,u,a,c,(i==null?void 0:i.padding)??.1);return d?(await d.setViewport(p,{duration:i==null?void 0:i.duration,ease:i==null?void 0:i.ease,interpolate:i==null?void 0:i.interpolate}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:(r,i={})=>{const{transform:s,snapGrid:u,snapToGrid:a,domNode:c}=t.getState();if(!c)return r;const{x:d,y:p}=c.getBoundingClientRect(),g={x:r.x-d,y:r.y-p},v=i.snapGrid??u,m=i.snapToGrid??a;return Ni(g,s,m,v)},flowToScreenPosition:r=>{const{transform:i,domNode:s}=t.getState();if(!s)return r;const{x:u,y:a}=s.getBoundingClientRect(),c=vl(r,i);return{x:c.x+u,y:c.y+a}}}),[])};function T0(t,r){const i=[],s=new Map,u=[];for(const a of t)if(a.type==="add"){u.push(a);continue}else if(a.type==="remove"||a.type==="replace")s.set(a.id,[a]);else{const c=s.get(a.id);c?c.push(a):s.set(a.id,[a])}for(const a of r){const c=s.get(a.id);if(!c){i.push(a);continue}if(c[0].type==="remove")continue;if(c[0].type==="replace"){i.push({...c[0].item});continue}const d={...a};for(const p of c)u2(p,d);i.push(d)}return u.length&&u.forEach(a=>{a.index!==void 0?i.splice(a.index,0,{...a.item}):i.push({...a.item})}),i}function u2(t,r){switch(t.type){case"select":{r.selected=t.selected;break}case"position":{typeof t.position<"u"&&(r.position=t.position),typeof t.dragging<"u"&&(r.dragging=t.dragging);break}case"dimensions":{typeof t.dimensions<"u"&&(r.measured={...t.dimensions},t.setAttributes&&((t.setAttributes===!0||t.setAttributes==="width")&&(r.width=t.dimensions.width),(t.setAttributes===!0||t.setAttributes==="height")&&(r.height=t.dimensions.height))),typeof t.resizing=="boolean"&&(r.resizing=t.resizing);break}}}function A0(t,r){return T0(t,r)}function L0(t,r){return T0(t,r)}function fr(t,r){return{id:t,type:"select",selected:r}}function Zr(t,r=new Set,i=!1){const s=[];for(const[u,a]of t){const c=r.has(u);!(a.selected===void 0&&!c)&&a.selected!==c&&(i&&(a.selected=c),s.push(fr(a.id,c)))}return s}function Uh({items:t=[],lookup:r}){var u;const i=[],s=new Map(t.map(a=>[a.id,a]));for(const[a,c]of t.entries()){const d=r.get(c.id),p=((u=d==null?void 0:d.internals)==null?void 0:u.userNode)??d;p!==void 0&&p!==c&&i.push({id:c.id,item:c,type:"replace"}),p===void 0&&i.push({item:c,type:"add",index:a})}for(const[a]of r)s.get(a)===void 0&&i.push({id:a,type:"remove"});return i}function bh(t){return{id:t.id,type:"remove"}}const Yh=t=>Tx(t),a2=t=>t0(t);function R0(t){return q.forwardRef(t)}function Xh(t){const[r,i]=q.useState(BigInt(0)),[s]=q.useState(()=>c2(()=>i(u=>u+BigInt(1))));return qa(()=>{const u=s.get();u.length&&(t(u),s.reset())},[r]),s}function c2(t){let r=[];return{get:()=>r,reset:()=>{r=[]},push:i=>{r.push(i),t()}}}const D0=q.createContext(null);function f2({children:t}){const r=je(),i=q.useCallback(d=>{const{nodes:p=[],setNodes:g,hasDefaultNodes:v,onNodesChange:m,nodeLookup:y,fitViewQueued:x,onNodesChangeMiddlewareMap:S}=r.getState();let _=p;for(const k of d)_=typeof k=="function"?k(_):k;let w=Uh({items:_,lookup:y});for(const k of S.values())w=k(w);v&&g(_),w.length>0?m==null||m(w):x&&window.requestAnimationFrame(()=>{const{fitViewQueued:k,nodes:P,setNodes:N}=r.getState();k&&N(P)})},[]),s=Xh(i),u=q.useCallback(d=>{const{edges:p=[],setEdges:g,hasDefaultEdges:v,onEdgesChange:m,edgeLookup:y}=r.getState();let x=p;for(const S of d)x=typeof S=="function"?S(x):S;v?g(x):m&&m(Uh({items:x,lookup:y}))},[]),a=Xh(u),c=q.useMemo(()=>({nodeQueue:s,edgeQueue:a}),[]);return A.jsx(D0.Provider,{value:c,children:t})}function d2(){const t=q.useContext(D0);if(!t)throw new Error("useBatchContext must be used within a BatchProvider");return t}const h2=t=>!!t.panZoom;function Mi(){const t=l2(),r=je(),i=d2(),s=Ne(h2),u=q.useMemo(()=>{const a=m=>r.getState().nodeLookup.get(m),c=m=>{i.nodeQueue.push(m)},d=m=>{i.edgeQueue.push(m)},p=m=>{var k,P;const{nodeLookup:y,nodeOrigin:x}=r.getState(),S=Yh(m)?m:y.get(m.id),_=S.parentId?l0(S.position,S.measured,S.parentId,y,x):S.position,w={...S,position:_,width:((k=S.measured)==null?void 0:k.width)??S.width,height:((P=S.measured)==null?void 0:P.height)??S.height};return so(w)},g=(m,y,x={replace:!1})=>{c(S=>S.map(_=>{if(_.id===m){const w=typeof y=="function"?y(_):y;return x.replace&&Yh(w)?w:{..._,...w}}return _}))},v=(m,y,x={replace:!1})=>{d(S=>S.map(_=>{if(_.id===m){const w=typeof y=="function"?y(_):y;return x.replace&&a2(w)?w:{..._,...w}}return _}))};return{getNodes:()=>r.getState().nodes.map(m=>({...m})),getNode:m=>{var y;return(y=a(m))==null?void 0:y.internals.userNode},getInternalNode:a,getEdges:()=>{const{edges:m=[]}=r.getState();return m.map(y=>({...y}))},getEdge:m=>r.getState().edgeLookup.get(m),setNodes:c,setEdges:d,addNodes:m=>{const y=Array.isArray(m)?m:[m];i.nodeQueue.push(x=>[...x,...y])},addEdges:m=>{const y=Array.isArray(m)?m:[m];i.edgeQueue.push(x=>[...x,...y])},toObject:()=>{const{nodes:m=[],edges:y=[],transform:x}=r.getState(),[S,_,w]=x;return{nodes:m.map(k=>({...k})),edges:y.map(k=>({...k})),viewport:{x:S,y:_,zoom:w}}},deleteElements:async({nodes:m=[],edges:y=[]})=>{const{nodes:x,edges:S,onNodesDelete:_,onEdgesDelete:w,triggerNodeChanges:k,triggerEdgeChanges:P,onDelete:N,onBeforeDelete:C}=r.getState(),{nodes:j,edges:D}=await $x({nodesToRemove:m,edgesToRemove:y,nodes:x,edges:S,onBeforeDelete:C}),H=D.length>0,B=j.length>0;if(H){const X=D.map(bh);w==null||w(D),P(X)}if(B){const X=j.map(bh);_==null||_(j),k(X)}return(B||H)&&(N==null||N({nodes:j,edges:D})),{deletedNodes:j,deletedEdges:D}},getIntersectingNodes:(m,y=!0,x)=>{const S=vh(m),_=S?m:p(m),w=x!==void 0;return _?(x||r.getState().nodes).filter(k=>{const P=r.getState().nodeLookup.get(k.id);if(P&&!S&&(k.id===m.id||!P.internals.positionAbsolute))return!1;const N=so(w?k:P),C=gi(N,_);return y&&C>0||C>=N.width*N.height||C>=_.width*_.height}):[]},isNodeIntersecting:(m,y,x=!0)=>{const _=vh(m)?m:p(m);if(!_)return!1;const w=gi(_,y);return x&&w>0||w>=y.width*y.height||w>=_.width*_.height},updateNode:g,updateNodeData:(m,y,x={replace:!1})=>{g(m,S=>{const _=typeof y=="function"?y(S):y;return x.replace?{...S,data:_}:{...S,data:{...S.data,..._}}},x)},updateEdge:v,updateEdgeData:(m,y,x={replace:!1})=>{v(m,S=>{const _=typeof y=="function"?y(S):y;return x.replace?{...S,data:_}:{...S,data:{...S.data,..._}}},x)},getNodesBounds:m=>{const{nodeLookup:y,nodeOrigin:x}=r.getState();return Ax(m,{nodeLookup:y,nodeOrigin:x})},getHandleConnections:({type:m,id:y,nodeId:x})=>{var S;return Array.from(((S=r.getState().connectionLookup.get(`${x}-${m}${y?`-${y}`:""}`))==null?void 0:S.values())??[])},getNodeConnections:({type:m,handleId:y,nodeId:x})=>{var S;return Array.from(((S=r.getState().connectionLookup.get(`${x}${m?y?`-${m}-${y}`:`-${m}`:""}`))==null?void 0:S.values())??[])},fitView:async m=>{const y=r.getState().fitViewResolver??Hx();return r.setState({fitViewQueued:!0,fitViewOptions:m,fitViewResolver:y}),i.nodeQueue.push(x=>[...x]),y.promise}}},[]);return q.useMemo(()=>({...u,...t,viewportInitialized:s}),[s])}const Qh=t=>t.selected,p2=typeof window<"u"?window:void 0;function g2({deleteKeyCode:t,multiSelectionKeyCode:r}){const i=je(),{deleteElements:s}=Mi(),u=yi(t,{actInsideInputWithModifier:!1}),a=yi(r,{target:p2});q.useEffect(()=>{if(u){const{edges:c,nodes:d}=i.getState();s({nodes:d.filter(Qh),edges:c.filter(Qh)}),i.setState({nodesSelectionActive:!1})}},[u]),q.useEffect(()=>{i.setState({multiSelectionActive:a})},[a])}function m2(t){const r=je();q.useEffect(()=>{const i=()=>{var u,a,c,d;if(!t.current||!(((a=(u=t.current).checkVisibility)==null?void 0:a.call(u))??!0))return!1;const s=dc(t.current);(s.height===0||s.width===0)&&((d=(c=r.getState()).onError)==null||d.call(c,"004",Jt.error004())),r.setState({width:s.width||500,height:s.height||500})};if(t.current){i(),window.addEventListener("resize",i);const s=new ResizeObserver(()=>i());return s.observe(t.current),()=>{window.removeEventListener("resize",i),s&&t.current&&s.unobserve(t.current)}}},[])}const Pl={position:"absolute",width:"100%",height:"100%",top:0,left:0},y2=t=>({userSelectionActive:t.userSelectionActive,lib:t.lib,connectionInProgress:t.connection.inProgress});function v2({onPaneContextMenu:t,zoomOnScroll:r=!0,zoomOnPinch:i=!0,panOnScroll:s=!1,panOnScrollSpeed:u=.5,panOnScrollMode:a=pr.Free,zoomOnDoubleClick:c=!0,panOnDrag:d=!0,defaultViewport:p,translateExtent:g,minZoom:v,maxZoom:m,zoomActivationKeyCode:y,preventScrolling:x=!0,children:S,noWheelClassName:_,noPanClassName:w,onViewportChange:k,isControlledViewport:P,paneClickDistance:N,selectionOnDrag:C}){const j=je(),D=q.useRef(null),{userSelectionActive:H,lib:B,connectionInProgress:X}=Ne(y2,De),J=yi(y),W=q.useRef();m2(D);const U=q.useCallback(Z=>{k==null||k({x:Z[0],y:Z[1],zoom:Z[2]}),P||j.setState({transform:Z})},[k,P]);return q.useEffect(()=>{if(D.current){W.current=Ew({domNode:D.current,minZoom:v,maxZoom:m,translateExtent:g,viewport:p,onDraggingChange:F=>j.setState(Y=>Y.paneDragging===F?Y:{paneDragging:F}),onPanZoomStart:(F,Y)=>{const{onViewportChangeStart:T,onMoveStart:L}=j.getState();L==null||L(F,Y),T==null||T(Y)},onPanZoom:(F,Y)=>{const{onViewportChange:T,onMove:L}=j.getState();L==null||L(F,Y),T==null||T(Y)},onPanZoomEnd:(F,Y)=>{const{onViewportChangeEnd:T,onMoveEnd:L}=j.getState();L==null||L(F,Y),T==null||T(Y)}});const{x:Z,y:z,zoom:b}=W.current.getViewport();return j.setState({panZoom:W.current,transform:[Z,z,b],domNode:D.current.closest(".react-flow")}),()=>{var F;(F=W.current)==null||F.destroy()}}},[]),q.useEffect(()=>{var Z;(Z=W.current)==null||Z.update({onPaneContextMenu:t,zoomOnScroll:r,zoomOnPinch:i,panOnScroll:s,panOnScrollSpeed:u,panOnScrollMode:a,zoomOnDoubleClick:c,panOnDrag:d,zoomActivationKeyPressed:J,preventScrolling:x,noPanClassName:w,userSelectionActive:H,noWheelClassName:_,lib:B,onTransformChange:U,connectionInProgress:X,selectionOnDrag:C,paneClickDistance:N})},[t,r,i,s,u,a,c,d,J,x,w,H,_,B,U,X,C,N]),A.jsx("div",{className:"react-flow__renderer",ref:D,style:Pl,children:S})}const x2=t=>({userSelectionActive:t.userSelectionActive,userSelectionRect:t.userSelectionRect});function w2(){const{userSelectionActive:t,userSelectionRect:r}=Ne(x2,De);return t&&r?A.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:r.width,height:r.height,transform:`translate(${r.x}px, ${r.y}px)`}}):null}const ja=(t,r)=>i=>{i.target===r.current&&(t==null||t(i))},S2=t=>({userSelectionActive:t.userSelectionActive,elementsSelectable:t.elementsSelectable,connectionInProgress:t.connection.inProgress,dragging:t.paneDragging});function _2({isSelecting:t,selectionKeyPressed:r,selectionMode:i=pi.Full,panOnDrag:s,paneClickDistance:u,selectionOnDrag:a,onSelectionStart:c,onSelectionEnd:d,onPaneClick:p,onPaneContextMenu:g,onPaneScroll:v,onPaneMouseEnter:m,onPaneMouseMove:y,onPaneMouseLeave:x,children:S}){const _=je(),{userSelectionActive:w,elementsSelectable:k,dragging:P,connectionInProgress:N}=Ne(S2,De),C=k&&(t||w),j=q.useRef(null),D=q.useRef(),H=q.useRef(new Set),B=q.useRef(new Set),X=q.useRef(!1),J=T=>{if(X.current||N){X.current=!1;return}p==null||p(T),_.getState().resetSelectedElements(),_.setState({nodesSelectionActive:!1})},W=T=>{if(Array.isArray(s)&&(s!=null&&s.includes(2))){T.preventDefault();return}g==null||g(T)},U=v?T=>v(T):void 0,Z=T=>{X.current&&(T.stopPropagation(),X.current=!1)},z=T=>{var le,ue;const{domNode:L}=_.getState();if(D.current=L==null?void 0:L.getBoundingClientRect(),!D.current)return;const V=T.target===j.current;if(!V&&!!T.target.closest(".nokey")||!t||!(a&&V||r)||T.button!==0||!T.isPrimary)return;(ue=(le=T.target)==null?void 0:le.setPointerCapture)==null||ue.call(le,T.pointerId),X.current=!1;const{x:te,y:re}=Bt(T.nativeEvent,D.current);_.setState({userSelectionRect:{width:0,height:0,startX:te,startY:re,x:te,y:re}}),V||(T.stopPropagation(),T.preventDefault())},b=T=>{const{userSelectionRect:L,transform:V,nodeLookup:M,edgeLookup:R,connectionLookup:te,triggerNodeChanges:re,triggerEdgeChanges:le,defaultEdgeOptions:ue,resetSelectedElements:ae}=_.getState();if(!D.current||!L)return;const{x:ee,y:ce}=Bt(T.nativeEvent,D.current),{startX:we,startY:_e}=L;if(!X.current){const Me=r?0:u;if(Math.hypot(ee-we,ce-_e)<=Me)return;ae(),c==null||c(T)}X.current=!0;const Se={startX:we,startY:_e,x:eeMe.id)),B.current=new Set;const Te=(ue==null?void 0:ue.selectable)??!0;for(const Me of H.current){const We=te.get(Me);if(We)for(const{edgeId:At}of We.values()){const gt=R.get(At);gt&&(gt.selectable??Te)&&B.current.add(At)}}if(!xh(ye,H.current)){const Me=Zr(M,H.current,!0);re(Me)}if(!xh(Ce,B.current)){const Me=Zr(R,B.current);le(Me)}_.setState({userSelectionRect:Se,userSelectionActive:!0,nodesSelectionActive:!1})},F=T=>{var L,V;T.button===0&&((V=(L=T.target)==null?void 0:L.releasePointerCapture)==null||V.call(L,T.pointerId),!w&&T.target===j.current&&_.getState().userSelectionRect&&(J==null||J(T)),_.setState({userSelectionActive:!1,userSelectionRect:null}),X.current&&(d==null||d(T),_.setState({nodesSelectionActive:H.current.size>0})))},Y=s===!0||Array.isArray(s)&&s.includes(0);return A.jsxs("div",{className:be(["react-flow__pane",{draggable:Y,dragging:P,selection:t}]),onClick:C?void 0:ja(J,j),onContextMenu:ja(W,j),onWheel:ja(U,j),onPointerEnter:C?void 0:m,onPointerMove:C?b:y,onPointerUp:C?F:void 0,onPointerDownCapture:C?z:void 0,onClickCapture:C?Z:void 0,onPointerLeave:x,ref:j,style:Pl,children:[S,A.jsx(w2,{})]})}function Ja({id:t,store:r,unselect:i=!1,nodeRef:s}){const{addSelectedNodes:u,unselectNodesAndEdges:a,multiSelectionActive:c,nodeLookup:d,onError:p}=r.getState(),g=d.get(t);if(!g){p==null||p("012",Jt.error012(t));return}r.setState({nodesSelectionActive:!1}),g.selected?(i||g.selected&&c)&&(a({nodes:[g],edges:[]}),requestAnimationFrame(()=>{var v;return(v=s==null?void 0:s.current)==null?void 0:v.blur()})):u([t])}function $0({nodeRef:t,disabled:r=!1,noDragClassName:i,handleSelector:s,nodeId:u,isSelectable:a,nodeClickDistance:c}){const d=je(),[p,g]=q.useState(!1),v=q.useRef();return q.useEffect(()=>{v.current=aw({getStoreItems:()=>d.getState(),onNodeMouseDown:m=>{Ja({id:m,store:d,nodeRef:t})},onDragStart:()=>{g(!0)},onDragStop:()=>{g(!1)}})},[]),q.useEffect(()=>{if(!(r||!t.current||!v.current))return v.current.update({noDragClassName:i,handleSelector:s,domNode:t.current,isSelectable:a,nodeId:u,nodeClickDistance:c}),()=>{var m;(m=v.current)==null||m.destroy()}},[i,s,r,a,t,u,c]),p}const E2=t=>r=>r.selected&&(r.draggable||t&&typeof r.draggable>"u");function j0(){const t=je();return q.useCallback(i=>{const{nodeExtent:s,snapToGrid:u,snapGrid:a,nodesDraggable:c,onError:d,updateNodePositions:p,nodeLookup:g,nodeOrigin:v}=t.getState(),m=new Map,y=E2(c),x=u?a[0]:5,S=u?a[1]:5,_=i.direction.x*x*i.factor,w=i.direction.y*S*i.factor;for(const[,k]of g){if(!y(k))continue;let P={x:k.internals.positionAbsolute.x+_,y:k.internals.positionAbsolute.y+w};u&&(P=ki(P,a));const{position:N,positionAbsolute:C}=n0({nodeId:k.id,nextPosition:P,nodeLookup:g,nodeExtent:s,nodeOrigin:v,onError:d});k.position=N,k.internals.positionAbsolute=C,m.set(k.id,k)}p(m)},[])}const vc=q.createContext(null),k2=vc.Provider;vc.Consumer;const O0=()=>q.useContext(vc),N2=t=>({connectOnClick:t.connectOnClick,noPanClassName:t.noPanClassName,rfId:t.rfId}),C2=(t,r,i)=>s=>{const{connectionClickStartHandle:u,connectionMode:a,connection:c}=s,{fromHandle:d,toHandle:p,isValid:g}=c,v=(p==null?void 0:p.nodeId)===t&&(p==null?void 0:p.id)===r&&(p==null?void 0:p.type)===i;return{connectingFrom:(d==null?void 0:d.nodeId)===t&&(d==null?void 0:d.id)===r&&(d==null?void 0:d.type)===i,connectingTo:v,clickConnecting:(u==null?void 0:u.nodeId)===t&&(u==null?void 0:u.id)===r&&(u==null?void 0:u.type)===i,isPossibleEndHandle:a===ro.Strict?(d==null?void 0:d.type)!==i:t!==(d==null?void 0:d.nodeId)||r!==(d==null?void 0:d.id),connectionInProcess:!!d,clickConnectionInProcess:!!u,valid:v&&g}};function M2({type:t="source",position:r=me.Top,isValidConnection:i,isConnectable:s=!0,isConnectableStart:u=!0,isConnectableEnd:a=!0,id:c,onConnect:d,children:p,className:g,onMouseDown:v,onTouchStart:m,...y},x){var b,F;const S=c||null,_=t==="target",w=je(),k=O0(),{connectOnClick:P,noPanClassName:N,rfId:C}=Ne(N2,De),{connectingFrom:j,connectingTo:D,clickConnecting:H,isPossibleEndHandle:B,connectionInProcess:X,clickConnectionInProcess:J,valid:W}=Ne(C2(k,S,t),De);k||(F=(b=w.getState()).onError)==null||F.call(b,"010",Jt.error010());const U=Y=>{const{defaultEdgeOptions:T,onConnect:L,hasDefaultEdges:V}=w.getState(),M={...T,...Y};if(V){const{edges:R,setEdges:te}=w.getState();te(Xx(M,R))}L==null||L(M),d==null||d(M)},Z=Y=>{if(!k)return;const T=c0(Y.nativeEvent);if(u&&(T&&Y.button===0||!T)){const L=w.getState();Za.onPointerDown(Y.nativeEvent,{handleDomNode:Y.currentTarget,autoPanOnConnect:L.autoPanOnConnect,connectionMode:L.connectionMode,connectionRadius:L.connectionRadius,domNode:L.domNode,nodeLookup:L.nodeLookup,lib:L.lib,isTarget:_,handleId:S,nodeId:k,flowId:L.rfId,panBy:L.panBy,cancelConnection:L.cancelConnection,onConnectStart:L.onConnectStart,onConnectEnd:(...V)=>{var M,R;return(R=(M=w.getState()).onConnectEnd)==null?void 0:R.call(M,...V)},updateConnection:L.updateConnection,onConnect:U,isValidConnection:i||((...V)=>{var M,R;return((R=(M=w.getState()).isValidConnection)==null?void 0:R.call(M,...V))??!0}),getTransform:()=>w.getState().transform,getFromHandle:()=>w.getState().connection.fromHandle,autoPanSpeed:L.autoPanSpeed,dragThreshold:L.connectionDragThreshold})}T?v==null||v(Y):m==null||m(Y)},z=Y=>{const{onClickConnectStart:T,onClickConnectEnd:L,connectionClickStartHandle:V,connectionMode:M,isValidConnection:R,lib:te,rfId:re,nodeLookup:le,connection:ue}=w.getState();if(!k||!V&&!u)return;if(!V){T==null||T(Y.nativeEvent,{nodeId:k,handleId:S,handleType:t}),w.setState({connectionClickStartHandle:{nodeId:k,type:t,id:S}});return}const ae=u0(Y.target),ee=i||R,{connection:ce,isValid:we}=Za.isValid(Y.nativeEvent,{handle:{nodeId:k,id:S,type:t},connectionMode:M,fromNodeId:V.nodeId,fromHandleId:V.id||null,fromType:V.type,isValidConnection:ee,flowId:re,doc:ae,lib:te,nodeLookup:le});we&&ce&&U(ce);const _e=structuredClone(ue);delete _e.inProgress,_e.toPosition=_e.toHandle?_e.toHandle.position:null,L==null||L(Y,_e),w.setState({connectionClickStartHandle:null})};return A.jsx("div",{"data-handleid":S,"data-nodeid":k,"data-handlepos":r,"data-id":`${C}-${k}-${S}-${t}`,className:be(["react-flow__handle",`react-flow__handle-${r}`,"nodrag",N,g,{source:!_,target:_,connectable:s,connectablestart:u,connectableend:a,clickconnecting:H,connectingfrom:j,connectingto:D,valid:W,connectionindicator:s&&(!X||B)&&(X||J?a:u)}]),onMouseDown:Z,onTouchStart:Z,onClick:P?z:void 0,ref:x,...y,children:p})}const Zt=q.memo(R0(M2));function P2({data:t,isConnectable:r,sourcePosition:i=me.Bottom}){return A.jsxs(A.Fragment,{children:[t==null?void 0:t.label,A.jsx(Zt,{type:"source",position:i,isConnectable:r})]})}function z2({data:t,isConnectable:r,targetPosition:i=me.Top,sourcePosition:s=me.Bottom}){return A.jsxs(A.Fragment,{children:[A.jsx(Zt,{type:"target",position:i,isConnectable:r}),t==null?void 0:t.label,A.jsx(Zt,{type:"source",position:s,isConnectable:r})]})}function I2(){return null}function T2({data:t,isConnectable:r,targetPosition:i=me.Top}){return A.jsxs(A.Fragment,{children:[A.jsx(Zt,{type:"target",position:i,isConnectable:r}),t==null?void 0:t.label]})}const xl={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},Kh={input:P2,default:z2,output:T2,group:I2};function A2(t){var r,i,s,u;return t.internals.handleBounds===void 0?{width:t.width??t.initialWidth??((r=t.style)==null?void 0:r.width),height:t.height??t.initialHeight??((i=t.style)==null?void 0:i.height)}:{width:t.width??((s=t.style)==null?void 0:s.width),height:t.height??((u=t.style)==null?void 0:u.height)}}const L2=t=>{const{width:r,height:i,x:s,y:u}=Ei(t.nodeLookup,{filter:a=>!!a.selected});return{width:Vt(r)?r:null,height:Vt(i)?i:null,userSelectionActive:t.userSelectionActive,transformString:`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]}) translate(${s}px,${u}px)`}};function R2({onSelectionContextMenu:t,noPanClassName:r,disableKeyboardA11y:i}){const s=je(),{width:u,height:a,transformString:c,userSelectionActive:d}=Ne(L2,De),p=j0(),g=q.useRef(null);q.useEffect(()=>{var x;i||(x=g.current)==null||x.focus({preventScroll:!0})},[i]);const v=!d&&u!==null&&a!==null;if($0({nodeRef:g,disabled:!v}),!v)return null;const m=t?x=>{const S=s.getState().nodes.filter(_=>_.selected);t(x,S)}:void 0,y=x=>{Object.prototype.hasOwnProperty.call(xl,x.key)&&(x.preventDefault(),p({direction:xl[x.key],factor:x.shiftKey?4:1}))};return A.jsx("div",{className:be(["react-flow__nodesselection","react-flow__container",r]),style:{transform:c},children:A.jsx("div",{ref:g,className:"react-flow__nodesselection-rect",onContextMenu:m,tabIndex:i?void 0:-1,onKeyDown:i?void 0:y,style:{width:u,height:a}})})}const Gh=typeof window<"u"?window:void 0,D2=t=>({nodesSelectionActive:t.nodesSelectionActive,userSelectionActive:t.userSelectionActive});function F0({children:t,onPaneClick:r,onPaneMouseEnter:i,onPaneMouseMove:s,onPaneMouseLeave:u,onPaneContextMenu:a,onPaneScroll:c,paneClickDistance:d,deleteKeyCode:p,selectionKeyCode:g,selectionOnDrag:v,selectionMode:m,onSelectionStart:y,onSelectionEnd:x,multiSelectionKeyCode:S,panActivationKeyCode:_,zoomActivationKeyCode:w,elementsSelectable:k,zoomOnScroll:P,zoomOnPinch:N,panOnScroll:C,panOnScrollSpeed:j,panOnScrollMode:D,zoomOnDoubleClick:H,panOnDrag:B,defaultViewport:X,translateExtent:J,minZoom:W,maxZoom:U,preventScrolling:Z,onSelectionContextMenu:z,noWheelClassName:b,noPanClassName:F,disableKeyboardA11y:Y,onViewportChange:T,isControlledViewport:L}){const{nodesSelectionActive:V,userSelectionActive:M}=Ne(D2,De),R=yi(g,{target:Gh}),te=yi(_,{target:Gh}),re=te||B,le=te||C,ue=v&&re!==!0,ae=R||M||ue;return g2({deleteKeyCode:p,multiSelectionKeyCode:S}),A.jsx(v2,{onPaneContextMenu:a,elementsSelectable:k,zoomOnScroll:P,zoomOnPinch:N,panOnScroll:le,panOnScrollSpeed:j,panOnScrollMode:D,zoomOnDoubleClick:H,panOnDrag:!R&&re,defaultViewport:X,translateExtent:J,minZoom:W,maxZoom:U,zoomActivationKeyCode:w,preventScrolling:Z,noWheelClassName:b,noPanClassName:F,onViewportChange:T,isControlledViewport:L,paneClickDistance:d,selectionOnDrag:ue,children:A.jsxs(_2,{onSelectionStart:y,onSelectionEnd:x,onPaneClick:r,onPaneMouseEnter:i,onPaneMouseMove:s,onPaneMouseLeave:u,onPaneContextMenu:a,onPaneScroll:c,panOnDrag:re,isSelecting:!!ae,selectionMode:m,selectionKeyPressed:R,paneClickDistance:d,selectionOnDrag:ue,children:[t,V&&A.jsx(R2,{onSelectionContextMenu:z,noPanClassName:F,disableKeyboardA11y:Y})]})})}F0.displayName="FlowRenderer";const $2=q.memo(F0),j2=t=>r=>t?cc(r.nodeLookup,{x:0,y:0,width:r.width,height:r.height},r.transform,!0).map(i=>i.id):Array.from(r.nodeLookup.keys());function O2(t){return Ne(q.useCallback(j2(t),[t]),De)}const F2=t=>t.updateNodeInternals;function H2(){const t=Ne(F2),[r]=q.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(i=>{const s=new Map;i.forEach(u=>{const a=u.target.getAttribute("data-id");s.set(a,{id:a,nodeElement:u.target,force:!0})}),t(s)}));return q.useEffect(()=>()=>{r==null||r.disconnect()},[r]),r}function V2({node:t,nodeType:r,hasDimensions:i,resizeObserver:s}){const u=je(),a=q.useRef(null),c=q.useRef(null),d=q.useRef(t.sourcePosition),p=q.useRef(t.targetPosition),g=q.useRef(r),v=i&&!!t.internals.handleBounds;return q.useEffect(()=>{a.current&&!t.hidden&&(!v||c.current!==a.current)&&(c.current&&(s==null||s.unobserve(c.current)),s==null||s.observe(a.current),c.current=a.current)},[v,t.hidden]),q.useEffect(()=>()=>{c.current&&(s==null||s.unobserve(c.current),c.current=null)},[]),q.useEffect(()=>{if(a.current){const m=g.current!==r,y=d.current!==t.sourcePosition,x=p.current!==t.targetPosition;(m||y||x)&&(g.current=r,d.current=t.sourcePosition,p.current=t.targetPosition,u.getState().updateNodeInternals(new Map([[t.id,{id:t.id,nodeElement:a.current,force:!0}]])))}},[t.id,r,t.sourcePosition,t.targetPosition]),a}function B2({id:t,onClick:r,onMouseEnter:i,onMouseMove:s,onMouseLeave:u,onContextMenu:a,onDoubleClick:c,nodesDraggable:d,elementsSelectable:p,nodesConnectable:g,nodesFocusable:v,resizeObserver:m,noDragClassName:y,noPanClassName:x,disableKeyboardA11y:S,rfId:_,nodeTypes:w,nodeClickDistance:k,onError:P}){const{node:N,internals:C,isParent:j}=Ne(ee=>{const ce=ee.nodeLookup.get(t),we=ee.parentLookup.has(t);return{node:ce,internals:ce.internals,isParent:we}},De);let D=N.type||"default",H=(w==null?void 0:w[D])||Kh[D];H===void 0&&(P==null||P("003",Jt.error003(D)),D="default",H=(w==null?void 0:w.default)||Kh.default);const B=!!(N.draggable||d&&typeof N.draggable>"u"),X=!!(N.selectable||p&&typeof N.selectable>"u"),J=!!(N.connectable||g&&typeof N.connectable>"u"),W=!!(N.focusable||v&&typeof N.focusable>"u"),U=je(),Z=s0(N),z=V2({node:N,nodeType:D,hasDimensions:Z,resizeObserver:m}),b=$0({nodeRef:z,disabled:N.hidden||!B,noDragClassName:y,handleSelector:N.dragHandle,nodeId:t,isSelectable:X,nodeClickDistance:k}),F=j0();if(N.hidden)return null;const Y=yn(N),T=A2(N),L=X||B||r||i||s||u,V=i?ee=>i(ee,{...C.userNode}):void 0,M=s?ee=>s(ee,{...C.userNode}):void 0,R=u?ee=>u(ee,{...C.userNode}):void 0,te=a?ee=>a(ee,{...C.userNode}):void 0,re=c?ee=>c(ee,{...C.userNode}):void 0,le=ee=>{const{selectNodesOnDrag:ce,nodeDragThreshold:we}=U.getState();X&&(!ce||!B||we>0)&&Ja({id:t,store:U,nodeRef:z}),r&&r(ee,{...C.userNode})},ue=ee=>{if(!(a0(ee.nativeEvent)||S)){if(Zp.includes(ee.key)&&X){const ce=ee.key==="Escape";Ja({id:t,store:U,unselect:ce,nodeRef:z})}else if(B&&N.selected&&Object.prototype.hasOwnProperty.call(xl,ee.key)){ee.preventDefault();const{ariaLabelConfig:ce}=U.getState();U.setState({ariaLiveMessage:ce["node.a11yDescription.ariaLiveMessage"]({direction:ee.key.replace("Arrow","").toLowerCase(),x:~~C.positionAbsolute.x,y:~~C.positionAbsolute.y})}),F({direction:xl[ee.key],factor:ee.shiftKey?4:1})}}},ae=()=>{var Ce;if(S||!((Ce=z.current)!=null&&Ce.matches(":focus-visible")))return;const{transform:ee,width:ce,height:we,autoPanOnNodeFocus:_e,setCenter:Se}=U.getState();if(!_e)return;cc(new Map([[t,N]]),{x:0,y:0,width:ce,height:we},ee,!0).length>0||Se(N.position.x+Y.width/2,N.position.y+Y.height/2,{zoom:ee[2]})};return A.jsx("div",{className:be(["react-flow__node",`react-flow__node-${D}`,{[x]:B},N.className,{selected:N.selected,selectable:X,parent:j,draggable:B,dragging:b}]),ref:z,style:{zIndex:C.z,transform:`translate(${C.positionAbsolute.x}px,${C.positionAbsolute.y}px)`,pointerEvents:L?"all":"none",visibility:Z?"visible":"hidden",...N.style,...T},"data-id":t,"data-testid":`rf__node-${t}`,onMouseEnter:V,onMouseMove:M,onMouseLeave:R,onContextMenu:te,onClick:le,onDoubleClick:re,onKeyDown:W?ue:void 0,tabIndex:W?0:void 0,onFocus:W?ae:void 0,role:N.ariaRole??(W?"group":void 0),"aria-roledescription":"node","aria-describedby":S?void 0:`${P0}-${_}`,"aria-label":N.ariaLabel,...N.domAttributes,children:A.jsx(k2,{value:t,children:A.jsx(H,{id:t,data:N.data,type:D,positionAbsoluteX:C.positionAbsolute.x,positionAbsoluteY:C.positionAbsolute.y,selected:N.selected??!1,selectable:X,draggable:B,deletable:N.deletable??!0,isConnectable:J,sourcePosition:N.sourcePosition,targetPosition:N.targetPosition,dragging:b,dragHandle:N.dragHandle,zIndex:C.z,parentId:N.parentId,...Y})})})}var W2=q.memo(B2);const U2=t=>({nodesDraggable:t.nodesDraggable,nodesConnectable:t.nodesConnectable,nodesFocusable:t.nodesFocusable,elementsSelectable:t.elementsSelectable,onError:t.onError});function H0(t){const{nodesDraggable:r,nodesConnectable:i,nodesFocusable:s,elementsSelectable:u,onError:a}=Ne(U2,De),c=O2(t.onlyRenderVisibleElements),d=H2();return A.jsx("div",{className:"react-flow__nodes",style:Pl,children:c.map(p=>A.jsx(W2,{id:p,nodeTypes:t.nodeTypes,nodeExtent:t.nodeExtent,onClick:t.onNodeClick,onMouseEnter:t.onNodeMouseEnter,onMouseMove:t.onNodeMouseMove,onMouseLeave:t.onNodeMouseLeave,onContextMenu:t.onNodeContextMenu,onDoubleClick:t.onNodeDoubleClick,noDragClassName:t.noDragClassName,noPanClassName:t.noPanClassName,rfId:t.rfId,disableKeyboardA11y:t.disableKeyboardA11y,resizeObserver:d,nodesDraggable:r,nodesConnectable:i,nodesFocusable:s,elementsSelectable:u,nodeClickDistance:t.nodeClickDistance,onError:a},p))})}H0.displayName="NodeRenderer";const b2=q.memo(H0);function Y2(t){return Ne(q.useCallback(i=>{if(!t)return i.edges.map(u=>u.id);const s=[];if(i.width&&i.height)for(const u of i.edges){const a=i.nodeLookup.get(u.source),c=i.nodeLookup.get(u.target);a&&c&&Ux({sourceNode:a,targetNode:c,width:i.width,height:i.height,transform:i.transform})&&s.push(u.id)}return s},[t]),De)}const X2=({color:t="none",strokeWidth:r=1})=>{const i={strokeWidth:r,...t&&{stroke:t}};return A.jsx("polyline",{className:"arrow",style:i,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},Q2=({color:t="none",strokeWidth:r=1})=>{const i={strokeWidth:r,...t&&{stroke:t,fill:t}};return A.jsx("polyline",{className:"arrowclosed",style:i,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})},Zh={[oo.Arrow]:X2,[oo.ArrowClosed]:Q2};function K2(t){const r=je();return q.useMemo(()=>{var u,a;return Object.prototype.hasOwnProperty.call(Zh,t)?Zh[t]:((a=(u=r.getState()).onError)==null||a.call(u,"009",Jt.error009(t)),null)},[t])}const G2=({id:t,type:r,color:i,width:s=12.5,height:u=12.5,markerUnits:a="strokeWidth",strokeWidth:c,orient:d="auto-start-reverse"})=>{const p=K2(r);return p?A.jsx("marker",{className:"react-flow__arrowhead",id:t,markerWidth:`${s}`,markerHeight:`${u}`,viewBox:"-10 -10 20 20",markerUnits:a,orient:d,refX:"0",refY:"0",children:A.jsx(p,{color:i,strokeWidth:c})}):null},V0=({defaultColor:t,rfId:r})=>{const i=Ne(a=>a.edges),s=Ne(a=>a.defaultEdgeOptions),u=q.useMemo(()=>qx(i,{id:r,defaultColor:t,defaultMarkerStart:s==null?void 0:s.markerStart,defaultMarkerEnd:s==null?void 0:s.markerEnd}),[i,s,r,t]);return u.length?A.jsx("svg",{className:"react-flow__marker","aria-hidden":"true",children:A.jsx("defs",{children:u.map(a=>A.jsx(G2,{id:a.id,type:a.type,color:a.color,width:a.width,height:a.height,markerUnits:a.markerUnits,strokeWidth:a.strokeWidth,orient:a.orient},a.id))})}):null};V0.displayName="MarkerDefinitions";var Z2=q.memo(V0);function B0({x:t,y:r,label:i,labelStyle:s,labelShowBg:u=!0,labelBgStyle:a,labelBgPadding:c=[2,4],labelBgBorderRadius:d=2,children:p,className:g,...v}){const[m,y]=q.useState({x:1,y:0,width:0,height:0}),x=be(["react-flow__edge-textwrapper",g]),S=q.useRef(null);return q.useEffect(()=>{if(S.current){const _=S.current.getBBox();y({x:_.x,y:_.y,width:_.width,height:_.height})}},[i]),i?A.jsxs("g",{transform:`translate(${t-m.width/2} ${r-m.height/2})`,className:x,visibility:m.width?"visible":"hidden",...v,children:[u&&A.jsx("rect",{width:m.width+2*c[0],x:-c[0],y:-c[1],height:m.height+2*c[1],className:"react-flow__edge-textbg",style:a,rx:d,ry:d}),A.jsx("text",{className:"react-flow__edge-text",y:m.height/2,dy:"0.3em",ref:S,style:s,children:i}),p]}):null}B0.displayName="EdgeText";const q2=q.memo(B0);function ao({path:t,labelX:r,labelY:i,label:s,labelStyle:u,labelShowBg:a,labelBgStyle:c,labelBgPadding:d,labelBgBorderRadius:p,interactionWidth:g=20,...v}){return A.jsxs(A.Fragment,{children:[A.jsx("path",{...v,d:t,fill:"none",className:be(["react-flow__edge-path",v.className])}),g?A.jsx("path",{d:t,fill:"none",strokeOpacity:0,strokeWidth:g,className:"react-flow__edge-interaction"}):null,s&&Vt(r)&&Vt(i)?A.jsx(q2,{x:r,y:i,label:s,labelStyle:u,labelShowBg:a,labelBgStyle:c,labelBgPadding:d,labelBgBorderRadius:p}):null]})}function qh({pos:t,x1:r,y1:i,x2:s,y2:u}){return t===me.Left||t===me.Right?[.5*(r+s),i]:[r,.5*(i+u)]}function W0({sourceX:t,sourceY:r,sourcePosition:i=me.Bottom,targetX:s,targetY:u,targetPosition:a=me.Top}){const[c,d]=qh({pos:i,x1:t,y1:r,x2:s,y2:u}),[p,g]=qh({pos:a,x1:s,y1:u,x2:t,y2:r}),[v,m,y,x]=f0({sourceX:t,sourceY:r,targetX:s,targetY:u,sourceControlX:c,sourceControlY:d,targetControlX:p,targetControlY:g});return[`M${t},${r} C${c},${d} ${p},${g} ${s},${u}`,v,m,y,x]}function U0(t){return q.memo(({id:r,sourceX:i,sourceY:s,targetX:u,targetY:a,sourcePosition:c,targetPosition:d,label:p,labelStyle:g,labelShowBg:v,labelBgStyle:m,labelBgPadding:y,labelBgBorderRadius:x,style:S,markerEnd:_,markerStart:w,interactionWidth:k})=>{const[P,N,C]=W0({sourceX:i,sourceY:s,sourcePosition:c,targetX:u,targetY:a,targetPosition:d}),j=t.isInternal?void 0:r;return A.jsx(ao,{id:j,path:P,labelX:N,labelY:C,label:p,labelStyle:g,labelShowBg:v,labelBgStyle:m,labelBgPadding:y,labelBgBorderRadius:x,style:S,markerEnd:_,markerStart:w,interactionWidth:k})})}const J2=U0({isInternal:!1}),b0=U0({isInternal:!0});J2.displayName="SimpleBezierEdge";b0.displayName="SimpleBezierEdgeInternal";function Y0(t){return q.memo(({id:r,sourceX:i,sourceY:s,targetX:u,targetY:a,label:c,labelStyle:d,labelShowBg:p,labelBgStyle:g,labelBgPadding:v,labelBgBorderRadius:m,style:y,sourcePosition:x=me.Bottom,targetPosition:S=me.Top,markerEnd:_,markerStart:w,pathOptions:k,interactionWidth:P})=>{const[N,C,j]=Qa({sourceX:i,sourceY:s,sourcePosition:x,targetX:u,targetY:a,targetPosition:S,borderRadius:k==null?void 0:k.borderRadius,offset:k==null?void 0:k.offset,stepPosition:k==null?void 0:k.stepPosition}),D=t.isInternal?void 0:r;return A.jsx(ao,{id:D,path:N,labelX:C,labelY:j,label:c,labelStyle:d,labelShowBg:p,labelBgStyle:g,labelBgPadding:v,labelBgBorderRadius:m,style:y,markerEnd:_,markerStart:w,interactionWidth:P})})}const X0=Y0({isInternal:!1}),Q0=Y0({isInternal:!0});X0.displayName="SmoothStepEdge";Q0.displayName="SmoothStepEdgeInternal";function K0(t){return q.memo(({id:r,...i})=>{var u;const s=t.isInternal?void 0:r;return A.jsx(X0,{...i,id:s,pathOptions:q.useMemo(()=>{var a;return{borderRadius:0,offset:(a=i.pathOptions)==null?void 0:a.offset}},[(u=i.pathOptions)==null?void 0:u.offset])})})}const eS=K0({isInternal:!1}),G0=K0({isInternal:!0});eS.displayName="StepEdge";G0.displayName="StepEdgeInternal";function Z0(t){return q.memo(({id:r,sourceX:i,sourceY:s,targetX:u,targetY:a,label:c,labelStyle:d,labelShowBg:p,labelBgStyle:g,labelBgPadding:v,labelBgBorderRadius:m,style:y,markerEnd:x,markerStart:S,interactionWidth:_})=>{const[w,k,P]=p0({sourceX:i,sourceY:s,targetX:u,targetY:a}),N=t.isInternal?void 0:r;return A.jsx(ao,{id:N,path:w,labelX:k,labelY:P,label:c,labelStyle:d,labelShowBg:p,labelBgStyle:g,labelBgPadding:v,labelBgBorderRadius:m,style:y,markerEnd:x,markerStart:S,interactionWidth:_})})}const tS=Z0({isInternal:!1}),q0=Z0({isInternal:!0});tS.displayName="StraightEdge";q0.displayName="StraightEdgeInternal";function J0(t){return q.memo(({id:r,sourceX:i,sourceY:s,targetX:u,targetY:a,sourcePosition:c=me.Bottom,targetPosition:d=me.Top,label:p,labelStyle:g,labelShowBg:v,labelBgStyle:m,labelBgPadding:y,labelBgBorderRadius:x,style:S,markerEnd:_,markerStart:w,pathOptions:k,interactionWidth:P})=>{const[N,C,j]=d0({sourceX:i,sourceY:s,sourcePosition:c,targetX:u,targetY:a,targetPosition:d,curvature:k==null?void 0:k.curvature}),D=t.isInternal?void 0:r;return A.jsx(ao,{id:D,path:N,labelX:C,labelY:j,label:p,labelStyle:g,labelShowBg:v,labelBgStyle:m,labelBgPadding:y,labelBgBorderRadius:x,style:S,markerEnd:_,markerStart:w,interactionWidth:P})})}const nS=J0({isInternal:!1}),eg=J0({isInternal:!0});nS.displayName="BezierEdge";eg.displayName="BezierEdgeInternal";const Jh={default:eg,straight:q0,step:G0,smoothstep:Q0,simplebezier:b0},ep={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},rS=(t,r,i)=>i===me.Left?t-r:i===me.Right?t+r:t,oS=(t,r,i)=>i===me.Top?t-r:i===me.Bottom?t+r:t,tp="react-flow__edgeupdater";function np({position:t,centerX:r,centerY:i,radius:s=10,onMouseDown:u,onMouseEnter:a,onMouseOut:c,type:d}){return A.jsx("circle",{onMouseDown:u,onMouseEnter:a,onMouseOut:c,className:be([tp,`${tp}-${d}`]),cx:rS(r,s,t),cy:oS(i,s,t),r:s,stroke:"transparent",fill:"transparent"})}function iS({isReconnectable:t,reconnectRadius:r,edge:i,sourceX:s,sourceY:u,targetX:a,targetY:c,sourcePosition:d,targetPosition:p,onReconnect:g,onReconnectStart:v,onReconnectEnd:m,setReconnecting:y,setUpdateHover:x}){const S=je(),_=(C,j)=>{if(C.button!==0)return;const{autoPanOnConnect:D,domNode:H,connectionMode:B,connectionRadius:X,lib:J,onConnectStart:W,cancelConnection:U,nodeLookup:Z,rfId:z,panBy:b,updateConnection:F}=S.getState(),Y=j.type==="target",T=(M,R)=>{y(!1),m==null||m(M,i,j.type,R)},L=M=>g==null?void 0:g(i,M),V=(M,R)=>{y(!0),v==null||v(C,i,j.type),W==null||W(M,R)};Za.onPointerDown(C.nativeEvent,{autoPanOnConnect:D,connectionMode:B,connectionRadius:X,domNode:H,handleId:j.id,nodeId:j.nodeId,nodeLookup:Z,isTarget:Y,edgeUpdaterType:j.type,lib:J,flowId:z,cancelConnection:U,panBy:b,isValidConnection:(...M)=>{var R,te;return((te=(R=S.getState()).isValidConnection)==null?void 0:te.call(R,...M))??!0},onConnect:L,onConnectStart:V,onConnectEnd:(...M)=>{var R,te;return(te=(R=S.getState()).onConnectEnd)==null?void 0:te.call(R,...M)},onReconnectEnd:T,updateConnection:F,getTransform:()=>S.getState().transform,getFromHandle:()=>S.getState().connection.fromHandle,dragThreshold:S.getState().connectionDragThreshold,handleDomNode:C.currentTarget})},w=C=>_(C,{nodeId:i.target,id:i.targetHandle??null,type:"target"}),k=C=>_(C,{nodeId:i.source,id:i.sourceHandle??null,type:"source"}),P=()=>x(!0),N=()=>x(!1);return A.jsxs(A.Fragment,{children:[(t===!0||t==="source")&&A.jsx(np,{position:d,centerX:s,centerY:u,radius:r,onMouseDown:w,onMouseEnter:P,onMouseOut:N,type:"source"}),(t===!0||t==="target")&&A.jsx(np,{position:p,centerX:a,centerY:c,radius:r,onMouseDown:k,onMouseEnter:P,onMouseOut:N,type:"target"})]})}function sS({id:t,edgesFocusable:r,edgesReconnectable:i,elementsSelectable:s,onClick:u,onDoubleClick:a,onContextMenu:c,onMouseEnter:d,onMouseMove:p,onMouseLeave:g,reconnectRadius:v,onReconnect:m,onReconnectStart:y,onReconnectEnd:x,rfId:S,edgeTypes:_,noPanClassName:w,onError:k,disableKeyboardA11y:P}){let N=Ne(Se=>Se.edgeLookup.get(t));const C=Ne(Se=>Se.defaultEdgeOptions);N=C?{...C,...N}:N;let j=N.type||"default",D=(_==null?void 0:_[j])||Jh[j];D===void 0&&(k==null||k("011",Jt.error011(j)),j="default",D=(_==null?void 0:_.default)||Jh.default);const H=!!(N.focusable||r&&typeof N.focusable>"u"),B=typeof m<"u"&&(N.reconnectable||i&&typeof N.reconnectable>"u"),X=!!(N.selectable||s&&typeof N.selectable>"u"),J=q.useRef(null),[W,U]=q.useState(!1),[Z,z]=q.useState(!1),b=je(),{zIndex:F,sourceX:Y,sourceY:T,targetX:L,targetY:V,sourcePosition:M,targetPosition:R}=Ne(q.useCallback(Se=>{const ye=Se.nodeLookup.get(N.source),Ce=Se.nodeLookup.get(N.target);if(!ye||!Ce)return{zIndex:N.zIndex,...ep};const Te=Zx({id:t,sourceNode:ye,targetNode:Ce,sourceHandle:N.sourceHandle||null,targetHandle:N.targetHandle||null,connectionMode:Se.connectionMode,onError:k});return{zIndex:Wx({selected:N.selected,zIndex:N.zIndex,sourceNode:ye,targetNode:Ce,elevateOnSelect:Se.elevateEdgesOnSelect,zIndexMode:Se.zIndexMode}),...Te||ep}},[N.source,N.target,N.sourceHandle,N.targetHandle,N.selected,N.zIndex]),De),te=q.useMemo(()=>N.markerStart?`url('#${Ka(N.markerStart,S)}')`:void 0,[N.markerStart,S]),re=q.useMemo(()=>N.markerEnd?`url('#${Ka(N.markerEnd,S)}')`:void 0,[N.markerEnd,S]);if(N.hidden||Y===null||T===null||L===null||V===null)return null;const le=Se=>{var Me;const{addSelectedEdges:ye,unselectNodesAndEdges:Ce,multiSelectionActive:Te}=b.getState();X&&(b.setState({nodesSelectionActive:!1}),N.selected&&Te?(Ce({nodes:[],edges:[N]}),(Me=J.current)==null||Me.blur()):ye([t])),u&&u(Se,N)},ue=a?Se=>{a(Se,{...N})}:void 0,ae=c?Se=>{c(Se,{...N})}:void 0,ee=d?Se=>{d(Se,{...N})}:void 0,ce=p?Se=>{p(Se,{...N})}:void 0,we=g?Se=>{g(Se,{...N})}:void 0,_e=Se=>{var ye;if(!P&&Zp.includes(Se.key)&&X){const{unselectNodesAndEdges:Ce,addSelectedEdges:Te}=b.getState();Se.key==="Escape"?((ye=J.current)==null||ye.blur(),Ce({edges:[N]})):Te([t])}};return A.jsx("svg",{style:{zIndex:F},children:A.jsxs("g",{className:be(["react-flow__edge",`react-flow__edge-${j}`,N.className,w,{selected:N.selected,animated:N.animated,inactive:!X&&!u,updating:W,selectable:X}]),onClick:le,onDoubleClick:ue,onContextMenu:ae,onMouseEnter:ee,onMouseMove:ce,onMouseLeave:we,onKeyDown:H?_e:void 0,tabIndex:H?0:void 0,role:N.ariaRole??(H?"group":"img"),"aria-roledescription":"edge","data-id":t,"data-testid":`rf__edge-${t}`,"aria-label":N.ariaLabel===null?void 0:N.ariaLabel||`Edge from ${N.source} to ${N.target}`,"aria-describedby":H?`${z0}-${S}`:void 0,ref:J,...N.domAttributes,children:[!Z&&A.jsx(D,{id:t,source:N.source,target:N.target,type:N.type,selected:N.selected,animated:N.animated,selectable:X,deletable:N.deletable??!0,label:N.label,labelStyle:N.labelStyle,labelShowBg:N.labelShowBg,labelBgStyle:N.labelBgStyle,labelBgPadding:N.labelBgPadding,labelBgBorderRadius:N.labelBgBorderRadius,sourceX:Y,sourceY:T,targetX:L,targetY:V,sourcePosition:M,targetPosition:R,data:N.data,style:N.style,sourceHandleId:N.sourceHandle,targetHandleId:N.targetHandle,markerStart:te,markerEnd:re,pathOptions:"pathOptions"in N?N.pathOptions:void 0,interactionWidth:N.interactionWidth}),B&&A.jsx(iS,{edge:N,isReconnectable:B,reconnectRadius:v,onReconnect:m,onReconnectStart:y,onReconnectEnd:x,sourceX:Y,sourceY:T,targetX:L,targetY:V,sourcePosition:M,targetPosition:R,setUpdateHover:U,setReconnecting:z})]})})}var lS=q.memo(sS);const uS=t=>({edgesFocusable:t.edgesFocusable,edgesReconnectable:t.edgesReconnectable,elementsSelectable:t.elementsSelectable,connectionMode:t.connectionMode,onError:t.onError});function tg({defaultMarkerColor:t,onlyRenderVisibleElements:r,rfId:i,edgeTypes:s,noPanClassName:u,onReconnect:a,onEdgeContextMenu:c,onEdgeMouseEnter:d,onEdgeMouseMove:p,onEdgeMouseLeave:g,onEdgeClick:v,reconnectRadius:m,onEdgeDoubleClick:y,onReconnectStart:x,onReconnectEnd:S,disableKeyboardA11y:_}){const{edgesFocusable:w,edgesReconnectable:k,elementsSelectable:P,onError:N}=Ne(uS,De),C=Y2(r);return A.jsxs("div",{className:"react-flow__edges",children:[A.jsx(Z2,{defaultColor:t,rfId:i}),C.map(j=>A.jsx(lS,{id:j,edgesFocusable:w,edgesReconnectable:k,elementsSelectable:P,noPanClassName:u,onReconnect:a,onContextMenu:c,onMouseEnter:d,onMouseMove:p,onMouseLeave:g,onClick:v,reconnectRadius:m,onDoubleClick:y,onReconnectStart:x,onReconnectEnd:S,rfId:i,onError:N,edgeTypes:s,disableKeyboardA11y:_},j))]})}tg.displayName="EdgeRenderer";const aS=q.memo(tg),cS=t=>`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`;function fS({children:t}){const r=Ne(cS);return A.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:r},children:t})}function dS(t){const r=Mi(),i=q.useRef(!1);q.useEffect(()=>{!i.current&&r.viewportInitialized&&t&&(setTimeout(()=>t(r),1),i.current=!0)},[t,r.viewportInitialized])}const hS=t=>{var r;return(r=t.panZoom)==null?void 0:r.syncViewport};function pS(t){const r=Ne(hS),i=je();return q.useEffect(()=>{t&&(r==null||r(t),i.setState({transform:[t.x,t.y,t.zoom]}))},[t,r]),null}function gS(t){return t.connection.inProgress?{...t.connection,to:Ni(t.connection.to,t.transform)}:{...t.connection}}function mS(t){return gS}function yS(t){const r=mS();return Ne(r,De)}const vS=t=>({nodesConnectable:t.nodesConnectable,isValid:t.connection.isValid,inProgress:t.connection.inProgress,width:t.width,height:t.height});function xS({containerStyle:t,style:r,type:i,component:s}){const{nodesConnectable:u,width:a,height:c,isValid:d,inProgress:p}=Ne(vS,De);return!(a&&u&&p)?null:A.jsx("svg",{style:t,width:a,height:c,className:"react-flow__connectionline react-flow__container",children:A.jsx("g",{className:be(["react-flow__connection",e0(d)]),children:A.jsx(ng,{style:r,type:i,CustomComponent:s,isValid:d})})})}const ng=({style:t,type:r=Bn.Bezier,CustomComponent:i,isValid:s})=>{const{inProgress:u,from:a,fromNode:c,fromHandle:d,fromPosition:p,to:g,toNode:v,toHandle:m,toPosition:y,pointer:x}=yS();if(!u)return;if(i)return A.jsx(i,{connectionLineType:r,connectionLineStyle:t,fromNode:c,fromHandle:d,fromX:a.x,fromY:a.y,toX:g.x,toY:g.y,fromPosition:p,toPosition:y,connectionStatus:e0(s),toNode:v,toHandle:m,pointer:x});let S="";const _={sourceX:a.x,sourceY:a.y,sourcePosition:p,targetX:g.x,targetY:g.y,targetPosition:y};switch(r){case Bn.Bezier:[S]=d0(_);break;case Bn.SimpleBezier:[S]=W0(_);break;case Bn.Step:[S]=Qa({..._,borderRadius:0});break;case Bn.SmoothStep:[S]=Qa(_);break;default:[S]=p0(_)}return A.jsx("path",{d:S,fill:"none",className:"react-flow__connection-path",style:t})};ng.displayName="ConnectionLine";const wS={};function rp(t=wS){q.useRef(t),je(),q.useEffect(()=>{},[t])}function SS(){je(),q.useRef(!1),q.useEffect(()=>{},[])}function rg({nodeTypes:t,edgeTypes:r,onInit:i,onNodeClick:s,onEdgeClick:u,onNodeDoubleClick:a,onEdgeDoubleClick:c,onNodeMouseEnter:d,onNodeMouseMove:p,onNodeMouseLeave:g,onNodeContextMenu:v,onSelectionContextMenu:m,onSelectionStart:y,onSelectionEnd:x,connectionLineType:S,connectionLineStyle:_,connectionLineComponent:w,connectionLineContainerStyle:k,selectionKeyCode:P,selectionOnDrag:N,selectionMode:C,multiSelectionKeyCode:j,panActivationKeyCode:D,zoomActivationKeyCode:H,deleteKeyCode:B,onlyRenderVisibleElements:X,elementsSelectable:J,defaultViewport:W,translateExtent:U,minZoom:Z,maxZoom:z,preventScrolling:b,defaultMarkerColor:F,zoomOnScroll:Y,zoomOnPinch:T,panOnScroll:L,panOnScrollSpeed:V,panOnScrollMode:M,zoomOnDoubleClick:R,panOnDrag:te,onPaneClick:re,onPaneMouseEnter:le,onPaneMouseMove:ue,onPaneMouseLeave:ae,onPaneScroll:ee,onPaneContextMenu:ce,paneClickDistance:we,nodeClickDistance:_e,onEdgeContextMenu:Se,onEdgeMouseEnter:ye,onEdgeMouseMove:Ce,onEdgeMouseLeave:Te,reconnectRadius:Me,onReconnect:We,onReconnectStart:At,onReconnectEnd:gt,noDragClassName:mt,noWheelClassName:kt,noPanClassName:tn,disableKeyboardA11y:vn,nodeExtent:xr,rfId:bn,viewport:nn,onViewportChange:rn}){return rp(t),rp(r),SS(),dS(i),pS(nn),A.jsx($2,{onPaneClick:re,onPaneMouseEnter:le,onPaneMouseMove:ue,onPaneMouseLeave:ae,onPaneContextMenu:ce,onPaneScroll:ee,paneClickDistance:we,deleteKeyCode:B,selectionKeyCode:P,selectionOnDrag:N,selectionMode:C,onSelectionStart:y,onSelectionEnd:x,multiSelectionKeyCode:j,panActivationKeyCode:D,zoomActivationKeyCode:H,elementsSelectable:J,zoomOnScroll:Y,zoomOnPinch:T,zoomOnDoubleClick:R,panOnScroll:L,panOnScrollSpeed:V,panOnScrollMode:M,panOnDrag:te,defaultViewport:W,translateExtent:U,minZoom:Z,maxZoom:z,onSelectionContextMenu:m,preventScrolling:b,noDragClassName:mt,noWheelClassName:kt,noPanClassName:tn,disableKeyboardA11y:vn,onViewportChange:rn,isControlledViewport:!!nn,children:A.jsxs(fS,{children:[A.jsx(aS,{edgeTypes:r,onEdgeClick:u,onEdgeDoubleClick:c,onReconnect:We,onReconnectStart:At,onReconnectEnd:gt,onlyRenderVisibleElements:X,onEdgeContextMenu:Se,onEdgeMouseEnter:ye,onEdgeMouseMove:Ce,onEdgeMouseLeave:Te,reconnectRadius:Me,defaultMarkerColor:F,noPanClassName:tn,disableKeyboardA11y:vn,rfId:bn}),A.jsx(xS,{style:_,type:S,component:w,containerStyle:k}),A.jsx("div",{className:"react-flow__edgelabel-renderer"}),A.jsx(b2,{nodeTypes:t,onNodeClick:s,onNodeDoubleClick:a,onNodeMouseEnter:d,onNodeMouseMove:p,onNodeMouseLeave:g,onNodeContextMenu:v,nodeClickDistance:_e,onlyRenderVisibleElements:X,noPanClassName:tn,noDragClassName:mt,disableKeyboardA11y:vn,nodeExtent:xr,rfId:bn}),A.jsx("div",{className:"react-flow__viewport-portal"})]})})}rg.displayName="GraphView";const _S=q.memo(rg),op=({nodes:t,edges:r,defaultNodes:i,defaultEdges:s,width:u,height:a,fitView:c,fitViewOptions:d,minZoom:p=.5,maxZoom:g=2,nodeOrigin:v,nodeExtent:m,zIndexMode:y="basic"}={})=>{const x=new Map,S=new Map,_=new Map,w=new Map,k=s??r??[],P=i??t??[],N=v??[0,0],C=m??hi;y0(_,w,k);const{nodesInitialized:j}=Ga(P,x,S,{nodeOrigin:N,nodeExtent:C,zIndexMode:y});let D=[0,0,1];if(c&&u&&a){const H=Ei(x,{filter:W=>!!((W.width||W.initialWidth)&&(W.height||W.initialHeight))}),{x:B,y:X,zoom:J}=fc(H,u,a,p,g,(d==null?void 0:d.padding)??.1);D=[B,X,J]}return{rfId:"1",width:u??0,height:a??0,transform:D,nodes:P,nodesInitialized:j,nodeLookup:x,parentLookup:S,edges:k,edgeLookup:w,connectionLookup:_,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:i!==void 0,hasDefaultEdges:s!==void 0,panZoom:null,minZoom:p,maxZoom:g,translateExtent:hi,nodeExtent:C,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:ro.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:N,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:c??!1,fitViewOptions:d,fitViewResolver:null,connection:{...Jp},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:jx,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:qp,zIndexMode:y,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},ES=({nodes:t,edges:r,defaultNodes:i,defaultEdges:s,width:u,height:a,fitView:c,fitViewOptions:d,minZoom:p,maxZoom:g,nodeOrigin:v,nodeExtent:m,zIndexMode:y})=>Vw((x,S)=>{async function _(){const{nodeLookup:w,panZoom:k,fitViewOptions:P,fitViewResolver:N,width:C,height:j,minZoom:D,maxZoom:H}=S();k&&(await Dx({nodes:w,width:C,height:j,panZoom:k,minZoom:D,maxZoom:H},P),N==null||N.resolve(!0),x({fitViewResolver:null}))}return{...op({nodes:t,edges:r,width:u,height:a,fitView:c,fitViewOptions:d,minZoom:p,maxZoom:g,nodeOrigin:v,nodeExtent:m,defaultNodes:i,defaultEdges:s,zIndexMode:y}),setNodes:w=>{const{nodeLookup:k,parentLookup:P,nodeOrigin:N,elevateNodesOnSelect:C,fitViewQueued:j,zIndexMode:D,nodesSelectionActive:H}=S(),{nodesInitialized:B,hasSelectedNodes:X}=Ga(w,k,P,{nodeOrigin:N,nodeExtent:m,elevateNodesOnSelect:C,checkEquality:!0,zIndexMode:D}),J=H&&X;j&&B?(_(),x({nodes:w,nodesInitialized:B,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:J})):x({nodes:w,nodesInitialized:B,nodesSelectionActive:J})},setEdges:w=>{const{connectionLookup:k,edgeLookup:P}=S();y0(k,P,w),x({edges:w})},setDefaultNodesAndEdges:(w,k)=>{if(w){const{setNodes:P}=S();P(w),x({hasDefaultNodes:!0})}if(k){const{setEdges:P}=S();P(k),x({hasDefaultEdges:!0})}},updateNodeInternals:w=>{const{triggerNodeChanges:k,nodeLookup:P,parentLookup:N,domNode:C,nodeOrigin:j,nodeExtent:D,debug:H,fitViewQueued:B,zIndexMode:X}=S(),{changes:J,updatedInternals:W}=iw(w,P,N,C,j,D,X);W&&(tw(P,N,{nodeOrigin:j,nodeExtent:D,zIndexMode:X}),B?(_(),x({fitViewQueued:!1,fitViewOptions:void 0})):x({}),(J==null?void 0:J.length)>0&&(H&&console.log("React Flow: trigger node changes",J),k==null||k(J)))},updateNodePositions:(w,k=!1)=>{const P=[];let N=[];const{nodeLookup:C,triggerNodeChanges:j,connection:D,updateConnection:H,onNodesChangeMiddlewareMap:B}=S();for(const[X,J]of w){const W=C.get(X),U=!!(W!=null&&W.expandParent&&(W!=null&&W.parentId)&&(J!=null&&J.position)),Z={id:X,type:"position",position:U?{x:Math.max(0,J.position.x),y:Math.max(0,J.position.y)}:J.position,dragging:k};if(W&&D.inProgress&&D.fromNode.id===W.id){const z=vr(W,D.fromHandle,me.Left,!0);H({...D,from:z})}U&&W.parentId&&P.push({id:X,parentId:W.parentId,rect:{...J.internals.positionAbsolute,width:J.measured.width??0,height:J.measured.height??0}}),N.push(Z)}if(P.length>0){const{parentLookup:X,nodeOrigin:J}=S(),W=yc(P,C,X,J);N.push(...W)}for(const X of B.values())N=X(N);j(N)},triggerNodeChanges:w=>{const{onNodesChange:k,setNodes:P,nodes:N,hasDefaultNodes:C,debug:j}=S();if(w!=null&&w.length){if(C){const D=A0(w,N);P(D)}j&&console.log("React Flow: trigger node changes",w),k==null||k(w)}},triggerEdgeChanges:w=>{const{onEdgesChange:k,setEdges:P,edges:N,hasDefaultEdges:C,debug:j}=S();if(w!=null&&w.length){if(C){const D=L0(w,N);P(D)}j&&console.log("React Flow: trigger edge changes",w),k==null||k(w)}},addSelectedNodes:w=>{const{multiSelectionActive:k,edgeLookup:P,nodeLookup:N,triggerNodeChanges:C,triggerEdgeChanges:j}=S();if(k){const D=w.map(H=>fr(H,!0));C(D);return}C(Zr(N,new Set([...w]),!0)),j(Zr(P))},addSelectedEdges:w=>{const{multiSelectionActive:k,edgeLookup:P,nodeLookup:N,triggerNodeChanges:C,triggerEdgeChanges:j}=S();if(k){const D=w.map(H=>fr(H,!0));j(D);return}j(Zr(P,new Set([...w]))),C(Zr(N,new Set,!0))},unselectNodesAndEdges:({nodes:w,edges:k}={})=>{const{edges:P,nodes:N,nodeLookup:C,triggerNodeChanges:j,triggerEdgeChanges:D}=S(),H=w||N,B=k||P,X=[];for(const W of H){if(!W.selected)continue;const U=C.get(W.id);U&&(U.selected=!1),X.push(fr(W.id,!1))}const J=[];for(const W of B)W.selected&&J.push(fr(W.id,!1));j(X),D(J)},setMinZoom:w=>{const{panZoom:k,maxZoom:P}=S();k==null||k.setScaleExtent([w,P]),x({minZoom:w})},setMaxZoom:w=>{const{panZoom:k,minZoom:P}=S();k==null||k.setScaleExtent([P,w]),x({maxZoom:w})},setTranslateExtent:w=>{var k;(k=S().panZoom)==null||k.setTranslateExtent(w),x({translateExtent:w})},resetSelectedElements:()=>{const{edges:w,nodes:k,triggerNodeChanges:P,triggerEdgeChanges:N,elementsSelectable:C}=S();if(!C)return;const j=k.reduce((H,B)=>B.selected?[...H,fr(B.id,!1)]:H,[]),D=w.reduce((H,B)=>B.selected?[...H,fr(B.id,!1)]:H,[]);P(j),N(D)},setNodeExtent:w=>{const{nodes:k,nodeLookup:P,parentLookup:N,nodeOrigin:C,elevateNodesOnSelect:j,nodeExtent:D,zIndexMode:H}=S();w[0][0]===D[0][0]&&w[0][1]===D[0][1]&&w[1][0]===D[1][0]&&w[1][1]===D[1][1]||(Ga(k,P,N,{nodeOrigin:C,nodeExtent:w,elevateNodesOnSelect:j,checkEquality:!1,zIndexMode:H}),x({nodeExtent:w}))},panBy:w=>{const{transform:k,width:P,height:N,panZoom:C,translateExtent:j}=S();return sw({delta:w,panZoom:C,transform:k,translateExtent:j,width:P,height:N})},setCenter:async(w,k,P)=>{const{width:N,height:C,maxZoom:j,panZoom:D}=S();if(!D)return Promise.resolve(!1);const H=typeof(P==null?void 0:P.zoom)<"u"?P.zoom:j;return await D.setViewport({x:N/2-w*H,y:C/2-k*H,zoom:H},{duration:P==null?void 0:P.duration,ease:P==null?void 0:P.ease,interpolate:P==null?void 0:P.interpolate}),Promise.resolve(!0)},cancelConnection:()=>{x({connection:{...Jp}})},updateConnection:w=>{x({connection:w})},reset:()=>x({...op()})}},Object.is);function og({initialNodes:t,initialEdges:r,defaultNodes:i,defaultEdges:s,initialWidth:u,initialHeight:a,initialMinZoom:c,initialMaxZoom:d,initialFitViewOptions:p,fitView:g,nodeOrigin:v,nodeExtent:m,zIndexMode:y,children:x}){const[S]=q.useState(()=>ES({nodes:t,edges:r,defaultNodes:i,defaultEdges:s,width:u,height:a,fitView:g,minZoom:c,maxZoom:d,fitViewOptions:p,nodeOrigin:v,nodeExtent:m,zIndexMode:y}));return A.jsx(Ww,{value:S,children:A.jsx(f2,{children:x})})}function kS({children:t,nodes:r,edges:i,defaultNodes:s,defaultEdges:u,width:a,height:c,fitView:d,fitViewOptions:p,minZoom:g,maxZoom:v,nodeOrigin:m,nodeExtent:y,zIndexMode:x}){return q.useContext(Ml)?A.jsx(A.Fragment,{children:t}):A.jsx(og,{initialNodes:r,initialEdges:i,defaultNodes:s,defaultEdges:u,initialWidth:a,initialHeight:c,fitView:d,initialFitViewOptions:p,initialMinZoom:g,initialMaxZoom:v,nodeOrigin:m,nodeExtent:y,zIndexMode:x,children:t})}const NS={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function CS({nodes:t,edges:r,defaultNodes:i,defaultEdges:s,className:u,nodeTypes:a,edgeTypes:c,onNodeClick:d,onEdgeClick:p,onInit:g,onMove:v,onMoveStart:m,onMoveEnd:y,onConnect:x,onConnectStart:S,onConnectEnd:_,onClickConnectStart:w,onClickConnectEnd:k,onNodeMouseEnter:P,onNodeMouseMove:N,onNodeMouseLeave:C,onNodeContextMenu:j,onNodeDoubleClick:D,onNodeDragStart:H,onNodeDrag:B,onNodeDragStop:X,onNodesDelete:J,onEdgesDelete:W,onDelete:U,onSelectionChange:Z,onSelectionDragStart:z,onSelectionDrag:b,onSelectionDragStop:F,onSelectionContextMenu:Y,onSelectionStart:T,onSelectionEnd:L,onBeforeDelete:V,connectionMode:M,connectionLineType:R=Bn.Bezier,connectionLineStyle:te,connectionLineComponent:re,connectionLineContainerStyle:le,deleteKeyCode:ue="Backspace",selectionKeyCode:ae="Shift",selectionOnDrag:ee=!1,selectionMode:ce=pi.Full,panActivationKeyCode:we="Space",multiSelectionKeyCode:_e=mi()?"Meta":"Control",zoomActivationKeyCode:Se=mi()?"Meta":"Control",snapToGrid:ye,snapGrid:Ce,onlyRenderVisibleElements:Te=!1,selectNodesOnDrag:Me,nodesDraggable:We,autoPanOnNodeFocus:At,nodesConnectable:gt,nodesFocusable:mt,nodeOrigin:kt=I0,edgesFocusable:tn,edgesReconnectable:vn,elementsSelectable:xr=!0,defaultViewport:bn=n2,minZoom:nn=.5,maxZoom:rn=2,translateExtent:Yn=hi,preventScrolling:Pi=!0,nodeExtent:on,defaultMarkerColor:Xn="#b1b1b7",zoomOnScroll:zl=!0,zoomOnPinch:zi=!0,panOnScroll:Ii=!1,panOnScrollSpeed:Il=.5,panOnScrollMode:co=pr.Free,zoomOnDoubleClick:fo=!0,panOnDrag:ho=!0,onPaneClick:po,onPaneMouseEnter:go,onPaneMouseMove:xn,onPaneMouseLeave:wn,onPaneScroll:Ti,onPaneContextMenu:Ai,paneClickDistance:Li=1,nodeClickDistance:Ri=0,children:Di,onReconnect:mo,onReconnectStart:$i,onReconnectEnd:Qn,onEdgeContextMenu:yo,onEdgeDoubleClick:Kn,onEdgeMouseEnter:Tl,onEdgeMouseMove:Gn,onEdgeMouseLeave:wr,reconnectRadius:Sr=10,onNodesChange:vo,onEdgesChange:Al,noDragClassName:Ll="nodrag",noWheelClassName:Rl="nowheel",noPanClassName:Ut="nopan",fitView:xo,fitViewOptions:wo,connectOnClick:Dl,attributionPosition:ji,proOptions:Oi,defaultEdgeOptions:Fi,elevateNodesOnSelect:Hi=!0,elevateEdgesOnSelect:$l=!1,disableKeyboardA11y:Vi=!1,autoPanOnConnect:Oe,autoPanOnNodeDrag:jl,autoPanSpeed:So,connectionRadius:Bi,isValidConnection:_r,onError:Ol,style:Wi,id:Zn,nodeDragThreshold:Nt,connectionDragThreshold:Fl,viewport:yt,onViewportChange:Hl,width:Vl,height:Bl,colorMode:Er="light",debug:kr,onScroll:bt,ariaLabelConfig:Nr,zIndexMode:Ui="basic",...Wl},_o){const Cr=Zn||"1",Eo=s2(Er),qn=q.useCallback(bi=>{bi.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),bt==null||bt(bi)},[bt]);return A.jsx("div",{"data-testid":"rf__wrapper",...Wl,onScroll:qn,style:{...Wi,...NS},ref:_o,className:be(["react-flow",u,Eo]),id:Zn,role:"application",children:A.jsxs(kS,{nodes:t,edges:r,width:Vl,height:Bl,fitView:xo,fitViewOptions:wo,minZoom:nn,maxZoom:rn,nodeOrigin:kt,nodeExtent:on,zIndexMode:Ui,children:[A.jsx(i2,{nodes:t,edges:r,defaultNodes:i,defaultEdges:s,onConnect:x,onConnectStart:S,onConnectEnd:_,onClickConnectStart:w,onClickConnectEnd:k,nodesDraggable:We,autoPanOnNodeFocus:At,nodesConnectable:gt,nodesFocusable:mt,edgesFocusable:tn,edgesReconnectable:vn,elementsSelectable:xr,elevateNodesOnSelect:Hi,elevateEdgesOnSelect:$l,minZoom:nn,maxZoom:rn,nodeExtent:on,onNodesChange:vo,onEdgesChange:Al,snapToGrid:ye,snapGrid:Ce,connectionMode:M,translateExtent:Yn,connectOnClick:Dl,defaultEdgeOptions:Fi,fitView:xo,fitViewOptions:wo,onNodesDelete:J,onEdgesDelete:W,onDelete:U,onNodeDragStart:H,onNodeDrag:B,onNodeDragStop:X,onSelectionDrag:b,onSelectionDragStart:z,onSelectionDragStop:F,onMove:v,onMoveStart:m,onMoveEnd:y,noPanClassName:Ut,nodeOrigin:kt,rfId:Cr,autoPanOnConnect:Oe,autoPanOnNodeDrag:jl,autoPanSpeed:So,onError:Ol,connectionRadius:Bi,isValidConnection:_r,selectNodesOnDrag:Me,nodeDragThreshold:Nt,connectionDragThreshold:Fl,onBeforeDelete:V,debug:kr,ariaLabelConfig:Nr,zIndexMode:Ui}),A.jsx(_S,{onInit:g,onNodeClick:d,onEdgeClick:p,onNodeMouseEnter:P,onNodeMouseMove:N,onNodeMouseLeave:C,onNodeContextMenu:j,onNodeDoubleClick:D,nodeTypes:a,edgeTypes:c,connectionLineType:R,connectionLineStyle:te,connectionLineComponent:re,connectionLineContainerStyle:le,selectionKeyCode:ae,selectionOnDrag:ee,selectionMode:ce,deleteKeyCode:ue,multiSelectionKeyCode:_e,panActivationKeyCode:we,zoomActivationKeyCode:Se,onlyRenderVisibleElements:Te,defaultViewport:bn,translateExtent:Yn,minZoom:nn,maxZoom:rn,preventScrolling:Pi,zoomOnScroll:zl,zoomOnPinch:zi,zoomOnDoubleClick:fo,panOnScroll:Ii,panOnScrollSpeed:Il,panOnScrollMode:co,panOnDrag:ho,onPaneClick:po,onPaneMouseEnter:go,onPaneMouseMove:xn,onPaneMouseLeave:wn,onPaneScroll:Ti,onPaneContextMenu:Ai,paneClickDistance:Li,nodeClickDistance:Ri,onSelectionContextMenu:Y,onSelectionStart:T,onSelectionEnd:L,onReconnect:mo,onReconnectStart:$i,onReconnectEnd:Qn,onEdgeContextMenu:yo,onEdgeDoubleClick:Kn,onEdgeMouseEnter:Tl,onEdgeMouseMove:Gn,onEdgeMouseLeave:wr,reconnectRadius:Sr,defaultMarkerColor:Xn,noDragClassName:Ll,noWheelClassName:Rl,noPanClassName:Ut,rfId:Cr,disableKeyboardA11y:Vi,nodeExtent:on,viewport:yt,onViewportChange:Hl}),A.jsx(t2,{onSelectionChange:Z}),Di,A.jsx(Gw,{proOptions:Oi,position:ji}),A.jsx(Kw,{rfId:Cr,disableKeyboardA11y:Vi})]})})}var MS=R0(CS);const PS=t=>{var r;return(r=t.domNode)==null?void 0:r.querySelector(".react-flow__edgelabel-renderer")};function ip({children:t}){const r=Ne(PS);return r?Bw.createPortal(t,r):null}function zS(t){const[r,i]=q.useState(t),s=q.useCallback(u=>i(a=>A0(u,a)),[]);return[r,i,s]}function IS(t){const[r,i]=q.useState(t),s=q.useCallback(u=>i(a=>L0(u,a)),[]);return[r,i,s]}function sp(t){return Ne(q.useCallback(i=>i.nodeLookup.get(t),[t]),De)}function TS({dimensions:t,lineWidth:r,variant:i,className:s}){return A.jsx("path",{strokeWidth:r,d:`M${t[0]/2} 0 V${t[1]} M0 ${t[1]/2} H${t[0]}`,className:be(["react-flow__background-pattern",i,s])})}function AS({radius:t,className:r}){return A.jsx("circle",{cx:t,cy:t,r:t,className:be(["react-flow__background-pattern","dots",r])})}var Un;(function(t){t.Lines="lines",t.Dots="dots",t.Cross="cross"})(Un||(Un={}));const LS={[Un.Dots]:1,[Un.Lines]:1,[Un.Cross]:6},RS=t=>({transform:t.transform,patternId:`pattern-${t.rfId}`});function ig({id:t,variant:r=Un.Dots,gap:i=20,size:s,lineWidth:u=1,offset:a=0,color:c,bgColor:d,style:p,className:g,patternClassName:v}){const m=q.useRef(null),{transform:y,patternId:x}=Ne(RS,De),S=s||LS[r],_=r===Un.Dots,w=r===Un.Cross,k=Array.isArray(i)?i:[i,i],P=[k[0]*y[2]||1,k[1]*y[2]||1],N=S*y[2],C=Array.isArray(a)?a:[a,a],j=w?[N,N]:P,D=[C[0]*y[2]||1+j[0]/2,C[1]*y[2]||1+j[1]/2],H=`${x}${t||""}`;return A.jsxs("svg",{className:be(["react-flow__background",g]),style:{...p,...Pl,"--xy-background-color-props":d,"--xy-background-pattern-color-props":c},ref:m,"data-testid":"rf__background",children:[A.jsx("pattern",{id:H,x:y[0]%P[0],y:y[1]%P[1],width:P[0],height:P[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${D[0]},-${D[1]})`,children:_?A.jsx(AS,{radius:N/2,className:v}):A.jsx(TS,{dimensions:j,lineWidth:u,variant:r,className:v})}),A.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${H})`})]})}ig.displayName="Background";const DS=q.memo(ig);function $S(){return A.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:A.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function jS(){return A.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:A.jsx("path",{d:"M0 0h32v4.2H0z"})})}function OS(){return A.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:A.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 FS(){return A.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:A.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 HS(){return A.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:A.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 tl({children:t,className:r,...i}){return A.jsx("button",{type:"button",className:be(["react-flow__controls-button",r]),...i,children:t})}const VS=t=>({isInteractive:t.nodesDraggable||t.nodesConnectable||t.elementsSelectable,minZoomReached:t.transform[2]<=t.minZoom,maxZoomReached:t.transform[2]>=t.maxZoom,ariaLabelConfig:t.ariaLabelConfig});function sg({style:t,showZoom:r=!0,showFitView:i=!0,showInteractive:s=!0,fitViewOptions:u,onZoomIn:a,onZoomOut:c,onFitView:d,onInteractiveChange:p,className:g,children:v,position:m="bottom-left",orientation:y="vertical","aria-label":x}){const S=je(),{isInteractive:_,minZoomReached:w,maxZoomReached:k,ariaLabelConfig:P}=Ne(VS,De),{zoomIn:N,zoomOut:C,fitView:j}=Mi(),D=()=>{N(),a==null||a()},H=()=>{C(),c==null||c()},B=()=>{j(u),d==null||d()},X=()=>{S.setState({nodesDraggable:!_,nodesConnectable:!_,elementsSelectable:!_}),p==null||p(!_)},J=y==="horizontal"?"horizontal":"vertical";return A.jsxs(Ci,{className:be(["react-flow__controls",J,g]),position:m,style:t,"data-testid":"rf__controls","aria-label":x??P["controls.ariaLabel"],children:[r&&A.jsxs(A.Fragment,{children:[A.jsx(tl,{onClick:D,className:"react-flow__controls-zoomin",title:P["controls.zoomIn.ariaLabel"],"aria-label":P["controls.zoomIn.ariaLabel"],disabled:k,children:A.jsx($S,{})}),A.jsx(tl,{onClick:H,className:"react-flow__controls-zoomout",title:P["controls.zoomOut.ariaLabel"],"aria-label":P["controls.zoomOut.ariaLabel"],disabled:w,children:A.jsx(jS,{})})]}),i&&A.jsx(tl,{className:"react-flow__controls-fitview",onClick:B,title:P["controls.fitView.ariaLabel"],"aria-label":P["controls.fitView.ariaLabel"],children:A.jsx(OS,{})}),s&&A.jsx(tl,{className:"react-flow__controls-interactive",onClick:X,title:P["controls.interactive.ariaLabel"],"aria-label":P["controls.interactive.ariaLabel"],children:_?A.jsx(HS,{}):A.jsx(FS,{})}),v]})}sg.displayName="Controls";const BS=q.memo(sg);function WS({id:t,x:r,y:i,width:s,height:u,style:a,color:c,strokeColor:d,strokeWidth:p,className:g,borderRadius:v,shapeRendering:m,selected:y,onClick:x}){const{background:S,backgroundColor:_}=a||{},w=c||S||_;return A.jsx("rect",{className:be(["react-flow__minimap-node",{selected:y},g]),x:r,y:i,rx:v,ry:v,width:s,height:u,style:{fill:w,stroke:d,strokeWidth:p},shapeRendering:m,onClick:x?k=>x(k,t):void 0})}const US=q.memo(WS),bS=t=>t.nodes.map(r=>r.id),Oa=t=>t instanceof Function?t:()=>t;function YS({nodeStrokeColor:t,nodeColor:r,nodeClassName:i="",nodeBorderRadius:s=5,nodeStrokeWidth:u,nodeComponent:a=US,onClick:c}){const d=Ne(bS,De),p=Oa(r),g=Oa(t),v=Oa(i),m=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return A.jsx(A.Fragment,{children:d.map(y=>A.jsx(QS,{id:y,nodeColorFunc:p,nodeStrokeColorFunc:g,nodeClassNameFunc:v,nodeBorderRadius:s,nodeStrokeWidth:u,NodeComponent:a,onClick:c,shapeRendering:m},y))})}function XS({id:t,nodeColorFunc:r,nodeStrokeColorFunc:i,nodeClassNameFunc:s,nodeBorderRadius:u,nodeStrokeWidth:a,shapeRendering:c,NodeComponent:d,onClick:p}){const{node:g,x:v,y:m,width:y,height:x}=Ne(S=>{const _=S.nodeLookup.get(t);if(!_)return{node:void 0,x:0,y:0,width:0,height:0};const w=_.internals.userNode,{x:k,y:P}=_.internals.positionAbsolute,{width:N,height:C}=yn(w);return{node:w,x:k,y:P,width:N,height:C}},De);return!g||g.hidden||!s0(g)?null:A.jsx(d,{x:v,y:m,width:y,height:x,style:g.style,selected:!!g.selected,className:s(g),color:r(g),borderRadius:u,strokeColor:i(g),strokeWidth:a,shapeRendering:c,onClick:p,id:g.id})}const QS=q.memo(XS);var KS=q.memo(YS);const GS=200,ZS=150,qS=t=>!t.hidden,JS=t=>{const r={x:-t.transform[0]/t.transform[2],y:-t.transform[1]/t.transform[2],width:t.width/t.transform[2],height:t.height/t.transform[2]};return{viewBB:r,boundingRect:t.nodeLookup.size>0?i0(Ei(t.nodeLookup,{filter:qS}),r):r,rfId:t.rfId,panZoom:t.panZoom,translateExtent:t.translateExtent,flowWidth:t.width,flowHeight:t.height,ariaLabelConfig:t.ariaLabelConfig}},e_="react-flow__minimap-desc";function lg({style:t,className:r,nodeStrokeColor:i,nodeColor:s,nodeClassName:u="",nodeBorderRadius:a=5,nodeStrokeWidth:c,nodeComponent:d,bgColor:p,maskColor:g,maskStrokeColor:v,maskStrokeWidth:m,position:y="bottom-right",onClick:x,onNodeClick:S,pannable:_=!1,zoomable:w=!1,ariaLabel:k,inversePan:P,zoomStep:N=1,offsetScale:C=5}){const j=je(),D=q.useRef(null),{boundingRect:H,viewBB:B,rfId:X,panZoom:J,translateExtent:W,flowWidth:U,flowHeight:Z,ariaLabelConfig:z}=Ne(JS,De),b=(t==null?void 0:t.width)??GS,F=(t==null?void 0:t.height)??ZS,Y=H.width/b,T=H.height/F,L=Math.max(Y,T),V=L*b,M=L*F,R=C*L,te=H.x-(V-H.width)/2-R,re=H.y-(M-H.height)/2-R,le=V+R*2,ue=M+R*2,ae=`${e_}-${X}`,ee=q.useRef(0),ce=q.useRef();ee.current=L,q.useEffect(()=>{if(D.current&&J)return ce.current=gw({domNode:D.current,panZoom:J,getTransform:()=>j.getState().transform,getViewScale:()=>ee.current}),()=>{var ye;(ye=ce.current)==null||ye.destroy()}},[J]),q.useEffect(()=>{var ye;(ye=ce.current)==null||ye.update({translateExtent:W,width:U,height:Z,inversePan:P,pannable:_,zoomStep:N,zoomable:w})},[_,w,P,N,W,U,Z]);const we=x?ye=>{var Me;const[Ce,Te]=((Me=ce.current)==null?void 0:Me.pointer(ye))||[0,0];x(ye,{x:Ce,y:Te})}:void 0,_e=S?q.useCallback((ye,Ce)=>{const Te=j.getState().nodeLookup.get(Ce).internals.userNode;S(ye,Te)},[]):void 0,Se=k??z["minimap.ariaLabel"];return A.jsx(Ci,{position:y,style:{...t,"--xy-minimap-background-color-props":typeof p=="string"?p:void 0,"--xy-minimap-mask-background-color-props":typeof g=="string"?g:void 0,"--xy-minimap-mask-stroke-color-props":typeof v=="string"?v:void 0,"--xy-minimap-mask-stroke-width-props":typeof m=="number"?m*L:void 0,"--xy-minimap-node-background-color-props":typeof s=="string"?s:void 0,"--xy-minimap-node-stroke-color-props":typeof i=="string"?i:void 0,"--xy-minimap-node-stroke-width-props":typeof c=="number"?c:void 0},className:be(["react-flow__minimap",r]),"data-testid":"rf__minimap",children:A.jsxs("svg",{width:b,height:F,viewBox:`${te} ${re} ${le} ${ue}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":ae,ref:D,onClick:we,children:[Se&&A.jsx("title",{id:ae,children:Se}),A.jsx(KS,{onClick:_e,nodeColor:s,nodeStrokeColor:i,nodeBorderRadius:a,nodeClassName:u,nodeStrokeWidth:c,nodeComponent:d}),A.jsx("path",{className:"react-flow__minimap-mask",d:`M${te-R},${re-R}h${le+R*2}v${ue+R*2}h${-le-R*2}z - M${B.x},${B.y}h${B.width}v${B.height}h${-B.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}lg.displayName="MiniMap";q.memo(lg);const t_=t=>r=>t?`${Math.max(1/r.transform[2],1)}`:void 0,n_={[uo.Line]:"right",[uo.Handle]:"bottom-right"};function r_({nodeId:t,position:r,variant:i=uo.Handle,className:s,style:u=void 0,children:a,color:c,minWidth:d=10,minHeight:p=10,maxWidth:g=Number.MAX_VALUE,maxHeight:v=Number.MAX_VALUE,keepAspectRatio:m=!1,resizeDirection:y,autoScale:x=!0,shouldResize:S,onResizeStart:_,onResize:w,onResizeEnd:k}){const P=O0(),N=typeof t=="string"?t:P,C=je(),j=q.useRef(null),D=i===uo.Handle,H=Ne(q.useCallback(t_(D&&x),[D,x]),De),B=q.useRef(null),X=r??n_[i];q.useEffect(()=>{if(!(!j.current||!N))return B.current||(B.current=zw({domNode:j.current,nodeId:N,getStoreItems:()=>{const{nodeLookup:W,transform:U,snapGrid:Z,snapToGrid:z,nodeOrigin:b,domNode:F}=C.getState();return{nodeLookup:W,transform:U,snapGrid:Z,snapToGrid:z,nodeOrigin:b,paneDomNode:F}},onChange:(W,U)=>{const{triggerNodeChanges:Z,nodeLookup:z,parentLookup:b,nodeOrigin:F}=C.getState(),Y=[],T={x:W.x,y:W.y},L=z.get(N);if(L&&L.expandParent&&L.parentId){const V=L.origin??F,M=W.width??L.measured.width??0,R=W.height??L.measured.height??0,te={id:L.id,parentId:L.parentId,rect:{width:M,height:R,...l0({x:W.x??L.position.x,y:W.y??L.position.y},{width:M,height:R},L.parentId,z,V)}},re=yc([te],z,b,F);Y.push(...re),T.x=W.x?Math.max(V[0]*M,W.x):void 0,T.y=W.y?Math.max(V[1]*R,W.y):void 0}if(T.x!==void 0&&T.y!==void 0){const V={id:N,type:"position",position:{...T}};Y.push(V)}if(W.width!==void 0&&W.height!==void 0){const M={id:N,type:"dimensions",resizing:!0,setAttributes:y?y==="horizontal"?"width":"height":!0,dimensions:{width:W.width,height:W.height}};Y.push(M)}for(const V of U){const M={...V,type:"position"};Y.push(M)}Z(Y)},onEnd:({width:W,height:U})=>{const Z={id:N,type:"dimensions",resizing:!1,dimensions:{width:W,height:U}};C.getState().triggerNodeChanges([Z])}})),B.current.update({controlPosition:X,boundaries:{minWidth:d,minHeight:p,maxWidth:g,maxHeight:v},keepAspectRatio:m,resizeDirection:y,onResizeStart:_,onResize:w,onResizeEnd:k,shouldResize:S}),()=>{var W;(W=B.current)==null||W.destroy()}},[X,d,p,g,v,m,_,w,k,S]);const J=X.split("-");return A.jsx("div",{className:be(["react-flow__resize-control","nodrag",...J,i,s]),ref:j,style:{...u,scale:H,...c&&{[D?"backgroundColor":"borderColor"]:c}},children:a})}q.memo(r_);function o_(t,r){var i,s=1;t==null&&(t=0),r==null&&(r=0);function u(){var a,c=i.length,d,p=0,g=0;for(a=0;a=(m=(d+g)/2))?d=m:g=m,(w=i>=(y=(p+v)/2))?p=y:v=y,u=a,!(a=a[k=w<<1|_]))return u[k]=c,t;if(x=+t._x.call(null,a.data),S=+t._y.call(null,a.data),r===x&&i===S)return c.next=a,u?u[k]=c:t._root=c,t;do u=u?u[k]=new Array(4):t._root=new Array(4),(_=r>=(m=(d+g)/2))?d=m:g=m,(w=i>=(y=(p+v)/2))?p=y:v=y;while((k=w<<1|_)===(P=(S>=y)<<1|x>=m));return u[P]=a,u[k]=c,t}function s_(t){var r,i,s=t.length,u,a,c=new Array(s),d=new Array(s),p=1/0,g=1/0,v=-1/0,m=-1/0;for(i=0;iv&&(v=u),am&&(m=a));if(p>v||g>m)return this;for(this.cover(p,g).cover(v,m),i=0;it||t>=u||s>r||r>=a;)switch(g=(rv||(d=S.y0)>m||(p=S.x1)=k)<<1|t>=w)&&(S=y[y.length-1],y[y.length-1]=y[y.length-1-_],y[y.length-1-_]=S)}else{var P=t-+this._x.call(null,x.data),N=r-+this._y.call(null,x.data),C=P*P+N*N;if(C=(y=(c+p)/2))?c=y:p=y,(_=m>=(x=(d+g)/2))?d=x:g=x,r=i,!(i=i[w=_<<1|S]))return this;if(!i.length)break;(r[w+1&3]||r[w+2&3]||r[w+3&3])&&(s=r,k=w)}for(;i.data!==t;)if(u=i,!(i=i.next))return this;return(a=i.next)&&delete i.next,u?(a?u.next=a:delete u.next,this):r?(a?r[w]=a:delete r[w],(i=r[0]||r[1]||r[2]||r[3])&&i===(r[3]||r[2]||r[1]||r[0])&&!i.length&&(s?s[k]=i:this._root=i),this):(this._root=a,this)}function d_(t){for(var r=0,i=t.length;ry.index){var W=x-B.x-B.vx,U=S-B.y-B.vy,Z=W*W+U*U;Zx+J||DS+J||Hg.r&&(g.r=g[v].r)}function p(){if(r){var g,v=r.length,m;for(i=new Array(v),g=0;g[r(j,D,c),j])),C;for(w=0,d=new Array(k);w(t=(C_*t+M_)%ap)/ap}function z_(t){return t.x}function I_(t){return t.y}var T_=10,A_=Math.PI*(3-Math.sqrt(5));function L_(t){var r,i=1,s=.001,u=1-Math.pow(s,1/300),a=0,c=.6,d=new Map,p=sc(m),g=xi("tick","end"),v=P_();t==null&&(t=[]);function m(){y(),g.call("tick",r),i1?(w==null?d.delete(_):d.set(_,S(w)),r):d.get(_)},find:function(_,w,k){var P=0,N=t.length,C,j,D,H,B;for(k==null?k=1/0:k*=k,P=0;P1?(g.on(_,w),r):g.on(_)}}}function R_(){var t,r,i,s,u=st(-30),a,c=1,d=1/0,p=.81;function g(x){var S,_=t.length,w=xc(t,z_,I_).visitAfter(m);for(s=x,S=0;S<_;++S)r=t[S],w.visit(y)}function v(){if(t){var x,S=t.length,_;for(a=new Array(S),x=0;x=d)return;(x.data!==r||x.next)&&(k===0&&(k=Wn(i),C+=k*k),P===0&&(P=Wn(i),C+=P*P),CA.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"#9ca3af",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:A.jsx("path",{d:"M15.75 5.25a3 3 0 013 3m3 0a6 6 0 01-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1121.75 8.25z"})}),pp={visibility:"hidden",width:8,height:8};function gp({data:t,type:r}){const i=rl[r]||rl.entity,s=hp[r]||hp.entity,a=t.hideProperties?[]:t.properties||[],c=a.some((x,S)=>x.highlight&&S>=oi),[d,p]=q.useState(c),g=!d&&a.length>oi,v=g?a.slice(0,oi):a,m=a.length-oi;t.description;const y=x=>{x.stopPropagation(),p(S=>!S)};return A.jsxs("div",{style:{minWidth:220,borderRadius:6,overflow:"hidden",cursor:t.link?"pointer":"default",boxShadow:t.highlight?`0 0 0 2px ${i}, 0 0 12px ${i}40`:"0 1px 3px rgba(0,0,0,0.06)"},children:[A.jsx(Zt,{type:"target",position:me.Top,id:"top",style:pp}),A.jsx(Zt,{type:"source",position:me.Bottom,id:"bottom",style:pp}),A.jsx("div",{style:{height:6,background:i}}),A.jsxs("div",{style:{border:"3px solid #E9EEF4",borderTop:"none",borderRadius:"0 0 6px 6px",overflow:"hidden"},children:[A.jsxs("div",{style:{display:"flex",alignItems:"center",background:"#E9EEF4",padding:"6px 10px",gap:6},children:[A.jsx("span",{style:{flexShrink:0,display:"flex"},children:s}),A.jsx("span",{style:{fontWeight:700,fontSize:14,color:"#111827",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:t.label})]}),A.jsx("div",{style:{background:"#fff"},children:v.length>0?A.jsxs(A.Fragment,{children:[v.map((x,S)=>A.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"5px 10px",borderTop:"1px solid #E9EEF4",gap:8,background:x.highlight?`${rl.property}1a`:"transparent",boxShadow:x.highlight?`inset 3px 0 0 ${rl.property}`:"none"},children:[A.jsx("span",{style:{fontSize:13,fontWeight:x.highlight?700:500,color:x.inherited?"#9ca3af":"#111827",fontStyle:x.inherited?"italic":"normal",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,minWidth:0},children:x.name}),A.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,flexShrink:0},children:[x.type&&A.jsx("span",{style:{fontSize:11,color:"#9ca3af"},children:x.type}),x.primaryKey&&A.jsx(j_,{})]})]},S)),(g||d&&a.length>oi)&&A.jsx("div",{onClick:y,style:{padding:"4px 10px",borderTop:"1px solid #E9EEF4",fontSize:11,color:"#6366f1",textAlign:"center",cursor:"pointer",fontWeight:500},onMouseOver:x=>x.currentTarget.style.background="#f5f3ff",onMouseOut:x=>x.currentTarget.style.background="transparent",children:d?"show less":`+${m} more`})]}):A.jsx("div",{style:{padding:"6px 10px",fontSize:12,color:"#9ca3af",fontStyle:"italic",lineHeight:1.4},children:"No properties"})})]})]})}function mp(t){var s,u;const r=((s=t.measured)==null?void 0:s.width)??t.width??150,i=((u=t.measured)==null?void 0:u.height)??t.height??40;return{x:t.internals.positionAbsolute.x,y:t.internals.positionAbsolute.y,w:r,h:i,cx:t.internals.positionAbsolute.x+r/2,cy:t.internals.positionAbsolute.y+i/2}}function ol(t,r,i,s){const{cx:u,cy:a,w:c,h:d}=t,p=r-u,g=i-a;if(p===0&&g===0)return{x:u,y:a};const v=c/2+s,m=d/2+s,y=Math.abs(p)<.001?1/0:v/Math.abs(p),x=Math.abs(g)<.001?1/0:m/Math.abs(g),S=Math.min(y,x);return{x:u+p*S,y:a+g*S}}function O_(t,r,i,s){if(s<=1)return 0;const u=r.cx-t.cx,a=r.cy-t.cy,c=Math.sqrt(u*u+a*a)||1,d=Math.max(60,Math.min(c*.3,120));return(i-(s-1)/2)*d}function F_({id:t,source:r,target:i,label:s,style:u,data:a,markerEnd:c,labelStyle:d,labelBgStyle:p,labelBgPadding:g}){const v=sp(r),m=sp(i);if(!v||!m)return null;const y=mp(v),x=mp(m),S=(a==null?void 0:a.parallel)||{index:0,total:1},_=O_(y,x,S.index,S.total);if(_===0){const b=ol(y,x.cx,x.cy,2),F=ol(x,y.cx,y.cy,6),Y=`M ${b.x} ${b.y} L ${F.x} ${F.y}`,T=(b.x+F.x)/2,L=(b.y+F.y)/2;return A.jsxs(A.Fragment,{children:[A.jsx(ao,{id:t,path:Y,style:u,markerEnd:c}),s&&A.jsx(ip,{children:A.jsx("div",{style:yp(T,L,d,p,g),children:s})})]})}const w=(y.cx+x.cx)/2,k=(y.cy+x.cy)/2,P=r>i,N=P?y.cx-x.cx:x.cx-y.cx,C=P?y.cy-x.cy:x.cy-y.cy,j=Math.sqrt(N*N+C*C)||1,D=-C/j,H=N/j,B=w+D*_,X=k+H*_,J=ol(y,B,X,2),W=ol(x,B,X,6),U=`M ${J.x} ${J.y} Q ${B} ${X} ${W.x} ${W.y}`,Z=.25*J.x+.5*B+.25*W.x,z=.25*J.y+.5*X+.25*W.y;return A.jsxs(A.Fragment,{children:[A.jsx(ao,{id:t,path:U,style:u,markerEnd:c}),s&&A.jsx(ip,{children:A.jsx("div",{style:yp(Z,z,d,p,g),children:s})})]})}function yp(t,r,i,s,u){return{position:"absolute",transform:`translate(-50%, -50%) translate(${t}px, ${r}px)`,pointerEvents:"none",fontSize:(i==null?void 0:i.fontSize)??10,fontWeight:(i==null?void 0:i.fontWeight)??500,color:(i==null?void 0:i.fill)??"#64748b",background:(s==null?void 0:s.fill)??"#fff",opacity:(s==null?void 0:s.fillOpacity)??.9,padding:`${(u==null?void 0:u[1])??2}px ${(u==null?void 0:u[0])??4}px`,borderRadius:4}}const vp={entity:"#3b82f6",property:"#22c55e",shared_property:"#22c55e",metric:"#8b5cf6"},H_={entity:"Entity",property:"Property",shared_property:"Property",metric:"Metric"},V_=()=>A.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"#9ca3af",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:A.jsx("path",{d:"M15.75 5.25a3 3 0 013 3m3 0a6 6 0 01-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1121.75 8.25z"})});function B_({node:t,onClose:r}){if(!t)return null;const i=t.type||"entity",s=vp[i]||vp.entity,{label:u,description:a,link:c,properties:d=[]}=t.data,p=d.filter(v=>!v.inherited),g=d.filter(v=>v.inherited);return A.jsxs("div",{style:{position:"absolute",top:0,right:0,bottom:0,width:320,background:"#fff",borderLeft:"1px solid #e5e7eb",boxShadow:"-4px 0 12px rgba(0,0,0,0.08)",zIndex:10,display:"flex",flexDirection:"column",overflow:"hidden"},children:[A.jsx("div",{style:{height:4,background:s,flexShrink:0}}),A.jsxs("div",{style:{padding:"16px 16px 12px",borderBottom:"1px solid #e5e7eb",flexShrink:0},children:[A.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:[A.jsxs("div",{style:{flex:1,minWidth:0},children:[A.jsx("div",{style:{fontSize:11,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.05em",color:s,marginBottom:4},children:H_[i]||"Entity"}),c?A.jsx("a",{href:c,style:{fontSize:16,fontWeight:700,color:"#111827",wordBreak:"break-word",textDecoration:"none",display:"block"},onMouseOver:v=>v.currentTarget.style.color=s,onMouseOut:v=>v.currentTarget.style.color="#111827",children:u}):A.jsx("div",{style:{fontSize:16,fontWeight:700,color:"#111827",wordBreak:"break-word"},children:u})]}),A.jsx("button",{onClick:r,style:{background:"none",border:"none",cursor:"pointer",padding:4,color:"#9ca3af",fontSize:18,lineHeight:1,flexShrink:0,marginLeft:8},title:"Close",children:"✕"})]}),a&&A.jsx("div",{style:{marginTop:8,fontSize:13,color:"#6b7280",lineHeight:1.5},children:a}),c&&A.jsx("a",{href:c,style:{display:"inline-flex",alignItems:"center",gap:4,marginTop:10,fontSize:12,fontWeight:500,color:s,textDecoration:"none"},onMouseOver:v=>v.currentTarget.style.textDecoration="underline",onMouseOut:v=>v.currentTarget.style.textDecoration="none",children:"Open details →"})]}),A.jsxs("div",{style:{flex:1,overflow:"auto",padding:"0"},children:[p.length>0&&A.jsx(xp,{title:"Properties",properties:p,count:p.length}),g.length>0&&A.jsx(xp,{title:"Inherited",properties:g,count:g.length,inherited:!0}),d.length===0&&!a&&A.jsx("div",{style:{padding:16,fontSize:13,color:"#9ca3af",textAlign:"center"},children:"No properties"})]})]})}function xp({title:t,properties:r,count:i,inherited:s}){return A.jsxs("div",{children:[A.jsxs("div",{style:{padding:"10px 16px 6px",fontSize:11,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.05em",color:"#9ca3af",background:"#f9fafb",borderBottom:"1px solid #e5e7eb"},children:[t," (",i,")"]}),r.map((u,a)=>A.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"7px 16px",borderBottom:"1px solid #f3f4f6",gap:8},children:[A.jsx("span",{style:{fontSize:13,fontWeight:500,color:s?"#9ca3af":"#374151",fontStyle:s?"italic":"normal",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1,minWidth:0},children:u.name}),A.jsxs("div",{style:{display:"flex",alignItems:"center",gap:4,flexShrink:0},children:[u.type&&A.jsx("span",{style:{fontSize:11,color:"#9ca3af",background:"#f3f4f6",padding:"1px 6px",borderRadius:3},children:u.type}),u.primaryKey&&A.jsx(V_,{})]})]},a))]})}const W_={entity:qr,metric:qr,property:qr,shared_property:qr},U_={entity:gp,metric:gp,property:qr,shared_property:qr},b_={floating:F_};function Y_(t){const r={};t.edges.forEach(d=>{r[d.source]=(r[d.source]||0)+1,r[d.target]=(r[d.target]||0)+1});const i=t.nodes.map(d=>({id:d.id,type:d.type||"entity",position:{x:0,y:0},data:{...d.data,connections:r[d.id]||0}})),s={};t.edges.forEach(d=>{const p=[d.source,d.target].sort().join("::");s[p]=(s[p]||0)+1});const u={},a={};t.edges.forEach(d=>{const p=[d.source,d.target].sort().join("::");u[p]||(u[p]=0),a[d.id]={index:u[p]++,total:s[p]}});const c=t.edges.map(d=>({id:d.id,source:d.source,target:d.target,label:d.label,type:"floating",data:{label:d.label,parallel:a[d.id]},style:{stroke:"#94a3b8",strokeWidth:1.5},markerEnd:{type:oo.ArrowClosed,color:"#94a3b8",width:14,height:14},labelStyle:{fontSize:10,fill:"#64748b",fontWeight:500},labelBgStyle:{fill:"#fff",fillOpacity:.9},labelBgPadding:[4,2]}));return{nodes:i,edges:c}}function X_(t,r,i){const s=t.length;if(s===1)return{[t[0].id]:{x:0,y:0}};const u=s>50,a=i?-3e3:u?-1200:-500,c=i?450:u?250:200,d=i?200:u?80:90,p=Math.max(s*5,300),g=t.map((w,k)=>({id:w.id,x:Math.cos(2*Math.PI*k/s)*p,y:Math.sin(2*Math.PI*k/s)*p})),v=r.map(w=>({source:w.source,target:w.target})),m=R_().strength(a);u&&m.theta(1.2);const y=u?.08:.05,x=L_(g).force("link",N_(v).id(w=>w.id).distance(c).strength(u?.3:1)).force("charge",m).force("center",o_(0,0)).force("x",D_(0).strength(y)).force("y",$_(0).strength(y)).force("collide",E_(d)).alphaDecay(u?.04:.0228).stop(),S=u?250:300;for(let w=0;w{_[w.id]={x:isFinite(w.x)?w.x:k*100,y:isFinite(w.y)?w.y:k*100}}),_}function Q_(t,r,{entityMode:i=!1}={}){const s={};t.forEach(m=>{s[m.id]=[]}),r.forEach(m=>{s[m.source].push(m.target),s[m.target].push(m.source)});const u=new Set,a=[];t.forEach(m=>{if(u.has(m.id))return;const y=[],x=[m.id];for(;x.length;){const S=x.pop();u.has(S)||(u.add(S),y.push(S),s[S].forEach(_=>{u.has(_)||x.push(_)}))}a.push(y)}),a.sort((m,y)=>y.length-m.length);const c={};t.forEach(m=>{c[m.id]=m});const d=a.map(m=>{const y=new Set(m),x=m.map(C=>c[C]),S=r.filter(C=>y.has(C.source)&&y.has(C.target)),_=X_(x,S,i);let w=1/0,k=1/0,P=-1/0,N=-1/0;return m.forEach(C=>{w=Math.min(w,_[C].x),k=Math.min(k,_[C].y),P=Math.max(P,_[C].x),N=Math.max(N,_[C].y)}),m.forEach(C=>{_[C].x-=w,_[C].y-=k}),{ids:m,posById:_,width:P-w,height:N-k}}),p=i?300:150,g={};if(d.length===1){const m=d[0];m.ids.forEach(y=>{g[y]=m.posById[y]})}else{const m=d[0];m.ids.forEach(_=>{g[_]=m.posById[_]});let y=m.width+p*2,x=0,S=0;for(let _=1;_0&&x+w.height>m.height&&(y+=S+p*2,x=0,S=0),w.ids.forEach(k=>{g[k]={x:y+w.posById[k].x,y:x+w.posById[k].y}}),S=Math.max(S,w.width),x+=w.height+p}}return{nodes:t.map(m=>({...m,position:g[m.id]})),edges:r}}function K_(t,r){const i={},s={};r.forEach(x=>{i[x.target]||(i[x.target]=[]),i[x.target].push(x.source),s[x.source]=x.target});const u=t.filter(x=>!s[x.id]).map(x=>x.id);u.length===0&&t.length>0&&u.push(t[0].id);const a={},c=[],d=new Set,p=u.map(x=>({id:x,level:0}));for(u.forEach(x=>d.add(x));p.length>0;){const{id:x,level:S}=p.shift();a[x]=S,c.push(x),(i[x]||[]).forEach(w=>{d.has(w)||(d.add(w),p.push({id:w,level:S+1}))})}t.forEach(x=>{d.has(x.id)||(a[x.id]=0,c.push(x.id))});const g={};c.forEach(x=>{const S=a[x];g[S]||(g[S]=[]),g[S].push(x)});const v=250,m=120,y={};return Object.entries(g).forEach(([x,S])=>{const _=(S.length-1)*v;S.forEach((w,k)=>{y[w]={x:-_/2+k*v,y:parseInt(x)*m}})}),{nodes:t.map(x=>({...x,position:y[x.id]||{x:0,y:0}})),edges:r}}function G_(t){const r={},i={};return t.forEach(s=>{r[s.source]||(r[s.source]=new Set),r[s.target]||(r[s.target]=new Set),r[s.source].add(s.target),r[s.target].add(s.source),i[s.source]||(i[s.source]=new Set),i[s.target]||(i[s.target]=new Set),i[s.source].add(s.id),i[s.target].add(s.id)}),{neighborNodes:r,neighborEdges:i}}const ag=t=>({borderRadius:4,background:t?"#eef2ff":"#fff",padding:"4px 8px",fontSize:12,fontWeight:500,color:t?"#4f46e5":"#374151",boxShadow:"0 1px 2px 0 rgba(0,0,0,0.05)",border:`1px solid ${t?"#a5b4fc":"#d1d5db"}`,cursor:"pointer",display:"inline-flex",alignItems:"center",gap:4});function Z_({customHeight:t,containerRef:r}){const{fitView:i}=Mi(),[s,u]=q.useState(!1),a=q.useCallback(()=>{var d;const c=(d=r.current)==null?void 0:d.closest(".semantic-visualizer");c&&(s?(c.style.height=t,u(!1)):(c.style.height="100vh",u(!0)),setTimeout(()=>{i(),c.scrollIntoView(!0)},0))},[s,t,i,r]);return A.jsx("button",{onClick:a,style:ag(!1),onMouseOver:c=>c.currentTarget.style.background="#f9fafb",onMouseOut:c=>c.currentTarget.style.background="#fff",children:s?"shrink":"enlarge"})}function q_({graphData:t,customHeight:r,layout:i}){const{fitView:s}=Mi(),u=q.useRef(null),[a,c]=q.useState(null),d=q.useMemo(()=>t.nodes.some(U=>{var Z;return(((Z=U.data)==null?void 0:Z.properties)||[]).some(z=>z.highlight)}),[t]),[p,g]=q.useState(d),v=i==="tree",m=p&&!v?U_:W_,y=q.useMemo(()=>{const U=p&&!v?(()=>{const b=t.nodes.filter(T=>T.type!=="shared_property"),F=new Set(b.map(T=>T.id)),Y=t.edges.filter(T=>F.has(T.source)&&F.has(T.target));return{nodes:b,edges:Y}})():t,{nodes:Z,edges:z}=Y_(U);return v?K_(Z,z):Q_(Z,z,{entityMode:p})},[t,p,v]),x=q.useMemo(()=>G_(y.edges),[y.edges]),S=q.useMemo(()=>{if(!a)return y.nodes;const U=new Set([a.id]);return(x.neighborNodes[a.id]||new Set).forEach(Z=>U.add(Z)),y.nodes.map(Z=>({...Z,data:{...Z.data,dimmed:!U.has(Z.id)}}))},[y.nodes,a,x]),_=q.useMemo(()=>{if(!a)return y.edges;const U=x.neighborEdges[a.id]||new Set;return y.edges.map(Z=>{const z=U.has(Z.id);return{...Z,style:{stroke:z?"#6366f1":"#e2e8f0",strokeWidth:z?2.5:1},markerEnd:{type:oo.ArrowClosed,color:z?"#6366f1":"#e2e8f0",width:14,height:14},data:{...Z.data,dimmed:!z},labelStyle:z?{fontSize:11,fill:"#4338ca",fontWeight:600}:{fontSize:10,fill:"#e2e8f0",fontWeight:500},labelBgStyle:z?{fill:"#eef2ff",fillOpacity:1}:{fill:"#fff",fillOpacity:.5},zIndex:z?10:0}})},[y.edges,a,x]),[w,k,P]=zS(S),[N,C,j]=IS(_),[D,H]=q.useState(y),[B,X]=q.useState(_);y!==D?(H(y),k(S),C(_),X(_)):_!==B&&(X(_),k(U=>U.map(Z=>{const z=S.find(b=>b.id===Z.id);return z?{...Z,data:z.data}:Z})),C(_));const J=q.useCallback((U,Z)=>{c(z=>(z==null?void 0:z.id)===Z.id?null:Z)},[]),W=q.useCallback(()=>{c(null)},[]);return A.jsxs("div",{ref:u,style:{width:"100%",height:"100%",position:"relative"},children:[A.jsxs(MS,{nodes:w,edges:N,onNodesChange:P,onEdgesChange:j,nodeTypes:m,edgeTypes:b_,fitView:!0,fitViewOptions:{padding:.3,maxZoom:1},nodesDraggable:!0,nodesConnectable:!1,elementsSelectable:!0,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!0,preventScrolling:!1,minZoom:.1,maxZoom:2,proOptions:{hideAttribution:!0},onNodeClick:J,onPaneClick:W,children:[A.jsx(DS,{color:"#e2e8f0",gap:20}),A.jsx(BS,{position:"bottom-left",showInteractive:!1}),A.jsx(Ci,{position:"top-right",children:A.jsxs("div",{style:{display:"flex",gap:6},children:[!v&&A.jsx("button",{onClick:()=>{g(U=>!U),setTimeout(()=>s({padding:.3,maxZoom:1}),0)},style:ag(p),onMouseOver:U=>{p||(U.currentTarget.style.background="#f9fafb")},onMouseOut:U=>{p||(U.currentTarget.style.background="#fff")},title:"Show as Entity-Relationship Diagram — render properties inside concept and metric nodes",children:"Show as Entity-Relationship-Diagram"}),A.jsx(Z_,{customHeight:r||"400px",containerRef:u})]})})]}),A.jsx(B_,{node:a,onClose:()=>c(null)})]})}function cg(t){if(t.dataset.svInit)return;if(t.offsetParent===null){const u=new MutationObserver(()=>{t.offsetParent!==null&&(u.disconnect(),cg(t))});u.observe(document.body,{attributes:!0,subtree:!0,attributeFilter:["style","class"]});return}const r=t.dataset.jsonUrl,i=t.dataset.height||"400px",s=t.dataset.layout||"force";r&&(t.dataset.svInit="true",fetch(r,{credentials:"same-origin"}).then(u=>u.json()).then(u=>{if(!u.nodes||u.nodes.length===0){delete t.dataset.svInit;return}t.style.height=i,Zm.createRoot(t).render(A.jsx(og,{children:A.jsx(q_,{graphData:u,customHeight:i,layout:s})}))}).catch(u=>{delete t.dataset.svInit,console.error("Semantic visualizer fetch error:",u)}))}function ec(){document.querySelectorAll(".semantic-visualizer").forEach(cg)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",ec):ec();document.addEventListener("htmx:load",ec); +`));return[t,t.reduce((e,t)=>e.concat(...t),[])]}return[[],[]]},[e]);return(0,y.useEffect)(()=>{let n=t?.target??qc,c=t?.actInsideInputWithModifier??!0;if(e!==null){let e=e=>{if(i.current=e.ctrlKey||e.metaKey||e.shiftKey||e.altKey,(!i.current||i.current&&!c)&&So(e))return!1;let n=Xc(e.code,s);if(a.current.add(e[n]),Yc(o,a.current,!1)){let n=e.composedPath?.()?.[0]||e.target,a=n?.nodeName===`BUTTON`||n?.nodeName===`A`;t.preventDefault!==!1&&(i.current||!a)&&e.preventDefault(),r(!0)}},l=e=>{let t=Xc(e.code,s);Yc(o,a.current,!0)?(r(!1),a.current.clear()):a.current.delete(e[t]),e.key===`Meta`&&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]),n}function Yc(e,t,n){return e.filter(e=>n||e.length===t.size).some(e=>e.every(e=>t.has(e)))}function Xc(e,t){return t.includes(e)?`code`:`key`}var Zc=()=>{let e=bc();return(0,y.useMemo)(()=>({zoomIn:async t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1.2,t):!1},zoomOut:async t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,t):!1},zoomTo:async(t,n)=>{let{panZoom:r}=e.getState();return r?r.scaleTo(t,n):!1},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{let{transform:[r,i,a],panZoom:o}=e.getState();return o?(await o.setViewport({x:t.x??r,y:t.y??i,zoom:t.zoom??a},n),!0):!1},getViewport:()=>{let[t,n,r]=e.getState().transform;return{x:t,y:n,zoom:r}},setCenter:async(t,n,r)=>e.getState().setCenter(t,n,r),fitBounds:async(t,n)=>{let{width:r,height:i,minZoom:a,maxZoom:o,panZoom:s}=e.getState(),c=G(t,r,i,a,o,n?.padding??.1);return s?(await s.setViewport(c,{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0):!1},screenToFlowPosition:(t,n={})=>{let{transform:r,snapGrid:i,snapToGrid:a,domNode:o}=e.getState();if(!o)return t;let{x:s,y:c}=o.getBoundingClientRect(),l={x:t.x-s,y:t.y-c},u=n.snapGrid??i;return ao(l,r,n.snapToGrid??a,u)},flowToScreenPosition:t=>{let{transform:n,domNode:r}=e.getState();if(!r)return t;let{x:i,y:a}=r.getBoundingClientRect(),o=oo(t,n);return{x:o.x+i,y:o.y+a}}}),[])};function Qc(e,t){let n=[],r=new Map,i=[];for(let t of e)if(t.type===`add`){i.push(t);continue}else if(t.type===`remove`||t.type===`replace`)r.set(t.id,[t]);else{let e=r.get(t.id);e?e.push(t):r.set(t.id,[t])}for(let e of t){let t=r.get(e.id);if(!t){n.push(e);continue}if(t[0].type===`remove`)continue;if(t[0].type===`replace`){n.push({...t[0].item});continue}let i={...e};for(let e of t)$c(e,i);n.push(i)}return i.length&&i.forEach(e=>{e.index===void 0?n.push({...e.item}):n.splice(e.index,0,{...e.item})}),n}function $c(e,t){switch(e.type){case`select`:t.selected=e.selected;break;case`position`:e.position!==void 0&&(t.position=e.position),e.dragging!==void 0&&(t.dragging=e.dragging);break;case`dimensions`:e.dimensions!==void 0&&(t.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes===`width`)&&(t.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes===`height`)&&(t.height=e.dimensions.height))),typeof e.resizing==`boolean`&&(t.resizing=e.resizing);break}}function el(e,t){return Qc(e,t)}function tl(e,t){return Qc(e,t)}function nl(e,t){return{id:e,type:`select`,selected:t}}function rl(e,t=new Set,n=!1){let r=[];for(let[i,a]of e){let e=t.has(i);!(a.selected===void 0&&!e)&&a.selected!==e&&(n&&(a.selected=e),r.push(nl(a.id,e)))}return r}function il({items:e=[],lookup:t}){let n=[],r=new Map(e.map(e=>[e.id,e]));for(let[r,i]of e.entries()){let e=t.get(i.id),a=e?.internals?.userNode??e;a!==void 0&&a!==i&&n.push({id:i.id,item:i,type:`replace`}),a===void 0&&n.push({item:i,type:`add`,index:r})}for(let[e]of t)r.get(e)===void 0&&n.push({id:e,type:`remove`});return n}function al(e){return{id:e.id,type:`remove`}}var ol=ro(`React Flow`,`https://reactflow.dev/`);function sl(e,t,n={}){return Fo(e,t,{...n,onError:n.onError??ol})}var cl=e=>ja(e),ll=e=>Aa(e);function ul(e){return(0,y.forwardRef)(e)}var dl=typeof window<`u`?y.useLayoutEffect:y.useEffect;function fl(e){let[t,n]=(0,y.useState)(BigInt(0)),[r]=(0,y.useState)(()=>pl(()=>n(e=>e+BigInt(1))));return dl(()=>{let t=r.get();t.length&&(e(t),r.reset())},[t]),r}function pl(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}var ml=(0,y.createContext)(null);function hl({children:e}){let t=bc(),n=fl((0,y.useCallback)(e=>{let{nodes:n=[],setNodes:r,hasDefaultNodes:i,onNodesChange:a,nodeLookup:o,fitViewQueued:s,onNodesChangeMiddlewareMap:c}=t.getState(),l=n;for(let t of e)l=typeof t==`function`?t(l):t;let u=il({items:l,lookup:o});for(let e of c.values())u=e(u);i&&r(l),u.length>0?a?.(u):s&&window.requestAnimationFrame(()=>{let{fitViewQueued:e,nodes:n,setNodes:r}=t.getState();e&&r(n)})},[])),r=fl((0,y.useCallback)(e=>{let{edges:n=[],setEdges:r,hasDefaultEdges:i,onEdgesChange:a,edgeLookup:o}=t.getState(),s=n;for(let t of e)s=typeof t==`function`?t(s):t;i?r(s):a&&a(il({items:s,lookup:o}))},[])),i=(0,y.useMemo)(()=>({nodeQueue:n,edgeQueue:r}),[]);return(0,x.jsx)(ml.Provider,{value:i,children:e})}function gl(){let e=(0,y.useContext)(ml);if(!e)throw Error(`useBatchContext must be used within a BatchProvider`);return e}var _l=e=>!!e.panZoom;function vl(){let e=Zc(),t=bc(),n=gl(),r=K(_l),i=(0,y.useMemo)(()=>{let e=e=>t.getState().nodeLookup.get(e),r=e=>{n.nodeQueue.push(e)},i=e=>{n.edgeQueue.push(e)},a=e=>{let{nodeLookup:n,nodeOrigin:r}=t.getState(),i=cl(e)?e:n.get(e.id),a=i.parentId?mo(i.position,i.measured,i.parentId,n,r):i.position;return Xa({...i,position:a,width:i.measured?.width??i.width,height:i.measured?.height??i.height})},o=(e,t,n={replace:!1})=>{r(r=>r.map(r=>{if(r.id===e){let e=typeof t==`function`?t(r):t;return n.replace&&cl(e)?e:{...r,...e}}return r}))},s=(e,t,n={replace:!1})=>{i(r=>r.map(r=>{if(r.id===e){let e=typeof t==`function`?t(r):t;return n.replace&&ll(e)?e:{...r,...e}}return r}))};return{getNodes:()=>t.getState().nodes.map(e=>({...e})),getNode:t=>e(t)?.internals.userNode,getInternalNode:e,getEdges:()=>{let{edges:e=[]}=t.getState();return e.map(e=>({...e}))},getEdge:e=>t.getState().edgeLookup.get(e),setNodes:r,setEdges:i,addNodes:e=>{let t=Array.isArray(e)?e:[e];n.nodeQueue.push(e=>[...e,...t])},addEdges:e=>{let t=Array.isArray(e)?e:[e];n.edgeQueue.push(e=>[...e,...t])},toObject:()=>{let{nodes:e=[],edges:n=[],transform:r}=t.getState(),[i,a,o]=r;return{nodes:e.map(e=>({...e})),edges:n.map(e=>({...e})),viewport:{x:i,y:a,zoom:o}}},deleteElements:async({nodes:e=[],edges:n=[]})=>{let{nodes:r,edges:i,onNodesDelete:a,onEdgesDelete:o,triggerNodeChanges:s,triggerEdgeChanges:c,onDelete:l,onBeforeDelete:u}=t.getState(),{nodes:d,edges:f}=await Va({nodesToRemove:e,edgesToRemove:n,nodes:r,edges:i,onBeforeDelete:u}),p=f.length>0,m=d.length>0;if(p){let e=f.map(al);o?.(f),c(e)}if(m){let e=d.map(al);a?.(d),s(e)}return(m||p)&&l?.({nodes:d,edges:f}),{deletedNodes:d,deletedEdges:f}},getIntersectingNodes:(e,n=!0,r)=>{let i=to(e),o=i?e:a(e),s=r!==void 0;return o?(r||t.getState().nodes).filter(r=>{let a=t.getState().nodeLookup.get(r.id);if(a&&!i&&(r.id===e.id||!a.internals.positionAbsolute))return!1;let c=Xa(s?r:a),l=eo(c,o);return n&&l>0||l>=c.width*c.height||l>=o.width*o.height}):[]},isNodeIntersecting:(e,t,n=!0)=>{let r=to(e)?e:a(e);if(!r)return!1;let i=eo(r,t);return n&&i>0||i>=t.width*t.height||i>=r.width*r.height},updateNode:o,updateNodeData:(e,t,n={replace:!1})=>{o(e,e=>{let r=typeof t==`function`?t(e):t;return n.replace?{...e,data:r}:{...e,data:{...e.data,...r}}},n)},updateEdge:s,updateEdgeData:(e,t,n={replace:!1})=>{s(e,e=>{let r=typeof t==`function`?t(e):t;return n.replace?{...e,data:r}:{...e,data:{...e.data,...r}}},n)},getNodesBounds:e=>{let{nodeLookup:n,nodeOrigin:r}=t.getState();return Pa(e,{nodeLookup:n,nodeOrigin:r})},getHandleConnections:({type:e,id:n,nodeId:r})=>Array.from(t.getState().connectionLookup.get(`${r}-${e}${n?`-${n}`:``}`)?.values()??[]),getNodeConnections:({type:e,handleId:n,nodeId:r})=>Array.from(t.getState().connectionLookup.get(`${r}${e?n?`-${e}-${n}`:`-${e}`:``}`)?.values()??[]),fitView:async e=>{let r=t.getState().fitViewResolver??go();return t.setState({fitViewQueued:!0,fitViewOptions:e,fitViewResolver:r}),n.nodeQueue.push(e=>[...e]),r.promise}}},[]);return(0,y.useMemo)(()=>({...i,...e,viewportInitialized:r}),[r])}var yl=e=>e.selected,bl=typeof window<`u`?window:void 0;function xl({deleteKeyCode:e,multiSelectionKeyCode:t}){let n=bc(),{deleteElements:r}=vl(),i=Jc(e,{actInsideInputWithModifier:!1}),a=Jc(t,{target:bl});(0,y.useEffect)(()=>{if(i){let{edges:e,nodes:t}=n.getState();r({nodes:t.filter(yl),edges:e.filter(yl)}),n.setState({nodesSelectionActive:!1})}},[i]),(0,y.useEffect)(()=>{n.setState({multiSelectionActive:a})},[a])}function Sl(e){let t=bc();(0,y.useEffect)(()=>{let n=()=>{if(!e.current||!(e.current.checkVisibility?.()??!0))return!1;let n=yo(e.current);(n.height===0||n.width===0)&&t.getState().onError?.(`004`,va.error004()),t.setState({width:n.width||500,height:n.height||500})};if(e.current){n(),window.addEventListener(`resize`,n);let t=new ResizeObserver(()=>n());return t.observe(e.current),()=>{window.removeEventListener(`resize`,n),t&&e.current&&t.unobserve(e.current)}}},[])}var Cl={position:`absolute`,width:`100%`,height:`100%`,top:0,left:0},wl=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function Tl({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:r=!1,panOnScrollSpeed:i=.5,panOnScrollMode:a=Ca.Free,zoomOnDoubleClick:o=!0,panOnDrag:s=!0,defaultViewport:c,translateExtent:l,minZoom:u,maxZoom:d,zoomActivationKeyCode:f,preventScrolling:p=!0,children:m,noWheelClassName:h,noPanClassName:g,onViewportChange:_,isControlledViewport:v,paneClickDistance:b,selectionOnDrag:S}){let C=bc(),w=(0,y.useRef)(null),{userSelectionActive:T,lib:E,connectionInProgress:D}=K(wl,hc),O=Jc(f),k=(0,y.useRef)();Sl(w);let A=(0,y.useCallback)(e=>{_?.({x:e[0],y:e[1],zoom:e[2]}),v||C.setState({transform:e})},[_,v]);return(0,y.useEffect)(()=>{if(w.current){k.current=Ws({domNode:w.current,minZoom:u,maxZoom:d,translateExtent:l,viewport:c,onDraggingChange:e=>C.setState(t=>t.paneDragging===e?t:{paneDragging:e}),onPanZoomStart:(e,t)=>{let{onViewportChangeStart:n,onMoveStart:r}=C.getState();r?.(e,t),n?.(t)},onPanZoom:(e,t)=>{let{onViewportChange:n,onMove:r}=C.getState();r?.(e,t),n?.(t)},onPanZoomEnd:(e,t)=>{let{onViewportChangeEnd:n,onMoveEnd:r}=C.getState();r?.(e,t),n?.(t)}});let{x:e,y:t,zoom:n}=k.current.getViewport();return C.setState({panZoom:k.current,transform:[e,t,n],domNode:w.current.closest(`.react-flow`)}),()=>{k.current?.destroy()}}},[]),(0,y.useEffect)(()=>{k.current?.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:r,panOnScrollSpeed:i,panOnScrollMode:a,zoomOnDoubleClick:o,panOnDrag:s,zoomActivationKeyPressed:O,preventScrolling:p,noPanClassName:g,userSelectionActive:T,noWheelClassName:h,lib:E,onTransformChange:A,connectionInProgress:D,selectionOnDrag:S,paneClickDistance:b})},[e,t,n,r,i,a,o,s,O,p,g,T,h,E,A,D,S,b]),(0,x.jsx)(`div`,{className:`react-flow__renderer`,ref:w,style:Cl,children:m})}var El=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function Dl(){let{userSelectionActive:e,userSelectionRect:t}=K(El,hc);return e&&t?(0,x.jsx)(`div`,{className:`react-flow__selection react-flow__container`,style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}var Ol=(e,t)=>n=>{n.target===t.current&&e?.(n)},kl=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging,panBy:e.panBy,autoPanSpeed:e.autoPanSpeed});function Al({isSelecting:e,selectionKeyPressed:t,selectionMode:n=wa.Full,panOnDrag:r,autoPanOnSelection:i,paneClickDistance:a,selectionOnDrag:o,onSelectionStart:s,onSelectionEnd:c,onPaneClick:l,onPaneContextMenu:u,onPaneScroll:d,onPaneMouseEnter:f,onPaneMouseMove:p,onPaneMouseLeave:m,children:h}){let g=(0,y.useRef)(0),_=bc(),{userSelectionActive:v,elementsSelectable:b,dragging:C,panBy:w,autoPanSpeed:T}=K(kl,hc),E=b&&(e||v),D=(0,y.useRef)(null),O=(0,y.useRef)(),k=(0,y.useRef)(new Set),A=(0,y.useRef)(new Set),j=(0,y.useRef)(!1),M=(0,y.useRef)(!1),N=(0,y.useRef)({x:0,y:0}),P=(0,y.useRef)(!1),ee=e=>{if(M.current||j.current||_.getState().connection.inProgress){M.current=!1,j.current=!1;return}l?.(e),_.getState().resetSelectedElements(),_.setState({nodesSelectionActive:!1})},F=e=>{if(Array.isArray(r)&&r?.includes(2)){e.preventDefault();return}u?.(e)},I=d?e=>d(e):void 0,L=e=>{M.current&&=(e.stopPropagation(),!1)},te=n=>{let{domNode:r,transform:i}=_.getState();if(O.current=r?.getBoundingClientRect(),!O.current)return;let a=n.target===D.current;if(!a&&n.target.closest(`.nokey`)||!e||!(o&&a||t)||n.button!==0||!n.isPrimary)return;n.target?.setPointerCapture?.(n.pointerId),M.current=!1;let{x:s,y:c}=wo(n.nativeEvent,O.current),l=ao({x:s,y:c},i);_.setState({userSelectionRect:{width:0,height:0,startX:l.x,startY:l.y,x:s,y:c}}),a||(n.stopPropagation(),n.preventDefault())};function R(e,t){let{userSelectionRect:r}=_.getState();if(!r)return;let{transform:i,nodeLookup:a,edgeLookup:o,connectionLookup:s,triggerNodeChanges:c,triggerEdgeChanges:l,defaultEdgeOptions:u}=_.getState(),d={x:r.startX,y:r.startY},{x:f,y:p}=oo(d,i),m={startX:d.x,startY:d.y,x:ee.id)),A.current=new Set;let v=u?.selectable??!0;for(let e of k.current){let t=s.get(e);if(t)for(let{edgeId:e}of t.values()){let t=o.get(e);t&&(t.selectable??v)&&A.current.add(e)}}ho(h,k.current)||c(rl(a,k.current,!0)),ho(g,A.current)||l(rl(o,A.current)),_.setState({userSelectionRect:m,userSelectionActive:!0,nodesSelectionActive:!1})}function z(){if(!i||!O.current)return;let[e,t]=Ka(N.current,O.current,T);w({x:e,y:t}).then(e=>{if(!M.current||!e){g.current=requestAnimationFrame(z);return}let{x:t,y:n}=N.current;R(t,n),g.current=requestAnimationFrame(z)})}let B=()=>{cancelAnimationFrame(g.current),g.current=0,P.current=!1};return(0,y.useEffect)(()=>()=>B(),[]),(0,x.jsxs)(`div`,{className:S([`react-flow__pane`,{draggable:r===!0||Array.isArray(r)&&r.includes(0),dragging:C,selection:e}]),onClick:E?void 0:Ol(ee,D),onContextMenu:Ol(F,D),onWheel:Ol(I,D),onPointerEnter:E?void 0:f,onPointerMove:E?e=>{let{userSelectionRect:n,transform:r,resetSelectedElements:i}=_.getState();if(!O.current||!n)return;let{x:o,y:c}=wo(e.nativeEvent,O.current);N.current={x:o,y:c};let l=oo({x:n.startX,y:n.startY},r);if(!M.current){let n=t?0:a;if(Math.hypot(o-l.x,c-l.y)<=n)return;i(),s?.(e)}M.current=!0,P.current||=(z(),!0),R(o,c)}:p,onPointerUp:e=>{if(!E){e.target===D.current&&_.getState().connection.inProgress&&(j.current=!0);return}e.button===0&&(e.target?.releasePointerCapture?.(e.pointerId),!v&&e.target===D.current&&_.getState().userSelectionRect&&ee?.(e),_.setState({userSelectionActive:!1,userSelectionRect:null}),M.current&&(c?.(e),_.setState({nodesSelectionActive:k.current.size>0})),B())},onPointerCancel:E?e=>{e.target?.releasePointerCapture?.(e.pointerId),B()}:void 0,onPointerDownCapture:E?te:void 0,onClickCapture:E?L:void 0,onPointerLeave:m,ref:D,style:Cl,children:[h,(0,x.jsx)(Dl,{})]})}function jl({id:e,store:t,unselect:n=!1,nodeRef:r}){let{addSelectedNodes:i,unselectNodesAndEdges:a,multiSelectionActive:o,nodeLookup:s,onError:c}=t.getState(),l=s.get(e);if(!l){c?.(`012`,va.error012(e));return}t.setState({nodesSelectionActive:!1}),l.selected?(n||l.selected&&o)&&(a({nodes:[l],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):i([e])}function Ml({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:i,isSelectable:a,nodeClickDistance:o}){let s=bc(),[c,l]=(0,y.useState)(!1),u=(0,y.useRef)();return(0,y.useEffect)(()=>{if(!t)return u.current=ys({getStoreItems:()=>s.getState(),onNodeMouseDown:t=>{jl({id:t,store:s,nodeRef:e})},onDragStart:()=>{l(!0)},onDragStop:()=>{l(!1)}}),()=>{u.current?.destroy(),u.current=void 0}},[t,s,e]),(0,y.useEffect)(()=>{t||!e.current||!u.current||u.current.update({noDragClassName:n,handleSelector:r,domNode:e.current,isSelectable:a,nodeId:i,nodeClickDistance:o})},[n,r,t,a,e,i,o]),c}var Nl=e=>t=>t.selected&&(t.draggable||e&&t.draggable===void 0);function Pl(){let e=bc();return(0,y.useCallback)(t=>{let{nodeExtent:n,snapToGrid:r,snapGrid:i,nodesDraggable:a,onError:o,updateNodePositions:s,nodeLookup:c,nodeOrigin:l}=e.getState(),u=new Map,d=Nl(a),f=r?i[0]:5,p=r?i[1]:5,m=t.direction.x*f*t.factor,h=t.direction.y*p*t.factor;for(let[,e]of c){if(!d(e))continue;let t={x:e.internals.positionAbsolute.x+m,y:e.internals.positionAbsolute.y+h};r&&(t=io(t,i));let{position:a,positionAbsolute:s}=Ba({nodeId:e.id,nextPosition:t,nodeLookup:c,nodeExtent:n,nodeOrigin:l,onError:o});e.position=a,e.internals.positionAbsolute=s,u.set(e.id,e)}s(u)},[])}var Fl=(0,y.createContext)(null),Il=Fl.Provider;Fl.Consumer;var Ll=()=>(0,y.useContext)(Fl),q=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),Rl=(0,y.createContext)(null);function J({children:e}){let t=K(q,hc);return(0,x.jsx)(Rl.Provider,{value:t,children:e})}function Y(){let e=(0,y.useContext)(Rl);if(!e)throw Error(`useHandleConfig must be used within a HandleConfigProvider`);return e}var X={connectingFrom:!1,connectingTo:!1,clickConnecting:!1,isPossibleEndHandle:!0,connectionInProcess:!1,clickConnectionInProcess:!1,valid:!1},zl=(e,t,n)=>r=>{let{connectionClickStartHandle:i,connectionMode:a,connection:o}=r,{fromHandle:s,toHandle:c,isValid:l}=o;if(!s&&!i)return X;let u=c?.nodeId===e&&c?.id===t&&c?.type===n;return{connectingFrom:s?.nodeId===e&&s?.id===t&&s?.type===n,connectingTo:u,clickConnecting:i?.nodeId===e&&i?.id===t&&i?.type===n,isPossibleEndHandle:a===Sa.Strict?s?.type!==n:e!==s?.nodeId||t!==s?.id,connectionInProcess:!!s,clickConnectionInProcess:!!i,valid:u&&l}};function Bl({type:e=`source`,position:t=U.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:i=!0,isConnectableEnd:a=!0,id:o,onConnect:s,children:c,className:l,onMouseDown:u,onTouchStart:d,...f},p){let m=o||null,h=e===`target`,g=bc(),_=Ll(),{connectOnClick:v,noPanClassName:y,rfId:b}=Y(),{connectingFrom:C,connectingTo:w,clickConnecting:T,isPossibleEndHandle:E,connectionInProcess:D,clickConnectionInProcess:O,valid:k}=K(zl(_,m,e),hc);_||g.getState().onError?.(`010`,va.error010());let A=e=>{let{defaultEdgeOptions:t,onConnect:n,hasDefaultEdges:r}=g.getState(),i={...t,...e};if(r){let{edges:e,setEdges:t,onError:n}=g.getState();t(sl(i,e,{onError:n}))}n?.(i),s?.(i)},j=e=>{if(!_)return;let t=Co(e.nativeEvent);if(i&&(t&&e.button===0||!t)){let t=g.getState();ks.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:h,handleId:m,nodeId:_,flowId:t.rfId,panBy:t.panBy,cancelConnection:t.cancelConnection,onConnectStart:t.onConnectStart,onConnectEnd:(...e)=>g.getState().onConnectEnd?.(...e),updateConnection:t.updateConnection,onConnect:A,isValidConnection:n||((...e)=>g.getState().isValidConnection?.(...e)??!0),getTransform:()=>g.getState().transform,getFromHandle:()=>g.getState().connection.fromHandle,autoPanSpeed:t.autoPanSpeed,dragThreshold:t.connectionDragThreshold})}t?u?.(e):d?.(e)};return(0,x.jsx)(`div`,{"data-handleid":m,"data-nodeid":_,"data-handlepos":t,"data-id":`${b}-${_}-${m}-${e}`,className:S([`react-flow__handle`,`react-flow__handle-${t}`,`nodrag`,y,l,{source:!h,target:h,connectable:r,connectablestart:i,connectableend:a,clickconnecting:T,connectingfrom:C,connectingto:w,valid:k,connectionindicator:r&&(!D||E)&&(D||O?a:i)}]),onMouseDown:j,onTouchStart:j,onClick:v?t=>{let{onClickConnectStart:r,onClickConnectEnd:a,connectionClickStartHandle:o,connectionMode:s,isValidConnection:c,lib:l,rfId:u,nodeLookup:d,connection:f}=g.getState();if(!_||!o&&!i)return;if(!o){r?.(t.nativeEvent,{nodeId:_,handleId:m,handleType:e}),g.setState({connectionClickStartHandle:{nodeId:_,type:e,id:m}});return}let p=bo(t.target),h=n||c,{connection:v,isValid:y}=ks.isValid(t.nativeEvent,{handle:{nodeId:_,id:m,type:e},connectionMode:s,fromNodeId:o.nodeId,fromHandleId:o.id||null,fromType:o.type,isValidConnection:h,flowId:u,doc:p,lib:l,nodeLookup:d});y&&v&&A(v);let b=structuredClone(f);delete b.inProgress,b.toPosition=b.toHandle?b.toHandle.position:null,a?.(t,b),g.setState({connectionClickStartHandle:null})}:void 0,ref:p,...f,children:c})}var Vl=(0,y.memo)(ul(Bl));function Hl({data:e,isConnectable:t,sourcePosition:n=U.Bottom}){return(0,x.jsxs)(x.Fragment,{children:[e?.label,(0,x.jsx)(Vl,{type:`source`,position:n,isConnectable:t})]})}function Ul({data:e,isConnectable:t,targetPosition:n=U.Top,sourcePosition:r=U.Bottom}){return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(Vl,{type:`target`,position:n,isConnectable:t}),e?.label,(0,x.jsx)(Vl,{type:`source`,position:r,isConnectable:t})]})}function Wl(){return null}function Gl({data:e,isConnectable:t,targetPosition:n=U.Top}){return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(Vl,{type:`target`,position:n,isConnectable:t}),e?.label]})}var Kl={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},ql={input:Hl,default:Ul,output:Gl,group:Wl};function Jl(e){return e.internals.handleBounds===void 0?{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}}var Yl=e=>{let{width:t,height:n,x:r,y:i}=Fa(e.nodeLookup,{filter:e=>!!e.selected});return{width:no(t)?t:null,height:no(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${r}px,${i}px)`}};function Xl({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){let r=bc(),{width:i,height:a,transformString:o,userSelectionActive:s}=K(Yl,hc),c=Pl(),l=(0,y.useRef)(null);(0,y.useEffect)(()=>{n||l.current?.focus({preventScroll:!0})},[n]);let u=!s&&i!==null&&a!==null;if(Ml({nodeRef:l,disabled:!u}),!u)return null;let d=e?t=>{e(t,r.getState().nodes.filter(e=>e.selected))}:void 0;return(0,x.jsx)(`div`,{className:S([`react-flow__nodesselection`,`react-flow__container`,t]),style:{transform:o},children:(0,x.jsx)(`div`,{ref:l,className:`react-flow__nodesselection-rect`,onContextMenu:d,tabIndex:n?void 0:-1,onKeyDown:n?void 0:e=>{Object.prototype.hasOwnProperty.call(Kl,e.key)&&(e.preventDefault(),c({direction:Kl[e.key],factor:e.shiftKey?4:1}))},style:{width:i,height:a}})})}var Zl=typeof window<`u`?window:void 0,Ql=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function $l({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:a,onPaneScroll:o,paneClickDistance:s,deleteKeyCode:c,selectionKeyCode:l,selectionOnDrag:u,selectionMode:d,onSelectionStart:f,onSelectionEnd:p,multiSelectionKeyCode:m,panActivationKeyCode:h,zoomActivationKeyCode:g,elementsSelectable:_,zoomOnScroll:v,zoomOnPinch:y,panOnScroll:b,panOnScrollSpeed:S,panOnScrollMode:C,zoomOnDoubleClick:w,panOnDrag:T,autoPanOnSelection:E,defaultViewport:D,translateExtent:O,minZoom:k,maxZoom:A,preventScrolling:j,onSelectionContextMenu:M,noWheelClassName:N,noPanClassName:P,disableKeyboardA11y:ee,onViewportChange:F,isControlledViewport:I}){let{nodesSelectionActive:L,userSelectionActive:te}=K(Ql,hc),R=Jc(l,{target:Zl}),z=Jc(h,{target:Zl}),B=z||T,V=z||b,ne=u&&B!==!0,re=R||te||ne;return xl({deleteKeyCode:c,multiSelectionKeyCode:m}),(0,x.jsx)(Tl,{onPaneContextMenu:a,elementsSelectable:_,zoomOnScroll:v,zoomOnPinch:y,panOnScroll:V,panOnScrollSpeed:S,panOnScrollMode:C,zoomOnDoubleClick:w,panOnDrag:!R&&B,defaultViewport:D,translateExtent:O,minZoom:k,maxZoom:A,zoomActivationKeyCode:g,preventScrolling:j,noWheelClassName:N,noPanClassName:P,onViewportChange:F,isControlledViewport:I,paneClickDistance:s,selectionOnDrag:ne,children:(0,x.jsxs)(Al,{onSelectionStart:f,onSelectionEnd:p,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:a,onPaneScroll:o,panOnDrag:B,autoPanOnSelection:E,isSelecting:!!re,selectionMode:d,selectionKeyPressed:R,paneClickDistance:s,selectionOnDrag:ne,children:[e,L&&(0,x.jsx)(Xl,{onSelectionContextMenu:M,noPanClassName:P,disableKeyboardA11y:ee})]})})}$l.displayName=`FlowRenderer`;var eu=(0,y.memo)($l),tu=e=>t=>e?Ia(t.nodeLookup,{x:0,y:0,width:t.width,height:t.height},t.transform,!0).map(e=>e.id):Array.from(t.nodeLookup.keys());function nu(e){return K((0,y.useCallback)(tu(e),[e]),hc)}var ru=e=>e.updateNodeInternals;function iu(){let e=K(ru),[t]=(0,y.useState)(()=>typeof ResizeObserver>`u`?null:new ResizeObserver(t=>{let n=new Map;t.forEach(e=>{let t=e.target.getAttribute(`data-id`);n.set(t,{id:t,nodeElement:e.target,force:!0})}),e(n)}));return(0,y.useEffect)(()=>()=>{t?.disconnect()},[t]),t}function au({node:e,nodeType:t,hasDimensions:n,resizeObserver:r}){let i=bc(),a=(0,y.useRef)(null),o=(0,y.useRef)(null),s=(0,y.useRef)(e.sourcePosition),c=(0,y.useRef)(e.targetPosition),l=(0,y.useRef)(t),u=n&&!!e.internals.handleBounds;return(0,y.useEffect)(()=>{a.current&&!e.hidden&&(!u||o.current!==a.current)&&(o.current&&r?.unobserve(o.current),r?.observe(a.current),o.current=a.current)},[u,e.hidden]),(0,y.useEffect)(()=>()=>{o.current&&=(r?.unobserve(o.current),null)},[]),(0,y.useEffect)(()=>{if(a.current){let n=l.current!==t,r=s.current!==e.sourcePosition,o=c.current!==e.targetPosition;(n||r||o)&&(l.current=t,s.current=e.sourcePosition,c.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}function ou({id:e,onClick:t,onMouseEnter:n,onMouseMove:r,onMouseLeave:i,onContextMenu:a,onDoubleClick:o,nodesDraggable:s,elementsSelectable:c,nodesConnectable:l,nodesFocusable:u,resizeObserver:d,noDragClassName:f,noPanClassName:p,disableKeyboardA11y:m,rfId:h,nodeTypes:g,nodeClickDistance:_,onError:v}){let{node:y,internals:b,isParent:C}=K(t=>{let n=t.nodeLookup.get(e),r=t.parentLookup.has(e);return{node:n,internals:n.internals,isParent:r}},hc),w=y.type||`default`,T=g?.[w]||ql[w];T===void 0&&(v?.(`003`,va.error003(w)),w=`default`,T=g?.default||ql.default);let E=!!(y.draggable||s&&y.draggable===void 0),D=!!(y.selectable||c&&y.selectable===void 0),O=!!(y.connectable||l&&y.connectable===void 0),k=!!(y.focusable||u&&y.focusable===void 0),A=bc(),j=po(y),M=au({node:y,nodeType:w,hasDimensions:j,resizeObserver:d}),N=Ml({nodeRef:M,disabled:y.hidden||!E,noDragClassName:f,handleSelector:y.dragHandle,nodeId:e,isSelectable:D,nodeClickDistance:_}),P=Pl();if(y.hidden)return null;let ee=fo(y),F=Jl(y),I=D||E||t||n||r||i,L=n?e=>n(e,{...b.userNode}):void 0,te=r?e=>r(e,{...b.userNode}):void 0,R=i?e=>i(e,{...b.userNode}):void 0,z=a?e=>a(e,{...b.userNode}):void 0,B=o?e=>o(e,{...b.userNode}):void 0,V=n=>{let{selectNodesOnDrag:r,nodeDragThreshold:i}=A.getState();D&&(!r||!E||i>0)&&jl({id:e,store:A,nodeRef:M}),t&&t(n,{...b.userNode})},ne=t=>{if(!(So(t.nativeEvent)||m)){if(ba.includes(t.key)&&D){let n=t.key===`Escape`;jl({id:e,store:A,unselect:n,nodeRef:M})}else if(E&&y.selected&&Object.prototype.hasOwnProperty.call(Kl,t.key)){t.preventDefault();let{ariaLabelConfig:e}=A.getState();A.setState({ariaLiveMessage:e[`node.a11yDescription.ariaLiveMessage`]({direction:t.key.replace(`Arrow`,``).toLowerCase(),x:~~b.positionAbsolute.x,y:~~b.positionAbsolute.y})}),P({direction:Kl[t.key],factor:t.shiftKey?4:1})}}},re=()=>{if(m||!M.current?.matches(`:focus-visible`))return;let{transform:t,width:n,height:r,autoPanOnNodeFocus:i,setCenter:a}=A.getState();i&&(Ia(new Map([[e,y]]),{x:0,y:0,width:n,height:r},t,!0).length>0||a(y.position.x+ee.width/2,y.position.y+ee.height/2,{zoom:t[2]}))};return(0,x.jsx)(`div`,{className:S([`react-flow__node`,`react-flow__node-${w}`,{[p]:E},y.className,{selected:y.selected,selectable:D,parent:C,draggable:E,dragging:N}]),ref:M,style:{zIndex:b.z,transform:`translate(${b.positionAbsolute.x}px,${b.positionAbsolute.y}px)`,pointerEvents:I?`all`:`none`,visibility:j?`visible`:`hidden`,...y.style,...F},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:L,onMouseMove:te,onMouseLeave:R,onContextMenu:z,onClick:V,onDoubleClick:B,onKeyDown:k?ne:void 0,tabIndex:k?0:void 0,onFocus:k?re:void 0,role:y.ariaRole??(k?`group`:void 0),"aria-roledescription":`node`,"aria-describedby":m?void 0:`${Cc}-${h}`,"aria-label":y.ariaLabel,...y.domAttributes,children:(0,x.jsx)(Il,{value:e,children:(0,x.jsx)(T,{id:e,data:y.data,type:w,positionAbsoluteX:b.positionAbsolute.x,positionAbsoluteY:b.positionAbsolute.y,selected:y.selected??!1,selectable:D,draggable:E,deletable:y.deletable??!0,isConnectable:O,sourcePosition:y.sourcePosition,targetPosition:y.targetPosition,dragging:N,dragHandle:y.dragHandle,zIndex:b.z,parentId:y.parentId,...ee})})})}var su=(0,y.memo)(ou),cu=e=>({nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function lu(e){let{nodesConnectable:t,nodesFocusable:n,elementsSelectable:r,onError:i}=K(cu,hc),a=nu(e.onlyRenderVisibleElements),o=iu();return(0,x.jsx)(`div`,{className:`react-flow__nodes`,style:Cl,children:a.map(a=>(0,x.jsx)(su,{id:a,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:o,nodesDraggable:e.nodesDraggable??!0,nodesConnectable:t,nodesFocusable:n,elementsSelectable:r,nodeClickDistance:e.nodeClickDistance,onError:i},a))})}lu.displayName=`NodeRenderer`;var uu=(0,y.memo)(lu);function du(e){return K((0,y.useCallback)(t=>{if(!e)return t.edges.map(e=>e.id);let n=[];if(t.width&&t.height)for(let e of t.edges){let r=t.nodeLookup.get(e.source),i=t.nodeLookup.get(e.target);r&&i&&Mo({sourceNode:r,targetNode:i,width:t.width,height:t.height,transform:t.transform})&&n.push(e.id)}return n},[e]),hc)}var fu=({color:e=`none`,strokeWidth:t=1})=>(0,x.jsx)(`polyline`,{className:`arrow`,style:{strokeWidth:t,...e&&{stroke:e}},strokeLinecap:`round`,fill:`none`,strokeLinejoin:`round`,points:`-5,-4 0,0 -5,4`}),pu=({color:e=`none`,strokeWidth:t=1})=>(0,x.jsx)(`polyline`,{className:`arrowclosed`,style:{strokeWidth:t,...e&&{stroke:e,fill:e}},strokeLinecap:`round`,strokeLinejoin:`round`,points:`-5,-4 0,0 -5,4 -5,-4`}),mu={[Da.Arrow]:fu,[Da.ArrowClosed]:pu};function hu(e){let t=bc();return(0,y.useMemo)(()=>Object.prototype.hasOwnProperty.call(mu,e)?mu[e]:(t.getState().onError?.(`009`,va.error009(e)),null),[e])}var gu=({id:e,type:t,color:n,width:r=12.5,height:i=12.5,markerUnits:a=`strokeWidth`,strokeWidth:o,orient:s=`auto-start-reverse`})=>{let c=hu(t);return c?(0,x.jsx)(`marker`,{className:`react-flow__arrowhead`,id:e,markerWidth:`${r}`,markerHeight:`${i}`,viewBox:`-10 -10 20 20`,markerUnits:a,orient:s,refX:`0`,refY:`0`,children:(0,x.jsx)(c,{color:n,strokeWidth:o})}):null},_u=({defaultColor:e,rfId:t})=>{let n=K(e=>e.edges),r=K(e=>e.defaultEdgeOptions),i=(0,y.useMemo)(()=>Yo(n,{id:t,defaultColor:e,defaultMarkerStart:r?.markerStart,defaultMarkerEnd:r?.markerEnd}),[n,r,t,e]);return i.length?(0,x.jsx)(`svg`,{className:`react-flow__marker`,"aria-hidden":`true`,children:(0,x.jsx)(`defs`,{children:i.map(e=>(0,x.jsx)(gu,{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};_u.displayName=`MarkerDefinitions`;var vu=(0,y.memo)(_u);function yu({x:e,y:t,label:n,labelStyle:r,labelShowBg:i=!0,labelBgStyle:a,labelBgPadding:o=[2,4],labelBgBorderRadius:s=2,children:c,className:l,...u}){let[d,f]=(0,y.useState)({x:1,y:0,width:0,height:0}),p=S([`react-flow__edge-textwrapper`,l]),m=(0,y.useRef)(null);return(0,y.useEffect)(()=>{if(m.current){let e=m.current.getBBox();f({x:e.x,y:e.y,width:e.width,height:e.height})}},[n]),n?(0,x.jsxs)(`g`,{transform:`translate(${e-d.width/2} ${t-d.height/2})`,className:p,visibility:d.width?`visible`:`hidden`,...u,children:[i&&(0,x.jsx)(`rect`,{width:d.width+2*o[0],x:-o[0],y:-o[1],height:d.height+2*o[1],className:`react-flow__edge-textbg`,style:a,rx:s,ry:s}),(0,x.jsx)(`text`,{className:`react-flow__edge-text`,y:d.height/2,dy:`0.3em`,ref:m,style:r,children:n}),c]}):null}yu.displayName=`EdgeText`;var bu=(0,y.memo)(yu);function xu({path:e,labelX:t,labelY:n,label:r,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:s,labelBgBorderRadius:c,interactionWidth:l=20,...u}){return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`path`,{...u,d:e,fill:`none`,className:S([`react-flow__edge-path`,u.className])}),l?(0,x.jsx)(`path`,{d:e,fill:`none`,strokeOpacity:0,strokeWidth:l,className:`react-flow__edge-interaction`}):null,r&&no(t)&&no(n)?(0,x.jsx)(bu,{x:t,y:n,label:r,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:s,labelBgBorderRadius:c}):null]})}function Su({pos:e,x1:t,y1:n,x2:r,y2:i}){return e===U.Left||e===U.Right?[.5*(t+r),n]:[t,.5*(n+i)]}function Cu({sourceX:e,sourceY:t,sourcePosition:n=U.Bottom,targetX:r,targetY:i,targetPosition:a=U.Top}){let[o,s]=Su({pos:n,x1:e,y1:t,x2:r,y2:i}),[c,l]=Su({pos:a,x1:r,y1:i,x2:e,y2:t}),[u,d,f,p]=Eo({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:o,sourceControlY:s,targetControlX:c,targetControlY:l});return[`M${e},${t} C${o},${s} ${c},${l} ${r},${i}`,u,d,f,p]}function wu(e){return(0,y.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,sourcePosition:o,targetPosition:s,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:_})=>{let[v,y,b]=Cu({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s});return(0,x.jsx)(xu,{id:e.isInternal?void 0:t,path:v,labelX:y,labelY:b,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:_})})}var Tu=wu({isInternal:!1}),Eu=wu({isInternal:!0});Tu.displayName=`SimpleBezierEdge`,Eu.displayName=`SimpleBezierEdgeInternal`;function Du(e){return(0,y.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,sourcePosition:p=U.Bottom,targetPosition:m=U.Top,markerEnd:h,markerStart:g,pathOptions:_,interactionWidth:v})=>{let[y,b,S]=Ho({sourceX:n,sourceY:r,sourcePosition:p,targetX:i,targetY:a,targetPosition:m,borderRadius:_?.borderRadius,offset:_?.offset,stepPosition:_?.stepPosition});return(0,x.jsx)(xu,{id:e.isInternal?void 0:t,path:y,labelX:b,labelY:S,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:g,interactionWidth:v})})}var Ou=Du({isInternal:!1}),ku=Du({isInternal:!0});Ou.displayName=`SmoothStepEdge`,ku.displayName=`SmoothStepEdgeInternal`;function Au(e){return(0,y.memo)(({id:t,...n})=>{let r=e.isInternal?void 0:t;return(0,x.jsx)(Ou,{...n,id:r,pathOptions:(0,y.useMemo)(()=>({borderRadius:0,offset:n.pathOptions?.offset}),[n.pathOptions?.offset])})})}var ju=Au({isInternal:!1}),Mu=Au({isInternal:!0});ju.displayName=`StepEdge`,Mu.displayName=`StepEdgeInternal`;function Nu(e){return(0,y.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:p,markerStart:m,interactionWidth:h})=>{let[g,_,v]=Io({sourceX:n,sourceY:r,targetX:i,targetY:a});return(0,x.jsx)(xu,{id:e.isInternal?void 0:t,path:g,labelX:_,labelY:v,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:p,markerStart:m,interactionWidth:h})})}var Pu=Nu({isInternal:!1}),Fu=Nu({isInternal:!0});Pu.displayName=`StraightEdge`,Fu.displayName=`StraightEdgeInternal`;function Iu(e){return(0,y.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,sourcePosition:o=U.Bottom,targetPosition:s=U.Top,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,pathOptions:_,interactionWidth:v})=>{let[y,b,S]=ko({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s,curvature:_?.curvature});return(0,x.jsx)(xu,{id:e.isInternal?void 0:t,path:y,labelX:b,labelY:S,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:v})})}var Lu=Iu({isInternal:!1}),Ru=Iu({isInternal:!0});Lu.displayName=`BezierEdge`,Ru.displayName=`BezierEdgeInternal`;var zu={default:Ru,straight:Fu,step:Mu,smoothstep:ku,simplebezier:Eu},Bu={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null,zIndex:void 0},Vu=(e,t,n)=>n===U.Left?e-t:n===U.Right?e+t:e,Hu=(e,t,n)=>n===U.Top?e-t:n===U.Bottom?e+t:e,Uu=`react-flow__edgeupdater`;function Wu({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:i,onMouseEnter:a,onMouseOut:o,type:s}){return(0,x.jsx)(`circle`,{onMouseDown:i,onMouseEnter:a,onMouseOut:o,className:S([Uu,`${Uu}-${s}`]),cx:Vu(t,r,e),cy:Hu(n,r,e),r,stroke:`transparent`,fill:`transparent`})}function Z({isReconnectable:e,reconnectRadius:t,edge:n,sourceX:r,sourceY:i,targetX:a,targetY:o,sourcePosition:s,targetPosition:c,onReconnect:l,onReconnectStart:u,onReconnectEnd:d,setReconnecting:f,setUpdateHover:p}){let m=bc(),h=(e,t)=>{if(e.button!==0)return;let{autoPanOnConnect:r,domNode:i,connectionMode:a,connectionRadius:o,lib:s,onConnectStart:c,cancelConnection:p,nodeLookup:h,rfId:g,panBy:_,updateConnection:v}=m.getState(),y=t.type===`target`;ks.onPointerDown(e.nativeEvent,{autoPanOnConnect:r,connectionMode:a,connectionRadius:o,domNode:i,handleId:t.id,nodeId:t.nodeId,nodeLookup:h,isTarget:y,edgeUpdaterType:t.type,lib:s,flowId:g,cancelConnection:p,panBy:_,isValidConnection:(...e)=>m.getState().isValidConnection?.(...e)??!0,onConnect:e=>l?.(n,e),onConnectStart:(r,i)=>{f(!0),u?.(e,n,t.type),c?.(r,i)},onConnectEnd:(...e)=>m.getState().onConnectEnd?.(...e),onReconnectEnd:(e,r)=>{f(!1),d?.(e,n,t.type,r)},updateConnection:v,getTransform:()=>m.getState().transform,getFromHandle:()=>m.getState().connection.fromHandle,dragThreshold:m.getState().connectionDragThreshold,handleDomNode:e.currentTarget})},g=e=>h(e,{nodeId:n.target,id:n.targetHandle??null,type:`target`}),_=e=>h(e,{nodeId:n.source,id:n.sourceHandle??null,type:`source`}),v=()=>p(!0),y=()=>p(!1);return(0,x.jsxs)(x.Fragment,{children:[(e===!0||e===`source`)&&(0,x.jsx)(Wu,{position:s,centerX:r,centerY:i,radius:t,onMouseDown:g,onMouseEnter:v,onMouseOut:y,type:`source`}),(e===!0||e===`target`)&&(0,x.jsx)(Wu,{position:c,centerX:a,centerY:o,radius:t,onMouseDown:_,onMouseEnter:v,onMouseOut:y,type:`target`})]})}function Gu({id:e,edgesFocusable:t,edgesReconnectable:n,elementsSelectable:r,onClick:i,onDoubleClick:a,onContextMenu:o,onMouseEnter:s,onMouseMove:c,onMouseLeave:l,reconnectRadius:u,onReconnect:d,onReconnectStart:f,onReconnectEnd:p,rfId:m,edgeTypes:h,noPanClassName:g,onError:_,disableKeyboardA11y:v}){let b=K(t=>t.edgeLookup.get(e)),C=K(e=>e.defaultEdgeOptions);b=C?{...C,...b}:b;let w=b.type||`default`,T=h?.[w]||zu[w];T===void 0&&(_?.(`011`,va.error011(w)),w=`default`,T=h?.default||zu.default);let E=!!(b.focusable||t&&b.focusable===void 0),D=d!==void 0&&(b.reconnectable||n&&b.reconnectable===void 0),O=!!(b.selectable||r&&b.selectable===void 0),k=(0,y.useRef)(null),[A,j]=(0,y.useState)(!1),[M,N]=(0,y.useState)(!1),P=bc(),{zIndex:ee=b.zIndex,sourceX:F,sourceY:I,targetX:L,targetY:te,sourcePosition:R,targetPosition:z}=K((0,y.useCallback)(t=>{let n=t.nodeLookup.get(b.source),r=t.nodeLookup.get(b.target);if(!n||!r)return Bu;let i=Wo({id:e,sourceNode:n,targetNode:r,sourceHandle:b.sourceHandle||null,targetHandle:b.targetHandle||null,connectionMode:t.connectionMode,onError:_}),a=jo({selected:b.selected,zIndex:b.zIndex,sourceNode:n,targetNode:r,elevateOnSelect:t.elevateEdgesOnSelect,zIndexMode:t.zIndexMode});return{...i||Bu,zIndex:a}},[b.source,b.target,b.sourceHandle,b.targetHandle,b.selected,b.zIndex]),hc),B=(0,y.useMemo)(()=>b.markerStart?`url('#${Jo(b.markerStart,m)}')`:void 0,[b.markerStart,m]),V=(0,y.useMemo)(()=>b.markerEnd?`url('#${Jo(b.markerEnd,m)}')`:void 0,[b.markerEnd,m]);if(b.hidden||F===null||I===null||L===null||te===null)return null;let ne=t=>{let{addSelectedEdges:n,unselectNodesAndEdges:r,multiSelectionActive:a}=P.getState();O&&(P.setState({nodesSelectionActive:!1}),b.selected&&a?(r({nodes:[],edges:[b]}),k.current?.blur()):n([e])),i&&i(t,b)},re=a?e=>{a(e,{...b})}:void 0,ie=o?e=>{o(e,{...b})}:void 0,ae=s?e=>{s(e,{...b})}:void 0,oe=c?e=>{c(e,{...b})}:void 0,se=l?e=>{l(e,{...b})}:void 0;return(0,x.jsx)(`svg`,{style:{zIndex:ee},children:(0,x.jsxs)(`g`,{className:S([`react-flow__edge`,`react-flow__edge-${w}`,b.className,g,{selected:b.selected,animated:b.animated,inactive:!O&&!i,updating:A,selectable:O}]),onClick:ne,onDoubleClick:re,onContextMenu:ie,onMouseEnter:ae,onMouseMove:oe,onMouseLeave:se,onKeyDown:E?t=>{if(!v&&ba.includes(t.key)&&O){let{unselectNodesAndEdges:n,addSelectedEdges:r}=P.getState();t.key===`Escape`?(k.current?.blur(),n({edges:[b]})):r([e])}}:void 0,tabIndex:E?0:void 0,role:b.ariaRole??(E?`group`:`img`),"aria-roledescription":`edge`,"data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":b.ariaLabel===null?void 0:b.ariaLabel||`Edge from ${b.source} to ${b.target}`,"aria-describedby":E?`${wc}-${m}`:void 0,ref:k,...b.domAttributes,children:[!M&&(0,x.jsx)(T,{id:e,source:b.source,target:b.target,type:b.type,selected:b.selected,animated:b.animated,selectable:O,deletable:b.deletable??!0,label:b.label,labelStyle:b.labelStyle,labelShowBg:b.labelShowBg,labelBgStyle:b.labelBgStyle,labelBgPadding:b.labelBgPadding,labelBgBorderRadius:b.labelBgBorderRadius,sourceX:F,sourceY:I,targetX:L,targetY:te,sourcePosition:R,targetPosition:z,data:b.data,style:b.style,sourceHandleId:b.sourceHandle,targetHandleId:b.targetHandle,markerStart:B,markerEnd:V,pathOptions:`pathOptions`in b?b.pathOptions:void 0,interactionWidth:b.interactionWidth}),D&&(0,x.jsx)(Z,{edge:b,isReconnectable:D,reconnectRadius:u,onReconnect:d,onReconnectStart:f,onReconnectEnd:p,sourceX:F,sourceY:I,targetX:L,targetY:te,sourcePosition:R,targetPosition:z,setUpdateHover:j,setReconnecting:N})]})})}var Ku=(0,y.memo)(Gu),qu=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function Ju({defaultMarkerColor:e,onlyRenderVisibleElements:t,rfId:n,edgeTypes:r,noPanClassName:i,onReconnect:a,onEdgeContextMenu:o,onEdgeMouseEnter:s,onEdgeMouseMove:c,onEdgeMouseLeave:l,onEdgeClick:u,reconnectRadius:d,onEdgeDoubleClick:f,onReconnectStart:p,onReconnectEnd:m,disableKeyboardA11y:h}){let{edgesFocusable:g,edgesReconnectable:_,elementsSelectable:v,onError:y}=K(qu,hc),b=du(t);return(0,x.jsxs)(`div`,{className:`react-flow__edges`,children:[(0,x.jsx)(vu,{defaultColor:e,rfId:n}),b.map(e=>(0,x.jsx)(Ku,{id:e,edgesFocusable:g,edgesReconnectable:_,elementsSelectable:v,noPanClassName:i,onReconnect:a,onContextMenu:o,onMouseEnter:s,onMouseMove:c,onMouseLeave:l,onClick:u,reconnectRadius:d,onDoubleClick:f,onReconnectStart:p,onReconnectEnd:m,rfId:n,onError:y,edgeTypes:r,disableKeyboardA11y:h},e))]})}Ju.displayName=`EdgeRenderer`;var Yu=(0,y.memo)(Ju),Xu=e=>`translate(${e[0]}px,${e[1]}px) scale(${e[2]})`;function Zu({children:e}){let t=bc(),n=(0,y.useRef)(null),[r]=(0,y.useState)(()=>t.getState().transform);return dl(()=>{let e=null,r=()=>{let r=t.getState().transform;e&&r[0]===e[0]&&r[1]===e[1]&&r[2]===e[2]||(e=r,n.current&&(n.current.style.transform=Xu(r)))};return r(),t.subscribe(r)},[t]),(0,x.jsx)(`div`,{ref:n,className:`react-flow__viewport xyflow__viewport react-flow__container`,style:{transform:Xu(r)},children:e})}function Qu(e){let t=vl(),n=(0,y.useRef)(!1);(0,y.useEffect)(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}var $u=e=>e.panZoom?.syncViewport;function ed(e){let t=K($u),n=bc();return(0,y.useEffect)(()=>{e&&(t?.(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t]),null}function td(e){return e.connection.inProgress?{...e.connection,to:ao(e.connection.to,e.transform)}:{...e.connection}}function nd(e){return e?t=>e(td(t)):td}function rd(e){return K(nd(e),hc)}var id=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function ad({containerStyle:e,style:t,type:n,component:r}){let{nodesConnectable:i,width:a,height:o,isValid:s,inProgress:c}=K(id,hc);return a&&i&&c?(0,x.jsx)(`svg`,{style:e,width:a,height:o,className:`react-flow__connectionline react-flow__container`,children:(0,x.jsx)(`g`,{className:S([`react-flow__connection`,ka(s)]),children:(0,x.jsx)(od,{style:t,type:n,CustomComponent:r,isValid:s})})}):null}var od=({style:e,type:t=Ea.Bezier,CustomComponent:n,isValid:r})=>{let{inProgress:i,from:a,fromNode:o,fromHandle:s,fromPosition:c,to:l,toNode:u,toHandle:d,toPosition:f,pointer:p}=rd();if(!i)return;if(n)return(0,x.jsx)(n,{connectionLineType:t,connectionLineStyle:e,fromNode:o,fromHandle:s,fromX:a.x,fromY:a.y,toX:l.x,toY:l.y,fromPosition:c,toPosition:f,connectionStatus:ka(r),toNode:u,toHandle:d,pointer:p});let m=``,h={sourceX:a.x,sourceY:a.y,sourcePosition:c,targetX:l.x,targetY:l.y,targetPosition:f};switch(t){case Ea.Bezier:[m]=ko(h);break;case Ea.SimpleBezier:[m]=Cu(h);break;case Ea.Step:[m]=Ho({...h,borderRadius:0});break;case Ea.SmoothStep:[m]=Ho(h);break;default:[m]=Io(h)}return(0,x.jsx)(`path`,{d:m,fill:`none`,className:`react-flow__connection-path`,style:e})};od.displayName=`ConnectionLine`;var sd={};function cd(e=sd){(0,y.useRef)(e),bc(),(0,y.useEffect)(()=>{},[e])}function ld(){bc(),(0,y.useRef)(!1),(0,y.useEffect)(()=>{},[])}function ud({nodeTypes:e,edgeTypes:t,onInit:n,onNodeClick:r,onEdgeClick:i,onNodeDoubleClick:a,onEdgeDoubleClick:o,onNodeMouseEnter:s,onNodeMouseMove:c,onNodeMouseLeave:l,onNodeContextMenu:u,onSelectionContextMenu:d,onSelectionStart:f,onSelectionEnd:p,connectionLineType:m,connectionLineStyle:h,connectionLineComponent:g,connectionLineContainerStyle:_,selectionKeyCode:v,selectionOnDrag:y,selectionMode:b,multiSelectionKeyCode:S,panActivationKeyCode:C,zoomActivationKeyCode:w,deleteKeyCode:T,onlyRenderVisibleElements:E,elementsSelectable:D,defaultViewport:O,translateExtent:k,minZoom:A,maxZoom:j,preventScrolling:M,defaultMarkerColor:N,zoomOnScroll:P,zoomOnPinch:ee,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:L,zoomOnDoubleClick:te,panOnDrag:R,autoPanOnSelection:z,onPaneClick:B,onPaneMouseEnter:V,onPaneMouseMove:ne,onPaneMouseLeave:re,onPaneScroll:ie,onPaneContextMenu:ae,paneClickDistance:oe,nodeClickDistance:se,onEdgeContextMenu:ce,onEdgeMouseEnter:le,onEdgeMouseMove:ue,onEdgeMouseLeave:de,reconnectRadius:fe,onReconnect:pe,onReconnectStart:me,onReconnectEnd:he,noDragClassName:ge,noWheelClassName:_e,noPanClassName:ve,disableKeyboardA11y:ye,nodeExtent:be,rfId:xe,viewport:Se,onViewportChange:Ce,nodesDraggable:we}){return cd(e),cd(t),ld(),Qu(n),ed(Se),(0,x.jsx)(eu,{onPaneClick:B,onPaneMouseEnter:V,onPaneMouseMove:ne,onPaneMouseLeave:re,onPaneContextMenu:ae,onPaneScroll:ie,paneClickDistance:oe,deleteKeyCode:T,selectionKeyCode:v,selectionOnDrag:y,selectionMode:b,onSelectionStart:f,onSelectionEnd:p,multiSelectionKeyCode:S,panActivationKeyCode:C,zoomActivationKeyCode:w,elementsSelectable:D,zoomOnScroll:P,zoomOnPinch:ee,zoomOnDoubleClick:te,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:L,panOnDrag:R,autoPanOnSelection:z,defaultViewport:O,translateExtent:k,minZoom:A,maxZoom:j,onSelectionContextMenu:d,preventScrolling:M,noDragClassName:ge,noWheelClassName:_e,noPanClassName:ve,disableKeyboardA11y:ye,onViewportChange:Ce,isControlledViewport:!!Se,children:(0,x.jsxs)(Zu,{children:[(0,x.jsx)(Yu,{edgeTypes:t,onEdgeClick:i,onEdgeDoubleClick:o,onReconnect:pe,onReconnectStart:me,onReconnectEnd:he,onlyRenderVisibleElements:E,onEdgeContextMenu:ce,onEdgeMouseEnter:le,onEdgeMouseMove:ue,onEdgeMouseLeave:de,reconnectRadius:fe,defaultMarkerColor:N,noPanClassName:ve,disableKeyboardA11y:ye,rfId:xe}),(0,x.jsx)(ad,{style:h,type:m,component:g,containerStyle:_}),(0,x.jsx)(`div`,{className:`react-flow__edgelabel-renderer`}),(0,x.jsx)(uu,{nodeTypes:e,onNodeClick:r,onNodeDoubleClick:a,onNodeMouseEnter:s,onNodeMouseMove:c,onNodeMouseLeave:l,onNodeContextMenu:u,nodeClickDistance:se,onlyRenderVisibleElements:E,noPanClassName:ve,noDragClassName:ge,disableKeyboardA11y:ye,nodeExtent:be,rfId:xe,nodesDraggable:we}),(0,x.jsx)(`div`,{className:`react-flow__viewport-portal`})]})})}ud.displayName=`GraphView`;var dd=(0,y.memo)(ud),fd=ro(`React Flow`,`https://reactflow.dev/`),pd=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c=.5,maxZoom:l=2,nodeOrigin:u,nodeExtent:d,zIndexMode:f=`basic`}={})=>{let p=new Map,m=new Map,h=new Map,g=new Map,_=r??t??[],v=n??e??[],y=u??[0,0],b=d??ya;ps(h,g,_);let{nodesInitialized:x}=is(v,p,m,{nodeOrigin:y,nodeExtent:b,zIndexMode:f}),S=[0,0,1];if(o&&i&&a){let{x:e,y:t,zoom:n}=G(Fa(p,{filter:e=>!!((e.width||e.initialWidth)&&(e.height||e.initialHeight))}),i,a,c,l,s?.padding??.1);S=[e,t,n]}return{rfId:`1`,width:i??0,height:a??0,transform:S,nodes:v,nodesInitialized:x,nodeLookup:p,parentLookup:m,edges:_,edgeLookup:g,connectionLookup:h,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:n!==void 0,hasDefaultEdges:r!==void 0,panZoom:null,minZoom:c,maxZoom:l,translateExtent:ya,nodeExtent:b,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:Sa.Strict,domNode:null,paneDragging:!1,noPanClassName:`nopan`,nodeOrigin:y,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:o??!1,fitViewOptions:s,fitViewResolver:null,connection:{...Ta},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:``,autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:fd,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:`react`,debug:!1,ariaLabelConfig:xa,zIndexMode:f,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},md=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c,maxZoom:l,nodeOrigin:u,nodeExtent:d,zIndexMode:f})=>mc((p,m)=>{async function h(){let{nodeLookup:e,panZoom:t,fitViewOptions:n,fitViewResolver:r,width:i,height:a,minZoom:o,maxZoom:s}=m();t&&(await za({nodes:e,width:i,height:a,panZoom:t,minZoom:o,maxZoom:s},n),r?.resolve(!0),p({fitViewResolver:null}))}return{...pd({nodes:e,edges:t,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c,maxZoom:l,nodeOrigin:u,nodeExtent:d,defaultNodes:n,defaultEdges:r,zIndexMode:f}),setNodes:e=>{let{nodeLookup:t,parentLookup:n,nodeOrigin:r,elevateNodesOnSelect:i,fitViewQueued:a,zIndexMode:o,nodesSelectionActive:s}=m(),{nodesInitialized:c,hasSelectedNodes:l}=is(e,t,n,{nodeOrigin:r,nodeExtent:d,elevateNodesOnSelect:i,checkEquality:!0,zIndexMode:o}),u=s&&l;a&&c?(h(),p({nodes:e,nodesInitialized:c,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:u})):p({nodes:e,nodesInitialized:c,nodesSelectionActive:u})},setEdges:e=>{let{connectionLookup:t,edgeLookup:n}=m();ps(t,n,e),p({edges:e})},setDefaultNodesAndEdges:(e,t)=>{if(e){let{setNodes:t}=m();t(e),p({hasDefaultNodes:!0})}if(t){let{setEdges:e}=m();e(t),p({hasDefaultEdges:!0})}},updateNodeInternals:e=>{let{triggerNodeChanges:t,nodeLookup:n,parentLookup:r,domNode:i,nodeOrigin:a,nodeExtent:o,debug:s,fitViewQueued:c,zIndexMode:l}=m(),{changes:u,updatedInternals:d}=us(e,n,r,i,a,o,l);d&&(ts(n,r,{nodeOrigin:a,nodeExtent:o,zIndexMode:l}),c?(h(),p({fitViewQueued:!1,fitViewOptions:void 0})):p({}),u?.length>0&&(s&&console.log(`React Flow: trigger node changes`,u),t?.(u)))},updateNodePositions:(e,t=!1)=>{let n=[],r=[],{nodeLookup:i,triggerNodeChanges:a,connection:o,updateConnection:s,onNodesChangeMiddlewareMap:c}=m();for(let[a,c]of e){let e=i.get(a),l=!!(e?.expandParent&&e?.parentId&&c?.position),u={id:a,type:`position`,position:l?{x:Math.max(0,c.position.x),y:Math.max(0,c.position.y)}:c.position,dragging:t};if(e&&o.inProgress&&o.fromNode.id===e.id){let t=Ko(e,o.fromHandle,U.Left,!0);s({...o,from:t})}l&&e.parentId&&n.push({id:a,parentId:e.parentId,rect:{...c.internals.positionAbsolute,width:c.measured.width??0,height:c.measured.height??0}}),r.push(u)}if(n.length>0){let{parentLookup:e,nodeOrigin:t}=m(),a=ls(n,i,e,t);r.push(...a)}for(let e of c.values())r=e(r);a(r)},triggerNodeChanges:e=>{let{onNodesChange:t,setNodes:n,nodes:r,hasDefaultNodes:i,debug:a}=m();e?.length&&(i&&n(el(e,r)),a&&console.log(`React Flow: trigger node changes`,e),t?.(e))},triggerEdgeChanges:e=>{let{onEdgesChange:t,setEdges:n,edges:r,hasDefaultEdges:i,debug:a}=m();e?.length&&(i&&n(tl(e,r)),a&&console.log(`React Flow: trigger edge changes`,e),t?.(e))},addSelectedNodes:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=m();if(t){i(e.map(e=>nl(e,!0)));return}i(rl(r,new Set([...e]),!0)),a(rl(n))},addSelectedEdges:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=m();if(t){a(e.map(e=>nl(e,!0)));return}a(rl(n,new Set([...e]))),i(rl(r,new Set,!0))},unselectNodesAndEdges:({nodes:e,edges:t}={})=>{let{edges:n,nodes:r,nodeLookup:i,triggerNodeChanges:a,triggerEdgeChanges:o}=m(),s=e||r,c=t||n,l=[];for(let e of s){if(!e.selected)continue;let t=i.get(e.id);t&&(t.selected=!1),l.push(nl(e.id,!1))}let u=[];for(let e of c)e.selected&&u.push(nl(e.id,!1));a(l),o(u)},setMinZoom:e=>{let{panZoom:t,maxZoom:n}=m();t?.setScaleExtent([e,n]),p({minZoom:e})},setMaxZoom:e=>{let{panZoom:t,minZoom:n}=m();t?.setScaleExtent([n,e]),p({maxZoom:e})},setTranslateExtent:e=>{m().panZoom?.setTranslateExtent(e),p({translateExtent:e})},resetSelectedElements:()=>{let{edges:e,nodes:t,triggerNodeChanges:n,triggerEdgeChanges:r,elementsSelectable:i}=m();if(!i)return;let a=t.reduce((e,t)=>t.selected?[...e,nl(t.id,!1)]:e,[]),o=e.reduce((e,t)=>t.selected?[...e,nl(t.id,!1)]:e,[]);n(a),r(o)},setNodeExtent:e=>{let{nodes:t,nodeLookup:n,parentLookup:r,nodeOrigin:i,elevateNodesOnSelect:a,nodeExtent:o,zIndexMode:s}=m();e[0][0]===o[0][0]&&e[0][1]===o[0][1]&&e[1][0]===o[1][0]&&e[1][1]===o[1][1]||(is(t,n,r,{nodeOrigin:i,nodeExtent:e,elevateNodesOnSelect:a,checkEquality:!1,zIndexMode:s}),p({nodeExtent:e}))},panBy:e=>{let{transform:t,width:n,height:r,panZoom:i,translateExtent:a}=m();return ds({delta:e,panZoom:i,transform:t,translateExtent:a,width:n,height:r})},setCenter:async(e,t,n)=>{let{width:r,height:i,maxZoom:a,panZoom:o}=m();if(!o)return!1;let s=n?.zoom===void 0?a:n.zoom;return await o.setViewport({x:r/2-e*s,y:i/2-t*s,zoom:s},{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0},cancelConnection:()=>{p({connection:{...Ta}})},updateConnection:e=>{p({connection:e})},reset:()=>p({...pd()})}},Object.is);function hd({initialNodes:e,initialEdges:t,defaultNodes:n,defaultEdges:r,initialWidth:i,initialHeight:a,initialMinZoom:o,initialMaxZoom:s,initialFitViewOptions:c,fitView:l,nodeOrigin:u,nodeExtent:d,zIndexMode:f,children:p}){let[m]=(0,y.useState)(()=>md({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:l,minZoom:o,maxZoom:s,fitViewOptions:c,nodeOrigin:u,nodeExtent:d,zIndexMode:f}));return(0,x.jsx)(vc,{value:m,children:(0,x.jsx)(hl,{children:(0,x.jsx)(J,{children:p})})})}function gd({children:e,nodes:t,edges:n,defaultNodes:r,defaultEdges:i,width:a,height:o,fitView:s,fitViewOptions:c,minZoom:l,maxZoom:u,nodeOrigin:d,nodeExtent:f,zIndexMode:p}){return(0,y.useContext)(_c)?(0,x.jsx)(x.Fragment,{children:e}):(0,x.jsx)(hd,{initialNodes:t,initialEdges:n,defaultNodes:r,defaultEdges:i,initialWidth:a,initialHeight:o,fitView:s,initialFitViewOptions:c,initialMinZoom:l,initialMaxZoom:u,nodeOrigin:d,nodeExtent:f,zIndexMode:p,children:e})}var _d={width:`100%`,height:`100%`,overflow:`hidden`,position:`relative`,zIndex:0};function vd({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:i,nodeTypes:a,edgeTypes:o,onNodeClick:s,onEdgeClick:c,onInit:l,onMove:u,onMoveStart:d,onMoveEnd:f,onConnect:p,onConnectStart:m,onConnectEnd:h,onClickConnectStart:g,onClickConnectEnd:_,onNodeMouseEnter:v,onNodeMouseMove:b,onNodeMouseLeave:C,onNodeContextMenu:w,onNodeDoubleClick:T,onNodeDragStart:E,onNodeDrag:D,onNodeDragStop:O,onNodesDelete:k,onEdgesDelete:A,onDelete:j,onSelectionChange:M,onSelectionDragStart:N,onSelectionDrag:P,onSelectionDragStop:ee,onSelectionContextMenu:F,onSelectionStart:I,onSelectionEnd:L,onBeforeDelete:te,connectionMode:R,connectionLineType:z=Ea.Bezier,connectionLineStyle:B,connectionLineComponent:V,connectionLineContainerStyle:ne,deleteKeyCode:re=`Backspace`,selectionKeyCode:ie=`Shift`,selectionOnDrag:ae=!1,selectionMode:oe=wa.Full,panActivationKeyCode:se=`Space`,multiSelectionKeyCode:ce=lo()?`Meta`:`Control`,zoomActivationKeyCode:le=lo()?`Meta`:`Control`,snapToGrid:ue,snapGrid:de,onlyRenderVisibleElements:fe=!1,selectNodesOnDrag:pe,nodesDraggable:me,autoPanOnNodeFocus:he,nodesConnectable:ge,nodesFocusable:_e,nodeOrigin:ve=zc,edgesFocusable:ye,edgesReconnectable:be,elementsSelectable:xe=!0,defaultViewport:Se=Bc,minZoom:Ce=.5,maxZoom:we=2,translateExtent:Te=ya,preventScrolling:Ee=!0,nodeExtent:De,defaultMarkerColor:Oe=`#b1b1b7`,zoomOnScroll:ke=!0,zoomOnPinch:Ae=!0,panOnScroll:je=!1,panOnScrollSpeed:Me=.5,panOnScrollMode:Ne=Ca.Free,zoomOnDoubleClick:Pe=!0,panOnDrag:Fe=!0,onPaneClick:Ie,onPaneMouseEnter:Le,onPaneMouseMove:Re,onPaneMouseLeave:ze,onPaneScroll:Be,onPaneContextMenu:Ve,paneClickDistance:He=1,nodeClickDistance:Ue=0,children:We,onReconnect:Ge,onReconnectStart:Ke,onReconnectEnd:qe,onEdgeContextMenu:Je,onEdgeDoubleClick:Ye,onEdgeMouseEnter:Xe,onEdgeMouseMove:Ze,onEdgeMouseLeave:Qe,reconnectRadius:$e=10,onNodesChange:et,onEdgesChange:tt,noDragClassName:nt=`nodrag`,noWheelClassName:rt=`nowheel`,noPanClassName:it=`nopan`,fitView:at,fitViewOptions:ot,connectOnClick:st,attributionPosition:ct,proOptions:lt,defaultEdgeOptions:ut,elevateNodesOnSelect:dt=!0,elevateEdgesOnSelect:ft=!1,disableKeyboardA11y:pt=!1,autoPanOnConnect:mt,autoPanOnNodeDrag:ht,autoPanOnSelection:gt=!0,autoPanSpeed:_t,connectionRadius:vt,isValidConnection:yt,onError:bt,style:xt,id:St,nodeDragThreshold:Ct,connectionDragThreshold:wt,viewport:Tt,onViewportChange:Et,width:Dt,height:Ot,colorMode:kt=`light`,debug:At,onScroll:jt,ariaLabelConfig:Mt,zIndexMode:Nt=`basic`,...Pt},Ft){let It=St||`1`,Lt=Kc(kt),Rt=(0,y.useCallback)(e=>{e.currentTarget.scrollTo({top:0,left:0,behavior:`instant`}),jt?.(e)},[jt]);return(0,x.jsx)(`div`,{"data-testid":`rf__wrapper`,...Pt,onScroll:Rt,style:{...xt,..._d},ref:Ft,className:S([`react-flow`,i,Lt]),id:St,role:`application`,children:(0,x.jsxs)(gd,{nodes:e,edges:t,width:Dt,height:Ot,fitView:at,fitViewOptions:ot,minZoom:Ce,maxZoom:we,nodeOrigin:ve,nodeExtent:De,zIndexMode:Nt,children:[(0,x.jsx)(Wc,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:p,onConnectStart:m,onConnectEnd:h,onClickConnectStart:g,onClickConnectEnd:_,nodesDraggable:me,autoPanOnNodeFocus:he,nodesConnectable:ge,nodesFocusable:_e,edgesFocusable:ye,edgesReconnectable:be,elementsSelectable:xe,elevateNodesOnSelect:dt,elevateEdgesOnSelect:ft,minZoom:Ce,maxZoom:we,nodeExtent:De,onNodesChange:et,onEdgesChange:tt,snapToGrid:ue,snapGrid:de,connectionMode:R,translateExtent:Te,connectOnClick:st,defaultEdgeOptions:ut,fitView:at,fitViewOptions:ot,onNodesDelete:k,onEdgesDelete:A,onDelete:j,onNodeDragStart:E,onNodeDrag:D,onNodeDragStop:O,onSelectionDrag:P,onSelectionDragStart:N,onSelectionDragStop:ee,onMove:u,onMoveStart:d,onMoveEnd:f,noPanClassName:it,nodeOrigin:ve,rfId:It,autoPanOnConnect:mt,autoPanOnNodeDrag:ht,autoPanSpeed:_t,onError:bt,connectionRadius:vt,isValidConnection:yt,selectNodesOnDrag:pe,nodeDragThreshold:Ct,connectionDragThreshold:wt,onBeforeDelete:te,debug:At,ariaLabelConfig:Mt,zIndexMode:Nt}),(0,x.jsx)(dd,{onInit:l,onNodeClick:s,onEdgeClick:c,onNodeMouseEnter:v,onNodeMouseMove:b,onNodeMouseLeave:C,onNodeContextMenu:w,onNodeDoubleClick:T,nodeTypes:a,edgeTypes:o,connectionLineType:z,connectionLineStyle:B,connectionLineComponent:V,connectionLineContainerStyle:ne,selectionKeyCode:ie,selectionOnDrag:ae,selectionMode:oe,deleteKeyCode:re,multiSelectionKeyCode:ce,panActivationKeyCode:se,zoomActivationKeyCode:le,onlyRenderVisibleElements:fe,defaultViewport:Se,translateExtent:Te,minZoom:Ce,maxZoom:we,preventScrolling:Ee,zoomOnScroll:ke,zoomOnPinch:Ae,zoomOnDoubleClick:Pe,panOnScroll:je,panOnScrollSpeed:Me,panOnScrollMode:Ne,panOnDrag:Fe,autoPanOnSelection:gt,onPaneClick:Ie,onPaneMouseEnter:Le,onPaneMouseMove:Re,onPaneMouseLeave:ze,onPaneScroll:Be,onPaneContextMenu:Ve,paneClickDistance:He,nodeClickDistance:Ue,onSelectionContextMenu:F,onSelectionStart:I,onSelectionEnd:L,onReconnect:Ge,onReconnectStart:Ke,onReconnectEnd:qe,onEdgeContextMenu:Je,onEdgeDoubleClick:Ye,onEdgeMouseEnter:Xe,onEdgeMouseMove:Ze,onEdgeMouseLeave:Qe,reconnectRadius:$e,defaultMarkerColor:Oe,noDragClassName:nt,noWheelClassName:rt,noPanClassName:it,rfId:It,disableKeyboardA11y:pt,nodeExtent:De,viewport:Tt,onViewportChange:Et,nodesDraggable:me}),(0,x.jsx)(Rc,{onSelectionChange:M}),We,(0,x.jsx)(Mc,{proOptions:lt,position:ct}),(0,x.jsx)(kc,{rfId:It,disableKeyboardA11y:pt})]})})}var yd=ul(vd),Q=e=>e.domNode?.querySelector(`.react-flow__edgelabel-renderer`);function bd({children:e}){let t=K(Q);return t?(0,gc.createPortal)(e,t):null}function xd(e){let[t,n]=(0,y.useState)(e);return[t,n,(0,y.useCallback)(e=>n(t=>el(e,t)),[])]}function Sd(e){let[t,n]=(0,y.useState)(e);return[t,n,(0,y.useCallback)(e=>n(t=>tl(e,t)),[])]}va.error014();function Cd(e){return K((0,y.useCallback)(t=>t.nodeLookup.get(e),[e]),hc)}function wd({dimensions:e,lineWidth:t,variant:n,className:r}){return(0,x.jsx)(`path`,{strokeWidth:t,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:S([`react-flow__background-pattern`,n,r])})}function Td({radius:e,className:t}){return(0,x.jsx)(`circle`,{cx:e,cy:e,r:e,className:S([`react-flow__background-pattern`,`dots`,t])})}var Ed;(function(e){e.Lines=`lines`,e.Dots=`dots`,e.Cross=`cross`})(Ed||={});var Dd={[Ed.Dots]:1,[Ed.Lines]:1,[Ed.Cross]:6},Od=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function kd({id:e,variant:t=Ed.Dots,gap:n=20,size:r,lineWidth:i=1,offset:a=0,color:o,bgColor:s,style:c,className:l,patternClassName:u}){let d=(0,y.useRef)(null),{transform:f,patternId:p}=K(Od,hc),m=r||Dd[t],h=t===Ed.Dots,g=t===Ed.Cross,_=Array.isArray(n)?n:[n,n],v=[_[0]*f[2]||1,_[1]*f[2]||1],b=m*f[2],C=Array.isArray(a)?a:[a,a],w=g?[b,b]:v,T=[C[0]*f[2]||1+w[0]/2,C[1]*f[2]||1+w[1]/2],E=`${p}${e||``}`;return(0,x.jsxs)(`svg`,{className:S([`react-flow__background`,l]),style:{...c,...Cl,"--xy-background-color-props":s,"--xy-background-pattern-color-props":o},ref:d,"data-testid":`rf__background`,children:[(0,x.jsx)(`pattern`,{id:E,x:f[0]%v[0],y:f[1]%v[1],width:v[0],height:v[1],patternUnits:`userSpaceOnUse`,patternTransform:`translate(-${T[0]},-${T[1]})`,children:h?(0,x.jsx)(Td,{radius:b/2,className:u}):(0,x.jsx)(wd,{dimensions:w,lineWidth:i,variant:t,className:u})}),(0,x.jsx)(`rect`,{x:`0`,y:`0`,width:`100%`,height:`100%`,fill:`url(#${E})`})]})}kd.displayName=`Background`;var Ad=(0,y.memo)(kd);function jd(){return(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 32`,children:(0,x.jsx)(`path`,{d:`M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z`})})}function Md(){return(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 5`,children:(0,x.jsx)(`path`,{d:`M0 0h32v4.2H0z`})})}function Nd(){return(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 30`,children:(0,x.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 Pd(){return(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 25 32`,children:(0,x.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 Fd(){return(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 25 32`,children:(0,x.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 Id({children:e,className:t,...n}){return(0,x.jsx)(`button`,{type:`button`,className:S([`react-flow__controls-button`,t]),...n,children:e})}var Ld=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function Rd({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:i,onZoomIn:a,onZoomOut:o,onFitView:s,onInteractiveChange:c,className:l,children:u,position:d=`bottom-left`,orientation:f=`vertical`,"aria-label":p}){let m=bc(),{isInteractive:h,minZoomReached:g,maxZoomReached:_,ariaLabelConfig:v}=K(Ld,hc),{zoomIn:y,zoomOut:b,fitView:C}=vl();return(0,x.jsxs)(Ac,{className:S([`react-flow__controls`,f===`horizontal`?`horizontal`:`vertical`,l]),position:d,style:e,"data-testid":`rf__controls`,"aria-label":p??v[`controls.ariaLabel`],children:[t&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(Id,{onClick:()=>{y(),a?.()},className:`react-flow__controls-zoomin`,title:v[`controls.zoomIn.ariaLabel`],"aria-label":v[`controls.zoomIn.ariaLabel`],disabled:_,children:(0,x.jsx)(jd,{})}),(0,x.jsx)(Id,{onClick:()=>{b(),o?.()},className:`react-flow__controls-zoomout`,title:v[`controls.zoomOut.ariaLabel`],"aria-label":v[`controls.zoomOut.ariaLabel`],disabled:g,children:(0,x.jsx)(Md,{})})]}),n&&(0,x.jsx)(Id,{className:`react-flow__controls-fitview`,onClick:()=>{C(i),s?.()},title:v[`controls.fitView.ariaLabel`],"aria-label":v[`controls.fitView.ariaLabel`],children:(0,x.jsx)(Nd,{})}),r&&(0,x.jsx)(Id,{className:`react-flow__controls-interactive`,onClick:()=>{m.setState({nodesDraggable:!h,nodesConnectable:!h,elementsSelectable:!h}),c?.(!h)},title:v[`controls.interactive.ariaLabel`],"aria-label":v[`controls.interactive.ariaLabel`],children:h?(0,x.jsx)(Fd,{}):(0,x.jsx)(Pd,{})}),u]})}Rd.displayName=`Controls`;var zd=(0,y.memo)(Rd);function Bd({id:e,x:t,y:n,width:r,height:i,style:a,color:o,strokeColor:s,strokeWidth:c,className:l,borderRadius:u,shapeRendering:d,selected:f,onClick:p}){let{background:m,backgroundColor:h}=a||{},g=o||m||h;return(0,x.jsx)(`rect`,{className:S([`react-flow__minimap-node`,{selected:f},l]),x:t,y:n,rx:u,ry:u,width:r,height:i,style:{fill:g,stroke:s,strokeWidth:c},shapeRendering:d,onClick:p?t=>p(t,e):void 0})}var Vd=(0,y.memo)(Bd),Hd=e=>e.nodes.map(e=>e.id),Ud=e=>e instanceof Function?e:()=>e;function Wd({nodeStrokeColor:e,nodeColor:t,nodeClassName:n=``,nodeBorderRadius:r=5,nodeStrokeWidth:i,nodeComponent:a=Vd,onClick:o}){let s=K(Hd,hc),c=Ud(t),l=Ud(e),u=Ud(n),d=typeof window>`u`||window.chrome?`crispEdges`:`geometricPrecision`;return(0,x.jsx)(x.Fragment,{children:s.map(e=>(0,x.jsx)(Kd,{id:e,nodeColorFunc:c,nodeStrokeColorFunc:l,nodeClassNameFunc:u,nodeBorderRadius:r,nodeStrokeWidth:i,NodeComponent:a,onClick:o,shapeRendering:d},e))})}function Gd({id:e,nodeColorFunc:t,nodeStrokeColorFunc:n,nodeClassNameFunc:r,nodeBorderRadius:i,nodeStrokeWidth:a,shapeRendering:o,NodeComponent:s,onClick:c}){let{node:l,x:u,y:d,width:f,height:p}=K(t=>{let n=t.nodeLookup.get(e);if(!n)return{node:void 0,x:0,y:0,width:0,height:0};let r=n.internals.userNode,{x:i,y:a}=n.internals.positionAbsolute,{width:o,height:s}=fo(r);return{node:r,x:i,y:a,width:o,height:s}},hc);return!l||l.hidden||!po(l)?null:(0,x.jsx)(s,{x:u,y:d,width:f,height:p,style:l.style,selected:!!l.selected,className:r(l),color:t(l),borderRadius:i,strokeColor:n(l),strokeWidth:a,shapeRendering:o,onClick:c,id:l.id})}var Kd=(0,y.memo)(Gd),qd=(0,y.memo)(Wd),Jd=200,Yd=150,Xd=e=>!e.hidden,Zd=e=>{let 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?Qa(Fa(e.nodeLookup,{filter:Xd}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},Qd=(e,t)=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,$d=(e,t)=>Qd(e.viewBB,t.viewBB)&&Qd(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,ef=`react-flow__minimap-desc`;function tf({style:e,className:t,nodeStrokeColor:n,nodeColor:r,nodeClassName:i=``,nodeBorderRadius:a=5,nodeStrokeWidth:o,nodeComponent:s,bgColor:c,maskColor:l,maskStrokeColor:u,maskStrokeWidth:d,position:f=`bottom-right`,onClick:p,onNodeClick:m,pannable:h=!1,zoomable:g=!1,ariaLabel:_,inversePan:v,zoomStep:b=1,offsetScale:C=5}){let w=bc(),T=(0,y.useRef)(null),{boundingRect:E,viewBB:D,rfId:O,panZoom:k,translateExtent:A,flowWidth:j,flowHeight:M,ariaLabelConfig:N}=K(Zd,$d),P=e?.width??Jd,ee=e?.height??Yd,F=E.width/P,I=E.height/ee,L=Math.max(F,I),te=L*P,R=L*ee,z=C*L,B=E.x-(te-E.width)/2-z,V=E.y-(R-E.height)/2-z,ne=te+z*2,re=R+z*2,ie=`${ef}-${O}`,ae=(0,y.useRef)(0),oe=(0,y.useRef)();ae.current=L,(0,y.useEffect)(()=>{if(T.current&&k)return oe.current=As({domNode:T.current,panZoom:k,getTransform:()=>w.getState().transform,getViewScale:()=>ae.current}),()=>{oe.current?.destroy()}},[k]),(0,y.useEffect)(()=>{oe.current?.update({translateExtent:A,width:j,height:M,inversePan:v,pannable:h,zoomStep:b,zoomable:g})},[h,g,v,b,A,j,M]);let se=p?e=>{let[t,n]=oe.current?.pointer(e)||[0,0];p(e,{x:t,y:n})}:void 0,ce=m?(0,y.useCallback)((e,t)=>{let n=w.getState().nodeLookup.get(t).internals.userNode;m(e,n)},[]):void 0,le=_??N[`minimap.ariaLabel`];return(0,x.jsx)(Ac,{position:f,style:{...e,"--xy-minimap-background-color-props":typeof c==`string`?c:void 0,"--xy-minimap-mask-background-color-props":typeof l==`string`?l:void 0,"--xy-minimap-mask-stroke-color-props":typeof u==`string`?u:void 0,"--xy-minimap-mask-stroke-width-props":typeof d==`number`?d*L:void 0,"--xy-minimap-node-background-color-props":typeof r==`string`?r:void 0,"--xy-minimap-node-stroke-color-props":typeof n==`string`?n:void 0,"--xy-minimap-node-stroke-width-props":typeof o==`number`?o:void 0},className:S([`react-flow__minimap`,t]),"data-testid":`rf__minimap`,children:(0,x.jsxs)(`svg`,{width:P,height:ee,viewBox:`${B} ${V} ${ne} ${re}`,className:`react-flow__minimap-svg`,role:`img`,"aria-labelledby":ie,ref:T,onClick:se,children:[le&&(0,x.jsx)(`title`,{id:ie,children:le}),(0,x.jsx)(qd,{onClick:ce,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:a,nodeClassName:i,nodeStrokeWidth:o,nodeComponent:s}),(0,x.jsx)(`path`,{className:`react-flow__minimap-mask`,d:`M${B-z},${V-z}h${ne+z*2}v${re+z*2}h${-ne-z*2}z + M${D.x},${D.y}h${D.width}v${D.height}h${-D.width}z`,fillRule:`evenodd`,pointerEvents:`none`})]})})}tf.displayName=`MiniMap`;var nf=(0,y.memo)(tf),rf=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,af={[Gs.Line]:`right`,[Gs.Handle]:`bottom-right`};function of({nodeId:e,position:t,variant:n=Gs.Handle,className:r,style:i=void 0,children:a,color:o,minWidth:s=10,minHeight:c=10,maxWidth:l=Number.MAX_VALUE,maxHeight:u=Number.MAX_VALUE,keepAspectRatio:d=!1,resizeDirection:f,autoScale:p=!0,shouldResize:m,onResizeStart:h,onResize:g,onResizeEnd:_}){let v=Ll(),b=typeof e==`string`?e:v,C=bc(),w=(0,y.useRef)(null),T=n===Gs.Handle,E=K((0,y.useCallback)(rf(T&&p),[T,p]),hc),D=(0,y.useRef)(null),O=t??af[n];return(0,y.useEffect)(()=>{if(!(!w.current||!b))return D.current||=nc({domNode:w.current,nodeId:b,getStoreItems:()=>{let{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:r,nodeOrigin:i,domNode:a}=C.getState();return{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:r,nodeOrigin:i,paneDomNode:a}},onChange:(e,t)=>{let{triggerNodeChanges:n,nodeLookup:r,parentLookup:i,nodeOrigin:a}=C.getState(),o=[],s={x:e.x,y:e.y},c=r.get(b);if(c&&c.expandParent&&c.parentId){let t=c.origin??a,n=e.width??c.measured.width??0,l=e.height??c.measured.height??0,u=ls([{id:c.id,parentId:c.parentId,rect:{width:n,height:l,...mo({x:e.x??c.position.x,y:e.y??c.position.y},{width:n,height:l},c.parentId,r,t)}}],r,i,a);o.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(s.x!==void 0&&s.y!==void 0){let e={id:b,type:`position`,position:{...s}};o.push(e)}if(e.width!==void 0&&e.height!==void 0){let t={id:b,type:`dimensions`,resizing:!0,setAttributes:f?f===`horizontal`?`width`:`height`:!0,dimensions:{width:e.width,height:e.height}};o.push(t)}for(let e of t){let t={...e,type:`position`};o.push(t)}n(o)},onEnd:({width:e,height:t})=>{let n={id:b,type:`dimensions`,resizing:!1,dimensions:{width:e,height:t}};C.getState().triggerNodeChanges([n])}}),D.current.update({controlPosition:O,boundaries:{minWidth:s,minHeight:c,maxWidth:l,maxHeight:u},keepAspectRatio:d,resizeDirection:f,onResizeStart:h,onResize:g,onResizeEnd:_,shouldResize:m}),()=>{D.current?.destroy()}},[O,s,c,l,u,d,h,g,_,m]),(0,x.jsx)(`div`,{className:S([`react-flow__resize-control`,`nodrag`,...O.split(`-`),n,r]),ref:w,style:{...i,scale:E,...o&&{[T?`backgroundColor`:`borderColor`]:o}},children:a})}(0,y.memo)(of);var $=e=>typeof e==`string`,sf=()=>{let e,t,n=new Promise((n,r)=>{e=n,t=r});return n.resolve=e,n.reject=t,n},cf=e=>e==null?``:String(e),lf=(e,t,n)=>{e.forEach(e=>{t[e]&&(n[e]=t[e])})},uf=/###/g,df=e=>e&&e.includes(`###`)?e.replace(uf,`.`):e,ff=e=>!e||$(e),pf=(e,t,n)=>{let r=$(t)?t.split(`.`):t,i=0;for(;i{let{obj:r,k:i}=pf(e,t,Object);if(r!==void 0||t.length===1){r[i]=n;return}let a=t[t.length-1],o=t.slice(0,t.length-1),s=pf(e,o,Object);for(;s.obj===void 0&&o.length;)a=`${o[o.length-1]}.${a}`,o=o.slice(0,o.length-1),s=pf(e,o,Object),s?.obj&&s.obj[`${s.k}.${a}`]!==void 0&&(s.obj=void 0);s.obj[`${s.k}.${a}`]=n},hf=(e,t,n,r)=>{let{obj:i,k:a}=pf(e,t,Object);i[a]=i[a]||[],i[a].push(n)},gf=(e,t)=>{let{obj:n,k:r}=pf(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,r))return n[r]},_f=(e,t,n)=>{let r=gf(e,n);return r===void 0?gf(t,n):r},vf=(e,t,n)=>{for(let r in t)r!==`__proto__`&&r!==`constructor`&&(Object.prototype.hasOwnProperty.call(e,r)?$(e[r])||e[r]instanceof String||$(t[r])||t[r]instanceof String?n&&(e[r]=t[r]):vf(e[r],t[r],n):e[r]=t[r]);return e},yf=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,`\\$&`),bf={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`,"/":`/`},xf=e=>$(e)?e.replace(/[&<>"'\/]/g,e=>bf[e]):e,Sf=class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){let t=this.regExpMap.get(e);if(t!==void 0)return t;let n=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,n),this.regExpQueue.push(e),n}},Cf=[` `,`,`,`?`,`!`,`;`],wf=new Sf(20),Tf=(e,t,n)=>{t||=``,n||=``;let r=Cf.filter(e=>!t.includes(e)&&!n.includes(e));if(r.length===0)return!0;let i=wf.getRegExp(`(${r.map(e=>e===`?`?`\\?`:e).join(`|`)})`),a=!i.test(e);if(!a){let t=e.indexOf(n);t>0&&!i.test(e.substring(0,t))&&(a=!0)}return a},Ef=(e,t,n=`.`)=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;let r=t.split(n),i=e;for(let e=0;ee?.replace(/_/g,`-`),Of={type:`logger`,log(e){this.output(`log`,e)},warn(e){this.output(`warn`,e)},error(e){this.output(`error`,e)},output(e,t){console?.[e]?.apply?.(console,t)}},kf=new class e{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||`i18next:`,this.logger=e||Of,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,`log`,``,!0)}warn(...e){return this.forward(e,`warn`,``,!0)}error(...e){return this.forward(e,`error`,``)}deprecate(...e){return this.forward(e,`warn`,`WARNING DEPRECATED: `,!0)}forward(e,t,n,r){return r&&!this.debug?null:(e=e.map(e=>$(e)?e.replace(/[\r\n\x00-\x1F\x7F]/g,` `):e),$(e[0])&&(e[0]=`${n}${this.prefix} ${e[0]}`),this.logger[t](e))}create(t){return new e(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t||=this.options,t.prefix=t.prefix||this.prefix,new e(this.logger,t)}},Af=class{constructor(){this.observers={}}on(e,t){return e.split(` `).forEach(e=>{this.observers[e]||(this.observers[e]=new Map);let n=this.observers[e].get(t)||0;this.observers[e].set(t,n+1)}),this}off(e,t){if(this.observers[e]){if(!t){delete this.observers[e];return}this.observers[e].delete(t)}}once(e,t){let n=(...r)=>{t(...r),this.off(e,n)};return this.on(e,n),this}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,n])=>{for(let r=0;r{for(let i=0;i-1&&this.options.ns.splice(t,1)}getResource(e,t,n,r={}){let i=r.keySeparator===void 0?this.options.keySeparator:r.keySeparator,a=r.ignoreJSONStructure===void 0?this.options.ignoreJSONStructure:r.ignoreJSONStructure,o;e.includes(`.`)?o=e.split(`.`):(o=[e,t],n&&(Array.isArray(n)?o.push(...n):$(n)&&i?o.push(...n.split(i)):o.push(n)));let s=gf(this.data,o);return!s&&!t&&!n&&e.includes(`.`)&&(e=o[0],t=o[1],n=o.slice(2).join(`.`)),s||!a||!$(n)?s:Ef(this.data?.[e]?.[t],n,i)}addResource(e,t,n,r,i={silent:!1}){let a=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,o=[e,t];n&&(o=o.concat(a?n.split(a):n)),e.includes(`.`)&&(o=e.split(`.`),r=t,t=o[1]),this.addNamespaces(t),mf(this.data,o,r),i.silent||this.emit(`added`,e,t,n,r)}addResources(e,t,n,r={silent:!1}){for(let r in n)($(n[r])||Array.isArray(n[r]))&&this.addResource(e,t,r,n[r],{silent:!0});r.silent||this.emit(`added`,e,t,n)}addResourceBundle(e,t,n,r,i,a={silent:!1,skipCopy:!1}){let o=[e,t];e.includes(`.`)&&(o=e.split(`.`),r=n,n=t,t=o[1]),this.addNamespaces(t);let s=gf(this.data,o)||{};a.skipCopy||(n=JSON.parse(JSON.stringify(n))),r?vf(s,n,i):s={...s,...n},mf(this.data,o,s),a.silent||this.emit(`added`,e,t,n)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit(`removed`,e,t)}hasResourceBundle(e,t){return this.getResource(e,t)!==void 0}getResourceBundle(e,t){return t||=this.options.defaultNS,this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){let t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}},Mf={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(e=>{t=this.processors[e]?.process(t,n,r,i)??t}),t}},Nf=Symbol(`i18next/PATH_KEY`);function Pf(){let e=[],t=Object.create(null),n;return t.get=(r,i)=>(n?.revoke?.(),i===Nf?e:(e.push(i),n=Proxy.revocable(r,t),n.proxy)),Proxy.revocable(Object.create(null),t).proxy}function Ff(e,t){let{[Nf]:n}=e(Pf()),r=t?.keySeparator??`.`,i=t?.nsSeparator??`:`,a=t?.enableSelector===`strict`;if(n.length>1&&i){let e=t?.ns,o=a?Array.isArray(e)?e:e?[e]:null:Array.isArray(e)?e:null;if(o&&(a?o:o.length>1?o.slice(1):[]).includes(n[0]))return`${n[0]}${i}${n.slice(1).join(r)}`}return n.join(r)}var If=e=>!$(e)&&typeof e!=`boolean`&&typeof e!=`number`,Lf=class e extends Af{constructor(e,t={}){super(),lf([`resourceStore`,`languageUtils`,`pluralResolver`,`interpolator`,`backendConnector`,`i18nFormat`,`utils`],e,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.logger=kf.create(`translator`),this.checkedLoadedFor={}}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){let n={...t};if(e==null)return!1;let r=this.resolve(e,n);if(r?.res===void 0)return!1;let i=If(r.res);return!(n.returnObjects===!1&&i)}extractFromKey(e,t){let n=t.nsSeparator===void 0?this.options.nsSeparator:t.nsSeparator;n===void 0&&(n=`:`);let r=t.keySeparator===void 0?this.options.keySeparator:t.keySeparator,i=t.ns||this.options.defaultNS||[],a=n&&e.includes(n),o=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!Tf(e,n,r);if(a&&!o){let t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:$(i)?[i]:i};let a=e.split(n);(n!==r||n===r&&this.options.ns.includes(a[0]))&&(i=a.shift()),e=a.join(r)}return{key:e,namespaces:$(i)?[i]:i}}translate(t,n,r){let i=typeof n==`object`?{...n}:n;if(typeof i!=`object`&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),typeof i==`object`&&(i={...i}),i||={},t==null)return``;typeof t==`function`&&(t=Ff(t,{...this.options,...i})),Array.isArray(t)||(t=[String(t)]),t=t.map(e=>typeof e==`function`?Ff(e,{...this.options,...i}):String(e));let a=i.returnDetails===void 0?this.options.returnDetails:i.returnDetails,o=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,{key:s,namespaces:c}=this.extractFromKey(t[t.length-1],i),l=c[c.length-1],u=i.nsSeparator===void 0?this.options.nsSeparator:i.nsSeparator;u===void 0&&(u=`:`);let d=i.lng||this.language,f=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d?.toLowerCase()===`cimode`)return f?a?{res:`${l}${u}${s}`,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:`${l}${u}${s}`:a?{res:s,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:s;let p=this.resolve(t,i),m=p?.res,h=p?.usedKey||s,g=p?.exactUsedKey||s,_=[`[object Number]`,`[object Function]`,`[object RegExp]`],v=i.joinArrays===void 0?this.options.joinArrays:i.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,b=i.count!==void 0&&!$(i.count),x=e.hasDefaultValue(i),S=b?this.pluralResolver.getSuffix(d,i.count,i):``,C=i.ordinal&&b?this.pluralResolver.getSuffix(d,i.count,{ordinal:!1}):``,w=b&&!i.ordinal&&i.count===0,T=w&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${S}`]||i[`defaultValue${C}`]||i.defaultValue,E=m;y&&!m&&x&&(E=T);let D=If(E),O=Object.prototype.toString.apply(E);if(y&&E&&D&&!_.includes(O)&&!($(v)&&Array.isArray(E))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn(`accessing an object - but returnObjects options is not enabled!`);let e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,E,{...i,ns:c}):`key '${s} (${this.language})' returned an object instead of string.`;return a?(p.res=e,p.usedParams=this.getUsedParamsDetails(i),p):e}if(o){let e=Array.isArray(E),t=e?[]:{},n=e?g:h;for(let e in E)if(Object.prototype.hasOwnProperty.call(E,e)){let r=`${n}${o}${e}`;x&&!m?t[e]=this.translate(r,{...i,defaultValue:If(T)?T[e]:void 0,joinArrays:!1,ns:c}):t[e]=this.translate(r,{...i,joinArrays:!1,ns:c}),t[e]===r&&(t[e]=E[e])}m=t}}else if(y&&$(v)&&Array.isArray(m))m=m.join(v),m&&=this.extendTranslation(m,t,i,r);else{let e=!1,n=!1;!this.isValidLookup(m)&&x&&(e=!0,m=T),this.isValidLookup(m)||(n=!0,m=s);let a=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:m,c=x&&T!==m&&this.options.updateMissing;if(n||e||c){if(this.logger.log(c?`updateKey`:`missingKey`,d,l,b&&!c?`${s}${this.pluralResolver.getSuffix(d,i.count,i)}`:s,c?T:m),o){let e=this.resolve(s,{...i,keySeparator:!1});e&&e.res&&this.logger.warn(`Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.`)}let e=[],t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo===`fallback`&&t&&t[0])for(let n=0;n{let r=x&&n!==m?n:a;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,r,c,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,l,t,r,c,i),this.emit(`missingKey`,e,l,t,m)};this.options.saveMissing&&(this.options.saveMissingPlurals&&b?e.forEach(e=>{let t=this.pluralResolver.getSuffixes(e,i);w&&i[`defaultValue${this.options.pluralSeparator}zero`]&&!t.includes(`${this.options.pluralSeparator}zero`)&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{n([e],s+t,i[`defaultValue${t}`]||T)})}):n(e,s,T))}m=this.extendTranslation(m,t,i,p,r),n&&m===s&&this.options.appendNamespaceToMissingKey&&(m=`${l}${u}${s}`),(n||e)&&this.options.parseMissingKeyHandler&&(m=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${u}${s}`:s,e?m:void 0,i))}return a?(p.res=m,p.usedParams=this.getUsedParamsDetails(i),p):m}extendTranslation(e,t,n,r,i){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...n},n.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init({...n,interpolation:{...this.options.interpolation,...n.interpolation}});let a=$(e)&&(n?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:n.interpolation.skipOnVariables),o;if(a){let t=e.match(this.interpolator.nestingRegexp);o=t&&t.length}let s=n.replace&&!$(n.replace)?n.replace:n;if(this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),e=this.interpolator.interpolate(e,s,n.lng||this.language||r.usedLng,n),a){let t=e.match(this.interpolator.nestingRegexp),r=t&&t.length;oi?.[0]===e[0]&&!n.context?(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null):this.translate(...e,t),n)),n.interpolation&&this.interpolator.reset()}let a=n.postProcess||this.options.postProcess,o=$(a)?[a]:a;return e!=null&&o?.length&&n.applyPostProcessor!==!1&&(e=Mf.handle(o,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(n)},...n}:n,this)),e}resolve(e,t={}){let n,r,i,a,o;return $(e)&&(e=[e]),Array.isArray(e)&&(e=e.map(e=>typeof e==`function`?Ff(e,{...this.options,...t}):e)),e.forEach(e=>{if(this.isValidLookup(n))return;let s=this.extractFromKey(e,t),c=s.key;r=c;let l=s.namespaces;this.options.fallbackNS&&(l=l.concat(this.options.fallbackNS));let u=t.count!==void 0&&!$(t.count),d=u&&!t.ordinal&&t.count===0,f=t.context!==void 0&&($(t.context)||typeof t.context==`number`)&&t.context!==``,p=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);l.forEach(e=>{this.isValidLookup(n)||(o=e,!this.checkedLoadedFor[`${p[0]}-${e}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(o)&&(this.checkedLoadedFor[`${p[0]}-${e}`]=!0,this.logger.warn(`key "${r}" for languages "${p.join(`, `)}" won't get resolved as namespace "${o}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`)),p.forEach(r=>{if(this.isValidLookup(n))return;a=r;let o=[c];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(o,c,r,e,t);else{let e;u&&(e=this.pluralResolver.getSuffix(r,t.count,t));let n=`${this.options.pluralSeparator}zero`,i=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(u&&(t.ordinal&&e.startsWith(i)&&o.push(c+e.replace(i,this.options.pluralSeparator)),o.push(c+e),d&&o.push(c+n)),f){let r=`${c}${this.options.contextSeparator||`_`}${t.context}`;o.push(r),u&&(t.ordinal&&e.startsWith(i)&&o.push(r+e.replace(i,this.options.pluralSeparator)),o.push(r+e),d&&o.push(r+n))}}let s;for(;s=o.pop();)this.isValidLookup(n)||(i=s,n=this.getResource(r,e,s,t))}))})}),{res:n,usedKey:r,exactUsedKey:i,usedLng:a,usedNS:o}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e===``)}getResource(e,t,n,r={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,n,r):this.resourceStore.getResource(e,t,n,r)}getUsedParamsDetails(e={}){let t=[`defaultValue`,`ordinal`,`context`,`replace`,`lng`,`lngs`,`fallbackLng`,`ns`,`keySeparator`,`nsSeparator`,`returnObjects`,`returnDetails`,`joinArrays`,`postProcess`,`interpolation`],n=e.replace&&!$(e.replace),r=n?e.replace:e;if(n&&e.count!==void 0&&(r={...r,count:e.count}),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!n){r={...r};for(let e of t)delete r[e]}return r}static hasDefaultValue(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&t.startsWith(`defaultValue`)&&e[t]!==void 0)return!0;return!1}},Rf=class{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=kf.create(`languageUtils`)}getScriptPartFromCode(e){if(e=Df(e),!e||!e.includes(`-`))return null;let t=e.split(`-`);return t.length===2||(t.pop(),t[t.length-1].toLowerCase()===`x`)?null:this.formatLanguageCode(t.join(`-`))}getLanguagePartFromCode(e){if(e=Df(e),!e||!e.includes(`-`))return e;let t=e.split(`-`);return this.formatLanguageCode(t[0])}formatLanguageCode(e){if($(e)&&e.includes(`-`)){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch{}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load===`languageOnly`||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(e)}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;let n=this.formatLanguageCode(e);(!this.options.supportedLngs||this.isSupportedCode(n))&&(t=n)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;let n=this.getScriptPartFromCode(e);if(this.isSupportedCode(n))return t=n;let r=this.getLanguagePartFromCode(e);if(this.isSupportedCode(r))return t=r;t=this.options.supportedLngs.find(e=>e===r?!0:!e.includes(`-`)&&!r.includes(`-`)?!1:!!(e.includes(`-`)&&!r.includes(`-`)&&e.slice(0,e.indexOf(`-`))===r||e.startsWith(r)&&r.length>1))}),t||=this.getFallbackCodes(this.options.fallbackLng)[0],t}getFallbackCodes(e,t){if(!e)return[];if(typeof e==`function`&&(e=e(t)),$(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let n=e[t];return n||=e[this.getScriptPartFromCode(t)],n||=e[this.formatLanguageCode(t)],n||=e[this.getLanguagePartFromCode(t)],n||=e.default,n||[]}toResolveHierarchy(e,t){let n=this.getFallbackCodes((t===!1?[]:t)||this.options.fallbackLng||[],e),r=[],i=e=>{e&&(this.isSupportedCode(e)?r.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return $(e)&&(e.includes(`-`)||e.includes(`_`))?(this.options.load!==`languageOnly`&&i(this.formatLanguageCode(e)),this.options.load!==`languageOnly`&&this.options.load!==`currentOnly`&&i(this.getScriptPartFromCode(e)),this.options.load!==`currentOnly`&&i(this.getLanguagePartFromCode(e))):$(e)&&i(this.formatLanguageCode(e)),n.forEach(e=>{r.includes(e)||i(this.formatLanguageCode(e))}),r}},zf={zero:0,one:1,two:2,few:3,many:4,other:5},Bf={select:e=>e===1?`one`:`other`,resolvedOptions:()=>({pluralCategories:[`one`,`other`]})},Vf=class{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=kf.create(`pluralResolver`),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){let n=Df(e===`dev`?`en`:e),r=t.ordinal?`ordinal`:`cardinal`,i=JSON.stringify({cleanedCode:n,type:r});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let a;try{a=new Intl.PluralRules(n,{type:r})}catch{if(typeof Intl>`u`)return this.logger.error(`No Intl support, please use an Intl polyfill!`),Bf;if(!e.match(/-|_/))return Bf;let n=this.languageUtils.getLanguagePartFromCode(e);a=this.getRule(n,t)}return this.pluralRulesCache[i]=a,a}needsPlural(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,n={}){return this.getSuffixes(e,n).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?n.resolvedOptions().pluralCategories.sort((e,t)=>zf[e]-zf[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:``}${e}`):[]}getSuffix(e,t,n={}){let r=this.getRule(e,n);return r?`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:``}${r.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix(`dev`,t,n))}},Hf=(e,t,n,r=`.`,i=!0)=>{let a=_f(e,t,n);return!a&&i&&$(n)&&(a=Ef(e,n,r),a===void 0&&(a=Ef(t,n,r))),a},Uf=e=>e.replace(/\$/g,`$$$$`),Wf=class{constructor(e={}){this.logger=kf.create(`interpolator`),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||={escapeValue:!0};let{escape:t,escapeValue:n,useRawValueToEscape:r,prefix:i,prefixEscaped:a,suffix:o,suffixEscaped:s,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:d,nestingPrefixEscaped:f,nestingSuffix:p,nestingSuffixEscaped:m,nestingOptionsSeparator:h,maxReplaces:g,alwaysFormat:_}=e.interpolation;this.escape=t===void 0?xf:t,this.escapeValue=n===void 0||n,this.useRawValueToEscape=r!==void 0&&r,this.prefix=i?yf(i):a||`{{`,this.suffix=o?yf(o):s||`}}`,this.formatSeparator=c||`,`,this.unescapePrefix=l?``:u?yf(u):`-`,this.unescapeSuffix=this.unescapePrefix?``:l?yf(l):``,this.nestingPrefix=d?yf(d):f||yf(`$t(`),this.nestingSuffix=p?yf(p):m||yf(`)`),this.nestingOptionsSeparator=h||`,`,this.maxReplaces=g||1e3,this.alwaysFormat=_!==void 0&&_,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,`g`);this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,n,r){let i,a,o,s=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=e=>{if(!e.includes(this.formatSeparator)){let i=Hf(t,s,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(i,void 0,n,{...r,...t,interpolationkey:e}):i}let i=e.split(this.formatSeparator),a=i.shift().trim(),o=i.join(this.formatSeparator).trim();return this.format(Hf(t,s,a,this.options.keySeparator,this.options.ignoreJSONStructure),o,n,{...r,...t,interpolationkey:a})};this.resetRegExp(),!this.escapeValue&&typeof e==`string`&&/\$t\([^)]*\{[^}]*\{\{/.test(e)&&this.logger.warn(`nesting options string contains interpolated variables with escapeValue: false — if any of those values are attacker-controlled they can inject additional nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing it to t(), or keep escapeValue: true.`);let l=r?.missingInterpolationHandler||this.options.missingInterpolationHandler,u=r?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:r.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>e},{regex:this.regexp,safeValue:e=>this.escapeValue?this.escape(e):e}].forEach(t=>{for(o=0;i=t.regex.exec(e);){let n=i[1].trim();if(a=c(n),a===void 0)if(typeof l==`function`){let t=l(e,i,r);a=$(t)?t:``}else if(r&&Object.prototype.hasOwnProperty.call(r,n))a=``;else if(u){a=i[0];continue}else this.logger.warn(`missed to pass in variable ${n} for interpolating ${e}`),a=``;else!$(a)&&!this.useRawValueToEscape&&(a=cf(a));let s=t.safeValue(a);if(e=e.replace(i[0],Uf(s)),u?(t.regex.lastIndex+=s.length,t.regex.lastIndex-=i[0].length):t.regex.lastIndex=0,o++,o>=this.maxReplaces)break}}),e}nest(e,t,n={}){let r,i,a,o=(e,t)=>{let n=this.nestingOptionsSeparator;if(!e.includes(n))return e;let r=e.split(RegExp(`${yf(n)}[ ]*{`)),i=`{${r[1]}`;e=r[0],i=this.interpolate(i,a);let o=i.match(/'/g),s=i.match(/"/g);((o?.length??0)%2==0&&!s||(s?.length??0)%2!=0)&&(i=i.replace(/'/g,`"`));try{a=JSON.parse(i),t&&(a={...t,...a})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${n}${i}`}return a.defaultValue&&a.defaultValue.includes(this.prefix)&&delete a.defaultValue,e};for(;r=this.nestingRegexp.exec(e);){let s=[];a={...n},a=a.replace&&!$(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;let c=/{.*}/s.test(r[1])?r[1].lastIndexOf(`}`)+1:r[1].indexOf(this.formatSeparator);if(c!==-1&&(s=r[1].slice(c).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),r[1]=r[1].slice(0,c)),i=t(o.call(this,r[1].trim(),a),a),i&&r[0]===e&&!$(i))return i;$(i)||(i=cf(i)),i||=(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),``),s.length&&(i=s.reduce((e,t)=>this.format(e,t,n.lng,{...n,interpolationkey:r[1].trim()}),i.trim())),e=e.replace(r[0],i),this.regexp.lastIndex=0}return e}},Gf=e=>{let t=e.toLowerCase().trim(),n={};if(e.includes(`(`)){let r=e.split(`(`);t=r[0].toLowerCase().trim();let i=r[1].slice(0,-1);t===`currency`&&!i.includes(`:`)?n.currency||=i.trim():t===`relativetime`&&!i.includes(`:`)?n.range||=i.trim():i.split(`;`).forEach(e=>{if(e){let[t,...r]=e.split(`:`),i=r.join(`:`).trim().replace(/^'+|'+$/g,``),a=t.trim();n[a]||(n[a]=i),i===`false`&&(n[a]=!1),i===`true`&&(n[a]=!0),isNaN(i)||(n[a]=parseInt(i,10))}})}return{formatName:t,formatOptions:n}},Kf=e=>{let t={};return(n,r,i)=>{let a=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(a={...a,[i.interpolationkey]:void 0});let o=r+JSON.stringify(a),s=t[o];return s||(s=e(Df(r),i),t[o]=s),s(n)}},qf=e=>(t,n,r)=>e(Df(n),r)(t),Jf=class{constructor(e={}){this.logger=kf.create(`formatter`),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||`,`;let n=t.cacheInBuiltFormats?Kf:qf;this.formats={number:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t});return e=>n.format(e)}),currency:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t,style:`currency`});return e=>n.format(e)}),datetime:n((e,t)=>{let n=new Intl.DateTimeFormat(e,{...t});return e=>n.format(e)}),relativetime:n((e,t)=>{let n=new Intl.RelativeTimeFormat(e,{...t});return e=>n.format(e,t.range||`day`)}),list:n((e,t)=>{let n=new Intl.ListFormat(e,{...t});return e=>n.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=Kf(t)}format(e,t,n,r={}){if(!t||e==null)return e;let i=t.split(this.formatSeparator),a=[];for(let e=0;e-1&&!t.includes(`)`)&&e+1{let{formatName:i,formatOptions:a}=Gf(t);if(this.formats[i]){let t=e;try{let o=r?.formatParams?.[r.interpolationkey]||{},s=o.locale||o.lng||r.locale||r.lng||n;t=this.formats[i](e,s,{...a,...r,...o})}catch(e){this.logger.warn(e)}return t}else this.logger.warn(`there was no format function for ${i}`);return e},e)}},Yf=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)},Xf=class extends Af{constructor(e,t,n,r={}){super(),this.backend=e,this.store=t,this.services=n,this.languageUtils=n.languageUtils,this.options=r,this.logger=kf.create(`backendConnector`),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(n,r.backend,r)}queueLoad(e,t,n,r){let i={},a={},o={},s={};return e.forEach(e=>{let r=!0;t.forEach(t=>{let o=`${e}|${t}`;!n.reload&&this.store.hasResourceBundle(e,t)?this.state[o]=2:this.state[o]<0||(this.state[o]===1?a[o]===void 0&&(a[o]=!0):(this.state[o]=1,r=!1,a[o]===void 0&&(a[o]=!0),i[o]===void 0&&(i[o]=!0),s[t]===void 0&&(s[t]=!0)))}),r||(o[e]=!0)}),(Object.keys(i).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(i),pending:Object.keys(a),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(s)}}loaded(e,t,n){let r=e.split(`|`),i=r[0],a=r[1];t&&this.emit(`failedLoading`,i,a,t),!t&&n&&this.store.addResourceBundle(i,a,n,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&n&&(this.state[e]=0);let o={};this.queue.forEach(n=>{hf(n.loaded,[i],a),Yf(n,e),t&&n.errors.push(t),n.pendingCount===0&&!n.done&&(Object.keys(n.loaded).forEach(e=>{o[e]||(o[e]={});let t=n.loaded[e];t.length&&t.forEach(t=>{o[e][t]===void 0&&(o[e][t]=!0)})}),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())}),this.emit(`loaded`,o),this.queue=this.queue.filter(e=>!e.done)}read(e,t,n,r=0,i=this.retryTimeout,a){if(!e.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:t,fcName:n,tried:r,wait:i,callback:a});return}this.readingCalls++;let o=(o,s)=>{if(this.readingCalls--,this.waitingReads.length>0){let e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}if(o&&s&&r{this.read(e,t,n,r+1,i*2,a)},i);return}a(o,s)},s=this.backend[n].bind(this.backend);if(s.length===2){try{let n=s(e,t);n&&typeof n.then==`function`?n.then(e=>o(null,e)).catch(o):o(null,n)}catch(e){o(e)}return}return s(e,t,o)}prepareLoading(e,t,n={},r){if(!this.backend)return this.logger.warn(`No backend was added via i18next.use. Will not load resources.`),r&&r();$(e)&&(e=this.languageUtils.toResolveHierarchy(e)),$(t)&&(t=[t]);let i=this.queueLoad(e,t,n,r);if(!i.toLoad.length)return i.pending.length||r(),null;i.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,n){this.prepareLoading(e,t,{},n)}reload(e,t,n){this.prepareLoading(e,t,{reload:!0},n)}loadOne(e,t=``){let n=e.split(`|`),r=n[0],i=n[1];this.read(r,i,`read`,void 0,void 0,(n,a)=>{n&&this.logger.warn(`${t}loading namespace ${i} for language ${r} failed`,n),!n&&a&&this.logger.log(`${t}loaded namespace ${i} for language ${r}`,a),this.loaded(e,n,a)})}saveMissing(e,t,n,r,i,a={},o=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(t)){this.logger.warn(`did not save key "${n}" as the namespace "${t}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`);return}if(!(n==null||n===``)){if(this.backend?.create){let s={...a,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=c.length===5?c(e,t,n,r,s):c(e,t,n,r),i&&typeof i.then==`function`?i.then(e=>o(null,e)).catch(o):o(null,i)}catch(e){o(e)}else c(e,t,n,r,o,s)}!e||!e[0]||this.store.addResource(e[0],t,n,r)}}},Zf=()=>({debug:!1,initAsync:!0,ns:[`translation`],defaultNS:[`translation`],fallbackLng:[`dev`],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:`all`,preload:!1,keySeparator:`.`,nsSeparator:`:`,pluralSeparator:`_`,contextSeparator:`_`,enableSelector:!1,partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:`fallback`,saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]==`object`&&(t=e[1]),$(e[1])&&(t.defaultValue=e[1]),$(e[2])&&(t.tDescription=e[2]),typeof e[2]==`object`||typeof e[3]==`object`){let n=e[3]||e[2];Object.keys(n).forEach(e=>{t[e]=n[e]})}return t},interpolation:{escapeValue:!0,prefix:`{{`,suffix:`}}`,formatSeparator:`,`,unescapePrefix:`-`,nestingPrefix:`$t(`,nestingSuffix:`)`,nestingOptionsSeparator:`,`,maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),Qf=e=>($(e.ns)&&(e.ns=[e.ns]),$(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),$(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes(`cimode`)&&(e.supportedLngs=e.supportedLngs.concat([`cimode`])),e),$f=()=>{},ep=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(t=>{typeof e[t]==`function`&&(e[t]=e[t].bind(e))})},tp=class e extends Af{constructor(e={},t){if(super(),this.options=Qf(e),this.services={},this.logger=kf,this.modules={external:[]},ep(this),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,typeof e==`function`&&(t=e,e={}),e.defaultNS==null&&e.ns&&($(e.ns)?e.defaultNS=e.ns:e.ns.includes(`translation`)||(e.defaultNS=e.ns[0]));let n=Zf();this.options={...n,...this.options,...Qf(e)},this.options.interpolation={...n.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator),typeof this.options.overloadTranslationOptionHandler!=`function`&&(this.options.overloadTranslationOptionHandler=n.overloadTranslationOptionHandler);let r=e=>e?typeof e==`function`?new e:e:null;if(!this.options.isClone){this.modules.logger?kf.init(r(this.modules.logger),this.options):kf.init(null,this.options);let e;e=this.modules.formatter?this.modules.formatter:Jf;let t=new Rf(this.options);this.store=new jf(this.options.resources,this.options);let n=this.services;n.logger=kf,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new Vf(t,{prepend:this.options.pluralSeparator}),e&&(n.formatter=r(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new Wf(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new Xf(r(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=r(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=r(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new Lf(this.services,this.options),this.translator.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||=$f,this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&e[0]!==`dev`&&(this.options.lng=e[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn(`init: no languageDetector is used and no lng is defined`),[`getResource`,`hasResourceBundle`,`getResourceBundle`,`getDataByLanguage`].forEach(e=>{this[e]=(...t)=>this.store[e](...t)}),[`addResource`,`addResources`,`addResourceBundle`,`removeResourceBundle`].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});let i=sf(),a=()=>{let e=(e,n)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn(`init: i18next is already initialized. You should call init just once!`),this.isInitialized=!0,this.options.isClone||this.logger.log(`initialized`,this.options),this.emit(`initialized`,this.options),i.resolve(n),t(e,n)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?a():setTimeout(a,0),i}loadResources(e,t=$f){let n=t,r=$(e)?e:this.language;if(typeof e==`function`&&(n=e),!this.options.resources||this.options.partialBundledLanguages){if(r?.toLowerCase()===`cimode`&&(!this.options.preload||this.options.preload.length===0))return n();let e=[],t=t=>{t&&t!==`cimode`&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{t!==`cimode`&&(e.includes(t)||e.push(t))})};r?t(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{!e&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),n(e)})}else n(null)}reloadResources(e,t,n){let r=sf();return typeof e==`function`&&(n=e,e=void 0),typeof t==`function`&&(n=t,t=void 0),e||=this.languages,t||=this.options.ns,n||=$f,this.services.backendConnector.reload(e,t,e=>{r.resolve(),n(e)}),r}use(e){if(!e)throw Error(`You are passing an undefined module! Please check the object you are passing to i18next.use()`);if(!e.type)throw Error(`You are passing a wrong module! Please check the object you are passing to i18next.use()`);return e.type===`backend`&&(this.modules.backend=e),(e.type===`logger`||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type===`languageDetector`&&(this.modules.languageDetector=e),e.type===`i18nFormat`&&(this.modules.i18nFormat=e),e.type===`postProcessor`&&Mf.addPostProcessor(e),e.type===`formatter`&&(this.modules.formatter=e),e.type===`3rdParty`&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&![`cimode`,`dev`].includes(e)){for(let e=0;e{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},i=(i,a)=>{a?this.isLanguageChangingTo===e&&(r(a),this.translator.changeLanguage(a),this.isLanguageChangingTo=void 0,this.emit(`languageChanged`,a),this.logger.log(`languageChanged`,a)):this.isLanguageChangingTo=void 0,n.resolve((...e)=>this.t(...e)),t&&t(i,(...e)=>this.t(...e))},a=t=>{!e&&!t&&this.services.languageDetector&&(t=[]);let n=$(t)?t:t&&t[0],a=this.store.hasLanguageSomeTranslations(n)?n:this.services.languageUtils.getBestMatchFromCodes($(t)?[t]:t);a&&(this.language||r(a),this.translator.language||this.translator.changeLanguage(a),this.services.languageDetector?.cacheUserLanguage?.(a)),this.loadResources(a,e=>{i(e,a)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e),n}getFixedT(e,t,n,r){let i=r?.scopeNs,a=(e,t,...r)=>{let o;o=typeof t==`object`?{...t}:this.options.overloadTranslationOptionHandler([e,t].concat(r)),o.lng=o.lng||a.lng,o.lngs=o.lngs||a.lngs;let s=o.ns!==void 0&&o.ns!==null;o.ns=o.ns||a.ns,o.keyPrefix!==``&&(o.keyPrefix=o.keyPrefix||n||a.keyPrefix);let c={...this.options,...o};Array.isArray(i)&&!s&&(c.ns=i),typeof o.keyPrefix==`function`&&(o.keyPrefix=Ff(o.keyPrefix,c));let l=this.options.keySeparator||`.`,u;return o.keyPrefix&&Array.isArray(e)?u=e.map(e=>(typeof e==`function`&&(e=Ff(e,c)),`${o.keyPrefix}${l}${e}`)):(typeof e==`function`&&(e=Ff(e,c)),u=o.keyPrefix?`${o.keyPrefix}${l}${e}`:e),this.t(u,o)};return $(e)?a.lng=e:a.lngs=e,a.ns=t,a.keyPrefix=n,a}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn(`hasLoadedNamespace: i18next was not initialized`,this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn(`hasLoadedNamespace: i18n.languages were undefined or empty`,this.languages),!1;let n=t.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,i=this.languages[this.languages.length-1];if(n.toLowerCase()===`cimode`)return!0;let a=(e,t)=>{let n=this.services.backendConnector.state[`${e}|${t}`];return n===-1||n===0||n===2};if(t.precheck){let e=t.precheck(this,a);if(e!==void 0)return e}return!!(this.hasResourceBundle(n,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(n,e)&&(!r||a(i,e)))}loadNamespaces(e,t){let n=sf();return this.options.ns?($(e)&&(e=[e]),e.forEach(e=>{this.options.ns.includes(e)||this.options.ns.push(e)}),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}loadLanguages(e,t){let n=sf();$(e)&&(e=[e]);let r=this.options.preload||[],i=e.filter(e=>!r.includes(e)&&this.services.languageUtils.isSupportedCode(e));return i.length?(this.options.preload=r.concat(i),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}dir(e){if(e||=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language),!e)return`rtl`;try{let t=new Intl.Locale(e);if(t&&t.getTextInfo){let e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch{}let t=`ar.shu.sqr.ssh.xaa.yhd.yud.aao.abh.abv.acm.acq.acw.acx.acy.adf.ads.aeb.aec.afb.ajp.apc.apd.arb.arq.ars.ary.arz.auz.avl.ayh.ayl.ayn.ayp.bbz.pga.he.iw.ps.pbt.pbu.pst.prp.prd.ug.ur.ydd.yds.yih.ji.yi.hbo.men.xmn.fa.jpr.peo.pes.prs.dv.sam.ckb`.split(`.`),n=this.services?.languageUtils||new Rf(Zf());return e.toLowerCase().indexOf(`-latn`)>1?`ltr`:t.includes(n.getLanguagePartFromCode(e))||e.toLowerCase().indexOf(`-arab`)>1?`rtl`:`ltr`}static createInstance(t={},n){let r=new e(t,n);return r.createInstance=e.createInstance,r}cloneInstance(t={},n=$f){let r=t.forkResourceStore;r&&delete t.forkResourceStore;let i={...this.options,...t,isClone:!0},a=new e(i);if((t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),[`store`,`services`,`language`].forEach(e=>{a[e]=this[e]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},r&&(a.store=new jf(Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((n,r)=>(n[r]={...e[t][r]},n),e[t]),e),{}),i),a.services.resourceStore=a.store),t.interpolation){let e={...Zf().interpolation,...this.options.interpolation,...t.interpolation},n={...i,interpolation:e};a.services.interpolator=new Wf(n)}return a.translator=new Lf(a.services,i),a.translator.on(`*`,(e,...t)=>{a.emit(e,...t)}),a.init(i,n),a.translator.options=i,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}.createInstance();tp.createInstance,tp.dir,tp.init,tp.loadResources,tp.reloadResources,tp.use,tp.changeLanguage,tp.getFixedT,tp.t,tp.exists,tp.setDefaultNamespace,tp.hasLoadedNamespace,tp.loadNamespaces,tp.loadLanguages;var np=(e,t,n,r)=>{let i=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,`warn`,`react-i18next::`,!0);lp(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)},rp={},ip=(e,t,n,r)=>{lp(n)&&rp[n]||(lp(n)&&(rp[n]=new Date),np(e,t,n,r))},ap=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off(`initialized`,n)},0),t()};e.on(`initialized`,n)}},op=(e,t,n)=>{e.loadNamespaces(t,ap(e,n))},sp=(e,t,n,r)=>{if(lp(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return op(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,ap(e,r))},cp=(e,t,n={})=>!t.languages||!t.languages.length?(ip(t,`NO_LANGUAGES`,`i18n.languages were undefined or empty`,{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf(`languageChanging`)>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}),lp=e=>typeof e==`string`,up=e=>typeof e==`object`&&!!e,dp=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,fp={"&":`&`,"&":`&`,"<":`<`,"<":`<`,">":`>`,">":`>`,"'":`'`,"'":`'`,""":`"`,""":`"`," ":` `," ":` `,"©":`©`,"©":`©`,"®":`®`,"®":`®`,"…":`…`,"…":`…`,"/":`/`,"/":`/`},pp=e=>fp[e],mp={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:e=>e.replace(dp,pp),transDefaultProps:void 0},hp=(e={})=>{mp={...mp,...e}},gp=()=>mp,_p,vp=e=>{_p=e},yp=()=>_p,bp={type:`3rdParty`,init(e){hp(e.options.react),vp(e)}},xp=(0,y.createContext)(),Sp=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}},Cp=ic(),wp={t:(e,t)=>{if(lp(t))return t;if(up(t)&&lp(t.defaultValue))return t.defaultValue;if(typeof e==`function`)return``;if(Array.isArray(e)){let t=e[e.length-1];return typeof t==`function`?``:t}return e},ready:!1},Tp=()=>()=>{},Ep=(e,t={})=>{let{i18n:n}=t,{i18n:r,defaultNS:i}=(0,y.useContext)(xp)||{},a=n||r||yp();a&&!a.reportNamespaces&&(a.reportNamespaces=new Sp),a||ip(a,`NO_I18NEXT_INSTANCE`,`useTranslation: You will need to pass in an i18next instance by using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.`);let o=(0,y.useMemo)(()=>({...gp(),...a?.options?.react,...t}),[a,t]),{useSuspense:s,keyPrefix:c}=o,l=e||i||a?.options?.defaultNS,u=lp(l)?[l]:l||[`translation`],d=(0,y.useMemo)(()=>u,u);a?.reportNamespaces?.addUsedNamespaces?.(d);let f=(0,y.useRef)(0),p=(0,y.useCallback)(e=>{if(!a)return Tp;let{bindI18n:t,bindI18nStore:n}=o,r=()=>{f.current+=1,e()};return t&&a.on(t,r),n&&a.store.on(n,r),()=>{t&&t.split(` `).forEach(e=>a.off(e,r)),n&&n.split(` `).forEach(e=>a.store.off(e,r))}},[a,o]),m=(0,y.useRef)(),h=(0,y.useCallback)(()=>{if(!a)return wp;let e=!!(a.isInitialized||a.initializedStoreOnce)&&d.every(e=>cp(e,a,o)),n=t.lng||a.language,r=f.current,i=m.current;if(i&&i.ready===e&&i.lng===n&&i.keyPrefix===c&&i.revision===r)return i;let s={t:a.getFixedT(n,o.nsMode===`fallback`?d:d[0],c,{scopeNs:d}),ready:e,lng:n,keyPrefix:c,revision:r};return m.current=s,s},[a,d,c,o,t.lng]),[g,_]=(0,y.useState)(0),{t:v,ready:b}=(0,Cp.useSyncExternalStore)(p,h,h);(0,y.useEffect)(()=>{if(a&&!b&&!s){let e=()=>_(e=>e+1);t.lng?sp(a,t.lng,d,e):op(a,d,e)}},[a,t.lng,d,b,s,g]);let x=a||{},S=(0,y.useRef)(null),C=(0,y.useRef)(),w=e=>{let t=Object.getOwnPropertyDescriptors(e);t.__original&&delete t.__original;let n=Object.create(Object.getPrototypeOf(e),t);if(!Object.prototype.hasOwnProperty.call(n,`__original`))try{Object.defineProperty(n,"__original",{value:e,writable:!1,enumerable:!1,configurable:!1})}catch{}return n},T=(0,y.useMemo)(()=>{let e=x,t=e?.language,n=e;e&&(S.current&&S.current.__original===e&&C.current===t?n=S.current:(n=w(e),S.current=n,C.current=t));let r=!b&&!s?(...e)=>(ip(a,`USE_T_BEFORE_READY`,`useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.`),v(...e)):v,i=[r,n,b];return i.t=r,i.i18n=n,i.ready=b,i},[v,x,b,x.resolvedLanguage,x.language,x.languages]);if(a&&s&&!b){let e=!1;try{e=!1}catch{}throw e&&ip(a,`SUSPENDED_WHILE_LOADING`,`useTranslation: suspended while translations are loading (useSuspense is true by default). Add a boundary above this component, or set react.useSuspense: false in the i18next init options. https://react.i18next.com/latest/usetranslation-hook`),new Promise(e=>{let n=()=>e();t.lng?sp(a,t.lng,d,n):op(a,d,n)})}return T};function Dp({i18n:e,defaultNS:t,children:n}){let r=(0,y.useMemo)(()=>({i18n:e,defaultNS:t}),[e,t]);return(0,y.createElement)(xp.Provider,{value:r},n)}function Op(e,t){var n,r=1;e??=0,t??=0;function i(){var i,a=n.length,o,s=0,c=0;for(i=0;i=(d=(s+l)/2))?s=d:l=d,(g=n>=(f=(c+u)/2))?c=f:u=f,i=a,!(a=a[_=g<<1|h]))return i[_]=o,e;if(p=+e._x.call(null,a.data),m=+e._y.call(null,a.data),t===p&&n===m)return o.next=a,i?i[_]=o:e._root=o,e;do i=i?i[_]=[,,,,]:e._root=[,,,,],(h=t>=(d=(s+l)/2))?s=d:l=d,(g=n>=(f=(c+u)/2))?c=f:u=f;while((_=g<<1|h)==(v=(m>=f)<<1|p>=d));return i[v]=a,i[_]=o,e}function jp(e){var t,n,r=e.length,i,a,o=Array(r),s=Array(r),c=1/0,l=1/0,u=-1/0,d=-1/0;for(n=0;nu&&(u=i),ad&&(d=a));if(c>u||l>d)return this;for(this.cover(c,l).cover(u,d),n=0;ne||e>=i||r>t||t>=a;)switch(l=(tu||(s=m.y0)>d||(c=m.x1)=_)<<1|e>=g)&&(m=f[f.length-1],f[f.length-1]=f[f.length-1-h],f[f.length-1-h]=m)}else{var v=e-+this._x.call(null,p.data),y=t-+this._y.call(null,p.data),b=v*v+y*y;if(b=(f=(o+c)/2))?o=f:c=f,(h=d>=(p=(s+l)/2))?s=p:l=p,t=n,!(n=n[g=h<<1|m]))return this;if(!n.length)break;(t[g+1&3]||t[g+2&3]||t[g+3&3])&&(r=t,_=g)}for(;n.data!==e;)if(i=n,!(n=n.next))return this;return(a=n.next)&&delete n.next,i?(a?i.next=a:delete i.next,this):t?(a?t[g]=a:delete t[g],(n=t[0]||t[1]||t[2]||t[3])&&n===(t[3]||t[2]||t[1]||t[0])&&!n.length&&(r?r[_]=n:this._root=n),this):(this._root=a,this)}function Rp(e){for(var t=0,n=e.length;tl.index){var h=u-s.x-s.vx,g=d-s.y-s.vy,_=h*h+g*g;_u+m||ad+m||oe.r&&(e.r=e[t].r)}function c(){if(t){var r,i=t.length,a;for(n=Array(i),r=0;r[t(e,n,o),e])),d;for(n=0,s=Array(i);n(e=(am*e+om)%sm)/sm}function lm(e){return e.x}function um(e){return e.y}var dm=10,fm=Math.PI*(3-Math.sqrt(5));function pm(e){var t,n=1,r=.001,i=1-r**(1/300),a=0,o=.6,s=new Map,c=Nr(d),l=w(`tick`,`end`),u=cm();e??=[];function d(){f(),l.call(`tick`,t),n1?(n==null?s.delete(e):s.set(e,m(n)),t):s.get(e)},find:function(t,n,r){var i=0,a=e.length,o,s,c,l,u;for(r==null?r=1/0:r*=r,i=0;i1?(l.on(e,n),t):l.on(e)}}}function mm(){var e,t,n,r,i=Zp(-30),a,o=1,s=1/0,c=.81;function l(n){var i,a=e.length,o=qp(e,lm,um).visitAfter(d);for(r=n,i=0;i=s)){(e.data!==t||e.next)&&(d===0&&(d=Qp(n),m+=d*d),f===0&&(f=Qp(n),m+=f*f),m0&&(0,x.jsx)(`span`,{title:`${e.changedPropertyCount} of its properties change`,style:{flexShrink:0,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,minWidth:16,height:16,padding:`0 4px`,borderRadius:8,background:`#fff7ed`,color:`#c2410c`,border:`1px solid #fdba74`,font:`700 10px/1 ui-sans-serif, system-ui, sans-serif`},children:e.changedPropertyCount}),e.evidenceMissing&&(0,x.jsx)(`span`,{title:`This change cites no source`,style:{flexShrink:0,padding:`1px 5px`,borderRadius:8,background:`#fef3c7`,color:`#92400e`,border:`1px dashed #fcd34d`,font:`700 10px/1.4 ui-sans-serif, system-ui, sans-serif`},children:`?`}),e.overlaps?.length>0&&(0,x.jsx)(`span`,{title:`Also edited by ${e.overlaps.length} other pending change request(s)`,style:{flexShrink:0,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:16,height:16,borderRadius:8,background:`#e0e7ff`,color:`#4338ca`,border:`1px solid #a5b4fc`,font:`700 10px/1 ui-sans-serif, system-ui, sans-serif`},children:e.overlaps.length>1?e.overlaps.length:`⇄`}),e.consumers?.total>0&&(0,x.jsxs)(`span`,{title:`${e.consumers.total} consumer(s) depend on this`,style:{flexShrink:0,display:`inline-flex`,alignItems:`center`,gap:2,padding:`1px 6px 1px 4px`,borderRadius:8,background:`#fef3c7`,color:`#92400e`,border:`1px solid #fcd34d`,font:`700 10px/1.4 ui-sans-serif, system-ui, sans-serif`},children:[(0,x.jsx)(`svg`,{width:`10`,height:`10`,viewBox:`0 0 20 20`,fill:`#b45309`,"aria-hidden":`true`,children:(0,x.jsx)(`path`,{fillRule:`evenodd`,d:`M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495ZM10 5a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 10 5Zm0 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z`,clipRule:`evenodd`})}),e.consumers.total]}),(0,x.jsx)(`span`,{style:{flexShrink:0,display:`flex`},children:a}),(0,x.jsx)(`span`,{style:{fontWeight:600,fontSize:13,color:n?`#94a3b8`:`#1e293b`,overflow:`hidden`,textOverflow:`ellipsis`},children:e.label})]})}var Cm=8,wm={entity:`#3b82f6`,property:`#22c55e`,metric:`#8b5cf6`},Tm={entity:(0,x.jsx)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 20 20`,fill:`#60a5fa`,children:(0,x.jsx)(`path`,{d:`M10.362 1.093a.75.75 0 0 0-.724 0L2.523 5.018 10 9.143l7.477-4.125-7.115-3.925ZM18 6.443l-7.25 4v8.25l6.888-3.8A.75.75 0 0 0 18 14.25V6.443ZM9.25 18.693v-8.25l-7.25-4v7.807a.75.75 0 0 0 .362.643l6.888 3.8Z`})}),metric:(0,x.jsx)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 20 20`,fill:`#c084fc`,children:(0,x.jsx)(`path`,{d:`M15.5 2A1.5 1.5 0 0 0 14 3.5v13a1.5 1.5 0 0 0 1.5 1.5h1a1.5 1.5 0 0 0 1.5-1.5v-13A1.5 1.5 0 0 0 16.5 2h-1ZM9.5 6A1.5 1.5 0 0 0 8 7.5v9A1.5 1.5 0 0 0 9.5 18h1a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 10.5 6h-1ZM3.5 10A1.5 1.5 0 0 0 2 11.5v5A1.5 1.5 0 0 0 3.5 18h1A1.5 1.5 0 0 0 6 16.5v-5A1.5 1.5 0 0 0 4.5 10h-1Z`})}),property:(0,x.jsx)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 20 20`,fill:`#4ade80`,children:(0,x.jsx)(`path`,{fillRule:`evenodd`,d:`M4.5 2A2.5 2.5 0 0 0 2 4.5v3.879a2.5 2.5 0 0 0 .732 1.767l7.5 7.5a2.5 2.5 0 0 0 3.536 0l3.878-3.878a2.5 2.5 0 0 0 0-3.536l-7.5-7.5A2.5 2.5 0 0 0 8.38 2H4.5ZM5 6a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z`,clipRule:`evenodd`})})},Em=()=>(0,x.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`#9ca3af`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,x.jsx)(`path`,{d:`M15.75 5.25a3 3 0 013 3m3 0a6 6 0 01-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1121.75 8.25z`})}),Dm={visibility:`hidden`,width:8,height:8};function Om({data:e,type:t}){let{t:n}=Ep(),r=wm[t]||wm.entity,i=Tm[t]||Tm.entity,a=e.hideProperties?[]:e.properties||[],[o,s]=(0,y.useState)(a.some((e,t)=>(e.highlight||e.diff)&&t>=Cm)),c=!o&&a.length>Cm,l=c?a.slice(0,Cm):a,u=a.length-Cm;e.description;let d=e=>{e.stopPropagation(),s(e=>!e)},f=_m[e.diff],p=e.changedPropertyCount||0,m=f||(p>0?_m.modify:null),h=f?f.label:n(`node.propertiesChanged`,{count:p});return(0,x.jsxs)(`div`,{style:{minWidth:220,borderRadius:6,overflow:`hidden`,position:`relative`,opacity:e.dimmed?.4:e.diff===`remove`?.65:1,cursor:e.link?`pointer`:`default`,boxShadow:m?`0 0 0 3px ${m.color}, 0 0 14px ${m.color}55`:e.selected?`0 0 0 3px #ffffff, 0 0 0 5px ${r}, 0 0 16px ${r}66`:e.highlight?`0 0 0 2px ${r}, 0 0 12px ${r}40`:`0 1px 3px rgba(0,0,0,0.06)`},children:[m&&(0,x.jsx)(`div`,{style:{position:`absolute`,top:0,right:0,zIndex:1,background:m.color,color:`#fff`,font:`600 10px/1 ui-sans-serif, system-ui, sans-serif`,letterSpacing:`0.06em`,textTransform:`uppercase`,padding:`3px 6px`,borderBottomLeftRadius:6},children:h}),(0,x.jsx)(Vl,{type:`target`,position:U.Top,id:`top`,style:Dm}),(0,x.jsx)(Vl,{type:`source`,position:U.Bottom,id:`bottom`,style:Dm}),(0,x.jsx)(`div`,{style:{height:6,background:r}}),(0,x.jsxs)(`div`,{style:{border:`3px solid #E9EEF4`,borderTop:`none`,borderRadius:`0 0 6px 6px`,overflow:`hidden`},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,background:`#E9EEF4`,padding:`6px 10px`,gap:6},children:[(0,x.jsx)(`span`,{style:{flexShrink:0,display:`flex`},children:i}),(0,x.jsx)(`span`,{style:{fontWeight:700,fontSize:14,color:`#111827`,whiteSpace:`nowrap`,overflow:`hidden`,textOverflow:`ellipsis`},children:e.label})]}),(0,x.jsx)(`div`,{style:{background:`#fff`},children:l.length>0?(0,x.jsxs)(x.Fragment,{children:[l.map((e,t)=>{let r=_m[e.diff],i=r?r.color:e.highlight?wm.property:null;return(0,x.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,padding:`5px 10px`,borderTop:`1px solid #E9EEF4`,gap:8,background:i?`${i}1a`:`transparent`,boxShadow:i?`inset 3px 0 0 ${i}`:`none`},children:[(0,x.jsx)(`span`,{style:{fontSize:13,fontWeight:e.highlight||r?700:500,color:e.inherited?`#9ca3af`:`#111827`,fontStyle:e.inherited?`italic`:`normal`,textDecoration:e.diff===`remove`?`line-through`:`none`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,flex:1,minWidth:0},children:e.name}),(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:4,flexShrink:0},children:[r?(0,x.jsx)(`span`,{style:{color:r.color,font:`600 10px/1 ui-sans-serif, system-ui, sans-serif`,letterSpacing:`0.06em`,textTransform:`uppercase`},children:n(`detail.diff.op.${e.diff}`)}):e.type&&(0,x.jsx)(`span`,{style:{fontSize:11,color:`#9ca3af`},children:e.type}),e.primaryKey&&(0,x.jsx)(Em,{})]})]},t)}),(c||o&&a.length>Cm)&&(0,x.jsx)(`div`,{onClick:d,style:{padding:`4px 10px`,borderTop:`1px solid #E9EEF4`,fontSize:11,color:`#6366f1`,textAlign:`center`,cursor:`pointer`,fontWeight:500},onMouseOver:e=>e.currentTarget.style.background=`#f5f3ff`,onMouseOut:e=>e.currentTarget.style.background=`transparent`,children:o?`show less`:`+${u} more`})]}):(0,x.jsx)(`div`,{style:{padding:`6px 10px`,fontSize:12,color:`#9ca3af`,fontStyle:`italic`,lineHeight:1.4},children:n(`node.noProperties`)})})]})]})}var km=(0,y.createContext)({toggleCollapse:()=>{},collapsedSet:new Set}),Am={visibility:`hidden`,width:6,height:6},jm=180,Mm=56,Nm=72,Pm=`#f97316`,Fm=`rgba(249, 115, 22, 0.06)`,Im=`rgba(249, 115, 22, 0.28)`,Lm=`rgba(249, 115, 22, 0.03)`,Rm=`rgba(249, 115, 22, 0.12)`,zm=`#fff7ed`,Bm=`#fffbf5`,Vm=`#fed7aa`;function Hm(e){let t=e.slice().sort((e,t)=>e.x-t.x||e.y-t.y);if(t.length<=1)return t.slice();let n=(e,t,n)=>(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x),r=e=>{let t=[];for(let r of e){for(;t.length>=2&&n(t[t.length-2],t[t.length-1],r)<=0;)t.pop();t.push(r)}return t},i=r(t),a=r(t.slice().reverse());return i.pop(),a.pop(),i.concat(a)}function Um(e,t){let n=e.length;if(n===0)return``;if(n===1){let n=e[0];return`M ${(n.x-t).toFixed(2)} ${n.y.toFixed(2)} A ${t} ${t} 0 1 1 ${(n.x+t).toFixed(2)} ${n.y.toFixed(2)} A ${t} ${t} 0 1 1 ${(n.x-t).toFixed(2)} ${n.y.toFixed(2)} Z`}if(n===2){let n=e[0],r=e[1],i=r.x-n.x,a=r.y-n.y,o=Math.hypot(i,a)||1,s=a/o,c=-i/o,l={x:n.x+s*t,y:n.y+c*t},u={x:r.x+s*t,y:r.y+c*t},d={x:n.x-s*t,y:n.y-c*t},f={x:r.x-s*t,y:r.y-c*t};return`M ${l.x.toFixed(2)} ${l.y.toFixed(2)} L ${u.x.toFixed(2)} ${u.y.toFixed(2)} A ${t} ${t} 0 0 1 ${f.x.toFixed(2)} ${f.y.toFixed(2)} L ${d.x.toFixed(2)} ${d.y.toFixed(2)} A ${t} ${t} 0 0 1 ${l.x.toFixed(2)} ${l.y.toFixed(2)} Z`}let r=[];for(let t=0;tt=>{let n=[];return t.nodeLookup.forEach(t=>{if(t.parentId!==e)return;let r=t.measured?.width??t.width??t.style?.width??jm,i=t.measured?.height??t.height??t.style?.height??Mm;n.push(`${t.position.x.toFixed(1)},${t.position.y.toFixed(1)},${r},${i}`)}),n.sort(),n.join(`|`)};function Gm(e){return e?e.split(`|`).map(e=>{let[t,n,r,i]=e.split(`,`).map(Number);return{x:t,y:n,w:r,h:i}}):[]}var Km=()=>(0,x.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 20 20`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.2`,strokeLinecap:`round`,children:[(0,x.jsx)(`line`,{x1:`5`,y1:`10`,x2:`15`,y2:`10`}),(0,x.jsx)(`line`,{x1:`10`,y1:`5`,x2:`10`,y2:`15`})]}),qm=()=>(0,x.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 20 20`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.2`,strokeLinecap:`round`,children:(0,x.jsx)(`line`,{x1:`5`,y1:`10`,x2:`15`,y2:`10`})}),Jm=e=>({display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:22,height:22,borderRadius:6,background:`#fff`,border:`1px solid ${e?`#e2e8f0`:`#cbd5e1`}`,color:e?`#94a3b8`:`#475569`,cursor:`pointer`,padding:0,boxShadow:`0 1px 2px rgba(0,0,0,0.05)`,pointerEvents:`auto`,flexShrink:0});function Ym({data:e,onToggle:t}){let{t:n}=Ep(),r=e.dimmed,i=e.memberCount;return(0,x.jsxs)(`div`,{style:{width:`100%`,height:`100%`,display:`flex`,flexDirection:`column`,padding:`14px 16px`,borderRadius:16,background:r?Bm:zm,border:`2px solid ${r?Vm:Pm}`,boxShadow:`0 2px 8px rgba(0,0,0,0.06)`,boxSizing:`border-box`,opacity:r?.5:1,userSelect:`none`,transition:`opacity 0.2s, background 0.2s, border-color 0.2s`,gap:6},children:[(0,x.jsx)(Vl,{type:`target`,position:U.Top,id:`top`,style:Am}),(0,x.jsx)(Vl,{type:`source`,position:U.Bottom,id:`bottom`,style:Am}),(0,x.jsx)(Vl,{type:`target`,position:U.Left,id:`left`,style:Am}),(0,x.jsx)(Vl,{type:`source`,position:U.Right,id:`right`,style:Am}),(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,x.jsx)(`span`,{style:{fontSize:10,fontWeight:700,letterSpacing:`0.08em`,textTransform:`uppercase`,color:r?`#fdba74`:Pm},children:n(`node.group`)}),(0,x.jsx)(`div`,{style:{flex:1}}),(0,x.jsx)(`button`,{type:`button`,onClick:t,onMouseDown:e=>e.stopPropagation(),title:n(`node.expandGroup`),"aria-label":n(`node.expandGroup`),style:Jm(r),children:(0,x.jsx)(Km,{})})]}),(0,x.jsx)(`div`,{style:{fontSize:16,fontWeight:700,color:r?`#94a3b8`:`#1e293b`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,lineHeight:1.2},children:e.label}),i>0&&(0,x.jsxs)(`div`,{style:{marginTop:`auto`,display:`flex`,alignItems:`center`,gap:6},children:[(0,x.jsxs)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 20 20`,fill:`none`,stroke:r?`#cbd5e1`:`#94a3b8`,strokeWidth:`2`,children:[(0,x.jsx)(`rect`,{x:`2.5`,y:`3.5`,width:`15`,height:`5`,rx:`1`}),(0,x.jsx)(`rect`,{x:`2.5`,y:`11.5`,width:`15`,height:`5`,rx:`1`})]}),(0,x.jsxs)(`span`,{style:{fontSize:12,fontWeight:500,color:r?`#94a3b8`:`#64748b`},children:[i,` `,i===1?`member`:`members`]})]})]})}function Xm({id:e,data:t}){let{t:n}=Ep(),{toggleCollapse:r,collapsedSet:i}=(0,y.useContext)(km),a=i.has(e),o=t=>{t.stopPropagation(),r(e)},s=K((0,y.useMemo)(()=>Wm(e),[e])),{pathD:c,labelPos:l}=(0,y.useMemo)(()=>{if(a)return{pathD:``,labelPos:null};let e=Gm(s);if(e.length===0)return{pathD:``,labelPos:null};let t=[];for(let n of e)t.push({x:n.x,y:n.y},{x:n.x+n.w,y:n.y},{x:n.x+n.w,y:n.y+n.h},{x:n.x,y:n.y+n.h});let n=Hm(t),r=1/0,i=-1/0,o=-1/0;for(let e of n)e.xi&&(i=e.x),e.y>o&&(o=e.y);let c=(r+i)/2,l=o;for(let e=0;e0)continue;let i=(c-t.x)/(r.x-t.x),a=t.y+i*(r.y-t.y);ae.stopPropagation(),title:n(`node.collapseGroup`),"aria-label":n(`node.collapseGroup`),style:Jm(u),children:(0,x.jsx)(qm,{})}),(0,x.jsx)(`span`,{style:{fontSize:12,fontWeight:600,color:u?`#94a3b8`:`#475569`,letterSpacing:`0.02em`,textTransform:`uppercase`},children:t.label})]})]})}function Zm(e){let t=e.measured?.width??e.width??150,n=e.measured?.height??e.height??40;return{x:e.internals.positionAbsolute.x,y:e.internals.positionAbsolute.y,w:t,h:n,cx:e.internals.positionAbsolute.x+t/2,cy:e.internals.positionAbsolute.y+n/2}}function Qm(e,t,n,r){let{cx:i,cy:a,w:o,h:s}=e,c=t-i,l=n-a;if(c===0&&l===0)return{x:i,y:a};let u=o/2+r,d=s/2+r,f=Math.abs(c)<.001?1/0:u/Math.abs(c),p=Math.abs(l)<.001?1/0:d/Math.abs(l),m=Math.min(f,p);return{x:i+c*m,y:a+l*m}}function $m(e,t,n,r){if(r<=1)return 0;let i=t.cx-e.cx,a=t.cy-e.cy,o=Math.sqrt(i*i+a*a)||1,s=Math.max(60,Math.min(o*.3,120));return(n-(r-1)/2)*s}function eh({id:e,source:t,target:n,label:r,style:i,data:a,markerEnd:o,labelStyle:s,labelBgStyle:c,labelBgPadding:l}){let u=Cd(t),d=Cd(n);if(!u||!d)return null;let f=Zm(u),p=Zm(d),m=a?.parallel||{index:0,total:1},h=$m(f,p,m.index,m.total);if(h===0){let t=Qm(f,p.cx,p.cy,2),n=Qm(p,f.cx,f.cy,6),a=`M ${t.x} ${t.y} L ${n.x} ${n.y}`,u=(t.x+n.x)/2,d=(t.y+n.y)/2;return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(xu,{id:e,path:a,style:i,markerEnd:o}),r&&(0,x.jsx)(bd,{children:(0,x.jsx)(`div`,{style:th(u,d,s,c,l),children:r})})]})}let g=(f.cx+p.cx)/2,_=(f.cy+p.cy)/2,v=t>n,y=v?f.cx-p.cx:p.cx-f.cx,b=v?f.cy-p.cy:p.cy-f.cy,S=Math.sqrt(y*y+b*b)||1,C=-b/S,w=y/S,T=g+C*h,E=_+w*h,D=Qm(f,T,E,2),O=Qm(p,T,E,6),k=`M ${D.x} ${D.y} Q ${T} ${E} ${O.x} ${O.y}`,A=.25*D.x+.5*T+.25*O.x,j=.25*D.y+.5*E+.25*O.y;return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(xu,{id:e,path:k,style:i,markerEnd:o}),r&&(0,x.jsx)(bd,{children:(0,x.jsx)(`div`,{style:th(A,j,s,c,l),children:r})})]})}function th(e,t,n,r,i){return{position:`absolute`,transform:`translate(-50%, -50%) translate(${e}px, ${t}px)`,pointerEvents:`none`,fontSize:n?.fontSize??10,fontWeight:n?.fontWeight??500,color:n?.fill??`#64748b`,background:r?.fill??`#fff`,opacity:r?.fillOpacity??.9,padding:`${i?.[1]??2}px ${i?.[0]??4}px`,borderRadius:4}}var nh={structural:`#dc2626`,descriptive:`#d97706`,cosmetic:`#64748b`},rh={width:`${.5*100}%`,flexShrink:0,background:`#fff`,borderLeft:`1px solid #e5e7eb`,display:`flex`,flexDirection:`column`,overflow:`hidden`},ih=(e,t={})=>e?{display:`flex`,flexDirection:`column`,...t}:{flex:1,overflow:`auto`,display:`flex`,flexDirection:`column`,...t},ah={display:`flex`,flexDirection:`column`,flexShrink:0,borderBottom:`1px solid #e5e7eb`},oh={background:`none`,border:`none`,cursor:`pointer`,padding:4,color:`#9ca3af`,fontSize:18,lineHeight:1,flexShrink:0,marginLeft:8},sh={padding:`10px 16px 6px`,fontSize:11,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.05em`,color:`#9ca3af`,background:`#f9fafb`,borderBottom:`1px solid #e5e7eb`},ch={padding:`2px 7px`,borderRadius:4,background:`#f1f5f9`,border:`1px solid #e2e8f0`,fontWeight:600},lh={entity:`#3b82f6`,property:`#22c55e`,shared_property:`#22c55e`,metric:`#8b5cf6`,group:`#f97316`,collapsed_group:`#f97316`},uh={entity:`detail.type.entity`,property:`detail.type.property`,shared_property:`detail.type.property`,metric:`detail.type.metric`,group:`detail.type.group`,collapsed_group:`detail.type.group`},dh=new Set([`group`,`collapsed_group`]),fh={entity:`#60a5fa`,metric:`#c084fc`,property:`#4ade80`,shared_property:`#4ade80`},ph={entity:(0,x.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 20 20`,fill:fh.entity,children:(0,x.jsx)(`path`,{d:`M10.362 1.093a.75.75 0 0 0-.724 0L2.523 5.018 10 9.143l7.477-4.125-7.115-3.925ZM18 6.443l-7.25 4v8.25l6.888-3.8A.75.75 0 0 0 18 14.25V6.443ZM9.25 18.693v-8.25l-7.25-4v7.807a.75.75 0 0 0 .362.643l6.888 3.8Z`})}),metric:(0,x.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 20 20`,fill:fh.metric,children:(0,x.jsx)(`path`,{d:`M15.5 2A1.5 1.5 0 0 0 14 3.5v13a1.5 1.5 0 0 0 1.5 1.5h1a1.5 1.5 0 0 0 1.5-1.5v-13A1.5 1.5 0 0 0 16.5 2h-1ZM9.5 6A1.5 1.5 0 0 0 8 7.5v9A1.5 1.5 0 0 0 9.5 18h1a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 10.5 6h-1ZM3.5 10A1.5 1.5 0 0 0 2 11.5v5A1.5 1.5 0 0 0 3.5 18h1A1.5 1.5 0 0 0 6 16.5v-5A1.5 1.5 0 0 0 4.5 10h-1Z`})}),property:(0,x.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 20 20`,fill:fh.property,children:(0,x.jsx)(`path`,{fillRule:`evenodd`,d:`M4.5 2A2.5 2.5 0 0 0 2 4.5v3.879a2.5 2.5 0 0 0 .732 1.767l7.5 7.5a2.5 2.5 0 0 0 3.536 0l3.878-3.878a2.5 2.5 0 0 0 0-3.536l-7.5-7.5A2.5 2.5 0 0 0 8.38 2H4.5ZM5 6a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z`,clipRule:`evenodd`})}),shared_property:(0,x.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 20 20`,fill:fh.shared_property,children:(0,x.jsx)(`path`,{fillRule:`evenodd`,d:`M4.5 2A2.5 2.5 0 0 0 2 4.5v3.879a2.5 2.5 0 0 0 .732 1.767l7.5 7.5a2.5 2.5 0 0 0 3.536 0l3.878-3.878a2.5 2.5 0 0 0 0-3.536l-7.5-7.5A2.5 2.5 0 0 0 8.38 2H4.5ZM5 6a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z`,clipRule:`evenodd`})}),group:(0,x.jsxs)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 20 20`,fill:`none`,stroke:`#64748b`,strokeWidth:`2`,children:[(0,x.jsx)(`rect`,{x:`2.5`,y:`3.5`,width:`15`,height:`5`,rx:`1`}),(0,x.jsx)(`rect`,{x:`2.5`,y:`11.5`,width:`15`,height:`5`,rx:`1`})]})},mh=()=>(0,x.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`#9ca3af`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,x.jsx)(`path`,{d:`M15.75 5.25a3 3 0 013 3m3 0a6 6 0 01-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1121.75 8.25z`})});function hh({node:e,edge:t,change:n,changesOnly:r,graphData:i,isCollapsed:a,onToggleCollapse:o,onCollapseOthers:s,onExpandAll:c,onClose:l,selection:u,stacked:d}){let{t:f}=Ep();if(!d&&u&&u.length>1)return(0,x.jsx)(`div`,{style:{...rh,overflow:`auto`},children:u.map((e,t)=>(0,x.jsx)(hh,{node:e.node,change:e.change,changesOnly:r,graphData:i,isCollapsed:a,onToggleCollapse:o,onCollapseOthers:s,onExpandAll:c,onClose:t===0?l:void 0,stacked:!0},e.key))});if(t)return(0,x.jsx)(gh,{edge:t,graphData:i,onClose:l,stacked:d});if(!e&&n)return(0,x.jsx)(_h,{change:n,onClose:l,stacked:d});if(!e)return null;let p=e.type||`entity`,m=_m[e.data.diff],h=m?m.color:lh[p]||lh.entity,{label:g,description:_,link:v}=e.data,y=dh.has(p);return(0,x.jsxs)(`div`,{style:d?ah:rh,children:[(0,x.jsx)(`div`,{style:{height:4,background:h,flexShrink:0}}),(0,x.jsxs)(`div`,{style:{padding:`16px 16px 12px`,borderBottom:`1px solid #e5e7eb`,flexShrink:0},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`flex-start`},children:[(0,x.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,x.jsx)(`div`,{style:{fontSize:11,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.05em`,color:h,marginBottom:4},children:f(uh[p]||`detail.type.entity`)}),v?(0,x.jsx)(`a`,{href:v,style:{fontSize:16,fontWeight:700,color:`#111827`,wordBreak:`break-word`,textDecoration:`none`,display:`block`},onMouseOver:e=>e.currentTarget.style.color=h,onMouseOut:e=>e.currentTarget.style.color=`#111827`,children:g}):(0,x.jsx)(`div`,{style:{fontSize:16,fontWeight:700,color:`#111827`,wordBreak:`break-word`},children:g})]}),l?(0,x.jsx)(`button`,{onClick:l,style:oh,title:f(`detail.close`),children:`✕`}):null]}),e.data.unresolved&&(0,x.jsxs)(`div`,{style:{marginTop:8,padding:`8px 11px`,borderRadius:6,background:`#fef2f2`,border:`1px solid #fecaca`,fontSize:12.5,color:`#b91c1c`,lineHeight:1.5},children:[f(`detail.unresolved`),e.data.removedBy&&(0,x.jsx)(`div`,{style:{marginTop:6},children:(0,x.jsx)(`a`,{href:e.data.removedBy.link,style:{color:`#b91c1c`,fontWeight:700,textDecoration:`underline`},children:f(`detail.unresolvedRemovedBy`)})})]}),e.data.externalNamespace&&(0,x.jsxs)(`div`,{style:{marginTop:8,display:`inline-flex`,alignItems:`center`,gap:5,padding:`3px 9px`,borderRadius:999,background:`#f1f5f9`,border:`1px dashed #cbd5e1`,fontSize:12,fontWeight:600,color:`#475569`},children:[`↗ `,f(`detail.externalNamespace`,{namespace:e.data.externalNamespace})]}),_&&(0,x.jsx)(`div`,{style:{marginTop:8,fontSize:13,color:`#6b7280`,lineHeight:1.5},children:_}),v&&(0,x.jsx)(`a`,{href:v,style:{display:`inline-flex`,alignItems:`center`,gap:4,marginTop:10,fontSize:12,fontWeight:500,color:h,textDecoration:`none`},onMouseOver:e=>e.currentTarget.style.textDecoration=`underline`,onMouseOut:e=>e.currentTarget.style.textDecoration=`none`,children:f(`detail.openDetails`)})]}),y?(0,x.jsx)(Gh,{node:e,graphData:i,isCollapsed:a,onToggleCollapse:o,onCollapseOthers:s,onExpandAll:c}):(0,x.jsxs)(`div`,{style:ih(d),children:[(0,x.jsx)(Sh,{detail:e.data.diffDetail}),(0,x.jsx)(Wh,{node:e,changesOnly:r}),(0,x.jsx)(vh,{relationships:n?.externalId===e.data?.externalId?n.relationships:null}),(0,x.jsx)(yh,{evidence:e.data.evidence,missing:e.data.evidenceMissing}),(0,x.jsx)(bh,{overlaps:e.data.overlaps}),(0,x.jsx)(xh,{consumers:e.data.consumers})]})]})}function gh({edge:e,graphData:t,onClose:n,stacked:r}){let{t:i}=Ep(),a=e.data?.diffDetail??e.diffDetail,o=_m[e.data?.diff??e.diff],s=o?o.color:`#64748b`,c=e=>t?.nodes?.find(t=>t.id===e)?.data?.label||e;return(0,x.jsxs)(`div`,{style:r?ah:rh,children:[(0,x.jsx)(`div`,{style:{height:4,background:s,flexShrink:0}}),(0,x.jsxs)(`div`,{style:{padding:`16px 16px 12px`,borderBottom:`1px solid #e5e7eb`,flexShrink:0},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`flex-start`},children:[(0,x.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,x.jsx)(`div`,{style:{fontSize:11,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.05em`,color:s,marginBottom:4},children:i(`detail.type.relationship`)}),(0,x.jsx)(`div`,{style:{fontSize:16,fontWeight:700,color:`#111827`,wordBreak:`break-word`},children:e.data?.label||e.label})]}),n?(0,x.jsx)(`button`,{onClick:n,style:oh,title:i(`detail.close`),children:`✕`}):null]}),(0,x.jsxs)(`div`,{style:{marginTop:10,display:`flex`,alignItems:`center`,gap:6,flexWrap:`wrap`,fontSize:12,color:`#374151`},children:[(0,x.jsx)(`span`,{style:ch,children:c(e.source)}),(0,x.jsx)(`span`,{style:{color:`#9ca3af`},children:`→`}),(0,x.jsx)(`span`,{style:ch,children:c(e.target)})]})]}),(0,x.jsxs)(`div`,{style:ih(r),children:[(0,x.jsx)(Sh,{detail:a}),(0,x.jsx)(yh,{evidence:e.data?.evidence??e.evidence,missing:e.data?.evidenceMissing??e.evidenceMissing})]})]})}function _h({change:e,onClose:t,stacked:n}){let{t:r}=Ep(),i=_m[e.op]||_m.modify;return(0,x.jsxs)(`div`,{style:n?ah:rh,children:[(0,x.jsx)(`div`,{style:{height:4,background:i.color,flexShrink:0}}),(0,x.jsx)(`div`,{style:{padding:`16px 16px 12px`,borderBottom:`1px solid #e5e7eb`,flexShrink:0},children:(0,x.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`flex-start`},children:[(0,x.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,x.jsx)(`div`,{style:{fontSize:11,fontWeight:600,letterSpacing:`0.05em`,textTransform:`uppercase`,color:`#6b7280`},children:e.elementType}),(0,x.jsx)(`div`,{style:{fontSize:16,fontWeight:700,color:`#111827`,wordBreak:`break-word`},children:e.name||e.externalId})]}),t?(0,x.jsx)(`button`,{onClick:t,style:oh,"aria-label":`Close`,children:`×`}):null]})}),(0,x.jsxs)(`div`,{style:ih(n),children:[(0,x.jsx)(Sh,{detail:{op:e.op,impact:e.impact?.toLowerCase(),fields:e.fields||[]}}),(0,x.jsx)(yh,{evidence:e.evidence,missing:!e.evidence||e.evidence.length===0})]})]})}function vh({relationships:e}){let{t}=Ep();if(!e||e.length===0)return null;let n={add:`#15803d`,remove:`#b91c1c`,modify:`#b45309`};return(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`div`,{style:sh,children:[t(`detail.relationshipChanges`,`Relationships`),` (`,e.length,`)`]}),e.map(e=>(0,x.jsxs)(`div`,{style:{padding:`8px 16px`,borderBottom:`1px solid #f3f4f6`},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`baseline`,gap:8},children:[(0,x.jsx)(`span`,{style:{fontSize:10,fontWeight:700,textTransform:`uppercase`,letterSpacing:`0.05em`,color:n[e.op]||`#6b7280`,flexShrink:0},children:t(`detail.op.`+e.op,e.op)}),(0,x.jsx)(`span`,{style:{fontSize:12.5,color:`#374151`,overflowWrap:`anywhere`},children:e.from&&e.to?`${e.from} → ${e.to}`:e.name||e.externalId})]}),e.fields?.map(e=>(0,x.jsxs)(`div`,{style:{marginTop:4},children:[(0,x.jsx)(`div`,{style:{fontSize:10,fontWeight:700,textTransform:`uppercase`,letterSpacing:`0.04em`,color:`#6b7280`},children:e.field}),(0,x.jsx)(Uh,{field:e.field,before:e.before,after:e.after,base:e.base})]},e.field))]},e.externalId))]})}function yh({evidence:e,missing:t}){let{t:n}=Ep(),r=e||[];return r.length===0&&!t?null:r.length===0?(0,x.jsxs)(`div`,{style:{borderBottom:`1px solid #e5e7eb`},children:[(0,x.jsx)(`div`,{style:sh,children:n(`detail.evidence.heading`)}),(0,x.jsx)(`div`,{style:{background:`#fffbeb`,padding:`10px 16px`,fontSize:12.5,color:`#78350f`,lineHeight:1.5},children:n(`detail.evidence.none`)})]}):(0,x.jsxs)(`div`,{style:{borderBottom:`1px solid #e5e7eb`},children:[(0,x.jsxs)(`div`,{style:sh,children:[n(`detail.evidence.heading`),` (`,r.length,`)`]}),(0,x.jsx)(`div`,{style:{padding:`10px 16px 12px`,display:`flex`,flexDirection:`column`,gap:10},children:r.map((e,t)=>(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`blockquote`,{style:{margin:0,padding:`6px 0 6px 10px`,borderLeft:`3px solid #cbd5e1`,fontSize:12.5,lineHeight:1.5,color:`#334155`,fontStyle:`italic`},children:e.quote}),e.label&&(0,x.jsx)(`div`,{style:{marginTop:3,fontSize:11.5,color:e.resolvable===!1?`#b45309`:`#64748b`},children:e.label}),e.resolvable===!1&&(0,x.jsx)(`div`,{style:{marginTop:2,fontSize:11.5,color:`#b45309`},children:n(`detail.evidence.unresolvable`)})]},t))})]})}function bh({overlaps:e}){let{t}=Ep();return!e||e.length===0?null:(0,x.jsxs)(`div`,{style:{borderBottom:`1px solid #e5e7eb`,background:`#eef2ff`},children:[(0,x.jsxs)(`div`,{style:{...sh,background:`transparent`,borderBottom:`none`,color:`#4338ca`},children:[t(`detail.overlap.heading`),` (`,e.length,`)`]}),(0,x.jsx)(`div`,{style:{padding:`0 16px 12px`,fontSize:12.5,color:`#3730a3`,lineHeight:1.5},children:t(`detail.overlap.description`)}),(0,x.jsx)(`div`,{style:{padding:`0 16px 12px`},children:e.map(e=>(0,x.jsxs)(`div`,{style:{fontSize:13,marginTop:2},children:[(0,x.jsx)(`a`,{href:e.link,style:{color:`#4338ca`,fontWeight:600,textDecoration:`none`},onMouseOver:e=>e.currentTarget.style.textDecoration=`underline`,onMouseOut:e=>e.currentTarget.style.textDecoration=`none`,children:t(`detail.overlap.view`)}),e.teamName&&(0,x.jsxs)(`span`,{style:{color:`#4f46e5`},children:[` · `,e.teamName]})]},e.changeRequestExternalId))})]})}function xh({consumers:e}){let{t}=Ep();if(!e||e.total===0)return null;let n=[[`relationship`,e.relationships],[`dataProduct`,e.dataProducts],[`dataContract`,e.dataContracts]].filter(([,e])=>e&&e.length>0);return(0,x.jsxs)(`div`,{style:{borderBottom:`1px solid #e5e7eb`,background:`#fffbeb`},children:[(0,x.jsxs)(`div`,{style:{...sh,background:`transparent`,borderBottom:`none`,color:`#92400e`},children:[t(`detail.consumers.heading`),` (`,e.total,`)`]}),(0,x.jsx)(`div`,{style:{padding:`0 16px 12px`,fontSize:12.5,color:`#78350f`,lineHeight:1.5},children:t(`detail.consumers.description`)}),n.map(([e,n])=>(0,x.jsxs)(`div`,{style:{padding:`0 16px 10px`},children:[(0,x.jsx)(`div`,{style:{fontSize:10.5,fontWeight:700,textTransform:`uppercase`,letterSpacing:`0.04em`,color:`#b45309`,marginBottom:4},children:t(`detail.consumers.${e}`)}),n.map((e,t)=>(0,x.jsxs)(`div`,{style:{fontSize:13,marginTop:2},children:[e.link?(0,x.jsx)(`a`,{href:e.link,style:{color:`#92400e`,fontWeight:600,textDecoration:`none`},onMouseOver:e=>e.currentTarget.style.textDecoration=`underline`,onMouseOut:e=>e.currentTarget.style.textDecoration=`none`,children:e.label}):(0,x.jsx)(`span`,{style:{color:`#92400e`,fontWeight:600},children:e.label}),e.namespace&&(0,x.jsxs)(`span`,{style:{color:`#b45309`,fontWeight:400},children:[` · `,e.namespace]})]},t))]},e))]})}function Sh({detail:e}){let{t}=Ep();if(!e)return null;let n=_m[e.op]||_m.modify,r=nh[e.impact]||nh.cosmetic;return(0,x.jsxs)(`div`,{style:{borderBottom:`1px solid #e5e7eb`,background:`${n.color}08`},children:[(0,x.jsxs)(`div`,{style:{padding:`12px 16px`},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,flexWrap:`wrap`},children:[(0,x.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:5,padding:`3px 9px`,borderRadius:999,background:n.color,color:`#fff`,fontSize:11,fontWeight:700,letterSpacing:`0.02em`},children:[(0,x.jsx)(`span`,{style:{fontSize:12,lineHeight:1},children:n.symbol}),t(`detail.diff.op.${e.op}`)]}),(0,x.jsx)(`span`,{style:{padding:`3px 9px`,borderRadius:999,border:`1px solid ${r}`,color:r,fontSize:11,fontWeight:600},title:t(`detail.diff.impactHint.${e.impact}`),children:t(`detail.diff.impact.${e.impact}`)})]}),(0,x.jsx)(`div`,{style:{marginTop:8,fontSize:12.5,color:`#4b5563`,lineHeight:1.5},children:t(`detail.diff.summary.${e.op}`)})]}),e.fields?.length>0&&(0,x.jsx)(`div`,{style:{padding:`0 16px 14px`,display:`flex`,flexDirection:`column`,gap:10},children:e.fields.map(e=>(0,x.jsx)(Ch,{change:e},e.field))})]})}function Ch({change:e}){let{t}=Ep();return(0,x.jsxs)(`div`,{style:{background:`#fff`,border:`1px solid #e5e7eb`,borderLeft:`3px solid ${nh[e.impact]||nh.cosmetic}`,borderRadius:5,padding:`9px 11px`},children:[(0,x.jsx)(`div`,{style:{fontSize:11,fontWeight:700,textTransform:`uppercase`,letterSpacing:`0.04em`,color:`#6b7280`,marginBottom:7},children:e.field}),(0,x.jsx)(Uh,{field:e.field,before:e.before,after:e.after,base:e.base})]})}var wh={red:[`#fef2f2`,`#b91c1c`,`#fecaca`],orange:[`#fff7ed`,`#c2410c`,`#fed7aa`],amber:[`#fffbeb`,`#b45309`,`#fde68a`],yellow:[`#fefce8`,`#854d0e`,`#fef08a`],green:[`#f0fdf4`,`#15803d`,`#bbf7d0`],teal:[`#f0fdfa`,`#0f766e`,`#99f6e4`],blue:[`#eff6ff`,`#1d4ed8`,`#bfdbfe`],indigo:[`#eef2ff`,`#4338ca`,`#c7d2fe`],purple:[`#faf5ff`,`#7e22ce`,`#e9d5ff`],pink:[`#fdf2f8`,`#be185d`,`#fbcfe8`],gray:[`#f9fafb`,`#4b5563`,`#e5e7eb`]};function Th({value:e,strike:t}){let n=!!e.href&&!t,r=e.display===`badge`?(0,x.jsx)(Eh,{badge:e,strike:t}):(0,x.jsx)(`span`,{style:{...Ih(`same`),...n?{color:`#4338ca`,borderColor:`#c7d2fe`,background:`#eef2ff`}:{},textDecoration:t?`line-through`:n?`underline`:`none`,textUnderlineOffset:2},children:e.label});return e.href?(0,x.jsx)(`a`,{href:e.href,title:e.label,style:{textDecoration:`none`,display:`inline-flex`,borderRadius:6},onMouseOver:e=>{e.currentTarget.style.opacity=.75},onMouseOut:e=>{e.currentTarget.style.opacity=1},children:r}):r}function Eh({badge:e,strike:t}){let[n,r,i]=wh[(e.color||`gray`).toLowerCase()]||wh.gray;return(0,x.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:4,borderRadius:6,padding:`2px 8px`,fontSize:11.5,fontWeight:500,background:n,color:r,border:`1px solid ${i}`,marginTop:3,textDecoration:t?`line-through`:`none`},children:[e.icon?(0,x.jsx)(`span`,{style:{width:14,height:14,display:`inline-flex`},dangerouslySetInnerHTML:{__html:e.icon}}):null,e.label]})}var Dh={de:`🇩🇪`,fr:`🇫🇷`,es:`🇪🇸`,it:`🇮🇹`,nl:`🇳🇱`,pt:`🇵🇹`,pl:`🇵🇱`,en:`🇬🇧`};function Oh({name:e}){let t=e.lastIndexOf(`@`);if(t<0)return(0,x.jsx)(`span`,{style:{fontFamily:`ui-monospace, SFMono-Regular, Menlo, monospace`,fontSize:11,color:`#6b7280`,marginRight:12},children:e});let n=e.slice(0,t),r=e.slice(t+1).toLowerCase();return(0,x.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:8,marginRight:12},children:[(0,x.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:5,borderRadius:4,border:`1px solid #e5e7eb`,background:`#fff`,padding:`2px 7px`,fontSize:11,color:`#374151`},children:[(0,x.jsx)(`span`,{children:Dh[r]||`🌐`}),(0,x.jsx)(`span`,{style:{fontWeight:600,letterSpacing:`0.04em`},children:r.toUpperCase()})]}),(0,x.jsx)(`span`,{style:{fontSize:11,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.04em`,color:`#6b7280`},children:n})]})}var kh=new Set([`status`,`kind`,`element_type`,`better_when`]),Ah=new Set([`pattern`,`formula`,`iri`,`data_type`,`extends`,`unit`]),jh=e=>e==null||e===``||Array.isArray(e)&&e.length===0,Mh=e=>Array.isArray(e),Nh=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!e.display,Ph=e=>typeof e==`boolean`,Fh=e=>typeof e==`object`&&!!e&&typeof e.display==`string`,Ih=e=>({display:`inline-block`,fontSize:11.5,padding:`1px 7px`,borderRadius:4,border:`1px solid`,marginRight:4,marginTop:3,...e===`add`?{color:`#15803d`,borderColor:`#bbf7d0`,background:`#f0fdf4`}:e===`remove`?{color:`#b91c1c`,borderColor:`#fecaca`,background:`#fef2f2`,textDecoration:`line-through`}:{color:`#374151`,borderColor:`#e5e7eb`,background:`#f9fafb`}});function Lh({value:e,kind:t,mono:n}){let{t:r}=Ep();return Fh(e)?(0,x.jsx)(Th,{value:e,strike:t===`remove`}):jh(e)?(0,x.jsx)(`span`,{style:{...Ih(`same`),color:`#9ca3af`,fontStyle:`italic`},children:r(`detail.diff.unset`)}):(0,x.jsx)(`span`,{style:{...Ih(t),...n?{fontFamily:`ui-monospace, SFMono-Regular, Menlo, monospace`,maxWidth:`100%`,overflowWrap:`anywhere`}:{}},children:String(e)})}function Rh({before:e,after:t,mono:n}){return(0,x.jsxs)(`div`,{style:{marginTop:3,display:`flex`,alignItems:`center`,gap:4,flexWrap:`wrap`},children:[(0,x.jsx)(Lh,{value:e,kind:`remove`,mono:n}),(0,x.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:4,minWidth:0,maxWidth:`100%`},children:[(0,x.jsx)(`span`,{style:{color:`#9ca3af`,fontSize:12},children:`→`}),(0,x.jsx)(Lh,{value:t,kind:`add`,mono:n})]})]})}function zh({before:e,after:t}){let n=e=>Fh(e)?`d:${e.display}:${e.label}`:String(e),r=(e||[]).map(n),i=(t||[]).map(n),a=new Map([...e||[],...t||[]].map(e=>[n(e),e])),o=(e,t)=>(0,x.jsx)(Lh,{value:a.get(e),kind:t},t+e),s=r.filter(e=>!i.includes(e)),c=i.filter(e=>!r.includes(e));return(0,x.jsxs)(`div`,{style:{marginTop:3},children:[i.filter(e=>r.includes(e)).map(e=>o(e,`same`)),s.map(e=>o(e,`remove`)),c.map(e=>o(e,`add`))]})}function Bh({before:e,after:t}){let n=Nh(e)?e:{},r=Nh(t)?t:{},i=[...new Set([...Object.keys(n),...Object.keys(r)])].filter(e=>e!==`evidence`).sort().filter(e=>JSON.stringify(n[e])!==JSON.stringify(r[e]));return i.length===0?null:(0,x.jsx)(`div`,{style:{marginTop:3},children:i.map(e=>(0,x.jsxs)(`div`,{style:{marginTop:10},children:[(0,x.jsx)(Oh,{name:e}),jh(n[e])?(0,x.jsx)(Lh,{value:r[e],kind:`add`}):jh(r[e])?(0,x.jsx)(Lh,{value:n[e],kind:`remove`}):Fh(n[e])||Fh(r[e])?(0,x.jsx)(Rh,{before:n[e],after:r[e]}):(0,x.jsx)(Vh,{before:n[e],after:r[e]})]},e))})}function Vh({before:e,after:t,base:n}){let{t:r}=Ep();return(0,x.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(175px, 1fr))`,gap:10,marginTop:3},children:[n!=null&&(0,x.jsx)(Hh,{label:r(`detail.diff.base`,`Was`),value:n,color:`#6b7280`}),(0,x.jsx)(Hh,{label:r(`detail.diff.before`),value:e,color:`#dc2626`,strike:!0}),(0,x.jsx)(Hh,{label:r(`detail.diff.after`),value:t,color:`#16a34a`})]})}function Hh({label:e,value:t,color:n,strike:r}){let{t:i}=Ep(),a=t==null||t===``;return(0,x.jsxs)(`div`,{style:{minWidth:0},children:[(0,x.jsx)(`div`,{style:{fontSize:10,fontWeight:700,textTransform:`uppercase`,letterSpacing:`0.04em`,color:n,marginBottom:3},children:e}),(0,x.jsx)(`div`,{style:{fontSize:12.5,lineHeight:1.5,color:a?`#9ca3af`:`#374151`,fontStyle:a?`italic`:`normal`,textDecoration:!a&&r?`line-through`:`none`,overflowWrap:`anywhere`},children:a?i(`detail.diff.unset`):String(t)})]})}function Uh({field:e,before:t,after:n,base:r}){let i=r!=null;if(!i){if(Fh(t)||Fh(n))return(0,x.jsx)(Rh,{before:t,after:n});if(Nh(t)||Nh(n))return(0,x.jsx)(Bh,{before:t,after:n});if(Mh(t)||Mh(n))return(0,x.jsx)(zh,{before:t,after:n});if(Ph(t)||Ph(n)||kh.has(e))return(0,x.jsx)(Rh,{before:t,after:n})}return!i&&Ah.has(e)?(0,x.jsx)(Rh,{before:t,after:n,mono:!0}):(0,x.jsx)(Vh,{before:t,after:n,base:r})}function Wh({node:e,changesOnly:t}){let{t:n}=Ep(),{description:r,properties:i=[]}=e.data,a=i.filter(e=>!e.inherited),o=i.filter(e=>e.inherited);return(0,x.jsxs)(`div`,{children:[a.length>0&&(0,x.jsx)(Jh,{title:n(`detail.properties`),properties:a,count:a.length,changesOnly:t}),o.length>0&&(0,x.jsx)(Jh,{title:n(`detail.inherited`),properties:o,count:o.length,inherited:!0,changesOnly:t}),i.length===0&&!r&&(0,x.jsx)(`div`,{style:{padding:16,fontSize:13,color:`#9ca3af`,textAlign:`center`},children:n(`detail.noProperties`)})]})}function Gh({node:e,graphData:t,isCollapsed:n,onToggleCollapse:r,onCollapseOthers:i,onExpandAll:a}){let{t:o}=Ep(),s=(t?.nodes||[]).filter(t=>t.parentId===e.id);s.filter(e=>e.type===`group`);let c=(()=>{new Map((t?.nodes||[]).map(e=>[e.id,e]));let n=new Map;(t?.nodes||[]).forEach(e=>{e.parentId&&(n.has(e.parentId)||n.set(e.parentId,[]),n.get(e.parentId).push(e))});let r=0,i=[e.id];for(;i.length;){let e=i.pop();(n.get(e)||[]).forEach(e=>{i.push(e.id),e.type!==`group`&&r++})}return r})();return(0,x.jsxs)(`div`,{style:{flex:1,overflow:`auto`,padding:`0`},children:[(0,x.jsxs)(`div`,{style:{padding:`12px 16px`,display:`flex`,flexDirection:`column`,gap:6,borderBottom:`1px solid #e5e7eb`},children:[(0,x.jsx)(Kh,{onClick:()=>r?.(e.id),label:o(n?`detail.expandThisGroup`:`detail.collapseThisGroup`),accent:`#4f46e5`}),(0,x.jsx)(Kh,{onClick:()=>i?.(e.id),label:`Collapse other groups at this level`}),(0,x.jsx)(Kh,{onClick:()=>a?.(),label:`Expand all groups`})]}),(0,x.jsxs)(`div`,{style:{padding:`10px 16px 6px`,fontSize:11,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.05em`,color:`#9ca3af`,background:`#f9fafb`,borderBottom:`1px solid #e5e7eb`},children:[o(`detail.members`,{count:s.length}),c===s.length?``:o(`detail.membersTotal`,{total:c})]}),s.length===0?(0,x.jsx)(`div`,{style:{padding:16,fontSize:13,color:`#9ca3af`,textAlign:`center`},children:o(`detail.noMembers`)}):s.map(e=>(0,x.jsx)(qh,{member:e},e.id))]})}function Kh({onClick:e,label:t,accent:n}){return(0,x.jsx)(`button`,{type:`button`,onClick:e,style:{textAlign:`left`,padding:`7px 10px`,border:`1px solid #e5e7eb`,borderRadius:6,background:`#fff`,cursor:`pointer`,fontSize:13,fontWeight:500,color:n||`#374151`,transition:`background 0.12s, border-color 0.12s`},onMouseOver:e=>{e.currentTarget.style.background=`#f9fafb`,e.currentTarget.style.borderColor=`#cbd5e1`},onMouseOut:e=>{e.currentTarget.style.background=`#fff`,e.currentTarget.style.borderColor=`#e5e7eb`},children:t})}function qh({member:e}){let{t}=Ep(),n=e.type||`entity`,r=t(uh[n]||`detail.type.entity`),i=ph[n]||ph.entity,{label:a,link:o}=e.data||{},s=(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,padding:`7px 16px`,borderBottom:`1px solid #f3f4f6`,fontSize:13,color:`#374151`},children:[(0,x.jsx)(`span`,{style:{flexShrink:0,display:`flex`},children:i}),(0,x.jsx)(`span`,{style:{flex:1,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:a||e.id}),(0,x.jsx)(`span`,{style:{fontSize:10,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.05em`,color:`#9ca3af`,flexShrink:0},children:r})]});return o?(0,x.jsx)(`a`,{href:o,style:{textDecoration:`none`,color:`inherit`,display:`block`},onMouseOver:e=>e.currentTarget.style.background=`#f9fafb`,onMouseOut:e=>e.currentTarget.style.background=`transparent`,children:s}):s}function Jh({title:e,properties:t,count:n,inherited:r,changesOnly:i}){let{t:a}=Ep(),o=t.filter(e=>e.diff),s=i?o:t;return s.length===0?null:(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`div`,{style:sh,children:[e,` (`,n,o.length>0?a(`detail.propertiesChanged`,{count:o.length}):``,`)`]}),s.map((e,t)=>(0,x.jsxs)(`div`,{style:{padding:`7px 16px`,borderBottom:`1px solid #f3f4f6`,background:e.diff?`${_m[e.diff]?.color??`#94a3b8`}08`:`transparent`},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,gap:8},children:[(0,x.jsx)(`span`,{style:{fontSize:13,fontWeight:e.diff?700:500,color:e.diff?_m[e.diff]?.color??`#374151`:r?`#9ca3af`:`#374151`,fontStyle:r?`italic`:`normal`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,flex:1,minWidth:0},children:e.name}),(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:4,flexShrink:0},children:[e.type&&(0,x.jsx)(`span`,{style:{fontSize:11,color:`#9ca3af`,background:`#f3f4f6`,padding:`1px 6px`,borderRadius:3},children:e.type}),e.shared&&(0,x.jsx)(`span`,{style:{fontSize:10,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.04em`,color:`#6366f1`,border:`1px solid #c7d2fe`,borderRadius:3,padding:`0 4px`},children:a(`detail.shared`,`shared`)}),e.primaryKey&&(0,x.jsx)(mh,{}),e.diff&&(0,x.jsx)(`span`,{style:{fontSize:10,fontWeight:700,textTransform:`uppercase`,letterSpacing:`0.04em`,color:_m[e.diff]?.color??`#374151`},children:_m[e.diff]?.label})]})]}),e.description&&(0,x.jsx)(`div`,{style:{fontSize:11,color:`#6b7280`,marginTop:2,lineHeight:1.4},children:e.description}),e.diffDetail?.fields?.length>0&&(0,x.jsx)(`div`,{style:{marginTop:5},children:e.diffDetail.fields.map(e=>(0,x.jsxs)(`div`,{style:{marginTop:3},children:[(0,x.jsx)(`div`,{style:{fontSize:10,fontWeight:700,textTransform:`uppercase`,letterSpacing:`0.04em`,color:`#6b7280`},children:e.field}),(0,x.jsx)(Uh,{field:e.field,before:e.before,after:e.after,base:e.base})]},e.field))})]},t))]})}var Yh={accepted:{text:`#15803d`,badge:`#dcfce7`,tint:`#f6fefa`},rejected:{text:`#b91c1c`,badge:`#fee2e2`,tint:`#fffafa`}},Xh={structural:`#dc2626`,descriptive:`#d97706`,cosmetic:`#64748b`},Zh={width:300,flexShrink:0,background:`#fff`,borderRight:`1px solid #e5e7eb`,display:`flex`,flexDirection:`column`,overflow:`hidden`},Qh={fontSize:11,fontWeight:600,letterSpacing:`0.05em`,textTransform:`uppercase`,color:`#6b7280`};function $h({changes:e,targetName:t,selectedIds:n,onSelectionChange:r,onFocus:i,onDecide:a}){let{t:o}=Ep(),s=(0,y.useMemo)(()=>new Set(e.filter(e=>e.decidable!==!1&&!e.decision).map(e=>e.externalId)),[e]),c=(0,y.useMemo)(()=>new Set(e.filter(e=>e.decidable!==!1).map(e=>e.externalId)),[e]),l=(0,y.useMemo)(()=>[...n].filter(e=>c.has(e)),[n,c]),u=(0,y.useMemo)(()=>l.filter(t=>e.find(e=>e.externalId===t)?.decision),[l,e]),d=(0,y.useMemo)(()=>e.filter(e=>e.decision===`accepted`).length,[e]),f=(0,y.useMemo)(()=>e.filter(e=>e.decision===`rejected`).length,[e]);if(!e||e.length===0)return null;let p=(e,t)=>{let i=new Set(t?n:[]);n.has(e)&&t?i.delete(e):i.add(e),r(i)};return(0,x.jsxs)(`div`,{style:Zh,"data-testid":`review-panel`,children:[(0,x.jsx)(`div`,{style:{height:4,background:`#6366f1`,flexShrink:0}}),(0,x.jsxs)(`div`,{style:{padding:`16px 16px 12px`,borderBottom:`1px solid #e5e7eb`,flexShrink:0},children:[(0,x.jsx)(`div`,{style:Qh,children:o(`review.eyebrow`,`Proposal`)}),(0,x.jsx)(`div`,{style:{fontSize:16,fontWeight:700,color:`#111827`,marginTop:2},children:o(`review.pending`,`{{count}} to review`,{count:s.size})}),d||f?(0,x.jsxs)(`div`,{style:{fontSize:12,color:`#6b7280`,marginTop:3,display:`flex`,gap:10},children:[d?(0,x.jsx)(`span`,{style:{color:Yh.accepted.text},children:o(`review.summary.accepted`,`{{count}} accepted`,{count:d})}):null,f?(0,x.jsx)(`span`,{style:{color:Yh.rejected.text},children:o(`review.summary.rejected`,`{{count}} rejected`,{count:f})}):null]}):null]}),(0,x.jsx)(`div`,{style:{flex:1,overflow:`auto`,padding:8},children:e.map(e=>{let r=_m[e.op]||_m.modify,a=n.has(e.externalId),s=!!e.decision,c=e.evidence?.some(e=>e.resolvable===!1);return(0,x.jsxs)(`div`,{"data-testid":`review-card`,"data-external-id":e.externalId,onClick:t=>{p(e.externalId,t.metaKey||t.ctrlKey||t.shiftKey),i?.(e.externalId)},style:{border:`1px solid ${a?`#6366f1`:`#e5e7eb`}`,boxShadow:a?`0 0 0 1px #6366f1`:`none`,borderRadius:6,padding:`8px 10px`,marginBottom:6,cursor:`pointer`,opacity:e.decidable===!1&&!s?.75:1,background:s?Yh[e.decision]?.tint||`#fff`:e.decidable===!1?`#fafafa`:`#fff`},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:6},children:[(0,x.jsx)(`span`,{style:{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:16,height:16,border:`1px solid ${r.color}`,borderRadius:4,color:r.color,fontSize:11,lineHeight:1,flexShrink:0},children:r.symbol}),(0,x.jsx)(`span`,{style:{fontWeight:600,color:`#111827`,flex:1,minWidth:0,wordBreak:`break-word`},children:e.name||e.externalId}),e.impact?(0,x.jsx)(`span`,{style:{flexShrink:0,fontSize:10,fontWeight:700,textTransform:`uppercase`,letterSpacing:`0.04em`,color:Xh[e.impact]||Xh.cosmetic},children:o(`review.impact.${e.impact}`,e.impact)}):null]}),e.owningTeam?(0,x.jsxs)(`div`,{style:{fontSize:11,color:`#6b7280`,marginTop:2,display:`flex`,alignItems:`center`,gap:4},children:[e.owner?.iconUrl?(0,x.jsx)(`img`,{src:e.owner.iconUrl,alt:``,"aria-hidden":`true`,style:{width:14,height:14,flexShrink:0,objectFit:`contain`}}):e.owner?.icon?(0,x.jsx)(`span`,{style:{width:14,height:14,display:`inline-flex`,flexShrink:0},dangerouslySetInnerHTML:{__html:e.owner.icon}}):null,e.owner?.label||e.owningTeam,e.decidable===!1&&!e.decision?(0,x.jsxs)(`span`,{style:{color:e.blockedBy===`conflict`?`#b45309`:`#9ca3af`},children:[` · `,e.blockedBy===`conflict`?o(`review.frozenByConflict`,`frozen by a conflict`):o(`review.notYours`,`{{team}}'s to decide`,{team:e.owningTeam})]}):null]}):null,e.conflictReason?(0,x.jsxs)(`div`,{style:{marginTop:4,fontSize:11,color:`#92400e`,background:`#fffbeb`,border:`1px solid #fde68a`,borderRadius:4,padding:`2px 6px`},children:[o(`review.conflict.`+e.conflictReason,{target:t||o(`review.conflict.target`)}),e.conflictSource?(0,x.jsxs)(x.Fragment,{children:[` `+o(`review.conflict.by`)+` `,(0,x.jsx)(`a`,{href:e.conflictSource.href,onClick:e=>e.stopPropagation(),style:{color:`#92400e`,fontWeight:600,textDecoration:`underline`,textUnderlineOffset:2},children:e.conflictSource.label})]}):null]}):null,e.evidence?.length?(0,x.jsx)(`div`,{style:{marginTop:4},children:(0,x.jsx)(`span`,{style:{display:`inline-block`,borderRadius:4,padding:`1px 7px`,fontSize:11,fontWeight:600,color:c?`#b45309`:`#047857`,background:c?`#fffbeb`:`#ecfdf5`},title:e.evidence.map(e=>e.quote).join(` + +`),children:c?o(`review.citedUnresolvable`,`Cited, not re-checkable`):o(`review.cited`,`Cited`)})}):null,e.mergeNotes?.map(e=>(0,x.jsx)(`div`,{style:{fontSize:11,color:`#b45309`,marginTop:4},children:e},e)),e.decision?(0,x.jsx)(`div`,{style:{marginTop:5},children:(0,x.jsx)(`span`,{style:{display:`inline-block`,borderRadius:4,padding:`1px 7px`,fontSize:11,fontWeight:600,color:Yh[e.decision]?.text||`#374151`,background:Yh[e.decision]?.badge||`#f3f4f6`},children:o(`review.decision.${e.decision}`,e.decision)})}):null]},e.externalId||`__namespace__`)})}),a&&l.length>0?(0,x.jsxs)(`div`,{style:{borderTop:`1px solid #e5e7eb`,padding:`12px 16px`,flexShrink:0},children:[(0,x.jsxs)(`div`,{style:{fontSize:11,color:`#6b7280`,marginBottom:8},children:[n.size===l.length?o(`review.selected`,`{{count}} selected`,{count:n.size}):o(`review.selectedPartial`,`{{total}} selected, {{count}} you can decide`,{total:n.size,count:l.length}),u.length?(0,x.jsxs)(`span`,{style:{color:`#b45309`},children:[` · `,o(`review.willChange`,`{{count}} already decided`,{count:u.length})]}):null]}),(0,x.jsxs)(`div`,{style:{display:`flex`,gap:8},children:[(0,x.jsx)(`button`,{type:`button`,onClick:()=>a(`accepted`,l),style:{flex:1,border:`1px solid ${_m.add.color}`,color:_m.add.color,background:`#fff`,borderRadius:6,padding:`5px 10px`,fontSize:12,cursor:`pointer`},children:o(`review.accept`,`Accept`)}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>a(`rejected`,l),style:{flex:1,border:`1px solid ${_m.remove.color}`,color:_m.remove.color,background:`#fff`,borderRadius:6,padding:`5px 10px`,fontSize:12,cursor:`pointer`},children:o(`review.reject`,`Reject`)})]})]}):null]})}var eg=(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,children:(0,x.jsx)(`path`,{d:`M8.424 0.47212800000000005C7.210464 0.516528 6.059064 0.8152320000000001 4.968648 1.368504C4.183608 1.766856 3.56184 2.2213920000000003 2.90208 2.879232C2.226216 3.5531520000000003 1.7667599999999999 4.181544 1.357296 4.992C0.8284320000000001 6.0388079999999995 0.5420400000000001 7.117896 0.483624 8.284128C0.409488 9.763416000000001 0.70452 11.160216 1.3673039999999999 12.468C2.2933920000000003 14.295312000000001 3.9517680000000004 15.765336000000001 5.874624000000001 16.463376C6.4847280000000005 16.684872 7.057272 16.824432 7.716 16.912224000000002C8.155296 16.970784 9.295512 16.970448 9.72 16.911624C11.284583999999999 16.694856 12.52992 16.183608 13.74768 15.258168L13.99884 15.067295999999999 18.177408000000003 19.242C22.794984000000003 23.855304 22.438992 23.522688 22.760664000000002 23.524416C23.036928 23.525904 23.223888000000002 23.433552000000002 23.392656 23.212296C23.487047999999998 23.088528 23.525472 22.956864 23.524416 22.760664000000002C23.522688 22.438872 23.855688 22.795272 19.241471999999998 18.176904L15.06612 13.997784 15.257280000000002 13.748904C16.164888 12.56724 16.713768 11.23356 16.9104 9.732C16.959576000000002 9.356424 16.979208 8.500608 16.947648 8.107368000000001C16.858344000000002 6.994536000000001 16.585008000000002 6.001584 16.102488 5.037336000000001C14.87796 2.590272 12.533904 0.90744 9.84 0.541416C9.585216 0.506784 8.762784 0.451296 8.652000000000001 0.46123200000000003C8.6256 0.463608 8.523 0.46850400000000003 8.424 0.47212800000000005M8.158968 1.991976C7.07964 2.089632 6.011184 2.447208 5.124 3.0076799999999997C4.516776 3.391272 3.7454880000000004 4.10112 3.333 4.656C2.612496 5.625264 2.192112 6.658488 2.024568 7.872C1.9728 8.246903999999999 1.966512 9.115488000000001 2.0129520000000003 9.48C2.196168 10.918656 2.7660240000000003 12.181296 3.703296 13.225416C4.758144 14.400456 6.150072 15.146736 7.752 15.396168C8.089464 15.448704000000001 8.956176 15.469920000000002 9.324 15.434664C10.192704 15.351336 10.915656 15.146184 11.7012 14.760024C13.026048 14.108784 14.086344 13.056072000000002 14.742384 11.740536C15.084552 11.054400000000001 15.279623999999998 10.441104 15.400319999999999 9.672C15.462096 9.278304 15.462288 8.171712 15.400632 7.776C15.236616000000001 6.723264 14.869079999999999 5.767896 14.309616000000002 4.9400640000000005C14.087832000000002 4.611888 13.798728 4.266624 13.478040000000002 3.946968C12.922272 3.3930000000000002 12.415728 3.0294719999999997 11.724 2.688144C10.977744 2.319912 10.372176 2.132712 9.58704 2.027568C9.246264 1.98192 8.480903999999999 1.96284 8.158968 1.991976M8.518824 4.711272C8.287608 4.776624 8.10144 4.949136 8.016192 5.176992C7.970064000000001 5.30028 7.968 5.3628 7.968 6.636912000000001L7.968 7.968 6.636912000000001 7.968C5.35728 7.968 5.30076 7.969896 5.1753599999999995 8.016792C4.666224 8.207304 4.5252479999999995 8.863824000000001 4.910712 9.249288C4.962024 9.3006 5.0634 9.3708 5.136 9.405288L5.268 9.468 6.617256 9.475272L7.966488 9.482568 7.973256 10.843272L7.98 12.204 8.03808 12.317664C8.37156 12.970224000000002 9.321912000000001 12.84636 9.453768 12.133152C9.470616 12.042 9.48 11.541648 9.48 10.735584L9.48 9.48 10.722 9.479808C11.465184 9.479712000000001 12.025704000000001 9.469631999999999 12.117624000000001 9.454704000000001C12.592416 9.377664 12.8664 8.89692 12.695616000000001 8.440464C12.637680000000001 8.285616 12.478296 8.115096000000001 12.317496000000002 8.035896000000001L12.204 7.98 10.843272 7.9734240000000005L9.482568 7.966848 9.475272 6.617424L9.468 5.268 9.405288 5.136C9.246168 4.801032 8.858424 4.615248 8.518824 4.711272`,stroke:`none`,fill:`currentColor`,fillRule:`evenodd`})}),tg=(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,children:(0,x.jsx)(`path`,{d:`M8.424 0.47212800000000005C7.210464 0.516528 6.059064 0.8152320000000001 4.968648 1.368504C4.183608 1.766856 3.56184 2.2213920000000003 2.90208 2.879232C2.226216 3.5531520000000003 1.7667599999999999 4.181544 1.357296 4.992C0.8284320000000001 6.0388079999999995 0.5420400000000001 7.117896 0.483624 8.284128C0.409488 9.763416000000001 0.70452 11.160216 1.3673039999999999 12.468C2.2933920000000003 14.295312000000001 3.9517680000000004 15.765336000000001 5.874624000000001 16.463376C6.4847280000000005 16.684872 7.057272 16.824432 7.716 16.912224000000002C8.155296 16.970784 9.295512 16.970448 9.72 16.911624C11.284583999999999 16.694856 12.52992 16.183608 13.74768 15.258168L13.99884 15.067295999999999 18.177408000000003 19.242C22.794984000000003 23.855304 22.438992 23.522688 22.760664000000002 23.524416C23.036928 23.525904 23.223888000000002 23.433552000000002 23.392656 23.212296C23.487047999999998 23.088528 23.525472 22.956864 23.524416 22.760664000000002C23.522688 22.438872 23.855688 22.795272 19.241471999999998 18.176904L15.06612 13.997784 15.257280000000002 13.748904C16.164888 12.56724 16.713768 11.23356 16.9104 9.732C16.959576000000002 9.356424 16.979208 8.500608 16.947648 8.107368000000001C16.858344000000002 6.994536000000001 16.585008000000002 6.001584 16.102488 5.037336000000001C14.87796 2.590272 12.533904 0.90744 9.84 0.541416C9.585216 0.506784 8.762784 0.451296 8.652000000000001 0.46123200000000003C8.6256 0.463608 8.523 0.46850400000000003 8.424 0.47212800000000005M8.158968 1.991976C7.07964 2.089632 6.011184 2.447208 5.124 3.0076799999999997C4.516776 3.391272 3.7454880000000004 4.10112 3.333 4.656C2.612496 5.625264 2.192112 6.658488 2.024568 7.872C1.9728 8.246903999999999 1.966512 9.115488000000001 2.0129520000000003 9.48C2.196168 10.918656 2.7660240000000003 12.181296 3.703296 13.225416C4.758144 14.400456 6.150072 15.146736 7.752 15.396168C8.089464 15.448704000000001 8.956176 15.469920000000002 9.324 15.434664C10.192848 15.351336 10.915632 15.146184 11.701584 14.759832000000001C12.385032 14.42388 12.85596 14.090592 13.412808 13.548792C13.990752 12.986424 14.395704 12.435696 14.742384 11.740536C15.084552 11.054400000000001 15.279623999999998 10.441104 15.400319999999999 9.672C15.462096 9.278304 15.462288 8.171712 15.400632 7.776C15.236616000000001 6.723264 14.869079999999999 5.767896 14.309616000000002 4.9400640000000005C14.087832000000002 4.611888 13.798728 4.266624 13.478040000000002 3.946968C12.922272 3.3930000000000002 12.415728 3.0294719999999997 11.724 2.688144C10.977744 2.319912 10.372176 2.132712 9.58704 2.027568C9.246264 1.98192 8.480903999999999 1.96284 8.158968 1.991976M5.1685680000000005 8.017848C5.000856 8.082504 4.84032 8.229840000000001 4.7610719999999995 8.391816C4.668816 8.580384 4.666584 8.834472 4.755504 9.024000000000001C4.834056 9.191448 4.9676160000000005 9.325296 5.136 9.405288L5.268 9.468 8.604000000000001 9.474744000000001C10.863936 9.479304 11.993184000000001 9.47328 12.104856000000002 9.456072C12.838536 9.343032000000001 12.985008 8.364647999999999 12.317496000000002 8.035896000000001L12.204 7.98 8.748 7.975128000000001C5.353104 7.970327999999999 5.289816 7.971096 5.1685680000000005 8.017848`,stroke:`none`,fill:`currentColor`,fillRule:`evenodd`})}),ng=(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,children:(0,x.jsx)(`path`,{d:`M5.22 3.758688C5.1936 3.7640640000000003 5.1126000000000005 3.780096 5.04 3.79428C4.9674 3.8084880000000005 4.8216 3.8616240000000004 4.716 3.9123599999999996C4.359096 4.083888 4.083096 4.360056 3.9127680000000002 4.716C3.7496400000000003 5.056968 3.7560000000000002 4.953168 3.7560000000000002 7.272C3.7560000000000002 9.366384 3.756144 9.372288000000001 3.8072880000000002 9.482928000000001C3.877704 9.635208 4.01736 9.783312 4.162488000000001 9.859632C4.267944 9.91512 4.31256 9.923568000000001 4.5 9.923615999999999C4.679016 9.92364 4.73364 9.914256 4.81908 9.8688C4.977768 9.784320000000001 5.10396 9.657168 5.17728 9.507864L5.244 9.372 5.256 7.362840000000001C5.26728 5.475504 5.270592000000001 5.351088 5.31084 5.31084C5.351088 5.270592000000001 5.475024 5.26728 7.350840000000001 5.256L9.348 5.244 9.47448 5.186832C9.633312 5.115048000000001 9.820992 4.914528 9.873456000000001 4.760568C9.922776 4.615848 9.922776 4.384152 9.873456000000001 4.239432C9.820992 4.085472 9.633312 3.8849519999999997 9.47448 3.813168L9.348 3.7560000000000002 7.308 3.7524480000000002C6.186 3.750504 5.2464 3.753312 5.22 3.758688M14.657616 3.769656C14.42928 3.824592 14.198136000000002 4.02936 14.126208 4.240416C14.0772 4.3842479999999995 14.077344000000002 4.6161840000000005 14.126544 4.760568C14.179008000000001 4.914528 14.366688 5.115048000000001 14.52552 5.186832L14.652000000000001 5.244 16.649160000000002 5.256C18.524976000000002 5.26728 18.648912 5.270592000000001 18.68916 5.31084C18.729408000000003 5.351088 18.73272 5.475504 18.744 7.362840000000001C18.75588 9.351768 18.756528000000003 9.373128000000001 18.807288 9.482928000000001C18.877704 9.635208 19.01736 9.783312 19.162488 9.859632C19.267944 9.91512 19.31256 9.923568000000001 19.5 9.923615999999999C19.679016 9.92364 19.73364 9.914256 19.81908 9.8688C19.977768 9.784320000000001 20.10396 9.657168 20.17728 9.507864L20.244 9.372 20.244 7.272C20.244 4.953168 20.25036 5.056968 20.087232 4.716C19.922088 4.3708800000000005 19.646016 4.089576 19.308 3.922008C18.958752 3.7488960000000002 19.102176 3.758592 16.812 3.753C15.64188 3.75012 14.708856 3.7573440000000002 14.657616 3.769656M4.296 14.085023999999999C4.080744 14.155800000000001 3.9007680000000002 14.31492 3.8072880000000002 14.517072C3.756144 14.627712000000002 3.7560000000000002 14.633616000000002 3.7560000000000002 16.728C3.7560000000000002 19.046832000000002 3.7496400000000003 18.943032000000002 3.9127680000000002 19.284C4.08324 19.640256 4.359744 19.91676 4.716 20.087232C5.056872 20.250312 4.954368 20.244 7.26 20.244L9.348 20.244 9.47448 20.186832000000003C9.633312 20.115047999999998 9.820992 19.914528 9.873456000000001 19.760568C9.922776 19.615848 9.922776 19.384152 9.873456000000001 19.239432C9.820992 19.085472 9.633312 18.884952000000002 9.47448 18.813167999999997L9.348 18.756 7.350840000000001 18.744C5.475024 18.73272 5.351088 18.729408000000003 5.31084 18.68916C5.270592000000001 18.648912 5.26728 18.524496000000003 5.256 16.63716C5.24412 14.648232 5.243472000000001 14.626872 5.192712 14.517072C5.0662080000000005 14.24352 4.831824 14.084904 4.5360000000000005 14.072712000000001C4.437 14.068655999999999 4.329 14.074176 4.296 14.085023999999999M19.296 14.085023999999999C19.080744 14.155800000000001 18.900768000000003 14.31492 18.807288 14.517072C18.756528000000003 14.626872 18.75588 14.648232 18.744 16.63716C18.73272 18.524496000000003 18.729408000000003 18.648912 18.68916 18.68916C18.648912 18.729408000000003 18.524976000000002 18.73272 16.649160000000002 18.744L14.652000000000001 18.756 14.52552 18.813167999999997C14.366688 18.884952000000002 14.179008000000001 19.085472 14.126544 19.239432C14.077224000000001 19.384152 14.077224000000001 19.615848 14.126544 19.760568C14.179008000000001 19.914528 14.366688 20.115047999999998 14.52552 20.186832000000003L14.652000000000001 20.244 16.740000000000002 20.244C19.045632 20.244 18.943128 20.250312 19.284 20.087232C19.640256 19.91676 19.91676 19.640256 20.087232 19.284C20.25036 18.943032000000002 20.244 19.046832000000002 20.244 16.728C20.244 14.633616000000002 20.243856 14.627712000000002 20.192712 14.517072C20.066208 14.24352 19.831824 14.084904 19.536 14.072712000000001C19.437 14.068655999999999 19.329 14.074176 19.296 14.085023999999999`,stroke:`none`,fill:`currentColor`,fillRule:`evenodd`})}),rg=(0,x.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,style:{fill:`none`},stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,x.jsx)(`rect`,{x:`3`,y:`3`,width:`7`,height:`7`,rx:`1`}),(0,x.jsx)(`rect`,{x:`14`,y:`3`,width:`7`,height:`5`,rx:`1`}),(0,x.jsx)(`rect`,{x:`14`,y:`12`,width:`7`,height:`9`,rx:`1`}),(0,x.jsx)(`rect`,{x:`3`,y:`14`,width:`7`,height:`7`,rx:`1`})]}),ig=(0,x.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,style:{fill:`none`},stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,x.jsx)(`path`,{d:`m7 15 5 5 5-5`}),(0,x.jsx)(`path`,{d:`m7 9 5-5 5 5`})]}),ag=(0,x.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,style:{fill:`none`},stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,x.jsx)(`path`,{d:`m7 20 5-5 5 5`}),(0,x.jsx)(`path`,{d:`m7 4 5 5 5-5`})]}),og=(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,style:{fill:`none`},stroke:`currentColor`,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,x.jsx)(`path`,{d:`M3.5 4.5h17l-6.5 7.8v6.9l-4 2.3v-9.2z`})}),sg=(0,x.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,style:{fill:`none`},stroke:`currentColor`,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,x.jsx)(`rect`,{x:`2.75`,y:`2.75`,width:`18.5`,height:`18.5`,rx:`2.5`}),(0,x.jsx)(`rect`,{x:`6.75`,y:`6.75`,width:`6`,height:`5`,rx:`1`}),(0,x.jsx)(`rect`,{x:`6.75`,y:`14`,width:`10.5`,height:`3.25`,rx:`1`})]}),cg=(0,x.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,style:{fill:`none`},stroke:`currentColor`,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,x.jsx)(`rect`,{x:`3.25`,y:`3.75`,width:`17.5`,height:`16.5`,rx:`2`}),(0,x.jsx)(`path`,{d:`M3.25 9h17.5M3.25 14.5h17.5M9.5 9v11.25`})]}),lg=(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,style:{fill:`none`},stroke:`currentColor`,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,x.jsx)(`path`,{d:`M9 3.75H3.75V9M15 3.75h5.25V9M15 20.25h5.25V15M9 20.25H3.75V15`})}),ug=1;function dg(e){try{let t=localStorage.getItem(e);if(!t)return null;let n=JSON.parse(t);return n?.v===ug?n:null}catch{return null}}function fg(e,t){try{localStorage.setItem(e,JSON.stringify({v:ug,...t}))}catch{}}function pg(e){return e?`semviz:v${ug}:${e}`:null}function mg(e){if(!e)return null;let t=dg(e);return t?{positions:t.positions||{},toggles:t.toggles||null}:null}function hg(e,t,n){if(!e)return;let r=dg(e)||{},i={...r.positions||{}};i[t]=Object.fromEntries(n.map(e=>[e.id,{x:e.position.x,y:e.position.y}])),fg(e,{...r,positions:i})}function gg(e,t){if(!e)return;let n=dg(e);if(!n?.positions)return;let r={...n.positions};delete r[t],fg(e,{...n,positions:r})}function _g(e,t){e&&fg(e,{...dg(e)||{},toggles:t})}var vg={entity:Sm,metric:Sm,property:Sm,shared_property:Sm,group:Xm,collapsed_group:Xm},yg={entity:Om,metric:Om,property:Sm,shared_property:Sm,group:Xm,collapsed_group:Xm},bg={floating:eh};function xg(e){let t={};e.edges.forEach(e=>{t[e.source]=(t[e.source]||0)+1,t[e.target]=(t[e.target]||0)+1});let n=e.nodes.map(e=>({id:e.id,type:e.type||`entity`,parentId:e.parentId||void 0,position:{x:0,y:0},data:{...e.data,connections:t[e.id]||0}})),r={};e.edges.forEach(e=>{let t=[e.source,e.target].sort().join(`::`);r[t]=(r[t]||0)+1});let i={},a={};return e.edges.forEach(e=>{let t=[e.source,e.target].sort().join(`::`);i[t]||(i[t]=0),a[e.id]={index:i[t]++,total:r[t]}}),{nodes:n,edges:e.edges.map(e=>{let t=_m[e.diff],n=t?t.color:`#94a3b8`;return{id:e.id,source:e.source,target:e.target,label:e.label,type:`floating`,data:{label:e.label,parallel:a[e.id],diff:e.diff,diffDetail:e.diffDetail},style:{stroke:n,strokeWidth:t?2.5:1.5,...e.diff===`remove`?{strokeDasharray:`6 4`}:{}},markerEnd:{type:Da.ArrowClosed,color:n,width:14,height:14},labelStyle:t?{fontSize:11,fill:n,fontWeight:700}:{fontSize:10,fill:`#64748b`,fontWeight:500},labelBgStyle:{fill:`#fff`,fillOpacity:.9},labelBgPadding:[4,2],zIndex:t?5:0}})}}function Sg(e){return e?e*.6180339887*Math.PI*2:0}function Cg(e){let t=(e|0)*1664525+1013904223>>>0||1;return()=>(t=t*1664525+1013904223>>>0,t/4294967296)}function wg(e,t,n,r,i){let a=e.length;if(a===1)return{[e[0].id]:{x:0,y:0}};let o=a>50,s=n?-3e3:o?-1200:-500,c=n?450:o?250:200,l=n?200:o?80:90,u=e=>{let t=r&&r[e];return t?Math.max(l,Math.hypot(t.width,t.height)/2+20):l},d=Math.max(a*5,300),f=Sg(i),p=e.map((e,t)=>({id:e.id,x:Math.cos(2*Math.PI*t/a+f)*d,y:Math.sin(2*Math.PI*t/a+f)*d})),m=t.map(e=>({source:e.source,target:e.target})),h=mm().strength(s);o&&h.theta(1.2);let g=o?.08:.05,_=pm(p).randomSource(Cg(i+a)).force(`link`,im(m).id(e=>e.id).distance(c).strength(o?.3:1)).force(`charge`,h).force(`center`,Op(0,0)).force(`x`,hm(0).strength(g)).force(`y`,gm(0).strength(g)).force(`collide`,tm(e=>u(e.id))).alphaDecay(o?.04:.0228).stop(),v=o?250:300;for(let e=0;e{y[e.id]={x:isFinite(e.x)?e.x:t*100,y:isFinite(e.y)?e.y:t*100}}),y}function Tg(e,t,{entityMode:n=!1,nodeSizes:r=null,seed:i=0}={}){let a={};e.forEach(e=>{a[e.id]=[]}),t.forEach(e=>{a[e.source].push(e.target),a[e.target].push(e.source)});let o=new Set,s=[];e.forEach(e=>{if(o.has(e.id))return;let t=[],n=[e.id];for(;n.length;){let e=n.pop();o.has(e)||(o.add(e),t.push(e),a[e].forEach(e=>{o.has(e)||n.push(e)}))}s.push(t)}),s.sort((e,t)=>t.length-e.length);let c={};e.forEach(e=>{c[e.id]=e});let l=s.map(e=>{let a=new Set(e),o=wg(e.map(e=>c[e]),t.filter(e=>a.has(e.source)&&a.has(e.target)),n,r,i),s=e=>r&&r[e]?r[e].width/2:0,l=e=>r&&r[e]?r[e].height/2:0,u=1/0,d=1/0,f=-1/0,p=-1/0;return e.forEach(e=>{u=Math.min(u,o[e].x-s(e)),d=Math.min(d,o[e].y-l(e)),f=Math.max(f,o[e].x+s(e)),p=Math.max(p,o[e].y+l(e))}),e.forEach(e=>{o[e].x-=u,o[e].y-=d}),{ids:e,posById:o,width:f-u,height:p-d}}),u=n?300:150,d={};if(l.length===1){let e=l[0];e.ids.forEach(t=>{d[t]=e.posById[t]})}else{let e=l[0];e.ids.forEach(t=>{d[t]=e.posById[t]});let t=e.width+u*2,n=0,r=0;for(let i=1;i0&&n+a.height>e.height&&(t+=r+u*2,n=0,r=0),a.ids.forEach(e=>{d[e]={x:t+a.posById[e].x,y:n+a.posById[e].y}}),r=Math.max(r,a.width),n+=a.height+u}}return{nodes:e.map(e=>({...e,position:d[e.id]})),edges:t}}var Eg=78,Dg=180,Og=56,kg=320,Ag=110,jg=240,Mg=40,Ng=27,Pg=8;function Fg(e,t){if(t&&(e.type===`entity`||e.type===`metric`)){let t=e.data?.properties?.length||0;return{width:jg,height:Mg+(t===0?1:Math.min(t,Pg))*Ng}}return{width:Dg,height:Og}}function Ig(e,t,{entityMode:n=!1,seed:r=0}={}){let i={},a={};e.forEach(e=>{a[e.id]=e}),e.forEach(e=>{let t=e.parentId||`__root__`;i[t]||(i[t]=[]),i[t].push(e)});let o=e=>{let t=a[e];return t&&t.parentId?t.parentId:null},s=(e,t)=>{let n=e;for(;n;){if((o(n)||`__root__`)===t)return n;n=o(n)}return null},c={},l={};function u(e){let a=i[e]||[];if(a.length===0)return;a.forEach(e=>{e.type===`group`&&u(e.id)});let o=a.map(e=>e.id),d=new Set(o),f=new Set,p=[];t.forEach(t=>{let n=d.has(t.source)?t.source:s(t.source,e),r=d.has(t.target)?t.target:s(t.target,e);if(!n||!r||n===r)return;let i=n{e.type===`group`?m[e.id]=l[e.id]||{width:200,height:120}:e.type===`collapsed_group`?m[e.id]={width:kg,height:Ag}:m[e.id]=Fg(e,n)});let{nodes:h}=Tg(a,p,{nodeSizes:m,entityMode:n,seed:r}),g=e===`__root__`?0:106,_=e===`__root__`?0:Eg,v=0,y=0;h.forEach(e=>{let t=m[e.id],n=e.position.x-t.width/2+_,r=e.position.y-t.height/2+g;c[e.id]={x:n,y:r},v=Math.max(v,n+t.width),y=Math.max(y,r+t.height)}),e!==`__root__`&&(l[e]={width:v+Eg,height:y+Eg})}u(`__root__`);let d=e=>{let t=0,n=o(e);for(;n;)t++,n=o(n);return t},f=e.map(e=>({n:e,d:d(e.id)}));return f.sort((e,t)=>e.d-t.d),{nodes:f.map(({n:e})=>{let t=c[e.id]||{x:0,y:0},n={...e,position:t};if(e.type===`group`||e.type===`collapsed_group`){let t=e.type===`collapsed_group`?{width:kg,height:Ag}:l[e.id]||{width:200,height:120};n.style={width:t.width,height:t.height,background:`transparent`,border:`none`,boxShadow:`none`,padding:0,borderRadius:0}}return e.parentId&&(n.parentId=e.parentId,n.extent=`parent`),n}),edges:t}}function Lg(e,t){let n={},r={};t.forEach(e=>{n[e.target]||(n[e.target]=[]),n[e.target].push(e.source),r[e.source]=e.target});let i=e.filter(e=>!r[e.id]).map(e=>e.id);i.length===0&&e.length>0&&i.push(e[0].id);let a={},o=[],s=new Set,c=i.map(e=>({id:e,level:0}));for(i.forEach(e=>s.add(e));c.length>0;){let{id:e,level:t}=c.shift();a[e]=t,o.push(e),(n[e]||[]).forEach(e=>{s.has(e)||(s.add(e),c.push({id:e,level:t+1}))})}e.forEach(e=>{s.has(e.id)||(a[e.id]=0,o.push(e.id))});let l={};o.forEach(e=>{let t=a[e];l[t]||(l[t]=[]),l[t].push(e)});let u={};return Object.entries(l).forEach(([e,t])=>{let n=(t.length-1)*250;t.forEach((t,r)=>{u[t]={x:-n/2+r*250,y:parseInt(e)*120}})}),{nodes:e.map(e=>({...e,position:u[e.id]||{x:0,y:0}})),edges:t}}function Rg(e){let t={},n={};return e.forEach(e=>{t[e.source]||(t[e.source]=new Set),t[e.target]||(t[e.target]=new Set),t[e.source].add(e.target),t[e.target].add(e.source),n[e.source]||(n[e.source]=new Set),n[e.target]||(n[e.target]=new Set),n[e.source].add(e.id),n[e.target].add(e.id)}),{neighborNodes:t,neighborEdges:n}}function zg({nodes:e,edges:t},n){if(n.size===0)return{nodes:e,edges:t};let r=new Map(e.map(e=>[e.id,e])),i=e=>r.get(e)?.parentId,a=new Map,o=new Map;e.forEach(e=>{let t=null,r=e.id;for(;r;)n.has(r)&&(t=r),r=i(r);a.set(e.id,t||e.id),t&&t!==e.id&&e.type!==`group`&&o.set(t,(o.get(t)||0)+1)});let s=e.filter(e=>a.get(e.id)===e.id).map(e=>{if(!n.has(e.id))return e;let{parentId:t,extent:r,...i}=e;return{...i,type:`collapsed_group`,data:{...e.data,collapsed:!0,memberCount:o.get(e.id)||0}}}),c=new Map;t.forEach(e=>{let t=a.get(e.source)||e.source,n=a.get(e.target)||e.target;if(t===n)return;let r=`${t}::${n}`,i=c.get(r);i||(i={source:t,target:n,originals:[]},c.set(r,i)),i.originals.push(e)});let l=[];return c.forEach(({source:e,target:t,originals:n})=>{if(n.length===1&&n[0].source===e&&n[0].target===t){l.push(n[0]);return}let r=n[0],i=n.length;l.push({...r,id:`col-${e}-${t}`,source:e,target:t,label:`× ${i}`})}),{nodes:s,edges:l}}var Bg=e=>({width:32,height:32,borderRadius:6,background:e?`#eef2ff`:`#fff`,padding:0,color:e?`#4f46e5`:`#4b5563`,boxShadow:`0 1px 2px 0 rgba(0,0,0,0.05)`,border:`1px solid ${e?`#a5b4fc`:`#d1d5db`}`,cursor:`pointer`,display:`inline-flex`,alignItems:`center`,justifyContent:`center`}),Vg={width:17,height:17,display:`block`};function Hg({customHeight:e,containerRef:t}){let{t:n}=Ep(),{fitView:r}=vl(),[i,a]=(0,y.useState)(!1);return(0,x.jsx)(`button`,{onClick:(0,y.useCallback)(()=>{let n=t.current?.closest(`.semantic-visualizer`);n&&(i?(n.style.height=e,a(!1)):(n.style.height=`100vh`,a(!0)),setTimeout(()=>{r(),n.scrollIntoView(!0)},0))},[i,e,r,t]),style:Bg(i),title:n(i?`controls.shrink`:`controls.enlarge`),"aria-label":n(i?`controls.shrink`:`controls.enlarge`),"aria-pressed":i,onMouseOver:e=>{i||(e.currentTarget.style.background=`#f9fafb`)},onMouseOut:e=>{i||(e.currentTarget.style.background=`#fff`)},children:(0,x.jsx)(`span`,{style:Vg,"aria-hidden":`true`,children:lg})})}function Ug({graphData:e,changes:t,targetName:n,onDecide:r,customHeight:i,layout:a,storageKey:o,showMiniMap:s}){let{t:c}=Ep(),{fitView:l,getNodes:u,zoomIn:d,zoomOut:f,setCenter:p,getViewport:m,getNodesBounds:h}=vl(),g=bc(),_=(0,y.useRef)(null),v=(0,y.useRef)(null),b=K(e=>e.width),[S,C]=(0,y.useState)(null),w=t||e.changes||[],[T,E]=(0,y.useState)(()=>new Set),[D,O]=(0,y.useState)(null),k=(0,y.useMemo)(()=>{let e=new Map;return w.forEach(t=>{e.set(t.externalId,t),(t.properties||[]).forEach(n=>e.set(n.externalId,t))}),e},[w]),A=(0,y.useMemo)(()=>{let e=new Map;return w.forEach(t=>(t.properties||[]).forEach(t=>e.set(t.externalId,t))),e},[w]),j=(0,y.useMemo)(()=>{let e=new Map;return w.forEach(t=>(t.relationships||[]).forEach(t=>e.set(t.externalId,t))),e},[w]),M=e=>k.get(e?.data?.externalId)?.externalId,N=(0,y.useMemo)(()=>w.length?{...e,edges:(e.edges||[]).map(e=>{let t=j.get(e.externalId);return t?{...e,diff:t.op,data:{...e.data,diff:t.op}}:e}),nodes:e.nodes.map(e=>{let t=k.get(e.data?.externalId),n=(e.data?.properties||[]).map(e=>{let t=A.get(e.externalId);return t?{...e,diff:t.op,diffDetail:{fields:t.fields||[]}}:e}),r=new Set(n.map(e=>e.externalId)),i=(t?.properties||[]).filter(e=>e.op===`remove`&&!r.has(e.externalId)).map(e=>({externalId:e.externalId,name:e.name||e.externalId,description:null,shared:!1,inherited:!1,diff:`remove`,diffDetail:{fields:e.fields||[]}})),a=[...n,...i],o=t&&t.externalId===e.data?.externalId?t:null;return!o&&a===e.data?.properties?e:{...e,data:{...e.data,properties:a,...o?{diff:o.op,diffDetail:{op:o.op,impact:o.impact?.toLowerCase(),fields:o.fields||[]},evidence:o.evidence||[],evidenceMissing:!o.evidence||o.evidence.length===0}:{}}}})}:e,[e,w,k,A,j]),[P,ee]=(0,y.useState)(null),F=(0,y.useMemo)(()=>N.nodes.some(e=>(e.data?.properties||[]).some(e=>e.highlight)),[N]),I=(0,y.useMemo)(()=>mg(o),[o])?.toggles,[L,te]=(0,y.useState)(I?.showProperties??F),R=(0,y.useMemo)(()=>N.nodes.some(e=>e.type===`group`),[N]),[z,B]=(0,y.useState)(I?.showGroups??!1),[V,ne]=(0,y.useState)(!0),[re,ie]=(0,y.useState)(()=>new Set(I?.collapsedGroups||[])),[ae,oe]=(0,y.useState)(0),se=a===`tree`,ce=R&&z&&!se,le=(0,y.useMemo)(()=>N.nodes.some(e=>e.data?.diff||e.data?.changedPropertyCount>0)||N.edges.some(e=>e.diff),[N]),ue=L&&!se?yg:vg,de=(0,y.useCallback)(e=>{ie(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),fe=(0,y.useCallback)(e=>{let t=N.nodes.find(t=>t.id===e);if(!t)return;let n=t.parentId||null,r=N.nodes.filter(t=>t.type===`group`&&t.id!==e&&(t.parentId||null)===n);ie(t=>{let n=new Set(t);return r.forEach(e=>n.add(e.id)),n.delete(e),n})},[N]),pe=(0,y.useCallback)(()=>{ie(new Set)},[]),me=(0,y.useCallback)(()=>{let e=N.nodes.filter(e=>e.type===`group`).map(e=>e.id);ie(new Set(e))},[N]),he=(0,y.useMemo)(()=>{let e=N.nodes.filter(e=>e.type===`group`).map(e=>e.id);return R&&e.every(e=>re.has(e))},[N,re,R]),ge=(0,y.useCallback)(()=>{he?pe():me()},[he,pe,me]),_e=`${se?`tree`:ce?`groups`:`flat`}:${L?`erd`:`simple`}`,ve=(0,y.useCallback)(e=>{let t=mg(o)?.positions?.[_e];return t?e.map(e=>t[e.id]?{...e,position:t[e.id]}:e):e},[o,_e]),ye=(0,y.useMemo)(()=>N.nodes.some(e=>e.data?.searchMatch===!1),[N]);(0,y.useEffect)(()=>{_g(o,{showProperties:L,showGroups:z,collapsedGroups:Array.from(re)})},[o,L,z,re]);let be=(0,y.useCallback)(()=>{ye||hg(o,_e,u())},[o,_e,u,ye]),xe=(0,y.useCallback)(()=>{gg(o,_e),oe(e=>e+1)},[o,_e]),Se=(0,y.useMemo)(()=>({toggleCollapse:de,collapsedSet:re}),[de,re]),Ce=(0,y.useMemo)(()=>{let e=N;if(V&&le){let t=new Set(e.nodes.filter(e=>e.data?.diff||e.data?.changedPropertyCount>0).map(e=>e.id));e.edges.forEach(e=>{e.diff&&(t.add(e.source),t.add(e.target))});let n=new Set;e.edges.forEach(e=>{t.has(e.source)&&n.add(e.target),t.has(e.target)&&n.add(e.source)});let r=e.nodes.filter(e=>t.has(e.id)||n.has(e.id)||e.type===`group`).map(e=>t.has(e.id)||e.type===`group`?e:{...e,data:{...e.data,dimmed:!0}}),i=new Set(r.map(e=>e.id));e={nodes:r,edges:e.edges.filter(e=>i.has(e.source)&&i.has(e.target))}}if(L&&!se){let t=e.nodes.filter(e=>e.type!==`shared_property`),n=new Set(t.map(e=>e.id));e={nodes:t,edges:e.edges.filter(e=>n.has(e.source)&&n.has(e.target))}}if(ce)re.size>0&&(e=zg(e,re));else{let t=e.nodes.filter(e=>e.type!==`group`).map(({parentId:e,...t})=>t),n=new Set(t.map(e=>e.id));e={nodes:t,edges:e.edges.filter(e=>n.has(e.source)&&n.has(e.target))}}let{nodes:t,edges:n}=xg(e);return se?Lg(t,n):ce?Ig(t,n,{entityMode:L,seed:ae}):Tg(t,n,{entityMode:L,seed:ae})},[N,L,se,ce,re,ae,V,le]),we=(0,y.useMemo)(()=>Rg(Ce.edges),[Ce.edges]),Te=(0,y.useMemo)(()=>{if(P){let e=new Set([P.source,P.target]);return Ce.nodes.map(t=>({...t,data:{...t.data,dimmed:!e.has(t.id),selected:!1}}))}if(S){let e=new Set([S.id]);return(we.neighborNodes[S.id]||new Set).forEach(t=>e.add(t)),Ce.nodes.map(t=>({...t,data:{...t.data,dimmed:!e.has(t.id),selected:t.id===S.id}}))}return Ce.nodes.some(e=>e.data?.searchMatch===!1)?Ce.nodes.map(e=>{let t=e.type===`group`||e.type===`collapsed_group`||e.data?.searchMatch===!1;return{...e,data:{...e.data,dimmed:t}}}):Ce.nodes},[Ce.nodes,S,P,we]),Ee=(0,y.useMemo)(()=>{if(P)return Ce.edges.map(e=>e.id===P.id?{...e,style:{...e.style,strokeWidth:3.5},zIndex:10}:{...e,style:{...e.style,stroke:`#e2e8f0`,strokeWidth:1},markerEnd:{type:Da.ArrowClosed,color:`#e2e8f0`,width:14,height:14},data:{...e.data,dimmed:!0},labelStyle:{fontSize:10,fill:`#e2e8f0`,fontWeight:500},labelBgStyle:{fill:`#fff`,fillOpacity:.5},zIndex:0});if(S){let e=we.neighborEdges[S.id]||new Set;return Ce.edges.map(t=>{let n=e.has(t.id),r=_m[t.data?.diff],i=r?r.color:`#6366f1`;return{...t,style:{...t.style,stroke:n?i:`#e2e8f0`,strokeWidth:n?2.5:1},markerEnd:{type:Da.ArrowClosed,color:n?i:`#e2e8f0`,width:14,height:14},data:{...t.data,dimmed:!n},labelStyle:n?{fontSize:11,fill:r?i:`#4338ca`,fontWeight:r?700:600}:{fontSize:10,fill:`#e2e8f0`,fontWeight:500},labelBgStyle:n?{fill:`#eef2ff`,fillOpacity:1}:{fill:`#fff`,fillOpacity:.5},zIndex:n?10:0}})}let e=new Set(Ce.nodes.filter(e=>e.data?.searchMatch!==!1).map(e=>e.id));return e.sizee.has(t.source)&&e.has(t.target)?t:{...t,style:{stroke:`#e2e8f0`,strokeWidth:1},markerEnd:{type:Da.ArrowClosed,color:`#e2e8f0`,width:14,height:14},data:{...t.data,dimmed:!0},labelStyle:{fontSize:10,fill:`#e2e8f0`,fontWeight:500},labelBgStyle:{fill:`#fff`,fillOpacity:.5}}):Ce.edges},[Ce.edges,S,P,we,Ce.nodes]),[De,Oe,ke]=xd(ye?Te:ve(Te)),[Ae,je,Me]=Sd(Ee),[Ne,Pe]=(0,y.useState)(Ce),[Fe,Ie]=(0,y.useState)(Ee),[Le,Re]=(0,y.useState)(N);if(Ce!==Ne){Pe(Ce);let e=N!==Le;e&&Re(N),e&&ye?(Oe(Te),setTimeout(()=>l({padding:.1,maxZoom:1.5}),0)):Oe(ve(Te)),je(Ee),Ie(Ee)}else Ee!==Fe&&(Ie(Ee),Oe(e=>e.map(e=>{let t=Te.find(t=>t.id===e.id);return t?{...e,data:t.data}:e})),je(Ee));let ze=(0,y.useCallback)(e=>{if(!e)return;let t=h([e],{nodeLookup:g.getState().nodeLookup});!t||!t.width||p(t.x+t.width/2,t.y+t.height/2,{zoom:m().zoom,duration:400})},[h,m,p,g]);(0,y.useEffect)(()=>{S&&ze(S)},[S,b,ze]);let Be=(0,y.useCallback)((e,t)=>{ee(null);let n=S?.id===t.id;C(n?null:t);let r=M(t);if(r===void 0)return;O(n?null:r);let i=e.metaKey||e.ctrlKey||e.shiftKey;E(e=>{let t=new Set(i?e:[]);return i&&e.has(r)?t.delete(r):n&&!i||t.add(r),t})},[S,M]),Ve=(0,y.useCallback)((e,t)=>{C(null),ee(e=>e?.id===t.id?null:t)},[]),He=(0,y.useCallback)(()=>{C(null),ee(null)},[]),Ue=(0,x.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[le&&(0,x.jsx)(`button`,{onClick:()=>{ne(e=>!e),setTimeout(()=>l({padding:.1,maxZoom:1.5}),0)},style:Bg(V),onMouseOver:e=>{V||(e.currentTarget.style.background=`#f9fafb`)},onMouseOut:e=>{V||(e.currentTarget.style.background=`#fff`)},title:c(`toolbar.changesOnly.title`),"aria-label":c(`toolbar.changesOnly.label`),"aria-pressed":V,children:(0,x.jsx)(`span`,{style:Vg,"aria-hidden":`true`,children:og})}),!se&&R&&(0,x.jsx)(`button`,{onClick:()=>{B(e=>!e),setTimeout(()=>l({padding:.1,maxZoom:1.5}),0)},style:Bg(z),onMouseOver:e=>{z||(e.currentTarget.style.background=`#f9fafb`)},onMouseOut:e=>{z||(e.currentTarget.style.background=`#fff`)},title:c(`toolbar.showGroups.title`),"aria-label":c(`toolbar.showGroups.label`),"aria-pressed":z,children:(0,x.jsx)(`span`,{style:Vg,"aria-hidden":`true`,children:sg})}),!se&&(0,x.jsx)(`button`,{onClick:()=>{te(e=>!e),setTimeout(()=>l({padding:.1,maxZoom:1.5}),0)},style:Bg(L),onMouseOver:e=>{L||(e.currentTarget.style.background=`#f9fafb`)},onMouseOut:e=>{L||(e.currentTarget.style.background=`#fff`)},title:c(`toolbar.erd.title`),"aria-label":c(`toolbar.erd.label`),"aria-pressed":L,children:(0,x.jsx)(`span`,{style:Vg,"aria-hidden":`true`,children:cg})}),(0,x.jsx)(Hg,{customHeight:i||`400px`,containerRef:_})]});return(0,x.jsx)(km.Provider,{value:Se,children:(0,x.jsxs)(`div`,{ref:_,style:{width:`100%`,height:`100%`,display:`flex`,minWidth:0},children:[(0,x.jsx)($h,{changes:w,targetName:n,selectedIds:T,onSelectionChange:E,onFocus:e=>{O(e);let t=u().find(t=>M(t)===e);C(t||null),t&&ee(null)},onDecide:r?(e,t)=>r({decision:e,externalIds:t}):void 0}),(0,x.jsx)(`div`,{ref:v,style:{flex:1,minWidth:0,position:`relative`},children:(0,x.jsxs)(yd,{nodes:De,edges:Ae,onNodesChange:ke,onEdgesChange:Me,nodeTypes:ue,edgeTypes:bg,fitView:!0,fitViewOptions:{padding:.1,maxZoom:1.5},nodesDraggable:!0,nodesConnectable:!1,elementsSelectable:!0,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!0,preventScrolling:!1,minZoom:.1,maxZoom:2,onNodeClick:Be,onEdgeClick:Ve,onPaneClick:He,onNodeDragStop:be,children:[(0,x.jsx)(Ad,{color:`#e2e8f0`,gap:20}),(0,x.jsxs)(zd,{position:`bottom-left`,showZoom:!1,showFitView:!1,showInteractive:!1,children:[!se&&R&&(0,x.jsx)(Id,{onClick:()=>{ge(),setTimeout(()=>l({padding:.1,maxZoom:1.5}),50)},title:c(he?`controls.expandAll`:`controls.collapseAll`),"aria-label":c(he?`controls.expandAll`:`controls.collapseAll`),children:he?ig:ag}),(0,x.jsx)(Id,{onClick:()=>{xe(),setTimeout(()=>l({padding:.1,maxZoom:1.5}),50)},title:c(`controls.autoLayout.title`),"aria-label":c(`controls.autoLayout.label`),children:rg}),(0,x.jsx)(Id,{onClick:()=>d(),title:c(`controls.zoomIn`),"aria-label":c(`controls.zoomIn`),children:eg}),(0,x.jsx)(Id,{onClick:()=>f(),title:c(`controls.zoomOut`),"aria-label":c(`controls.zoomOut`),children:tg}),(0,x.jsx)(Id,{onClick:()=>l({padding:.3,maxZoom:1}),title:c(`controls.fitView`),"aria-label":c(`controls.fitView`),children:ng})]}),s&&(0,x.jsx)(nf,{zoomable:!0,pannable:!0}),(0,x.jsx)(Ac,{position:`top-right`,children:Ue})]})}),(0,x.jsx)(hh,{selection:T.size>1?w.filter(e=>T.has(e.externalId)).map(e=>({key:e.externalId,change:e,node:u().find(t=>M(t)===e.externalId)||null})):void 0,node:S,change:w.find(e=>e.externalId===D)||null,changesOnly:V,edge:P,graphData:N,isCollapsed:S?re.has(S.id):!1,onToggleCollapse:de,onCollapseOthers:fe,onExpandAll:pe,onClose:()=>{C(null),ee(null),O(null)}})]})})}var{slice:Wg,forEach:Gg}=[];function Kg(e){return Gg.call(Wg.call(arguments,1),t=>{if(t)for(let n in t)e[n]===void 0&&(e[n]=t[n])}),e}function qg(e){return typeof e==`string`&&[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(t=>t.test(e))}var Jg=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,Yg=function(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:`/`},r=`${e}=${encodeURIComponent(t)}`;if(n.maxAge>0){let e=n.maxAge-0;if(Number.isNaN(e))throw Error(`maxAge should be a Number`);r+=`; Max-Age=${Math.floor(e)}`}if(n.domain){if(!Jg.test(n.domain))throw TypeError(`option domain is invalid`);r+=`; Domain=${n.domain}`}if(n.path){if(!Jg.test(n.path))throw TypeError(`option path is invalid`);r+=`; Path=${n.path}`}if(n.expires){if(typeof n.expires.toUTCString!=`function`)throw TypeError(`option expires is invalid`);r+=`; Expires=${n.expires.toUTCString()}`}if(n.httpOnly&&(r+=`; HttpOnly`),n.secure&&(r+=`; Secure`),n.sameSite)switch(typeof n.sameSite==`string`?n.sameSite.toLowerCase():n.sameSite){case!0:r+=`; SameSite=Strict`;break;case`lax`:r+=`; SameSite=Lax`;break;case`strict`:r+=`; SameSite=Strict`;break;case`none`:r+=`; SameSite=None`;break;default:throw TypeError(`option sameSite is invalid`)}return n.partitioned&&(r+=`; Partitioned`),r},Xg={create(e,t,n,r){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:`/`,sameSite:`strict`};n&&(i.expires=new Date,i.expires.setTime(i.expires.getTime()+n*60*1e3)),r&&(i.domain=r),document.cookie=Yg(e,t,i)},read(e){let t=`${e}=`,n=document.cookie.split(`;`);for(let e=0;e-1&&(e=window.location.hash.substring(window.location.hash.indexOf(`?`)));let r=e.substring(1).split(`&`);for(let e=0;e0&&r[e].substring(0,i)===t&&(n=r[e].substring(i+1))}}return n}},$g={name:`hash`,lookup(e){let{lookupHash:t,lookupFromHashIndex:n}=e,r;if(typeof window<`u`){let{hash:e}=window.location;if(e&&e.length>2){let i=e.substring(1);if(t){let e=i.split(`&`);for(let n=0;n0&&e[n].substring(0,i)===t&&(r=e[n].substring(i+1))}}if(r)return r;if(!r&&n>-1){let t=e.match(/\/([a-zA-Z-]*)/g);return Array.isArray(t)?t[typeof n==`number`?n:0]?.replace(`/`,``):void 0}}}return r}},e_=null,t_=()=>{if(e_!==null)return e_;try{if(e_=typeof window<`u`&&window.localStorage!==null,!e_)return!1;let e=`i18next.translate.boo`;window.localStorage.setItem(e,`foo`),window.localStorage.removeItem(e)}catch{e_=!1}return e_},n_={name:`localStorage`,lookup(e){let{lookupLocalStorage:t}=e;if(t&&t_())return window.localStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupLocalStorage:n}=t;n&&t_()&&window.localStorage.setItem(n,e)}},r_=null,i_=()=>{if(r_!==null)return r_;try{if(r_=typeof window<`u`&&window.sessionStorage!==null,!r_)return!1;let e=`i18next.translate.boo`;window.sessionStorage.setItem(e,`foo`),window.sessionStorage.removeItem(e)}catch{r_=!1}return r_},a_={name:`sessionStorage`,lookup(e){let{lookupSessionStorage:t}=e;if(t&&i_())return window.sessionStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupSessionStorage:n}=t;n&&i_()&&window.sessionStorage.setItem(n,e)}},o_={name:`navigator`,lookup(e){let t=[];if(typeof navigator<`u`){let{languages:e,userLanguage:n,language:r}=navigator;if(e)for(let n=0;n0?t:void 0}},s_={name:`htmlTag`,lookup(e){let{htmlTag:t}=e,n,r=t||(typeof document<`u`?document.documentElement:null);return r&&typeof r.getAttribute==`function`&&(n=r.getAttribute(`lang`)),n}},c_={name:`path`,lookup(e){let{lookupFromPathIndex:t}=e;if(typeof window>`u`)return;let n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);if(Array.isArray(n))return n[typeof t==`number`?t:0]?.replace(`/`,``)}},l_={name:`subdomain`,lookup(e){let{lookupFromSubdomainIndex:t}=e,n=typeof t==`number`?t+1:1,r=typeof window<`u`&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(r)return r[n]}},u_=!1;try{document.cookie,u_=!0}catch{}var d_=[`querystring`,`cookie`,`localStorage`,`sessionStorage`,`navigator`,`htmlTag`];u_||d_.splice(1,1);var f_=()=>({order:d_,lookupQuerystring:`lng`,lookupCookie:`i18next`,lookupLocalStorage:`i18nextLng`,lookupSessionStorage:`i18nextLng`,caches:[`localStorage`],excludeCacheFor:[`cimode`],convertDetectedLanguage:e=>e}),p_=class{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type=`languageDetector`,this.detectors={},this.init(e,t)}init(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=e,this.options=Kg(t,this.options||{},f_()),typeof this.options.convertDetectedLanguage==`string`&&this.options.convertDetectedLanguage.indexOf(`15897`)>-1&&(this.options.convertDetectedLanguage=e=>e.replace(`-`,`_`)),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=n,this.addDetector(Zg),this.addDetector(Qg),this.addDetector(n_),this.addDetector(a_),this.addDetector(o_),this.addDetector(s_),this.addDetector(c_),this.addDetector(l_),this.addDetector($g)}addDetector(e){return this.detectors[e.name]=e,this}detect(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,t=[];return e.forEach(e=>{if(this.detectors[e]){let n=this.detectors[e].lookup(this.options);n&&typeof n==`string`&&(n=[n]),n&&(t=t.concat(n))}}),t=t.filter(e=>e!=null&&!qg(e)).map(e=>this.options.convertDetectedLanguage(e)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?t:t.length>0?t[0]:null}cacheUserLanguage(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;t&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||t.forEach(t=>{this.detectors[t]&&this.detectors[t].cacheUserLanguage(e,this.options)}))}};p_.type=`languageDetector`;var m_={controls:{expandAll:`Expand all groups`,collapseAll:`Collapse all groups`,autoLayout:{title:`Auto layout: rearrange the diagram`,label:`Auto layout`},zoomIn:`Zoom in`,zoomOut:`Zoom out`,fitView:`Fit view`,enlarge:`enlarge`,shrink:`shrink`},toolbar:{showGroups:{label:`Show groups`,title:`Render groups as containers around the concepts and properties that belong to them`},erd:{label:`Show as Entity-Relationship-Diagram`,title:`Show as Entity-Relationship Diagram — render properties inside concept and metric nodes`},changesOnly:{label:`Changes only`,title:`Show only the concepts and relationships this change request touches`}},detail:{close:`Close`,openDetails:`Open details →`,properties:`Properties`,inherited:`Inherited`,noProperties:`No properties`,noMembers:`No members`,members:`Members ({{count}})`,membersTotal:`, {{total}} total`,type:{entity:`Entity`,property:`Property`,metric:`Metric`,group:`Group`,relationship:`Relationship`},expandThisGroup:`Expand this group`,collapseThisGroup:`Collapse this group`,diff:{heading:`Proposed change`,op:{add:`Added`,modify:`Changed`,remove:`Removed`},impact:{structural:`Structural`,descriptive:`Descriptive`,cosmetic:`Cosmetic`},impactHint:{structural:`Changes what the model means.`,descriptive:`Changes how the model reads, not what it means.`,cosmetic:`Wording only.`},summary:{add:`Does not exist yet. Approving this request creates it.`,remove:`Approving this request deletes it.`,modify:`Approving this request applies the following.`},before:`Now`,after:`Proposed`,unset:`not set`,related:`Changed relationships`},consumers:{heading:`Breaks on removal`,description:`These depend on this concept and do not decide this change. Removing it leaves their references broken.`,relationship:`relationships in other namespaces`,dataProduct:`data products`,dataContract:`data contracts`},overlap:{heading:`Also being changed`,description:`Another pending change request edits this element too. Approving this one reshapes the other onto the new state, which usually merges cleanly.`,view:`View the other change request`},externalNamespace:`Lives in namespace {{namespace}}`,unresolved:`This concept does not exist. A relationship in this change request points at it, so the request cannot be applied as it stands.`,unresolvedRemovedBy:`See the change request that removed it`,evidence:{heading:`Evidence`,none:`This change cites nothing. It cannot be checked against a source.`,unresolvable:`Cannot be checked again — no repository, path and commit`},propertiesChanged:`, {{count}} changed`,relationshipChanges:`Relationships`,op:{add:`adds`,remove:`removes`,modify:`changes`}},node:{noProperties:`No properties`,group:`Group`,expandGroup:`Expand group`,collapseGroup:`Collapse group`,propertiesChanged_one:`{{count}} property changed`,propertiesChanged_other:`{{count}} properties changed`},diff:{base:`Was`},review:{frozenByConflict:`conflict must be resolved first`,conflict:{target:`the namespace`,by:`by`,bothChanged:`Also changed in {{target}}`,changedHereRemovedThere:`Removed from {{target}}`,removedHereChangedThere:`Changed in {{target}} after this proposal removed it`,bothAdded:`Also added in {{target}}, with different content`},decision:{accepted:`Accepted`,rejected:`Rejected`},summary:{accepted:`{{count}} accepted`,rejected:`{{count}} rejected`},willChange:`{{count}} already decided`,impact:{structural:`Structural`,descriptive:`Descriptive`,cosmetic:`Cosmetic`}}},h_={controls:{expandAll:`Alle Gruppen aufklappen`,collapseAll:`Alle Gruppen einklappen`,autoLayout:{title:`Auto-Layout: Diagramm neu anordnen`,label:`Auto-Layout`},zoomIn:`Hineinzoomen`,zoomOut:`Herauszoomen`,fitView:`Ansicht einpassen`,enlarge:`Vergrößern`,shrink:`Verkleinern`},toolbar:{showGroups:{label:`Gruppen anzeigen`,title:`Gruppen als Container um die zugehörigen Konzepte und Eigenschaften herum darstellen`},erd:{label:`Als Entity-Relationship-Diagramm anzeigen`,title:`Als Entity-Relationship-Diagramm anzeigen — Eigenschaften innerhalb der Konzept- und Metrik-Knoten darstellen`},changesOnly:{label:`Nur Änderungen`,title:`Nur die Konzepte und Beziehungen anzeigen, die dieser Change Request betrifft`}},detail:{close:`Schließen`,openDetails:`Details öffnen →`,properties:`Eigenschaften`,inherited:`Geerbt`,noProperties:`Keine Eigenschaften`,noMembers:`Keine Mitglieder`,members:`Mitglieder ({{count}})`,membersTotal:`, {{total}} gesamt`,type:{entity:`Entität`,property:`Eigenschaft`,metric:`Metrik`,group:`Gruppe`,relationship:`Beziehung`},expandThisGroup:`Diese Gruppe aufklappen`,collapseThisGroup:`Diese Gruppe einklappen`,diff:{heading:`Vorgeschlagene Änderung`,op:{add:`Hinzugefügt`,modify:`Geändert`,remove:`Entfernt`},impact:{structural:`Strukturell`,descriptive:`Beschreibend`,cosmetic:`Kosmetisch`},impactHint:{structural:`Ändert die Bedeutung des Modells.`,descriptive:`Ändert die Lesart des Modells, nicht seine Bedeutung.`,cosmetic:`Nur die Formulierung.`},summary:{add:`Existiert noch nicht. Mit der Freigabe dieses Requests wird es angelegt.`,remove:`Mit der Freigabe dieses Requests wird es gelöscht.`,modify:`Mit der Freigabe dieses Requests wird Folgendes übernommen.`},before:`Aktuell`,after:`Vorgeschlagen`,unset:`nicht gesetzt`,related:`Geänderte Beziehungen`},consumers:{heading:`Bricht beim Entfernen`,description:`Diese hängen von diesem Konzept ab und entscheiden diese Änderung nicht. Beim Entfernen bleiben ihre Referenzen kaputt.`,relationship:`Beziehungen in anderen Namespaces`,dataProduct:`Data Products`,dataContract:`Data Contracts`},overlap:{heading:`Wird ebenfalls geändert`,description:`Ein anderer offener Change Request bearbeitet dieses Element ebenfalls. Mit der Freigabe wird der andere auf den neuen Stand übertragen, was meist sauber zusammengeführt wird.`,view:`Anderen Change Request ansehen`},externalNamespace:`Liegt im Namespace {{namespace}}`,unresolved:`Dieses Konzept existiert nicht. Eine Beziehung in diesem Change Request zeigt darauf, deshalb kann er so nicht angewendet werden.`,unresolvedRemovedBy:`Change Request ansehen, der es entfernt hat`,evidence:{heading:`Belege`,none:`Diese Änderung zitiert nichts. Sie lässt sich gegen keine Quelle prüfen.`,unresolvable:`Nicht erneut prüfbar — kein Repository, Pfad und Commit`},propertiesChanged:`, {{count}} geändert`,relationshipChanges:`Beziehungen`,op:{add:`fügt hinzu`,remove:`entfernt`,modify:`ändert`}},node:{noProperties:`Keine Eigenschaften`,group:`Gruppe`,expandGroup:`Gruppe aufklappen`,collapseGroup:`Gruppe einklappen`,propertiesChanged_one:`{{count}} Eigenschaft geändert`,propertiesChanged_other:`{{count}} Eigenschaften geändert`},diff:{base:`Vorher`},review:{frozenByConflict:`Konflikt muss zuerst gelöst werden`,conflict:{target:`dem Namespace`,by:`durch`,bothChanged:`Ebenfalls in {{target}} geändert`,changedHereRemovedThere:`In {{target}} entfernt`,removedHereChangedThere:`In {{target}} geändert, nachdem dieses Proposal es entfernt hat`,bothAdded:`Ebenfalls in {{target}} hinzugefügt, mit anderem Inhalt`},decision:{accepted:`Angenommen`,rejected:`Abgelehnt`},summary:{accepted:`{{count}} angenommen`,rejected:`{{count}} abgelehnt`},willChange:`{{count}} bereits entschieden`,impact:{structural:`Strukturell`,descriptive:`Beschreibend`,cosmetic:`Kosmetisch`}}},g_=tp.createInstance();g_.use(p_).use(bp).init({resources:{en:{translation:m_},de:{translation:h_}},fallbackLng:`en`,supportedLngs:[`en`,`de`],load:`languageOnly`,detection:{order:[`querystring`,`localStorage`,`navigator`],caches:[`localStorage`],lookupQuerystring:`lang`,lookupLocalStorage:`sv-locale`},interpolation:{escapeValue:!1},react:{useSuspense:!1}});function __(e){if(e.dataset.svInit)return;if(e.offsetParent===null){let t=new MutationObserver(()=>{e.offsetParent!==null&&(t.disconnect(),__(e))});t.observe(document.body,{attributes:!0,subtree:!0,attributeFilter:[`style`,`class`]});return}let t=e.dataset.jsonUrl,n=e.dataset.height||`400px`,r=e.dataset.layout||`force`,i=e.dataset.showMinimap===`true`;t&&(e.dataset.svInit=`true`,fetch(t,{credentials:`same-origin`}).then(e=>e.json()).then(a=>{if(!a.nodes||a.nodes.length===0){delete e.dataset.svInit;return}e.style.height=n,e.dataset.locale&&g_.changeLanguage(e.dataset.locale),(0,b.createRoot)(e).render((0,x.jsx)(Dp,{i18n:g_,children:(0,x.jsx)(hd,{children:(0,x.jsx)(Ug,{graphData:a,customHeight:n,layout:r,storageKey:pg(t),showMiniMap:i})})}))}).catch(t=>{delete e.dataset.svInit,console.error(`Semantic visualizer fetch error:`,t)}))}function v_(){document.querySelectorAll(`.semantic-visualizer`).forEach(__)}document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,v_):v_(),document.addEventListener(`htmx:load`,v_);function y_(e){let t=typeof e.container==`string`?document.querySelector(e.container):e.container;if(!t)return null;let n=e.height||`600px`;t.style.height=n,t.classList.add(`semantic-visualizer`),t.dataset.svInit=`true`,e.locale&&g_.changeLanguage(e.locale);let r=(0,b.createRoot)(t),i=t=>r.render((0,x.jsx)(Dp,{i18n:g_,children:(0,x.jsx)(hd,{children:(0,x.jsx)(Ug,{graphData:e.graphData,changes:t,targetName:e.targetName,onDecide:e.onDecide,customHeight:n,layout:e.layout||`force`,storageKey:e.storageKey||pg(e.container),showMiniMap:e.showMiniMap===!0})})}));return i(e.changes||[]),{update:e=>i(e)}}export{y_ as init}; \ No newline at end of file diff --git a/src/toolbarStyles.js b/src/toolbarStyles.js index ad82101..1f14e2c 100644 --- a/src/toolbarStyles.js +++ b/src/toolbarStyles.js @@ -1,4 +1,5 @@ -// Shared look for the top-right toolbar buttons (App.jsx, NamespaceFilter.jsx). +// The labelled top-right toolbar button. App.jsx's own toggles are square glyphs with their own +// style; this is what a control that still carries words looks like beside them. export const toggleBtnStyle = (active) => ({ borderRadius: 4, background: active ? '#eef2ff' : '#fff', diff --git a/vite.config.js b/vite.config.js index 67494f2..8965be0 100644 --- a/vite.config.js +++ b/vite.config.js @@ -9,6 +9,10 @@ export default defineConfig({ emptyOutDir: true, rollupOptions: { input: resolve(__dirname, 'src/main.jsx'), + // An app build drops the entry's exports, since nothing inside the bundle uses them — which + // silently removed `init` and would have made `import { init }` fail in the browser, on the one + // page that needs it, with nothing failing at build time. The auto-mount still runs either way. + preserveEntrySignatures: 'exports-only', output: { entryFileNames: 'assets/index.js', assetFileNames: 'assets/index.css', From 7541c27bccd5927301a8a8203a98f48372bd3502 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Deuerling?= Date: Thu, 3 Sep 2026 15:11:33 +0200 Subject: [PATCH 2/4] Drop leftovers of the in-visualizer review panel Remove the committed build artifact under src/main/resources, the unused review-panel styles, the RelationshipChangesSection that nothing fed, the review.* locale tree and other unreferenced keys, and un-export DETAIL_PANEL_SHARE. Move diff.base under detail.diff where the code reads it, and add the detail.shared key both locales lacked. changesOnly now defaults to off; the auto-mount opts in via data-changes-only="true" and init() keeps its explicit option. init() returns an update() that merges graphData, focus, changesOnly and onSelect before re-rendering. Replace the stale sample-review.json with a fixture on the current graph contract and let index.html load it via ?sample=review. --- index.html | 10 ++ public/sample-review.json | 117 +++++++++++++++++- src/App.jsx | 21 ++-- src/DetailPanel.jsx | 89 ++----------- src/i18n/locales/de.json | 38 +----- src/i18n/locales/en.json | 38 +----- src/main.jsx | 25 ++-- .../assets/semantic-visualizer/index.css | 1 - .../assets/semantic-visualizer/index.js | 17 --- 9 files changed, 166 insertions(+), 190 deletions(-) delete mode 100644 src/main/resources/static/assets/semantic-visualizer/index.css delete mode 100644 src/main/resources/static/assets/semantic-visualizer/index.js diff --git a/index.html b/index.html index b83e7f6..addbc11 100644 --- a/index.html +++ b/index.html @@ -10,6 +10,16 @@
+ diff --git a/public/sample-review.json b/public/sample-review.json index 5e4225d..2891a1a 100644 --- a/public/sample-review.json +++ b/public/sample-review.json @@ -1 +1,116 @@ -{"nodes": [{"id": "customer", "type": "entity", "data": {"label": "Customer", "properties": [{"name": "Customer Email", "externalId": "customer-email", "type": "string", "shared": true, "description": "The email address of a customer."}, {"name": "loyalty_tier", "externalId": "loyalty-tier", "type": "string", "description": "Loyalty program segment assigned based on rolling 12-month spend."}], "externalId": "customer"}}, {"id": "invoice", "type": "entity", "data": {"label": "Invoice", "properties": [], "externalId": "invoice"}}, {"id": "shipment", "type": "entity", "data": {"label": "Shipment", "properties": [], "externalId": "shipment"}}, {"id": "customer-email", "type": "knowledge", "data": {"label": "Customer Email", "externalId": "customer-email"}}], "edges": [{"id": "e1", "source": "invoice", "target": "customer", "label": "billed to", "data": {"changeOp": "add"}}, {"id": "e2", "source": "customer", "target": "shipment", "label": "ships to", "data": {"changeOp": "add"}}], "changes": [{"externalId": "", "elementType": "namespace", "name": "main", "op": "modify", "owningTeam": "sales", "fields": [{"field": "description", "before": "The original description.", "after": "What the business means by its own vocabulary."}]}, {"externalId": "invoice", "elementType": "entity", "name": "Invoice", "op": "add", "owningTeam": "finance", "evidence": [{"source": "git"}], "properties": [{"externalId": "invoice-total", "name": "Total"}], "relationships": [{"externalId": "billed-to", "name": "billed to"}]}, {"externalId": "customer", "elementType": "entity", "name": "Customer", "op": "modify", "owningTeam": "sales", "relationships": [{"externalId": "ships-to", "name": "ships to"}], "mergeNotes": ["Accepting this without 'shipment' leaves out 1 relationship."], "properties": [{"externalId": "loyalty-tier", "name": "loyalty_tier", "op": "modify", "fields": [{"field": "description", "before": "Loyalty tier.", "after": "Loyalty program segment assigned based on rolling 12-month spend."}]}]}, {"externalId": "shipment", "elementType": "entity", "name": "Shipment", "op": "add", "owningTeam": "sales"}, {"externalId": "customer-email", "elementType": "shared_property", "name": "Customer Email", "op": "modify", "owningTeam": "sales", "decision": "accepted"}]} \ No newline at end of file +{ + "nodes": [ + { + "id": "1", + "type": "entity", + "data": { + "label": "Customer", + "externalId": "customer", + "link": "#", + "changedPropertyCount": 2, + "evidence": [ + { "quote": "Customers are segmented into loyalty tiers based on rolling 12-month spend.", "label": "docs/glossary.md" } + ], + "properties": [ + { "name": "customer_id", "externalId": "customer-id", "type": "string", "primaryKey": true }, + { "name": "email", "externalId": "customer-email", "type": "string", "shared": true }, + { + "name": "loyalty_tier", + "externalId": "loyalty-tier", + "type": "string", + "diff": "modify", + "diffDetail": { + "op": "modify", + "impact": "descriptive", + "fields": [ + { "field": "description", "before": "Loyalty tier.", "after": "Loyalty program segment assigned based on rolling 12-month spend.", "impact": "descriptive" }, + { "field": "status", "before": "draft", "after": "active", "impact": "cosmetic" } + ] + } + }, + { "name": "fax_number", "externalId": "fax-number", "type": "string", "diff": "remove", "diffDetail": { "op": "remove", "impact": "structural", "fields": [] } } + ] + } + }, + { + "id": "2", + "type": "entity", + "data": { + "label": "Order", + "externalId": "order", + "link": "#", + "overlaps": [ { "changeRequestExternalId": "cr-17", "link": "#", "teamName": "Fulfillment" } ], + "properties": [ + { "name": "order_id", "externalId": "order-id", "type": "string", "primaryKey": true }, + { "name": "order_date", "externalId": "order-date", "type": "date" } + ] + } + }, + { + "id": "3", + "type": "entity", + "data": { + "label": "Invoice", + "externalId": "invoice", + "link": "#", + "diff": "add", + "evidenceMissing": true, + "diffDetail": { + "op": "add", + "impact": "structural", + "fields": [ + { "field": "description", "before": null, "after": "A request for payment issued for one or more orders.", "impact": "descriptive" }, + { "field": "classification", "before": null, "after": { "display": "badge", "label": "Confidential", "color": "red" }, "impact": "structural" } + ] + }, + "properties": [ + { "name": "invoice_id", "externalId": "invoice-id", "type": "string", "primaryKey": true, "diff": "add" }, + { "name": "total", "externalId": "invoice-total", "type": "decimal", "diff": "add" } + ] + } + }, + { + "id": "4", + "type": "metric", + "data": { + "label": "Revenue", + "externalId": "revenue", + "link": "#", + "diff": "remove", + "diffDetail": { "op": "remove", "impact": "structural", "fields": [] }, + "consumers": { + "total": 2, + "dataProducts": [ { "label": "Finance KPIs", "link": "#" } ], + "relationships": [ { "label": "reports", "namespace": "reporting" } ] + }, + "properties": [ { "name": "amount", "externalId": "revenue-amount", "type": "decimal" } ] + } + }, + { + "id": "5", + "type": "entity", + "data": { + "label": "Product", + "externalId": "product", + "link": "#", + "foreignNamespace": "catalog", + "properties": [ { "name": "product_id", "externalId": "product-id", "type": "string", "primaryKey": true } ] + } + }, + { + "id": "6", + "type": "entity", + "data": { "label": "Warehouse", "externalId": "warehouse", "unresolved": true, "removedBy": { "link": "#" }, "properties": [] } + } + ], + "edges": [ + { "id": "e1", "source": "1", "target": "2", "label": "places", "type": "relatedTo" }, + { "id": "e2", "source": "2", "target": "4", "label": "measures", "type": "relatedTo", "diff": "remove", "diffDetail": { "op": "remove", "impact": "structural", "fields": [] } }, + { "id": "e3", "source": "2", "target": "5", "label": "orderedProduct", "type": "relatedTo" }, + { + "id": "e4", "source": "3", "target": "2", "label": "billedFor", "type": "relatedTo", "diff": "add", + "diffDetail": { "op": "add", "impact": "structural", "fields": [ { "field": "description", "before": null, "after": "The orders an invoice settles.", "impact": "descriptive" } ] } + }, + { "id": "e5", "source": "2", "target": "6", "label": "shipsFrom", "type": "relatedTo", "diff": "add", "diffDetail": { "op": "add", "impact": "structural", "fields": [] } } + ] +} diff --git a/src/App.jsx b/src/App.jsx index b97b286..2d6bfba 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -97,7 +97,10 @@ function toReactFlowElements(graphData) { target: e.target, label: e.label, type: 'floating', - data: { label: e.label, parallel: edgeParallelData[e.id], diff: e.diff, diffDetail: e.diffDetail }, + data: { + label: e.label, parallel: edgeParallelData[e.id], externalId: e.externalId, + diff: e.diff, diffDetail: e.diffDetail, evidence: e.evidence, evidenceMissing: e.evidenceMissing, + }, style: { stroke, strokeWidth: diff ? 2.5 : 1.5, @@ -719,7 +722,7 @@ function EnlargeButton({ customHeight, containerRef }) { } export default function App({ - graphData: sourceGraphData, + graphData, customHeight, layout, storageKey, @@ -740,10 +743,6 @@ export default function App({ // panel here would be a second account of one thing. Set for the element the host focuses on // arrival, too — otherwise every page load opens a panel nobody asked for. const [panelClaimed, setPanelClaimed] = useState(true); - // The payload arrives already saying what the proposal does to each element — marks included. It - // used to be annotated here from a change list the host passed in, which meant only a client - // holding that list could read the picture; the server settles it now, for every reader. - const graphData = sourceGraphData; const [selectedEdge, setSelectedEdge] = useState(null); // Default to ERD mode when a property is highlighted — otherwise the highlight // (which lives inside an entity node's property list) wouldn't be visible. @@ -762,10 +761,12 @@ export default function App({ [graphData], ); const [showGroups, setShowGroups] = useState(initialToggles?.showGroups ?? false); - // A review opens on what is being reviewed. The whole namespace is the context you reach for once - // the change stops making sense on its own, not the thing you start by scrolling past. Inert when - // there is no diff, so a plain graph is unaffected. - const [changesOnly, setChangesOnly] = useState(changesOnlyProp ?? true); + // Off unless the host asks: a review page opens on what is being reviewed, but an embed that merely + // renders a branch's graph should show the whole picture. Inert when there is no diff either way. + const [changesOnly, setChangesOnly] = useState(changesOnlyProp ?? false); + useEffect(() => { + if (changesOnlyProp !== undefined) setChangesOnly(changesOnlyProp); + }, [changesOnlyProp]); const [collapsedGroups, setCollapsedGroups] = useState( () => new Set(initialToggles?.collapsedGroups || []), ); diff --git a/src/DetailPanel.jsx b/src/DetailPanel.jsx index dfd7e1f..21845a9 100644 --- a/src/DetailPanel.jsx +++ b/src/DetailPanel.jsx @@ -14,9 +14,9 @@ const IMPACT_COLORS = { /** * Half the canvas. A change is read here and merely located out there, so the panel is a working * surface rather than a slot beside the picture — and being a share of the width rather than a - * pixel count, it stays that on any screen. Published so the canvas knows what it is covering. + * pixel count, it stays that on any screen. */ -export const DETAIL_PANEL_SHARE = 0.5; +const DETAIL_PANEL_SHARE = 0.5; // A column beside the canvas rather than over it. Opening it narrows the graph instead of hiding the // part of it the reader just clicked, which is what the panning and the toolbar offset existed to @@ -31,11 +31,7 @@ const panelStyle = { overflow: 'hidden', }; -/** - * One entry when several are selected. The panel itself scrolls, so a stacked body flows rather than - * claiming the height, and a rule separates it from the next. - */ -/** A body inside the stack flows to its full height; the panel around it is what scrolls. */ +/** A body inside a stack flows to its full height; the panel around it is what scrolls. */ const scrollerStyle = (stacked, extra = {}) => (stacked ? { display: 'flex', flexDirection: 'column', ...extra } : { flex: 1, overflow: 'auto', display: 'flex', flexDirection: 'column', ...extra }); @@ -47,24 +43,6 @@ const stackedBodyStyle = { borderBottom: '1px solid #e5e7eb', }; -const footerStyle = { - borderTop: '1px solid #e5e7eb', - padding: '12px 16px', - flexShrink: 0, - background: '#fff', -}; - -const decisionButtonStyle = (color) => ({ - flex: 1, - border: `1px solid ${color}`, - color, - background: '#fff', - borderRadius: 6, - padding: '5px 10px', - fontSize: 12, - cursor: 'pointer', -}); - const closeButtonStyle = { background: 'none', border: 'none', @@ -392,56 +370,6 @@ function EdgePanel({ edge, graphData, onClose, stacked }) { * in a document somewhere else. An element changed with nothing cited is called out: absence of * evidence is the thing worth noticing, and it is invisible unless stated. */ -/** - * What the proposal does to this concept's relationships. - * - * A relationship is a change in its own right and can be the only one a card carries — connecting an - * existing property to a concept adds no field to either. Nothing rendered them, so such a card read - * as "Approving this request applies the following" followed by nothing at all. - */ -function RelationshipChangesSection({ relationships }) { - const { t } = useTranslation(); - if (!relationships || relationships.length === 0) return null; - const tone = { add: '#15803d', remove: '#b91c1c', modify: '#b45309' }; - return ( -
-
- {t('detail.relationshipChanges', 'Relationships')} ({relationships.length}) -
- {relationships.map((relationship) => ( -
-
- - {t('detail.op.' + relationship.op, relationship.op)} - - {/* "Customer → marketing_consent_at" rather than the id that encodes it. The stored id is - machine-made, and reading it is not the reviewer's job. */} - - {relationship.from && relationship.to - ? `${relationship.from} → ${relationship.to}` - : relationship.name || relationship.externalId} - -
- {relationship.fields?.map((field) => ( -
-
- {field.field} -
- -
- ))} -
- ))} -
- ); -} - function EvidenceSection({ evidence, missing }) { const { t } = useTranslation(); const items = evidence || []; @@ -598,11 +526,8 @@ function ConsumersSection({ consumers }) { } /** - * The changed relationships hanging off an otherwise untouched concept. - * - * Without this a reviewer hits a dead end: the concept is drawn as involved — it survives the - * changes-only filter, it sits at the end of a coloured edge — but its own panel has nothing to do - * with the request, which reads as a bug rather than as "the change is on the line, not the box". + * What the proposal does to this element: the operation, how consequential it is, and each field + * that moves, rendered by the field's shape rather than as before/after prose. */ function DiffSection({ detail }) { const { t } = useTranslation(); @@ -932,7 +857,7 @@ function ProseDiff({ before, after, base }) { {/* The version the author wrote against, shown only where the target has moved away from it. Without it a conflict reads as an ordinary change that was refused for no reason. */} {base !== undefined && base !== null && ( - + )} @@ -1211,7 +1136,7 @@ function PropertySection({ title, properties, count, inherited, changesOnly }) { fontSize: 10, fontWeight: 600, textTransform: 'uppercase', letterSpacing: '0.04em', color: '#6366f1', border: '1px solid #c7d2fe', borderRadius: 3, padding: '0 4px', }}> - {t('detail.shared', 'shared')} + {t('detail.shared')}
)} {prop.primaryKey && } diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index 59ef080..3fbd1b1 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json @@ -52,7 +52,6 @@ "expandThisGroup": "Diese Gruppe aufklappen", "collapseThisGroup": "Diese Gruppe einklappen", "diff": { - "heading": "Vorgeschlagene Änderung", "op": { "add": "Hinzugefügt", "modify": "Geändert", @@ -76,7 +75,7 @@ "before": "Aktuell", "after": "Vorgeschlagen", "unset": "nicht gesetzt", - "related": "Geänderte Beziehungen" + "base": "Vorher" }, "consumers": { "heading": "Bricht beim Entfernen", @@ -98,12 +97,7 @@ "unresolvable": "Nicht erneut prüfbar — kein Repository, Pfad und Commit" }, "propertiesChanged": ", {{count}} geändert", - "relationshipChanges": "Beziehungen", - "op": { - "add": "fügt hinzu", - "remove": "entfernt", - "modify": "ändert" - } + "shared": "geteilt" }, "node": { "noProperties": "Keine Eigenschaften", @@ -113,33 +107,5 @@ "propertiesChanged_one": "{{count}} Eigenschaft geändert", "propertiesChanged_other": "{{count}} Eigenschaften geändert", "foreignNamespace": "Aus dem Namespace \"{{namespace}}\"" - }, - "diff": { - "base": "Vorher" - }, - "review": { - "frozenByConflict": "Konflikt muss zuerst gelöst werden", - "conflict": { - "target": "dem Namespace", - "by": "durch", - "bothChanged": "Ebenfalls in {{target}} geändert", - "changedHereRemovedThere": "In {{target}} entfernt", - "removedHereChangedThere": "In {{target}} geändert, nachdem dieses Proposal es entfernt hat", - "bothAdded": "Ebenfalls in {{target}} hinzugefügt, mit anderem Inhalt" - }, - "decision": { - "accepted": "Angenommen", - "rejected": "Abgelehnt" - }, - "summary": { - "accepted": "{{count}} angenommen", - "rejected": "{{count}} abgelehnt" - }, - "willChange": "{{count}} bereits entschieden", - "impact": { - "structural": "Strukturell", - "descriptive": "Beschreibend", - "cosmetic": "Kosmetisch" - } } } diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index fbab1ae..b813bf9 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -52,7 +52,6 @@ "expandThisGroup": "Expand this group", "collapseThisGroup": "Collapse this group", "diff": { - "heading": "Proposed change", "op": { "add": "Added", "modify": "Changed", @@ -76,7 +75,7 @@ "before": "Now", "after": "Proposed", "unset": "not set", - "related": "Changed relationships" + "base": "Was" }, "consumers": { "heading": "Breaks on removal", @@ -98,12 +97,7 @@ "unresolvable": "Cannot be checked again — no repository, path and commit" }, "propertiesChanged": ", {{count}} changed", - "relationshipChanges": "Relationships", - "op": { - "add": "adds", - "remove": "removes", - "modify": "changes" - } + "shared": "shared" }, "node": { "noProperties": "No properties", @@ -113,33 +107,5 @@ "propertiesChanged_one": "{{count}} property changed", "propertiesChanged_other": "{{count}} properties changed", "foreignNamespace": "From the \"{{namespace}}\" namespace" - }, - "diff": { - "base": "Was" - }, - "review": { - "frozenByConflict": "conflict must be resolved first", - "conflict": { - "target": "the namespace", - "by": "by", - "bothChanged": "Also changed in {{target}}", - "changedHereRemovedThere": "Removed from {{target}}", - "removedHereChangedThere": "Changed in {{target}} after this proposal removed it", - "bothAdded": "Also added in {{target}}, with different content" - }, - "decision": { - "accepted": "Accepted", - "rejected": "Rejected" - }, - "summary": { - "accepted": "{{count}} accepted", - "rejected": "{{count}} rejected" - }, - "willChange": "{{count}} already decided", - "impact": { - "structural": "Structural", - "descriptive": "Descriptive", - "cosmetic": "Cosmetic" - } } } diff --git a/src/main.jsx b/src/main.jsx index 0111423..a9c3647 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -26,6 +26,7 @@ function initElement(container) { const height = container.dataset.height || '400px'; const layout = container.dataset.layout || 'force'; const showMiniMap = container.dataset.showMinimap === 'true'; + const changesOnly = container.dataset.changesOnly === 'true'; if (!jsonUrl) return; @@ -41,7 +42,8 @@ function initElement(container) { createRoot(container).render( - + ); @@ -80,6 +82,9 @@ document.addEventListener('htmx:load', mountAll); * element rather than two * @param {string} [options.locale] * @param {string} [options.height] + * @returns {{ update: (next: object) => void } | null} `update` merges `graphData`, `focus`, + * `changesOnly` and `onSelect` into the options and re-renders; container, height, locale + * and layout are fixed at mount */ export function init(options) { const container = typeof options.container === 'string' @@ -97,17 +102,18 @@ export function init(options) { if (options.locale) i18n.changeLanguage(options.locale); const root = createRoot(container); + let current = { ...options }; const render = () => root.render( @@ -115,5 +121,10 @@ export function init(options) { ); render(); - return { update: render }; + return { + update: (next) => { + current = { ...current, ...next }; + render(); + }, + }; } diff --git a/src/main/resources/static/assets/semantic-visualizer/index.css b/src/main/resources/static/assets/semantic-visualizer/index.css deleted file mode 100644 index 59320aa..0000000 --- a/src/main/resources/static/assets/semantic-visualizer/index.css +++ /dev/null @@ -1 +0,0 @@ -.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 .5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#555;--xy-background-pattern-lines-color-default:#333;--xy-background-pattern-cross-color-default:#333;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 .5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;color:var(--xy-node-color,var(--xy-node-color-default));text-align:center;border:var(--xy-node-border,var(--xy-node-border-default));background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));padding:10px;font-size:12px}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var(--xy-controls-button-background-color-hover-props,var(--xy-controls-button-background-color-hover,var(--xy-controls-button-background-color-hover-default)));color:var(--xy-controls-button-color-hover-props,var(--xy-controls-button-color-hover,var(--xy-controls-button-color-hover-default)))}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)))}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}#semantic-visualizer .react-flow__node{cursor:grab}#semantic-visualizer .react-flow__node:active{cursor:grabbing}#semantic-visualizer .react-flow__node:not(.dragging){transition:transform .25s ease-out,width .25s ease-out,height .25s ease-out}#semantic-visualizer .react-flow__edge-path,#semantic-visualizer .react-flow__edge-interaction{transition:d .25s ease-out}#semantic-visualizer .react-flow__node-collapsed_group.selected{outline-offset:2px;border-radius:20px;outline:2px solid #6366f1}#semantic-visualizer .react-flow__node-group,#semantic-visualizer .react-flow__node-group.selected{box-shadow:none!important;pointer-events:auto!important;background:0 0!important;border:none!important;border-radius:0!important;outline:none!important;padding:0!important}#semantic-visualizer .react-flow__edge-textbg{rx:4}#semantic-visualizer .react-flow__edge.selected .react-flow__edge-path{stroke:#888!important;stroke-width:3px!important}#semantic-visualizer .react-flow__edge-path{cursor:pointer}#semantic-visualizer .react-flow__edge:hover .react-flow__edge-path{stroke:#888!important;stroke-width:2.5px!important} diff --git a/src/main/resources/static/assets/semantic-visualizer/index.js b/src/main/resources/static/assets/semantic-visualizer/index.js deleted file mode 100644 index 8f7ef08..0000000 --- a/src/main/resources/static/assets/semantic-visualizer/index.js +++ /dev/null @@ -1,17 +0,0 @@ -var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),l=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function D(e,t){return E(e.type,t,e.props)}function O(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function k(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var A=/\/+/g;function j(e,t){return typeof e==`object`&&e&&e.key!=null?k(``+e.key):t.toString(36)}function M(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function N(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,N(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+j(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(A,`$&/`)+`/`),N(o,r,i,``,function(e){return e})):o!=null&&(O(o)&&(o=D(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(A,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u{t.exports=l()})),d=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,O());else{var t=n(l);t!==null&&j(x,t.startTime-e)}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-Tt&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&j(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var k=new MessageChannel,A=k.port2;k.port1.onmessage=D,O=function(){A.postMessage(null)}}else O=function(){_(D,0)};function j(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,j(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,O()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),f=o(((e,t)=>{t.exports=d()})),p=o((e=>{var t=u();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=p()})),h=o((e=>{var t=f(),n=u(),r=m();function i(e){var t=`https://react.dev/errors/`+e;if(1R||(e.current=te[R],te[R]=null,R--)}function V(e,t){R++,te[R]=e.current,e.current=t}var ne=z(null),re=z(null),ie=z(null),ae=z(null);function oe(e,t){switch(V(ie,t),V(re,e),V(ne,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Hd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Hd(t),e=Ud(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}B(ne),V(ne,e)}function se(){B(ne),B(re),B(ie)}function ce(e){e.memoizedState!==null&&V(ae,e);var t=ne.current,n=Ud(t,e.type);t!==n&&(V(re,e),V(ne,n))}function le(e){re.current===e&&(B(ne),B(re)),ae.current===e&&(B(ae),Qf._currentValue=L)}var ue,de;function fe(e){if(ue===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);ue=t&&t[1]||``,de=-1)`:-1i||c[r]!==l[i]){var u=` -`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{pe=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?fe(n):``}function he(e,t){switch(e.tag){case 26:case 27:case 5:return fe(e.type);case 16:return fe(`Lazy`);case 13:return e.child!==t&&t!==null?fe(`Suspense Fallback`):fe(`Suspense`);case 19:return fe(`SuspenseList`);case 0:case 15:return me(e.type,!1);case 11:return me(e.type.render,!1);case 1:return me(e.type,!0);case 31:return fe(`Activity`);default:return``}}function ge(e){try{var t=``,n=null;do t+=he(e,n),n=e,e=e.return;while(e);return t}catch(e){return` -Error generating stack: `+e.message+` -`+e.stack}}var _e=Object.prototype.hasOwnProperty,ve=t.unstable_scheduleCallback,ye=t.unstable_cancelCallback,be=t.unstable_shouldYield,xe=t.unstable_requestPaint,Se=t.unstable_now,Ce=t.unstable_getCurrentPriorityLevel,we=t.unstable_ImmediatePriority,Te=t.unstable_UserBlockingPriority,Ee=t.unstable_NormalPriority,De=t.unstable_LowPriority,Oe=t.unstable_IdlePriority,ke=t.log,Ae=t.unstable_setDisableYieldValue,je=null,Me=null;function Ne(e){if(typeof ke==`function`&&Ae(e),Me&&typeof Me.setStrictMode==`function`)try{Me.setStrictMode(je,e)}catch{}}var Pe=Math.clz32?Math.clz32:Le,Fe=Math.log,Ie=Math.LN2;function Le(e){return e>>>=0,e===0?32:31-(Fe(e)/Ie|0)|0}var Re=256,ze=262144,Be=4194304;function Ve(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function He(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=Ve(n))):i=Ve(o):i=Ve(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=Ve(n))):i=Ve(o)):i=Ve(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function Ue(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function We(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ge(){var e=Be;return Be<<=1,!(Be&62914560)&&(Be=4194304),e}function Ke(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function qe(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Je(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),sn=!1;if(on)try{var cn={};Object.defineProperty(cn,"passive",{get:function(){sn=!0}}),window.addEventListener(`test`,cn,cn),window.removeEventListener(`test`,cn,cn)}catch{sn=!1}var ln=null,un=null,dn=null;function fn(){if(dn)return dn;var e,t=un,n=t.length,r,i=`value`in ln?ln.value:ln.textContent,a=i.length;for(e=0;e=Wn),qn=` `,Jn=!1;function Yn(e,t){switch(e){case`keyup`:return Hn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function Xn(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var Zn=!1;function Qn(e,t){switch(e){case`compositionend`:return Xn(t);case`keypress`:return t.which===32?(Jn=!0,qn):null;case`textInput`:return e=t.data,e===qn&&Jn?null:e;default:return null}}function $n(e,t){if(Zn)return e===`compositionend`||!Un&&Yn(e,t)?(e=fn(),dn=un=ln=null,Zn=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=xr(n)}}function Cr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Cr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function wr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Nt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Nt(e.document)}return t}function Tr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Er=on&&`documentMode`in document&&11>=document.documentMode,Dr=null,Or=null,kr=null,Ar=!1;function jr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Ar||Dr==null||Dr!==Nt(r)||(r=Dr,`selectionStart`in r&&Tr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),kr&&br(kr,r)||(kr=r,r=Ed(Or,`onSelect`),0>=o,i-=o,Ci=1<<32-Pe(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),H&&Ti(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),H&&Ti(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return H&&Ti(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),H&&Ti(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===O&&Ta(l)===r.type){n(e,r.sibling),c=a(r,o.props),ja(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===y?(c=ui(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=li(o.type,o.key,o.props,null,e.mode,c),ja(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=pi(o,e.mode,c),c.return=e,e=c}return s(e);case O:return o=Ta(o),b(e,r,o,c)}if(ee(o))return h(e,r,o,c);if(M(o)){if(l=M(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,Aa(o),c);if(o.$$typeof===C)return b(e,r,$i(e,o),c);Ma(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=di(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{ka=0;var i=b(e,t,n,r);return Oa=null,i}catch(t){if(t===ya||t===xa)throw t;var a=ai(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Pa=Na(!0),Fa=Na(!1),Ia=!1;function La(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ra(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function za(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Ba(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,q&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=ni(e),ti(e,null,n),t}return Qr(e,r,t,n),ni(e)}function Va(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Xe(e,n)}}function Ha(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Ua=!1;function Wa(){if(Ua){var e=ua;if(e!==null)throw e}}function Ga(e,t,n,r){Ua=!1;var i=e.updateQueue;Ia=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Y&f)===f:(r&f)===f){f!==0&&f===la&&(Ua=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(m=g.payload,typeof m==`function`){d=m.call(_,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=g.payload,f=typeof m==`function`?m.call(_,d,f):m,f==null)break a;d=h({},d,f);break a;case 2:Ia=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Gl|=o,e.lanes=o,e.memoizedState=d}}function Ka(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function qa(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=F.T,s={};F.T=s,Ms(e,!1,t,n);try{var c=i(),l=F.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?js(e,t,pa(c,r),pu(e)):js(e,t,r,pu(e))}catch(n){js(e,t,{then:function(){},status:`rejected`,reason:n},pu())}finally{I.p=a,o!==null&&s.types!==null&&(o.types=s.types),F.T=o}}function xs(){}function Ss(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=Cs(e).queue;bs(e,a,t,L,n===null?xs:function(){return ws(e),n(r)})}function Cs(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:L,baseState:L,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:No,lastRenderedState:L},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:No,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function ws(e){var t=Cs(e);t.next===null&&(t=e.alternate.memoizedState),js(e,t.next.queue,{},pu())}function Ts(){return Qi(Qf)}function Es(){return Oo().memoizedState}function Ds(){return Oo().memoizedState}function Os(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=pu();e=za(n);var r=Ba(t,e,n);r!==null&&(hu(r,t,n),Va(r,t,n)),t={cache:aa()},e.payload=t;return}t=t.return}}function ks(e,t,n){var r=pu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Ns(e)?Ps(t,n):(n=$r(e,t,n,r),n!==null&&(hu(n,e,r),Fs(n,t,r)))}function As(e,t,n){js(e,t,n,pu())}function js(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ns(e))Ps(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,yr(s,o))return Qr(e,t,i,0),Rl===null&&Zr(),!1}catch{}if(n=$r(e,t,i,r),n!==null)return hu(n,e,r),Fs(n,t,r),!0}return!1}function Ms(e,t,n,r){if(r={lane:2,revertLane:dd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Ns(e)){if(t)throw Error(i(479))}else t=$r(e,n,r,2),t!==null&&hu(t,e,2)}function Ns(e){var t=e.alternate;return e===W||t!==null&&t===W}function Ps(e,t){fo=uo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Fs(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Xe(e,n)}}var Is={readContext:Qi,use:jo,useCallback:vo,useContext:vo,useEffect:vo,useImperativeHandle:vo,useLayoutEffect:vo,useInsertionEffect:vo,useMemo:vo,useReducer:vo,useRef:vo,useState:vo,useDebugValue:vo,useDeferredValue:vo,useTransition:vo,useSyncExternalStore:vo,useId:vo,useHostTransitionStatus:vo,useFormState:vo,useActionState:vo,useOptimistic:vo,useMemoCache:vo,useCacheRefresh:vo};Is.useEffectEvent=vo;var Ls={readContext:Qi,use:jo,useCallback:function(e,t){return Do().memoizedState=[e,t===void 0?null:t],e},useContext:Qi,useEffect:ss,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),as(4194308,4,ps.bind(null,t,e),n)},useLayoutEffect:function(e,t){return as(4194308,4,e,t)},useInsertionEffect:function(e,t){as(4,2,e,t)},useMemo:function(e,t){var n=Do();t=t===void 0?null:t;var r=e();if(po){Ne(!0);try{e()}finally{Ne(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Do();if(n!==void 0){var i=n(t);if(po){Ne(!0);try{n(t)}finally{Ne(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=ks.bind(null,W,e),[r.memoizedState,e]},useRef:function(e){var t=Do();return e={current:e},t.memoizedState=e},useState:function(e){e=Uo(e);var t=e.queue,n=As.bind(null,W,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:hs,useDeferredValue:function(e,t){return vs(Do(),e,t)},useTransition:function(){var e=Uo(!1);return e=bs.bind(null,W,e.queue,!0,!1),Do().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=W,a=Do();if(H){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),Rl===null)throw Error(i(349));Y&127||Ro(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,ss(Bo.bind(null,r,o,e),[e]),r.flags|=2048,rs(9,{destroy:void 0},zo.bind(null,r,o,n,t),null),n},useId:function(){var e=Do(),t=Rl.identifierPrefix;if(H){var n=wi,r=Ci;n=(r&~(1<<32-Pe(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=mo++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[rt]=t,o[it]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Fd(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Ac(t)}}return Fc(t),jc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Ac(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=ie.current,Ri(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=Ai,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[rt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Md(e.nodeValue,n)),e||Fi(t,!0)}else e=Vd(e).createTextNode(r),e[rt]=t,t.stateNode=e}return Fc(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Ri(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[rt]=t}else zi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Fc(t),e=!1}else n=Bi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(ao(t),t):(ao(t),null);if(t.flags&128)throw Error(i(558))}return Fc(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=Ri(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[rt]=t}else zi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Fc(t),a=!1}else a=Bi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(ao(t),t):(ao(t),null)}return ao(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Nc(t,t.updateQueue),Fc(t),null);case 4:return se(),e===null&&Sd(t.stateNode.containerInfo),Fc(t),null;case 10:return Ki(t.type),Fc(t),null;case 19:if(B(oo),r=t.memoizedState,r===null)return Fc(t),null;if(a=(t.flags&128)!=0,o=r.rendering,o===null)if(a)Pc(r,!1);else{if(Wl!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=so(e),o!==null){for(t.flags|=128,Pc(r,!1),e=o.updateQueue,t.updateQueue=e,Nc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)ci(n,e),n=n.sibling;return V(oo,oo.current&1|2),H&&Ti(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Se()>tu&&(t.flags|=128,a=!0,Pc(r,!1),t.lanes=4194304)}else{if(!a)if(e=so(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Nc(t,e),Pc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!H)return Fc(t),null}else 2*Se()-r.renderingStartTime>tu&&n!==536870912&&(t.flags|=128,a=!0,Pc(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(Fc(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Se(),e.sibling=null,n=oo.current,V(oo,a?n&1|2:n&1),H&&Ti(t,r.treeForkCount),e);case 22:case 23:return ao(t),Qa(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(Fc(t),t.subtreeFlags&6&&(t.flags|=8192)):Fc(t),n=t.updateQueue,n!==null&&Nc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&B(ha),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Ki(ia),Fc(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function Lc(e,t){switch(Oi(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ki(ia),se(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return le(t),null;case 31:if(t.memoizedState!==null){if(ao(t),t.alternate===null)throw Error(i(340));zi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(ao(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));zi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return B(oo),null;case 4:return se(),null;case 10:return Ki(t.type),null;case 22:case 23:return ao(t),Qa(),e!==null&&B(ha),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Ki(ia),null;case 25:return null;default:return null}}function Rc(e,t){switch(Oi(t),t.tag){case 3:Ki(ia),se();break;case 26:case 27:case 5:le(t);break;case 4:se();break;case 31:t.memoizedState!==null&&ao(t);break;case 13:ao(t);break;case 19:B(oo);break;case 10:Ki(t.type);break;case 22:case 23:ao(t),Qa(),e!==null&&B(ha);break;case 24:Ki(ia)}}function zc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Bc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Vc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{qa(t,n)}catch(t){Z(e,e.return,t)}}}function Hc(e,t,n){n.props=Ws(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Uc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function Wc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}function Gc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Z(e,e.return,t)}}function Kc(e,t,n){try{var r=e.stateNode;Id(r,e.type,n,t),r[it]=t}catch(t){Z(e,e.return,t)}}function qc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Qd(e.type)||e.tag===4}function Jc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||qc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Qd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Yc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Xt));else if(r!==4&&(r===27&&Qd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Yc(e,t,n),e=e.sibling;e!==null;)Yc(e,t,n),e=e.sibling}function Xc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Qd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Xc(e,t,n),e=e.sibling;e!==null;)Xc(e,t,n),e=e.sibling}function Zc(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Fd(t,r,n),t[rt]=e,t[it]=n}catch(t){Z(e,e.return,t)}}var Qc=!1,$c=!1,el=!1,tl=typeof WeakSet==`function`?WeakSet:Set,nl=null;function rl(e,t){if(e=e.containerInfo,zd=sp,e=wr(e),Tr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(Bd={focusedElem:e,selectionRange:n},sp=!1,nl=t;nl!==null;)if(t=nl,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,nl=e;else for(;nl!==null;){switch(t=nl,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Fd(o,r,n),o[rt]=e,gt(o),r=o;break a;case`link`:var s=Vf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=Sr(s,h),v=Sr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,F.T=null,n=lu,lu=null;var o=au,s=su;if(iu=0,ou=au=null,su=0,q&6)throw Error(i(331));var c=q;if(q|=4,Nl(o.current),Tl(o,o.current,s,n),q=c,id(0,!1),Me&&typeof Me.onPostCommitFiberRoot==`function`)try{Me.onPostCommitFiberRoot(je,o)}catch{}return!0}finally{I.p=a,F.T=r,Vu(e,t)}}function Wu(e,t,n){t=hi(n,t),t=Xs(e.stateNode,t,2),e=Ba(e,t,2),e!==null&&(qe(e,2),rd(e))}function Z(e,t,n){if(e.tag===3)Wu(e,e,n);else for(;t!==null;){if(t.tag===3){Wu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(ru===null||!ru.has(r))){e=hi(n,e),n=Zs(2),r=Ba(t,n,2),r!==null&&(Qs(n,r,t,e),qe(r,2),rd(r));break}}t=t.return}}function Gu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Ll;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Hl=!0,i.add(n),e=Ku.bind(null,e,t,n),t.then(e,e))}function Ku(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Rl===e&&(Y&n)===n&&(Wl===4||Wl===3&&(Y&62914560)===Y&&300>Se()-$l?!(q&2)&&Su(e,0):ql|=n,Yl===Y&&(Yl=0)),rd(e)}function qu(e,t){t===0&&(t=Ge()),e=ei(e,t),e!==null&&(qe(e,t),rd(e))}function Ju(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),qu(e,n)}function Yu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),qu(e,n)}function Xu(e,t){return ve(e,t)}var Zu=null,Qu=null,$u=!1,ed=!1,td=!1,nd=0;function rd(e){e!==Qu&&e.next===null&&(Qu===null?Zu=Qu=e:Qu=Qu.next=e),ed=!0,$u||($u=!0,ud())}function id(e,t){if(!td&&ed){td=!0;do for(var n=!1,r=Zu;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-Pe(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,ld(r,a))}else a=Y,a=He(r,r===Rl?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||Ue(r,a)||(n=!0,ld(r,a));r=r.next}while(n);td=!1}}function ad(){od()}function od(){ed=$u=!1;var e=0;nd!==0&&Kd()&&(e=nd);for(var t=Se(),n=null,r=Zu;r!==null;){var i=r.next,a=sd(r,t);a===0?(r.next=null,n===null?Zu=i:n.next=i,i===null&&(Qu=n)):(n=r,(e!==0||a&3)&&(ed=!0)),r=i}iu!==0&&iu!==5||id(e,!1),nd!==0&&(nd=0)}function sd(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&Ld(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=Ft(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Fd(t,`link`,e),gt(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Ft(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Ft(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Ft(n.imageSizes)+`"]`)):i+=`[href="`+Ft(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=h({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Fd(t,`link`,e),gt(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Ft(r)+`"][href="`+Ft(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=h({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Fd(r,`link`,e),gt(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=ht(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=h({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);gt(c),Fd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=ht(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),gt(a),Fd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=ht(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=h({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),gt(a),Fd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var a=(a=ie.current)?gf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=ht(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var o=ht(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(jf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),o||Nf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=ht(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Af(e){return`href="`+Ft(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return h({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Fd(t,`link`,n),gt(t),e.head.appendChild(t))}function Pf(e){return`[src="`+Ft(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Ft(n.href)+`"]`);if(r)return t.instance=r,gt(r),r;var a=h({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),gt(r),Fd(r,`style`,a),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Af(n.href);var o=e.querySelector(jf(a));if(o)return t.state.loading|=4,t.instance=o,gt(o),o;r=Mf(n),(a=mf.get(a))&&Rf(r,a),o=(e.ownerDocument||e).createElement(`link`),gt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Fd(o,`link`,r),t.state.loading|=4,Lf(o,n.precedence,e),t.instance=o;case`script`:return o=Pf(n.src),(a=e.querySelector(Ff(o)))?(t.instance=a,gt(a),a):(r=n,(a=mf.get(o))&&(r=h({},n),zf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),gt(a),Fd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,gt(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),gt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Fd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=h()})),_=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),v=o(((e,t)=>{t.exports=_()})),y=c(u(),1),b=g(),x=v();function S(e){if(typeof e==`string`||typeof e==`number`)return``+e;let t=``;if(Array.isArray(e))for(let n=0,r;n{}};function w(){for(var e=0,t=arguments.length,n={},r;e=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw Error(`unknown type: `+e);return{type:e,name:n}})}T.prototype=w.prototype={constructor:T,on:function(e,t){var n=this._,r=E(e+``,n),i,a=-1,o=r.length;if(arguments.length<2){for(;++a0)for(var n=Array(i),r=0,i,a;r=0&&(t=e.slice(0,n))!==`xmlns`&&(e=e.slice(n+1)),k.hasOwnProperty(t)?{space:k[t],local:e}:e}function j(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===`http://www.w3.org/1999/xhtml`&&t.documentElement.namespaceURI===`http://www.w3.org/1999/xhtml`?t.createElement(e):t.createElementNS(n,e)}}function M(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function N(e){var t=A(e);return(t.local?M:j)(t)}function P(){}function ee(e){return e==null?P:function(){return this.querySelector(e)}}function F(e){typeof e!=`function`&&(e=ee(e));for(var t=this._groups,n=t.length,r=Array(n),i=0;i=v&&(v=_+1);!(b=g[v])&&++v=0;)(o=r[i])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function we(e){e||=Te;function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}for(var n=this._groups,r=n.length,i=Array(r),a=0;at?1:e>=t?0:NaN}function Ee(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function De(){return Array.from(this)}function Oe(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?Be:typeof t==`function`?He:Ve)(e,t,n??``)):We(this.node(),e)}function We(e,t){return e.style.getPropertyValue(t)||ze(e).getComputedStyle(e,null).getPropertyValue(t)}function Ge(e){return function(){delete this[e]}}function Ke(e,t){return function(){this[e]=t}}function qe(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function Je(e,t){return arguments.length>1?this.each((t==null?Ge:typeof t==`function`?qe:Ke)(e,t)):this.node()[e]}function Ye(e){return e.trim().split(/^|\s+/)}function Xe(e){return e.classList||new Ze(e)}function Ze(e){this._node=e,this._names=Ye(e.getAttribute(`class`)||``)}Ze.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(`class`,this._names.join(` `)))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(`class`,this._names.join(` `)))},contains:function(e){return this._names.indexOf(e)>=0}};function Qe(e,t){for(var n=Xe(e),r=-1,i=t.length;++r=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}})}function Dt(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,a;n()=>e;function Yt(e,{sourceEvent:t,subject:n,target:r,identifier:i,active:a,x:o,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:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:o,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}})}Yt.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Xt(e){return!e.ctrlKey&&!e.button}function Zt(){return this.parentNode}function Qt(e,t){return t??{x:e.x,y:e.y}}function $t(){return navigator.maxTouchPoints||`ontouchstart`in this}function en(){var e=Xt,t=Zt,n=Qt,r=$t,i={},a=w(`start`,`drag`,`end`),o=0,s,c,l,u,d=0;function f(e){e.on(`mousedown.drag`,p).filter(r).on(`touchstart.drag`,g).on(`touchmove.drag`,_,Ht).on(`touchend.drag touchcancel.drag`,v).style(`touch-action`,`none`).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}function p(n,r){if(!(u||!e.call(this,n,r))){var i=y(this,t.call(this,n,r),n,r,`mouse`);i&&(zt(n.view).on(`mousemove.drag`,m,Ut).on(`mouseup.drag`,h,Ut),Kt(n.view),Wt(n),l=!1,s=n.clientX,c=n.clientY,i(`start`,n))}}function m(e){if(Gt(e),!l){var t=e.clientX-s,n=e.clientY-c;l=t*t+n*n>d}i.mouse(`drag`,e)}function h(e){zt(e.view).on(`mousemove.drag mouseup.drag`,null),qt(e.view,l),Gt(e),i.mouse(`end`,e)}function g(n,r){if(e.call(this,n,r)){var i=n.changedTouches,a=t.call(this,n,r),o=i.length,s,c;for(s=0;s>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?wn(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?wn(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=dn.exec(e))?new Dn(t[1],t[2],t[3],1):(t=fn.exec(e))?new Dn(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=pn.exec(e))?wn(t[1],t[2],t[3],t[4]):(t=mn.exec(e))?wn(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=hn.exec(e))?Pn(t[1],t[2]/100,t[3]/100,1):(t=gn.exec(e))?Pn(t[1],t[2]/100,t[3]/100,t[4]):_n.hasOwnProperty(e)?Cn(_n[e]):e===`transparent`?new Dn(NaN,NaN,NaN,0):null}function Cn(e){return new Dn(e>>16&255,e>>8&255,e&255,1)}function wn(e,t,n,r){return r<=0&&(e=t=n=NaN),new Dn(e,t,n,r)}function Tn(e){return e instanceof rn||(e=Sn(e)),e?(e=e.rgb(),new Dn(e.r,e.g,e.b,e.opacity)):new Dn}function En(e,t,n,r){return arguments.length===1?Tn(e):new Dn(e,t,n,r??1)}function Dn(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}tn(Dn,En,nn(rn,{brighter(e){return e=e==null?on:on**+e,new Dn(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?an:an**+e,new Dn(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Dn(Mn(this.r),Mn(this.g),Mn(this.b),jn(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:On,formatHex:On,formatHex8:kn,formatRgb:An,toString:An}));function On(){return`#${Nn(this.r)}${Nn(this.g)}${Nn(this.b)}`}function kn(){return`#${Nn(this.r)}${Nn(this.g)}${Nn(this.b)}${Nn((isNaN(this.opacity)?1:this.opacity)*255)}`}function An(){let e=jn(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Mn(this.r)}, ${Mn(this.g)}, ${Mn(this.b)}${e===1?`)`:`, ${e})`}`}function jn(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Mn(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Nn(e){return e=Mn(e),(e<16?`0`:``)+e.toString(16)}function Pn(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new Ln(e,t,n,r)}function Fn(e){if(e instanceof Ln)return new Ln(e.h,e.s,e.l,e.opacity);if(e instanceof rn||(e=Sn(e)),!e)return new Ln;if(e instanceof Ln)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n0&&c<1?0:o,new Ln(o,s,c,e.opacity)}function In(e,t,n,r){return arguments.length===1?Fn(e):new Ln(e,t,n,r??1)}function Ln(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}tn(Ln,In,nn(rn,{brighter(e){return e=e==null?on:on**+e,new Ln(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?an:an**+e,new Ln(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new Dn(Bn(e>=240?e-240:e+120,i,r),Bn(e,i,r),Bn(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new Ln(Rn(this.h),zn(this.s),zn(this.l),jn(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(){let e=jn(this.opacity);return`${e===1?`hsl(`:`hsla(`}${Rn(this.h)}, ${zn(this.s)*100}%, ${zn(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function Rn(e){return e=(e||0)%360,e<0?e+360:e}function zn(e){return Math.max(0,Math.min(1,e||0))}function Bn(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var Vn=e=>()=>e;function Hn(e,t){return function(n){return e+n*t}}function Un(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function Wn(e){return(e=+e)==1?Gn:function(t,n){return n-t?Un(t,n,e):Vn(isNaN(t)?n:t)}}function Gn(e,t){var n=t-e;return n?Hn(e,n):Vn(isNaN(e)?t:e)}var Kn=(function e(t){var n=Wn(t);function r(e,t){var r=n((e=En(e)).r,(t=En(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=Gn(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function qn(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;in&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:Zn(r,i)})),n=er.lastIndex;return n180?t+=360:t-e>180&&(e+=360),a.push({i:n.push(i(n)+`rotate(`,null,r)-2,x:Zn(e,t)}))}function s(e,t,n,a){e===t?t&&n.push(i(n)+`skewX(`+t+r):a.push({i:n.push(i(n)+`skewX(`,null,r)-2,x:Zn(e,t)})}function c(e,t,n,r,a,o){if(e!==n||t!==r){var s=a.push(i(a)+`scale(`,null,`,`,null,`)`);o.push({i:s-4,x:Zn(e,n)},{i:s-2,x:Zn(t,r)})}else(n!==1||r!==1)&&a.push(i(a)+`scale(`+n+`,`+r+`)`)}return function(t,n){var r=[],i=[];return t=e(t),n=e(n),a(t.translateX,t.translateY,n.translateX,n.translateY,r,i),o(t.rotate,n.rotate,r,i),s(t.skewX,n.skewX,r,i),c(t.scaleX,t.scaleY,n.scaleX,n.scaleY,r,i),t=n=null,function(e){for(var t=-1,n=i.length,a;++t=0&&e._call.call(void 0,t),e=e._next;--yr}function Fr(){Er=(Tr=Or.now())+Dr,yr=br=0;try{Pr()}finally{yr=0,Lr(),Er=0}}function Ir(){var e=Or.now(),t=e-Tr;t>Sr&&(Dr-=t,Tr=e)}function Lr(){for(var e,t=Cr,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:Cr=n);wr=e,Rr(r)}function Rr(e){yr||(br&&=clearTimeout(br),e-Er>24?(e<1/0&&(br=setTimeout(Fr,e-Or.now()-Dr)),xr&&=clearInterval(xr)):(xr||=(Tr=Or.now(),setInterval(Ir,Sr)),yr=1,kr(Fr)))}function zr(e,t,n){var r=new Mr;return t=t==null?0:+t,r.restart(n=>{r.stop(),e(n+t)},t,n),r}var Br=w(`start`,`end`,`cancel`,`interrupt`),Vr=[];function Hr(e,t,n,r,i,a){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;Kr(e,n,{name:t,index:r,group:i,on:Br,tween:Vr,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:0})}function Ur(e,t){var n=Gr(e,t);if(n.state>0)throw Error(`too late; already scheduled`);return n}function Wr(e,t){var n=Gr(e,t);if(n.state>3)throw Error(`too late; already running`);return n}function Gr(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw Error(`transition not found`);return n}function Kr(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=Nr(a,0,n.time);function a(e){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=e&&o(e-n.delay)}function o(a){var l,u,d,f;if(n.state!==1)return c();for(l in r)if(f=r[l],f.name===n.name){if(f.state===3)return zr(o);f.state===4?(f.state=6,f.timer.stop(),f.on.call(`interrupt`,e,e.__data__,f.index,f.group),delete r[l]):+l2&&r.state<5,r.state=6,r.timer.stop(),r.on.call(i?`interrupt`:`cancel`,e,e.__data__,r.index,r.group),delete n[o]}a&&delete e.__transition}}function Jr(e){return this.each(function(){qr(this,e)})}function Yr(e,t){var n,r;return function(){var i=Wr(this,e),a=i.tween;if(a!==n){r=n=a;for(var o=0,s=r.length;o=0&&(e=e.slice(0,t)),!e||e===`start`})}function Ti(e,t,n){var r,i,a=wi(t)?Ur:Wr;return function(){var o=a(this,e),s=o.on;s!==r&&(i=(r=s).copy()).on(t,n),o.on=i}}function Ei(e,t){var n=this._id;return arguments.length<2?Gr(this.node(),n).on.on(e):this.each(Ti(n,e,t))}function Di(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function Oi(){return this.on(`end.remove`,Di(this._id))}function ki(e){var t=this._name,n=this._id;typeof e!=`function`&&(e=ee(e));for(var r=this._groups,i=r.length,a=Array(i),o=0;o()=>e;function aa(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){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:r,enumerable:!0,configurable:!0},_:{value:i}})}function oa(e,t,n){this.k=e,this.x=t,this.y=n}oa.prototype={constructor:oa,scale:function(e){return e===1?this:new oa(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new oa(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 sa=new oa(1,0,0);ca.prototype=oa.prototype;function ca(e){for(;!e.__zoom;)if(!(e=e.parentNode))return sa;return e.__zoom}function la(e){e.stopImmediatePropagation()}function ua(e){e.preventDefault(),e.stopImmediatePropagation()}function da(e){return(!e.ctrlKey||e.type===`wheel`)&&!e.button}function fa(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute(`viewBox`)?(e=e.viewBox.baseVal,[[e.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 pa(){return this.__zoom||sa}function ma(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function ha(){return navigator.maxTouchPoints||`ontouchstart`in this}function ga(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],a=e.invertY(t[0][1])-n[0][1],o=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>a?(a+o)/2:Math.min(0,a)||Math.max(0,o))}function _a(){var e=da,t=fa,n=ga,r=ma,i=ha,a=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],s=250,c=vr,l=w(`start`,`zoom`,`end`),u,d,f,p=500,m=150,h=0,g=10;function _(e){e.property(`__zoom`,pa).on(`wheel.zoom`,T,{passive:!1}).on(`mousedown.zoom`,E).on(`dblclick.zoom`,D).filter(i).on(`touchstart.zoom`,O).on(`touchmove.zoom`,k).on(`touchend.zoom touchcancel.zoom`,A).style(`-webkit-tap-highlight-color`,`rgba(0,0,0,0)`)}_.transform=function(e,t,n,r){var i=e.selection?e.selection():e;i.property(`__zoom`,pa),e===i?i.interrupt().each(function(){S(this,arguments).event(r).start().zoom(null,typeof t==`function`?t.apply(this,arguments):t).end()}):x(e,t,n,r)},_.scaleBy=function(e,t,n,r){_.scaleTo(e,function(){return this.__zoom.k*(typeof t==`function`?t.apply(this,arguments):t)},n,r)},_.scaleTo=function(e,r,i,a){_.transform(e,function(){var e=t.apply(this,arguments),a=this.__zoom,s=i==null?b(e):typeof i==`function`?i.apply(this,arguments):i,c=a.invert(s),l=typeof r==`function`?r.apply(this,arguments):r;return n(y(v(a,l),s,c),e,o)},i,a)},_.translateBy=function(e,r,i,a){_.transform(e,function(){return n(this.__zoom.translate(typeof r==`function`?r.apply(this,arguments):r,typeof i==`function`?i.apply(this,arguments):i),t.apply(this,arguments),o)},null,a)},_.translateTo=function(e,r,i,a,s){_.transform(e,function(){var e=t.apply(this,arguments),s=this.__zoom,c=a==null?b(e):typeof a==`function`?a.apply(this,arguments):a;return n(sa.translate(c[0],c[1]).scale(s.k).translate(typeof r==`function`?-r.apply(this,arguments):-r,typeof i==`function`?-i.apply(this,arguments):-i),e,o)},a,s)};function v(e,t){return t=Math.max(a[0],Math.min(a[1],t)),t===e.k?e:new oa(t,e.x,e.y)}function y(e,t,n){var r=t[0]-n[0]*e.k,i=t[1]-n[1]*e.k;return r===e.x&&i===e.y?e:new oa(e.k,r,i)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function x(e,n,r,i){e.on(`start.zoom`,function(){S(this,arguments).event(i).start()}).on(`interrupt.zoom end.zoom`,function(){S(this,arguments).event(i).end()}).tween(`zoom`,function(){var e=this,a=arguments,o=S(e,a).event(i),s=t.apply(e,a),l=r==null?b(s):typeof r==`function`?r.apply(e,a):r,u=Math.max(s[1][0]-s[0][0],s[1][1]-s[0][1]),d=e.__zoom,f=typeof n==`function`?n.apply(e,a):n,p=c(d.invert(l).concat(u/d.k),f.invert(l).concat(u/f.k));return function(e){if(e===1)e=f;else{var t=p(e),n=u/t[2];e=new oa(n,l[0]-t[0]*n,l[1]-t[1]*n)}o.zoom(null,e)}})}function S(e,t,n){return!n&&e.__zooming||new C(e,t)}function C(e,n){this.that=e,this.args=n,this.active=0,this.sourceEvent=null,this.extent=t.apply(e,n),this.taps=0}C.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit(`start`)),this},zoom:function(e,t){return this.mouse&&e!==`mouse`&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&e!==`touch`&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&e!==`touch`&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit(`zoom`),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit(`end`)),this},emit:function(e){var t=zt(this.that).datum();l.call(e,this.that,new aa(e,{sourceEvent:this.sourceEvent,target:_,type:e,transform:this.that.__zoom,dispatch:l}),t)}};function T(t,...i){if(!e.apply(this,arguments))return;var s=S(this,i).event(t),c=this.__zoom,l=Math.max(a[0],Math.min(a[1],c.k*2**r.apply(this,arguments))),u=Vt(t);if(s.wheel)(s.mouse[0][0]!==u[0]||s.mouse[0][1]!==u[1])&&(s.mouse[1]=c.invert(s.mouse[0]=u)),clearTimeout(s.wheel);else if(c.k===l)return;else s.mouse=[u,c.invert(u)],qr(this),s.start();ua(t),s.wheel=setTimeout(d,m),s.zoom(`mouse`,n(y(v(c,l),s.mouse[0],s.mouse[1]),s.extent,o));function d(){s.wheel=null,s.end()}}function E(t,...r){if(f||!e.apply(this,arguments))return;var i=t.currentTarget,a=S(this,r,!0).event(t),s=zt(t.view).on(`mousemove.zoom`,d,!0).on(`mouseup.zoom`,p,!0),c=Vt(t,i),l=t.clientX,u=t.clientY;Kt(t.view),la(t),a.mouse=[c,this.__zoom.invert(c)],qr(this),a.start();function d(e){if(ua(e),!a.moved){var t=e.clientX-l,r=e.clientY-u;a.moved=t*t+r*r>h}a.event(e).zoom(`mouse`,n(y(a.that.__zoom,a.mouse[0]=Vt(e,i),a.mouse[1]),a.extent,o))}function p(e){s.on(`mousemove.zoom mouseup.zoom`,null),qt(e.view,a.moved),ua(e),a.event(e).end()}}function D(r,...i){if(e.apply(this,arguments)){var a=this.__zoom,c=Vt(r.changedTouches?r.changedTouches[0]:r,this),l=a.invert(c),u=a.k*(r.shiftKey?.5:2),d=n(y(v(a,u),c,l),t.apply(this,i),o);ua(r),s>0?zt(this).transition().duration(s).call(x,d,c,r):zt(this).call(_.transform,d,c,r)}}function O(t,...n){if(e.apply(this,arguments)){var r=t.touches,i=r.length,a=S(this,n,t.changedTouches.length===i).event(t),o,s,c,l;for(la(t),s=0;s`Seems like you have not used ${e===`svelte`?`SvelteFlowProvider`:`ReactFlowProvider`} as an ancestor. Help: https://${e}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:e=>`Node type "${e}" 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:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:t,sourceHandle:n,targetHandle:r})=>`Couldn't create edge for ${e} handle id: "${e===`source`?n:r}", edge id: ${t}.`,error010:()=>`Handle: No node id found. Make sure to only use a Handle inside a custom Node.`,error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012: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.`,error013:(e=`react`)=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/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:e=>`Edge with id "${e}" does not exist, it may have been removed. This can happen when an edge is deleted before the "onEdgeClick" handler is called.`},ya=[[-1/0,-1/0],[1/0,1/0]],ba=[`Enter`,` `,`Escape`],xa={"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`},Sa;(function(e){e.Strict=`strict`,e.Loose=`loose`})(Sa||={});var Ca;(function(e){e.Free=`free`,e.Vertical=`vertical`,e.Horizontal=`horizontal`})(Ca||={});var wa;(function(e){e.Partial=`partial`,e.Full=`full`})(wa||={});var Ta={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null},Ea;(function(e){e.Bezier=`default`,e.Straight=`straight`,e.Step=`step`,e.SmoothStep=`smoothstep`,e.SimpleBezier=`simplebezier`})(Ea||={});var Da;(function(e){e.Arrow=`arrow`,e.ArrowClosed=`arrowclosed`})(Da||={});var U;(function(e){e.Left=`left`,e.Top=`top`,e.Right=`right`,e.Bottom=`bottom`})(U||={});var Oa={[U.Left]:U.Right,[U.Right]:U.Left,[U.Top]:U.Bottom,[U.Bottom]:U.Top};function ka(e){return e===null?null:e?`valid`:`invalid`}var Aa=e=>!!e&&typeof e==`object`&&`id`in e&&`source`in e&&`target`in e,ja=e=>!!e&&typeof e==`object`&&`id`in e&&`position`in e&&!(`source`in e)&&!(`target`in e),Ma=e=>!!e&&typeof e==`object`&&`id`in e&&`internals`in e&&!(`source`in e)&&!(`target`in e),Na=(e,t=[0,0])=>{let{width:n,height:r}=fo(e),i=e.origin??t,a=n*i[0],o=r*i[1];return{x:e.position.x-a,y:e.position.y-o}},Pa=(e,t={nodeOrigin:[0,0]})=>e.length===0?{x:0,y:0,width:0,height:0}:Ya(e.reduce((e,n)=>{let r=typeof n==`string`,i=!t.nodeLookup&&!r?n:void 0;return t.nodeLookup&&(i=r?t.nodeLookup.get(n):Ma(n)?n:t.nodeLookup.get(n.id)),qa(e,i?Za(i,t.nodeOrigin):{x:0,y:0,x2:0,y2:0})},{x:1/0,y:1/0,x2:-1/0,y2:-1/0})),Fa=(e,t={})=>{let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0},r=!1;return e.forEach(e=>{(t.filter===void 0||t.filter(e))&&(n=qa(n,Za(e)),r=!0)}),r?Ya(n):{x:0,y:0,width:0,height:0}},Ia=(e,t,[n,r,i]=[0,0,1],a=!1,o=!1)=>{let s=(t.x-n)/i,c=(t.y-r)/i,l=t.width/i,u=t.height/i,d=[];for(let t of e.values()){let{measured:e,selectable:n=!0,hidden:r=!1}=t;if(o&&!n||r)continue;let i=e.width??t.width??t.initialWidth??0,f=e.height??t.height??t.initialHeight??0,{x:p,y:m}=t.internals.positionAbsolute,h=$a(s,c,l,u,p,m,i,f),g=i*f,_=a&&h>0;(!t.internals.handleBounds||_||h>=g||t.dragging)&&d.push(t)}return d},La=(e,t)=>{let n=new Set;return e.forEach(e=>{n.add(e.id)}),t.filter(e=>n.has(e.source)||n.has(e.target))};function Ra(e,t){let n=new Map,r=t?.nodes?new Set(t.nodes.map(e=>e.id)):null;return e.forEach(e=>{let i;if(t?.includeHiddenNodes){let{width:t,height:n}=fo(e);i=t>0&&n>0}else i=!!(e.measured.width&&e.measured.height&&!e.hidden);i&&(!r||r.has(e.id))&&n.set(e.id,e)}),n}async function za({nodes:e,width:t,height:n,panZoom:r,minZoom:i,maxZoom:a},o){if(e.size===0)return!0;let s=G(Fa(Ra(e,o)),t,n,o?.minZoom??i,o?.maxZoom??a,o?.padding??.1);return await r.setViewport(s,{duration:o?.duration,ease:o?.ease,interpolate:o?.interpolate}),!0}function Ba({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:r=[0,0],nodeExtent:i,onError:a}){let o=n.get(e),s=o.parentId?n.get(o.parentId):void 0,{x:c,y:l}=s?s.internals.positionAbsolute:{x:0,y:0},u=o.origin??r,d=o.extent||i;if(o.extent===`parent`&&!o.expandParent)if(!s)a?.(`005`,va.error005());else{let e=s.measured.width,t=s.measured.height;e&&t&&(d=[[c,l],[c+e,l+t]])}else s&&uo(o.extent)&&(d=[[o.extent[0][0]+c,o.extent[0][1]+l],[o.extent[1][0]+c,o.extent[1][1]+l]]);let f=uo(d)?Ua(t,d,o.measured):t;return(o.measured.width===void 0||o.measured.height===void 0)&&a?.(`015`,va.error015()),{position:{x:f.x-c+(o.measured.width??0)*u[0],y:f.y-l+(o.measured.height??0)*u[1]},positionAbsolute:f}}async function Va({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:r,onBeforeDelete:i}){let a=new Set(e.map(e=>e.id)),o=[];for(let e of n){if(e.deletable===!1)continue;let t=a.has(e.id),n=!t&&e.parentId&&o.find(t=>t.id===e.parentId);(t||n)&&o.push(e)}let s=new Set(t.map(e=>e.id)),c=r.filter(e=>e.deletable!==!1),l=La(o,c);for(let e of c)s.has(e.id)&&!l.find(t=>t.id===e.id)&&l.push(e);if(!i)return{edges:l,nodes:o};let u=await i({nodes:o,edges:l});return typeof u==`boolean`?u?{edges:l,nodes:o}:{edges:[],nodes:[]}:u}var Ha=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),Ua=(e={x:0,y:0},t,n)=>({x:Ha(e.x,t[0][0],t[1][0]-(n?.width??0)),y:Ha(e.y,t[0][1],t[1][1]-(n?.height??0))});function Wa(e,t,n){let{width:r,height:i}=fo(n),{x:a,y:o}=n.internals.positionAbsolute;return Ua(e,[[a,o],[a+r,o+i]],t)}var Ga=(e,t,n)=>en?-Ha(Math.abs(e-n),1,t)/t:0,Ka=(e,t,n=15,r=40)=>[Ga(e.x,r,t.width-r)*n,Ga(e.y,r,t.height-r)*n],qa=(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)}),Ja=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),Ya=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),Xa=(e,t=[0,0])=>{let{x:n,y:r}=Ma(e)?e.internals.positionAbsolute:Na(e,t);return{x:n,y:r,width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}},Za=(e,t=[0,0])=>{let{x:n,y:r}=Ma(e)?e.internals.positionAbsolute:Na(e,t);return{x:n,y:r,x2:n+(e.measured?.width??e.width??e.initialWidth??0),y2:r+(e.measured?.height??e.height??e.initialHeight??0)}},Qa=(e,t)=>Ya(qa(Ja(e),Ja(t))),$a=(e,t,n,r,i,a,o,s)=>{let c=Math.max(0,Math.min(e+n,i+o)-Math.max(e,i)),l=Math.max(0,Math.min(t+r,a+s)-Math.max(t,a));return Math.ceil(c*l)},eo=(e,t)=>$a(e.x,e.y,e.width,e.height,t.x,t.y,t.width,t.height),to=e=>no(e.width)&&no(e.height)&&no(e.x)&&no(e.y),no=e=>!isNaN(e)&&isFinite(e),ro=(e,t)=>(e,t)=>{},io=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),ao=({x:e,y:t},[n,r,i],a=!1,o=[1,1])=>{let s={x:(e-n)/i,y:(t-r)/i};return a?io(s,o):s},oo=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r});function so(e,t){if(typeof e==`number`)return Math.floor((t-t/(1+e))*.5);if(typeof e==`string`&&e.endsWith(`px`)){let t=parseFloat(e);if(!Number.isNaN(t))return Math.floor(t)}if(typeof e==`string`&&e.endsWith(`%`)){let 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}function co(e,t,n){if(typeof e==`string`||typeof e==`number`){let r=so(e,n),i=so(e,t);return{top:r,right:i,bottom:r,left:i,x:i*2,y:r*2}}if(typeof e==`object`){let r=so(e.top??e.y??0,n),i=so(e.bottom??e.y??0,n),a=so(e.left??e.x??0,t),o=so(e.right??e.x??0,t);return{top:r,right:o,bottom:i,left:a,x:a+o,y:r+i}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function W(e,t,n,r,i,a){let{x:o,y:s}=oo(e,[t,n,r]),{x:c,y:l}=oo({x:e.x+e.width,y:e.y+e.height},[t,n,r]),u=i-c,d=a-l;return{left:Math.floor(o),top:Math.floor(s),right:Math.floor(u),bottom:Math.floor(d)}}var G=(e,t,n,r,i,a)=>{let o=co(a,t,n),s=(t-o.x)/e.width,c=(n-o.y)/e.height,l=Ha(Math.min(s,c),r,i),u=e.x+e.width/2,d=e.y+e.height/2,f=t/2-u*l,p=n/2-d*l,m=W(e,f,p,l,t,n),h={left:Math.min(m.left-o.left,0),top:Math.min(m.top-o.top,0),right:Math.min(m.right-o.right,0),bottom:Math.min(m.bottom-o.bottom,0)};return{x:f-h.left+h.right,y:p-h.top+h.bottom,zoom:l}},lo=()=>typeof navigator<`u`&&navigator?.userAgent?.indexOf(`Mac`)>=0;function uo(e){return e!=null&&e!==`parent`}function fo(e){return{width:e.measured?.width??e.width??e.initialWidth??0,height:e.measured?.height??e.height??e.initialHeight??0}}function po(e){return(e.measured?.width??e.width??e.initialWidth)!==void 0&&(e.measured?.height??e.height??e.initialHeight)!==void 0}function mo(e,t={width:0,height:0},n,r,i){let a={...e},o=r.get(n);if(o){let e=o.origin||i;a.x+=o.internals.positionAbsolute.x-(t.width??0)*e[0],a.y+=o.internals.positionAbsolute.y-(t.height??0)*e[1]}return a}function ho(e,t){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function go(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function _o(e){return{...xa,...e||{}}}function vo(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:i}){let{x:a,y:o}=wo(e),s=ao({x:a-(i?.left??0),y:o-(i?.top??0)},r),{x:c,y:l}=n?io(s,t):s;return{xSnapped:c,ySnapped:l,...s}}var yo=e=>({width:e.offsetWidth,height:e.offsetHeight}),bo=e=>e?.getRootNode?.()||window?.document,xo=[`INPUT`,`SELECT`,`TEXTAREA`];function So(e){let t=e.composedPath?.()?.[0]||e.target;return t?.nodeType===1?xo.includes(t.nodeName)||t.hasAttribute(`contenteditable`)||!!t.closest(`.nokey`):!1}var Co=e=>`clientX`in e,wo=(e,t)=>{let n=Co(e),r=n?e.clientX:e.touches?.[0].clientX,i=n?e.clientY:e.touches?.[0].clientY;return{x:r-(t?.left??0),y:i-(t?.top??0)}},To=(e,t,n,r,i)=>{let a=t.querySelectorAll(`.${e}`);return!a||!a.length?null:Array.from(a).map(t=>{let a=t.getBoundingClientRect();return{id:t.getAttribute(`data-handleid`),type:e,nodeId:i,position:t.getAttribute(`data-handlepos`),x:(a.left-n.left)/r,y:(a.top-n.top)/r,...yo(t)}})};function Eo({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:i,sourceControlY:a,targetControlX:o,targetControlY:s}){let c=e*.125+i*.375+o*.375+n*.125,l=t*.125+a*.375+s*.375+r*.125;return[c,l,Math.abs(c-e),Math.abs(l-t)]}function Do(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function Oo({pos:e,x1:t,y1:n,x2:r,y2:i,c:a}){switch(e){case U.Left:return[t-Do(t-r,a),n];case U.Right:return[t+Do(r-t,a),n];case U.Top:return[t,n-Do(n-i,a)];case U.Bottom:return[t,n+Do(i-n,a)]}}function ko({sourceX:e,sourceY:t,sourcePosition:n=U.Bottom,targetX:r,targetY:i,targetPosition:a=U.Top,curvature:o=.25}){let[s,c]=Oo({pos:n,x1:e,y1:t,x2:r,y2:i,c:o}),[l,u]=Oo({pos:a,x1:r,y1:i,x2:e,y2:t,c:o}),[d,f,p,m]=Eo({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:s,sourceControlY:c,targetControlX:l,targetControlY:u});return[`M${e},${t} C${s},${c} ${l},${u} ${r},${i}`,d,f,p,m]}function Ao({sourceX:e,sourceY:t,targetX:n,targetY:r}){let i=Math.abs(n-e)/2,a=n0}var No=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||``}-${n}${r||``}`,Po=(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)),Fo=(e,t,n={})=>{if(!e.source||!e.target)return n.onError?.(`006`,va.error006()),t;let r=n.getEdgeId||No,i;return i=Aa(e)?{...e}:{...e,id:r(e)},Po(i,t)?t:(i.sourceHandle===null&&delete i.sourceHandle,i.targetHandle===null&&delete i.targetHandle,t.concat(i))};function Io({sourceX:e,sourceY:t,targetX:n,targetY:r}){let[i,a,o,s]=Ao({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,a,o,s]}var Lo={[U.Left]:{x:-1,y:0},[U.Right]:{x:1,y:0},[U.Top]:{x:0,y:-1},[U.Bottom]:{x:0,y:1}},Ro=({source:e,sourcePosition:t=U.Bottom,target:n})=>t===U.Left||t===U.Right?e.xMath.sqrt((t.x-e.x)**2+(t.y-e.y)**2);function Bo({source:e,sourcePosition:t=U.Bottom,target:n,targetPosition:r=U.Top,center:i,offset:a,stepPosition:o}){let s=Lo[t],c=Lo[r],l={x:e.x+s.x*a,y:e.y+s.y*a},u={x:n.x+c.x*a,y:n.y+c.y*a},d=Ro({source:l,sourcePosition:t,target:u}),f=d.x===0?`y`:`x`,p=d[f],m=[],h,g,_={x:0,y:0},v={x:0,y:0},[,,y,b]=Ao({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[f]*c[f]===-1){f===`x`?(h=i.x??l.x+(u.x-l.x)*o,g=i.y??(l.y+u.y)/2):(h=i.x??(l.x+u.x)/2,g=i.y??l.y+(u.y-l.y)*o);let e=[{x:h,y:l.y},{x:h,y:u.y}],t=[{x:l.x,y:g},{x:u.x,y:g}];m=s[f]===p?f===`x`?e:t:f===`x`?t:e}else{let i=[{x:l.x,y:u.y}],o=[{x:u.x,y:l.y}];if(m=f===`x`?s.x===p?o:i:s.y===p?i:o,t===r){let t=Math.abs(e[f]-n[f]);if(t<=a){let r=Math.min(a-1,a-t);s[f]===p?_[f]=(l[f]>e[f]?-1:1)*r:v[f]=(u[f]>n[f]?-1:1)*r}}if(t!==r){let e=f===`x`?`y`:`x`,t=s[f]===c[e],n=l[e]>u[e],r=l[e]=Math.max(Math.abs(d.y-m[0].y),Math.abs(y.y-m[0].y))?(h=(d.x+y.x)/2,g=m[0].y):(h=m[0].x,g=(d.y+y.y)/2)}let x={x:l.x+_.x,y:l.y+_.y},S={x:u.x+v.x,y:u.y+v.y};return[[e,...x.x!==m[0].x||x.y!==m[0].y?[x]:[],...m,...S.x!==m[m.length-1].x||S.y!==m[m.length-1].y?[S]:[],n],h,g,y,b]}function Vo(e,t,n,r){let i=Math.min(zo(e,t)/2,zo(t,n)/2,r),{x:a,y:o}=t;if(e.x===a&&a===n.x||e.y===o&&o===n.y)return`L${a} ${o}`;if(e.y===o){let t=e.xe.id===t):e[0])||null}function Jo(e,t){return e?typeof e==`string`?e:`${t?`${t}__`:``}${Object.keys(e).sort().map(t=>`${t}=${e[t]}`).join(`&`)}`:``}function Yo(e,{id:t,defaultColor:n,defaultMarkerStart:r,defaultMarkerEnd:i}){let a=new Set;return e.reduce((e,o)=>([o.markerStart||r,o.markerEnd||i].forEach(r=>{if(r&&typeof r==`object`){let i=Jo(r,t);a.has(i)||(e.push({id:i,color:r.color||n,...r}),a.add(i))}}),e),[]).sort((e,t)=>e.id.localeCompare(t.id))}var Xo=1e3,Zo=10,Qo={nodeOrigin:[0,0],nodeExtent:ya,elevateNodesOnSelect:!0,zIndexMode:`basic`,defaults:{}},$o={...Qo,checkEquality:!0};function es(e,t){let n={...e};for(let e in t)t[e]!==void 0&&(n[e]=t[e]);return n}function ts(e,t,n){let r=es(Qo,n);for(let n of e.values())if(n.parentId)os(n,e,t,r);else{let e=Ua(Na(n,r.nodeOrigin),uo(n.extent)?n.extent:r.nodeExtent,fo(n));n.internals.positionAbsolute=e}}function ns(e,t){if(!e.handles)return e.measured?t?.internals.handleBounds:void 0;let n=[],r=[];for(let t of e.handles){let i={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};t.type===`source`?n.push(i):t.type===`target`&&r.push(i)}return{source:n,target:r}}function rs(e){return e===`manual`}function is(e,t,n,r={}){let i=es($o,r),a={i:0},o=new Map(t),s=i?.elevateNodesOnSelect&&!rs(i.zIndexMode)?Xo:0,c=e.length>0,l=!1;t.clear(),n.clear();for(let u of e){let e=o.get(u.id);if(i.checkEquality&&u===e?.internals.userNode)t.set(u.id,e);else{let n=Ua(Na(u,i.nodeOrigin),uo(u.extent)?u.extent:i.nodeExtent,fo(u));e={...i.defaults,...u,measured:{width:u.measured?.width,height:u.measured?.height},internals:{positionAbsolute:n,handleBounds:ns(u,e),z:ss(u,s,i.zIndexMode),userNode:u}},t.set(u.id,e)}(e.measured===void 0||e.measured.width===void 0||e.measured.height===void 0)&&!e.hidden&&(c=!1),u.parentId&&os(e,t,n,r,a),l||=u.selected??!1}return{nodesInitialized:c,hasSelectedNodes:l}}function as(e,t){if(!e.parentId)return;let n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}function os(e,t,n,r,i){let{elevateNodesOnSelect:a,nodeOrigin:o,nodeExtent:s,zIndexMode:c}=es(Qo,r),l=e.parentId,u=t.get(l);if(!u){console.warn(`Parent node ${l} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}as(e,n),i&&!u.parentId&&u.internals.rootParentIndex===void 0&&c===`auto`&&(u.internals.rootParentIndex=++i.i,u.internals.z=u.internals.z+i.i*Zo),i&&u.internals.rootParentIndex!==void 0&&(i.i=u.internals.rootParentIndex);let{x:d,y:f,z:p}=cs(e,u,o,s,a&&!rs(c)?Xo:0,c),{positionAbsolute:m}=e.internals,h=d!==m.x||f!==m.y;(h||p!==e.internals.z)&&t.set(e.id,{...e,internals:{...e.internals,positionAbsolute:h?{x:d,y:f}:m,z:p}})}function ss(e,t,n){let r=no(e.zIndex)?e.zIndex:0;return rs(n)?r:r+(e.selected?t:0)}function cs(e,t,n,r,i,a){let{x:o,y:s}=t.internals.positionAbsolute,c=fo(e),l=Na(e,n),u=uo(e.extent)?Ua(l,e.extent,c):l,d=Ua({x:o+u.x,y:s+u.y},r,c);e.extent===`parent`&&(d=Wa(d,c,t));let f=ss(e,i,a),p=t.internals.z??0;return{x:d.x,y:d.y,z:p>=f?p+1:f}}function ls(e,t,n,r=[0,0]){let i=[],a=new Map;for(let n of e){let e=t.get(n.parentId);if(!e)continue;let r=Qa(a.get(n.parentId)?.expandedRect??Xa(e),n.rect);a.set(n.parentId,{expandedRect:r,parent:e})}return a.size>0&&a.forEach(({expandedRect:t,parent:a},o)=>{let s=a.internals.positionAbsolute,c=fo(a),l=a.origin??r,u=t.x0||d>0||m||h)&&(i.push({id:o,type:`position`,position:{x:a.position.x-u+m,y:a.position.y-d+h}}),n.get(o)?.forEach(t=>{e.some(e=>e.id===t.id)||i.push({id:t.id,type:`position`,position:{x:t.position.x+u,y:t.position.y+d}})})),(c.width0){let e=ls(f,t,n,i);l.push(...e)}return{changes:l,updatedInternals:c}}async function ds({delta:e,panZoom:t,transform:n,translateExtent:r,width:i,height:a}){if(!t||!e.x&&!e.y)return!1;let o=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[i,a]],r);return!!o&&(o.x!==n[0]||o.y!==n[1]||o.k!==n[2])}function fs(e,t,n,r,i,a){let o=i,s=r.get(o)||new Map;r.set(o,s.set(n,t)),o=`${i}-${e}`;let c=r.get(o)||new Map;if(r.set(o,c.set(n,t)),a){o=`${i}-${e}-${a}`;let s=r.get(o)||new Map;r.set(o,s.set(n,t))}}function ps(e,t,n){e.clear(),t.clear();for(let r of n){let{source:n,target:i,sourceHandle:a=null,targetHandle:o=null}=r,s={edgeId:r.id,source:n,target:i,sourceHandle:a,targetHandle:o},c=`${n}-${a}--${i}-${o}`;fs(`source`,s,`${i}-${o}--${n}-${a}`,e,n,a),fs(`target`,s,c,e,i,o),t.set(r.id,r)}}function ms(e,t){if(!e.parentId)return!1;let n=t.get(e.parentId);return n?n.selected?!0:ms(n,t):!1}function hs(e,t,n){let r=e;do{if(r?.matches?.(t))return!0;if(r===n)return!1;r=r?.parentElement}while(r);return!1}function gs(e,t,n,r){let i=new Map;for(let[a,o]of e)if((o.selected||o.id===r)&&(!o.parentId||!ms(o,e))&&(o.draggable||t&&o.draggable===void 0)){let t=e.get(a);t&&i.set(a,{id:a,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 i}function _s({nodeId:e,dragItems:t,nodeLookup:n,dragging:r=!0}){let i=[];for(let[e,a]of t){let t=n.get(e)?.internals.userNode;t&&i.push({...t,position:a.position,dragging:r})}if(!e)return[i[0],i];let a=n.get(e)?.internals.userNode;return[a?{...a,position:t.get(e)?.position||a.position,dragging:r}:i[0],i]}function vs({dragItems:e,snapGrid:t,x:n,y:r}){let i=e.values().next().value;if(!i)return null;let a={x:n-i.distance.x,y:r-i.distance.y},o=io(a,t);return{x:o.x-a.x,y:o.y-a.y}}function ys({onNodeMouseDown:e,getStoreItems:t,onDragStart:n,onDrag:r,onDragStop:i}){let a={x:null,y:null},o=0,s=new Map,c=!1,l={x:0,y:0},u=null,d=!1,f=null,p=!1,m=!1,h=null;function g({noDragClassName:g,handleSelector:_,domNode:v,isSelectable:y,nodeId:b,nodeClickDistance:x=0}){f=zt(v);function S({x:e,y:n}){let{nodeLookup:i,nodeExtent:o,snapGrid:c,snapToGrid:l,nodeOrigin:u,onNodeDrag:d,onSelectionDrag:f,onError:p,updateNodePositions:g}=t();a={x:e,y:n};let _=!1,v=s.size>1,y=v&&o?Ja(Fa(s)):null,x=v&&l?vs({dragItems:s,snapGrid:c,x:e,y:n}):null;for(let[t,r]of s){if(!i.has(t))continue;let a={x:e-r.distance.x,y:n-r.distance.y};l&&(a=x?{x:Math.round(a.x+x.x),y:Math.round(a.y+x.y)}:io(a,c));let s=null;if(v&&o&&!r.extent&&y){let{positionAbsolute:e}=r.internals,t=e.x-y.x+o[0][0],n=e.x+r.measured.width-y.x2+o[1][0],i=e.y-y.y+o[0][1],a=e.y+r.measured.height-y.y2+o[1][1];s=[[t,i],[n,a]]}let{position:d,positionAbsolute:f}=Ba({nodeId:t,nextPosition:a,nodeLookup:i,nodeExtent:s||o,nodeOrigin:u,onError:p});_=_||r.position.x!==d.x||r.position.y!==d.y,r.position=d,r.internals.positionAbsolute=f}if(m||=_,_&&(g(s,!0),h&&(r||d||!b&&f))){let[e,t]=_s({nodeId:b,dragItems:s,nodeLookup:i});r?.(h,s,e,t),d?.(h,e,t),b||f?.(h,t)}}async function C(){if(!u)return;let{transform:e,panBy:n,autoPanSpeed:r,autoPanOnNodeDrag:i}=t();if(!i){c=!1,cancelAnimationFrame(o);return}let[s,d]=Ka(l,u,r);(s!==0||d!==0)&&(a.x=(a.x??0)-s/e[2],a.y=(a.y??0)-d/e[2],await n({x:s,y:d})&&S(a)),o=requestAnimationFrame(C)}function w(r){let{nodeLookup:i,multiSelectionActive:o,nodesDraggable:c,transform:l,snapGrid:f,snapToGrid:p,selectNodesOnDrag:m,onNodeDragStart:h,onSelectionDragStart:g,unselectNodesAndEdges:_}=t();d=!0,(!m||!y)&&!o&&b&&(i.get(b)?.selected||_()),y&&m&&b&&e?.(b);let v=vo(r.sourceEvent,{transform:l,snapGrid:f,snapToGrid:p,containerBounds:u});if(a=v,s=gs(i,c,v,b),s.size>0&&(n||h||!b&&g)){let[e,t]=_s({nodeId:b,dragItems:s,nodeLookup:i});n?.(r.sourceEvent,s,e,t),h?.(r.sourceEvent,e,t),b||g?.(r.sourceEvent,t)}}let T=en().clickDistance(x).on(`start`,e=>{let{domNode:n,nodeDragThreshold:r,transform:i,snapGrid:o,snapToGrid:s}=t();u=n?.getBoundingClientRect()||null,p=!1,m=!1,h=e.sourceEvent,r===0&&w(e),a=vo(e.sourceEvent,{transform:i,snapGrid:o,snapToGrid:s,containerBounds:u}),l=wo(e.sourceEvent,u)}).on(`drag`,e=>{let{autoPanOnNodeDrag:n,transform:r,snapGrid:i,snapToGrid:o,nodeDragThreshold:f,nodeLookup:m}=t(),g=vo(e.sourceEvent,{transform:r,snapGrid:i,snapToGrid:o,containerBounds:u});if(h=e.sourceEvent,(e.sourceEvent.type===`touchmove`&&e.sourceEvent.touches.length>1||b&&!m.has(b))&&(p=!0),!p){if(!c&&n&&d&&(c=!0,C()),!d){let t=wo(e.sourceEvent,u),n=t.x-l.x,r=t.y-l.y;Math.sqrt(n*n+r*r)>f&&w(e)}(a.x!==g.xSnapped||a.y!==g.ySnapped)&&s&&d&&(l=wo(e.sourceEvent,u),S(g))}}).on(`end`,e=>{if(!d||p){p&&s.size>0&&t().updateNodePositions(s,!1);return}if(c=!1,d=!1,cancelAnimationFrame(o),s.size>0){let{nodeLookup:n,updateNodePositions:r,onNodeDragStop:a,onSelectionDragStop:o}=t();if(m&&=(r(s,!1),!1),i||a||!b&&o){let[t,r]=_s({nodeId:b,dragItems:s,nodeLookup:n,dragging:!1});i?.(e.sourceEvent,s,t,r),a?.(e.sourceEvent,t,r),b||o?.(e.sourceEvent,r)}}}).filter(e=>{let t=e.target;return!e.button&&(!g||!hs(t,`.${g}`,v))&&(!_||hs(t,_,v))});f.call(T)}function _(){f?.on(`.drag`,null)}return{update:g,destroy:_}}function bs(e,t,n){let r=[],i={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(let e of t.values())eo(i,Xa(e))>0&&r.push(e);return r}var xs=250;function Ss(e,t,n,r){let i=[],a=1/0,o=bs(e,n,t+xs);for(let n of o){let o=[...n.internals.handleBounds?.source??[],...n.internals.handleBounds?.target??[]];for(let s of o){if(r.nodeId===s.nodeId&&r.type===s.type&&r.id===s.id)continue;let{x:o,y:c}=Ko(n,s,s.position,!0),l=Math.sqrt((o-e.x)**2+(c-e.y)**2);l>t||(l1){let e=r.type===`source`?`target`:`source`;return i.find(t=>t.type===e)??i[0]}return i[0]}function Cs(e,t,n,r,i,a=!1){let o=r.get(e);if(!o)return null;let s=i===`strict`?o.internals.handleBounds?.[t]:[...o.internals.handleBounds?.source??[],...o.internals.handleBounds?.target??[]],c=(n?s?.find(e=>e.id===n):s?.[0])??null;return c&&a?{...c,...Ko(o,c,c.position,!0)}:c}function ws(e,t){return e||(t?.classList.contains(`target`)?`target`:t?.classList.contains(`source`)?`source`:null)}function Ts(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}var Es=()=>!0;function Ds(e,{connectionMode:t,connectionRadius:n,handleId:r,nodeId:i,edgeUpdaterType:a,isTarget:o,domNode:s,nodeLookup:c,lib:l,autoPanOnConnect:u,flowId:d,panBy:f,cancelConnection:p,onConnectStart:m,onConnect:h,onConnectEnd:g,isValidConnection:_=Es,onReconnectEnd:v,updateConnection:y,getTransform:b,getFromHandle:x,autoPanSpeed:S,dragThreshold:C=1,handleDomNode:w}){let T=bo(e.target),E=0,D,{x:O,y:k}=wo(e),A=ws(a,w),j=s?.getBoundingClientRect(),M=!1;if(!j||!A)return;let N=Cs(i,A,r,c,t);if(!N)return;let P=wo(e,j),ee=!1,F=null,I=!1,L=null;function te(){if(!u||!j)return;let[e,t]=Ka(P,j,S);f({x:e,y:t}),E=requestAnimationFrame(te)}let R={...N,nodeId:i,type:A,position:N.position},z=c.get(i),B={inProgress:!0,isValid:null,from:Ko(z,R,U.Left,!0),fromHandle:R,fromPosition:R.position,fromNode:z,to:P,toHandle:null,toPosition:Oa[R.position],toNode:null,pointer:P};function V(){M=!0,y(B),m?.(e,{nodeId:i,handleId:r,handleType:A})}C===0&&V();function ne(e){if(!M){let{x:t,y:n}=wo(e),r=t-O,i=n-k;if(!(r*r+i*i>C*C))return;V()}if(!x()||!R){re(e);return}let a=b();P=wo(e,j),D=Ss(ao(P,a,!1,[1,1]),n,c,R),ee||=(te(),!0);let s=Os(e,{handle:D,connectionMode:t,fromNodeId:i,fromHandleId:r,fromType:o?`target`:`source`,isValidConnection:_,doc:T,lib:l,flowId:d,nodeLookup:c});L=s.handleDomNode,F=s.connection,I=Ts(!!D,s.isValid);let u=c.get(i),f=u?Ko(u,R,U.Left,!0):B.from,p={...B,from:f,isValid:I,to:s.toHandle&&I?oo({x:s.toHandle.x,y:s.toHandle.y},a):P,toHandle:s.toHandle,toPosition:I&&s.toHandle?s.toHandle.position:Oa[R.position],toNode:s.toHandle?c.get(s.toHandle.nodeId):null,pointer:P};y(p),B=p}function re(e){if(!(`touches`in e&&e.touches.length>0)){if(M){(D||L)&&F&&I&&h?.(F);let{inProgress:t,...n}=B,r={...n,toPosition:B.toHandle?B.toPosition:null};g?.(e,r),a&&v?.(e,r)}p(),cancelAnimationFrame(E),ee=!1,I=!1,F=null,L=null,T.removeEventListener(`mousemove`,ne),T.removeEventListener(`mouseup`,re),T.removeEventListener(`touchmove`,ne),T.removeEventListener(`touchend`,re)}}T.addEventListener(`mousemove`,ne),T.addEventListener(`mouseup`,re),T.addEventListener(`touchmove`,ne),T.addEventListener(`touchend`,re)}function Os(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:i,fromType:a,doc:o,lib:s,flowId:c,isValidConnection:l=Es,nodeLookup:u}){let d=a===`target`,f=t?o.querySelector(`.${s}-flow__handle[data-id="${c}-${t?.nodeId}-${t?.id}-${t?.type}"]`):null,{x:p,y:m}=wo(e),h=o.elementFromPoint(p,m),g=h?.classList.contains(`${s}-flow__handle`)?h:f,_={handleDomNode:g,isValid:!1,connection:null,toHandle:null};if(g){let e=ws(void 0,g),t=g.getAttribute(`data-nodeid`),a=g.getAttribute(`data-handleid`),o=g.classList.contains(`connectable`),s=g.classList.contains(`connectableend`);if(!t||!e)return _;let c={source:d?t:r,sourceHandle:d?a:i,target:d?r:t,targetHandle:d?i:a};_.connection=c,_.isValid=o&&s&&(n===Sa.Strict?d&&e===`source`||!d&&e===`target`:t!==r||a!==i)&&l(c),_.toHandle=Cs(t,e,a,u,n,!0)}return _}var ks={onPointerDown:Ds,isValid:Os};function As({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){let i=zt(e);function a({translateExtent:e,width:a,height:o,zoomStep:s=1,pannable:c=!0,zoomable:l=!0,inversePan:u=!1}){let d=e=>{if(e.sourceEvent.type!==`wheel`||!t)return;let r=n(),i=e.sourceEvent.ctrlKey&&lo()?10:1,a=-e.sourceEvent.deltaY*(e.sourceEvent.deltaMode===1?.05:e.sourceEvent.deltaMode?1:.002)*s,o=r[2]*2**(a*i);t.scaleTo(o)},f=[0,0],p=_a().on(`start`,e=>{(e.sourceEvent.type===`mousedown`||e.sourceEvent.type===`touchstart`)&&(f=[e.sourceEvent.clientX??e.sourceEvent.touches[0].clientX,e.sourceEvent.clientY??e.sourceEvent.touches[0].clientY])}).on(`zoom`,c?i=>{let s=n();if(i.sourceEvent.type!==`mousemove`&&i.sourceEvent.type!==`touchmove`||!t)return;let c=[i.sourceEvent.clientX??i.sourceEvent.touches[0].clientX,i.sourceEvent.clientY??i.sourceEvent.touches[0].clientY],l=[c[0]-f[0],c[1]-f[1]];f=c;let d=r()*Math.max(s[2],Math.log(s[2]))*(u?-1:1),p={x:s[0]-l[0]*d,y:s[1]-l[1]*d},m=[[0,0],[a,o]];t.setViewportConstrained({x:p.x,y:p.y,zoom:s[2]},m,e)}:null).on(`zoom.wheel`,l?d:null);i.call(p,{})}function o(){i.on(`zoom`,null)}return{update:a,destroy:o,pointer:Vt}}var js=e=>({x:e.x,y:e.y,zoom:e.k}),Ms=({x:e,y:t,zoom:n})=>sa.translate(e,t).scale(n),Ns=(e,t)=>e.target.closest(`.${t}`),Ps=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),Fs=e=>((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2,Is=(e,t=0,n=Fs,r=()=>{})=>{let i=typeof t==`number`&&t>0;return i||r(),i?e.transition().duration(t).ease(n).on(`end`,r):e},Ls=e=>{let t=e.ctrlKey&&lo()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function Rs({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:i,panOnScrollSpeed:a,zoomOnPinch:o,onPanZoomStart:s,onPanZoom:c,onPanZoomEnd:l}){return u=>{if(Ns(u,t))return u.ctrlKey&&u.preventDefault(),!1;u.preventDefault(),u.stopImmediatePropagation();let d=n.property(`__zoom`).k||1;if(u.ctrlKey&&o){let e=Vt(u),t=d*2**Ls(u);r.scaleTo(n,t,e,u);return}let f=u.deltaMode===1?20:1,p=i===Ca.Vertical?0:u.deltaX*f,m=i===Ca.Horizontal?0:u.deltaY*f;!lo()&&u.shiftKey&&i!==Ca.Vertical&&(p=u.deltaY*f,m=0),r.translateBy(n,-(p/d)*a,-(m/d)*a,{internal:!0});let h=js(n.property(`__zoom`));clearTimeout(e.panScrollTimeout),e.isPanScrolling?c?.(u,h):(e.isPanScrolling=!0,s?.(u,h)),e.panScrollTimeout=setTimeout(()=>{l?.(u,h),e.isPanScrolling=!1},150)}}function zs({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,i){let a=r.type===`wheel`,o=!t&&a&&!r.ctrlKey,s=Ns(r,e);if(r.ctrlKey&&a&&s&&r.preventDefault(),o||s)return null;r.preventDefault(),n.call(this,r,i)}}function Bs({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{if(r.sourceEvent?.internal)return;let i=js(r.transform);e.mouseButton=r.sourceEvent?.button||0,e.isZoomingOrPanning=!0,e.prevViewport=i,r.sourceEvent?.type===`mousedown`&&t(!0),n&&n?.(r.sourceEvent,i)}}function Vs({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:i}){return a=>{e.usedRightMouseButton=!!(n&&Ps(t,e.mouseButton??0)),a.sourceEvent?.sync||r([a.transform.x,a.transform.y,a.transform.k]),i&&!a.sourceEvent?.internal&&i?.(a.sourceEvent,js(a.transform))}}function Hs({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:i,onPaneContextMenu:a}){return o=>{if(!o.sourceEvent?.internal&&(e.isZoomingOrPanning=!1,a&&Ps(t,e.mouseButton??0)&&!e.usedRightMouseButton&&o.sourceEvent&&a(o.sourceEvent),e.usedRightMouseButton=!1,r(!1),i)){let t=js(o.transform);e.prevViewport=t,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{i?.(o.sourceEvent,t)},n?150:0)}}}function Us({zoomActivationKeyPressed:e,zoomOnScroll:t,zoomOnPinch:n,panOnDrag:r,panOnScroll:i,zoomOnDoubleClick:a,userSelectionActive:o,noWheelClassName:s,noPanClassName:c,lib:l,connectionInProgress:u}){return d=>{let f=e||t,p=n&&d.ctrlKey,m=d.type===`wheel`;if(d.button===1&&d.type===`mousedown`&&(Ns(d,`${l}-flow__node`)||Ns(d,`${l}-flow__edge`)))return!0;if(!r&&!f&&!i&&!a&&!n||o||u&&!m||Ns(d,s)&&m||Ns(d,c)&&(!m||i&&m&&!e)||!n&&d.ctrlKey&&m)return!1;if(!n&&d.type===`touchstart`&&d.touches?.length>1)return d.preventDefault(),!1;if(!f&&!i&&!p&&m||!r&&(d.type===`mousedown`||d.type===`touchstart`)||Array.isArray(r)&&!r.includes(d.button)&&d.type===`mousedown`)return!1;let h=Array.isArray(r)&&r.includes(d.button)||!d.button||d.button<=1;return(!d.ctrlKey||m)&&h}}function Ws({domNode:e,minZoom:t,maxZoom:n,translateExtent:r,viewport:i,onPanZoom:a,onPanZoomStart:o,onPanZoomEnd:s,onDraggingChange:c}){let l={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},u=e.getBoundingClientRect(),d=[[0,0],[u.width,u.height]];(typeof ResizeObserver<`u`?new ResizeObserver(e=>{let t=e[0];t&&(d=[[0,0],[t.contentRect.width,t.contentRect.height]])}):null)?.observe(e);let f=_a().extent(()=>d).scaleExtent([t,n]).translateExtent(r),p=zt(e).call(f);y({x:i.x,y:i.y,zoom:Ha(i.zoom,t,n)},[[0,0],[u.width,u.height]],r);let m=p.on(`wheel.zoom`),h=p.on(`dblclick.zoom`);f.wheelDelta(Ls);async function g(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?ir:vr).transform(Is(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}function _({noWheelClassName:e,noPanClassName:t,onPaneContextMenu:n,userSelectionActive:r,panOnScroll:i,panOnDrag:u,panOnScrollMode:d,panOnScrollSpeed:g,preventScrolling:_,zoomOnPinch:y,zoomOnScroll:b,zoomOnDoubleClick:x,zoomActivationKeyPressed:S,lib:C,onTransformChange:w,connectionInProgress:T,paneClickDistance:E,selectionOnDrag:D}){r&&!l.isZoomingOrPanning&&v();let O=i&&!S&&!r;f.clickDistance(D?1/0:!no(E)||E<0?0:E);let k=O?Rs({zoomPanValues:l,noWheelClassName:e,d3Selection:p,d3Zoom:f,panOnScrollMode:d,panOnScrollSpeed:g,zoomOnPinch:y,onPanZoomStart:o,onPanZoom:a,onPanZoomEnd:s}):zs({noWheelClassName:e,preventScrolling:_,d3ZoomHandler:m});p.on(`wheel.zoom`,k,{passive:!1});let A=Bs({zoomPanValues:l,onDraggingChange:c,onPanZoomStart:o});f.on(`start`,A);let j=Vs({zoomPanValues:l,panOnDrag:u,onPaneContextMenu:!!n,onPanZoom:a,onTransformChange:w});f.on(`zoom`,j);let M=Hs({zoomPanValues:l,panOnDrag:u,panOnScroll:i,onPaneContextMenu:n,onPanZoomEnd:s,onDraggingChange:c});f.on(`end`,M);let N=Us({zoomActivationKeyPressed:S,panOnDrag:u,zoomOnScroll:b,panOnScroll:i,zoomOnDoubleClick:x,zoomOnPinch:y,userSelectionActive:r,noPanClassName:t,noWheelClassName:e,lib:C,connectionInProgress:T});f.filter(N),x?p.on(`dblclick.zoom`,h):p.on(`dblclick.zoom`,null)}function v(){f.on(`zoom`,null)}async function y(e,t,n){let r=Ms(e),i=f?.constrain()(r,t,n);return i&&await g(i),i}async function b(e,t){let n=Ms(e);return await g(n,t),n}function x(e){if(p){let t=Ms(e),n=p.property(`__zoom`);(n.k!==e.zoom||n.x!==e.x||n.y!==e.y)&&f?.transform(p,t,null,{sync:!0})}}function S(){let e=p?ca(p.node()):{x:0,y:0,k:1};return{x:e.x,y:e.y,zoom:e.k}}async function C(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?ir:vr).scaleTo(Is(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}async function w(e,t){return p?new Promise(n=>{f?.interpolate(t?.interpolate===`linear`?ir:vr).scaleBy(Is(p,t?.duration,t?.ease,()=>n(!0)),e)}):!1}function T(e){f?.scaleExtent(e)}function E(e){f?.translateExtent(e)}function D(e){let t=!no(e)||e<0?0:e;f?.clickDistance(t)}return{update:_,destroy:v,setViewport:b,setViewportConstrained:y,getViewport:S,scaleTo:C,scaleBy:w,setScaleExtent:T,setTranslateExtent:E,syncViewport:x,setClickDistance:D}}var Gs;(function(e){e.Line=`line`,e.Handle=`handle`})(Gs||={});function Ks({width:e,prevWidth:t,height:n,prevHeight:r,affectsX:i,affectsY:a}){let o=e-t,s=n-r,c=[o>0?1:o<0?-1:0,s>0?1:s<0?-1:0];return o&&i&&(c[0]*=-1),s&&a&&(c[1]*=-1),c}function qs(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 Js(e,t){return Math.max(0,t-e)}function Ys(e,t){return Math.max(0,e-t)}function Xs(e,t,n){return Math.max(0,t-e,e-n)}function Zs(e,t){return e?!t:t}function Qs(e,t,n,r,i,a,o,s){let{affectsX:c,affectsY:l}=t,{isHorizontal:u,isVertical:d}=t,f=u&&d,{xSnapped:p,ySnapped:m}=n,{minWidth:h,maxWidth:g,minHeight:_,maxHeight:v}=r,{x:y,y:b,width:x,height:S,aspectRatio:C}=e,w=Math.floor(u?p-e.pointerX:0),T=Math.floor(d?m-e.pointerY:0),E=x+(c?-w:w),D=S+(l?-T:T),O=-a[0]*x,k=-a[1]*S,A=Xs(E,h,g),j=Xs(D,_,v);if(o){let e=0,t=0;c&&w<0?e=Js(y+w+O,o[0][0]):!c&&w>0&&(e=Ys(y+E+O,o[1][0])),l&&T<0?t=Js(b+T+k,o[0][1]):!l&&T>0&&(t=Ys(b+D+k,o[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(s){let e=0,t=0;c&&w>0?e=Ys(y+w,s[0][0]):!c&&w<0&&(e=Js(y+E,s[1][0])),l&&T>0?t=Ys(b+T,s[0][1]):!l&&T<0&&(t=Js(b+D,s[1][1])),A=Math.max(A,e),j=Math.max(j,t)}if(i){if(u){let e=Xs(E/C,_,v)*C;if(A=Math.max(A,e),o){let e=0;e=!c&&!l||c&&!l&&f?Ys(b+k+E/C,o[1][1])*C:Js(b+k+(c?w:-w)/C,o[0][1])*C,A=Math.max(A,e)}if(s){let e=0;e=!c&&!l||c&&!l&&f?Js(b+E/C,s[1][1])*C:Ys(b+(c?w:-w)/C,s[0][1])*C,A=Math.max(A,e)}}if(d){let e=Xs(D*C,h,g)/C;if(j=Math.max(j,e),o){let e=0;e=!c&&!l||l&&!c&&f?Ys(y+D*C+O,o[1][0])/C:Js(y+(l?T:-T)*C+O,o[0][0])/C,j=Math.max(j,e)}if(s){let e=0;e=!c&&!l||l&&!c&&f?Js(y+D*C,s[1][0])/C:Ys(y+(l?T:-T)*C,s[0][0])/C,j=Math.max(j,e)}}}T+=T<0?j:-j,w+=w<0?A:-A,i&&(f?E>D*C?T=(Zs(c,l)?-w:w)/C:w=(Zs(c,l)?-T:T)*C:u?(T=w/C,l=c):(w=T*C,c=l));let M=c?y+w:y,N=l?b+T:b;return{width:x+(c?-w:w),height:S+(l?-T:T),x:a[0]*w*(c?-1:1)+M,y:a[1]*T*(l?-1:1)+N}}var $s={width:0,height:0,x:0,y:0},ec={...$s,pointerX:0,pointerY:0,aspectRatio:1};function tc(e,t,n){let r=t.position.x+e.position.x,i=t.position.y+e.position.y,a=e.measured.width??0,o=e.measured.height??0,s=n[0]*a,c=n[1]*o;return[[r-s,i-c],[r+a-s,i+o-c]]}function nc({domNode:e,nodeId:t,getStoreItems:n,onChange:r,onEnd:i}){let a=zt(e),o={controlDirection:qs(`bottom-right`),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function s({controlPosition:e,boundaries:s,keepAspectRatio:c,resizeDirection:l,onResizeStart:u,onResize:d,onResizeEnd:f,shouldResize:p}){let m={...$s},h={...ec};o={boundaries:s,resizeDirection:l,keepAspectRatio:c,controlDirection:qs(e)};let g,_=null,v=[],y,b,x,S=!1,C=en().on(`start`,e=>{let{nodeLookup:r,transform:i,snapGrid:a,snapToGrid:o,nodeOrigin:s,paneDomNode:c}=n();if(g=r.get(t),!g)return;_=c?.getBoundingClientRect()??null;let{xSnapped:l,ySnapped:d}=vo(e.sourceEvent,{transform:i,snapGrid:a,snapToGrid:o,containerBounds:_});m={width:g.measured.width??0,height:g.measured.height??0,x:g.position.x??0,y:g.position.y??0},h={...m,pointerX:l,pointerY:d,aspectRatio:m.width/m.height},y=void 0,b=uo(g.extent)?g.extent:void 0,g.parentId&&(g.extent===`parent`||g.expandParent)&&(y=r.get(g.parentId)),y&&g.extent===`parent`&&(b=[[0,0],[y.measured.width,y.measured.height]]),v=[],x=void 0;for(let[e,n]of r)if(n.parentId===t&&(v.push({id:e,position:{...n.position},extent:n.extent}),n.extent===`parent`||n.expandParent)){let e=tc(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,{...m})}).on(`drag`,e=>{let{transform:t,snapGrid:i,snapToGrid:a,nodeOrigin:s}=n(),c=vo(e.sourceEvent,{transform:t,snapGrid:i,snapToGrid:a,containerBounds:_}),l=[];if(!g)return;let{x:u,y:f,width:C,height:w}=m,T={},E=g.origin??s,{width:D,height:O,x:k,y:A}=Qs(h,o.controlDirection,c,o.boundaries,o.keepAspectRatio,E,b,x),j=D!==C,M=O!==w,N=k!==u&&j,P=A!==f&&M;if(!N&&!P&&!j&&!M)return;if((N||P||E[0]===1||E[1]===1)&&(T.x=N?k:m.x,T.y=P?A:m.y,m.x=T.x,m.y=T.y,v.length>0)){let e=k-u,t=A-f;for(let n of v)n.position={x:n.position.x-e+E[0]*(D-C),y:n.position.y-t+E[1]*(O-w)},l.push(n)}if((j||M)&&(T.width=j&&(!o.resizeDirection||o.resizeDirection===`horizontal`)?D:m.width,T.height=M&&(!o.resizeDirection||o.resizeDirection===`vertical`)?O:m.height,m.width=T.width,m.height=T.height),y&&g.expandParent){let e=E[0]*(T.width??0);T.x&&T.x{S&&=(f?.(e,{...m}),i?.({...m}),!1)});a.call(C)}function c(){a.on(`.drag`,null)}return{update:s,destroy:c}}var rc=o((e=>{var t=u();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?f:t.useSyncExternalStore})),ic=o(((e,t)=>{t.exports=rc()})),ac=o((e=>{var t=u(),n=ic();function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=n.useSyncExternalStore,o=t.useRef,s=t.useEffect,c=t.useMemo,l=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,u){var d=o(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=c(function(){function e(e){if(!a){if(a=!0,o=e,e=r(e),u!==void 0&&f.hasValue){var t=f.value;if(u(t,e))return s=t}return s=e}if(t=s,i(o,e))return t;var n=r(e);return u!==void 0&&u(t,n)?(o=e,t):(o=e,s=n)}var a=!1,o,s,c=n===void 0?null:n;return[function(){return e(t())},c===null?void 0:function(){return e(c())}]},[t,n,r,u]);var p=a(e,d[0],d[1]);return s(function(){f.hasValue=!0,f.value=p},[p]),l(p),p}})),oc=c(o(((e,t)=>{t.exports=ac()}))(),1),sc=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e)),destroy:()=>{n.clear()}},o=t=e(r,i,a);return a},cc=e=>e?sc(e):sc,{useDebugValue:lc}=y.default,{useSyncExternalStoreWithSelector:uc}=oc.default,dc=e=>e;function fc(e,t=dc,n){let r=uc(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return lc(r),r}var pc=(e,t)=>{let n=cc(e),r=(e,r=t)=>fc(n,e,r);return Object.assign(r,n),r},mc=(e,t)=>e?pc(e,t):pc;function hc(e,t){if(Object.is(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,r]of e)if(!Object.is(r,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||!Object.is(e[r],t[r]))return!1;return!0}var gc=m(),_c=(0,y.createContext)(null),vc=_c.Provider,yc=va.error001(`react`);function K(e,t){let n=(0,y.useContext)(_c);if(n===null)throw Error(yc);return fc(n,e,t)}function bc(){let e=(0,y.useContext)(_c);if(e===null)throw Error(yc);return(0,y.useMemo)(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe}),[e])}var xc={display:`none`},Sc={position:`absolute`,width:1,height:1,margin:-1,border:0,padding:0,overflow:`hidden`,clip:`rect(0px, 0px, 0px, 0px)`,clipPath:`inset(100%)`},Cc=`react-flow__node-desc`,wc=`react-flow__edge-desc`,Tc=`react-flow__aria-live`,Ec=e=>e.ariaLiveMessage,Dc=e=>e.ariaLabelConfig;function Oc({rfId:e}){let t=K(Ec);return(0,x.jsx)(`div`,{id:`${Tc}-${e}`,"aria-live":`assertive`,"aria-atomic":`true`,style:Sc,children:t})}function kc({rfId:e,disableKeyboardA11y:t}){let n=K(Dc);return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`div`,{id:`${Cc}-${e}`,style:xc,children:t?n[`node.a11yDescription.default`]:n[`node.a11yDescription.keyboardDisabled`]}),(0,x.jsx)(`div`,{id:`${wc}-${e}`,style:xc,children:n[`edge.a11yDescription.default`]}),!t&&(0,x.jsx)(Oc,{rfId:e})]})}var Ac=(0,y.forwardRef)(({position:e=`top-left`,children:t,className:n,style:r,...i},a)=>(0,x.jsx)(`div`,{className:S([`react-flow__panel`,n,...`${e}`.split(`-`)]),style:r,ref:a,...i,children:t}));Ac.displayName=`Panel`;var jc=`https://reactflow.dev?utm_source=attribution`;function Mc({proOptions:e,position:t=`bottom-right`}){return e?.hideAttribution?null:(0,x.jsx)(Ac,{position:t,className:`react-flow__attribution`,"data-message":`Please only hide this attribution when you are subscribed to React Flow Pro: ${jc}`,children:(0,x.jsx)(`a`,{href:jc,target:`_blank`,rel:`noopener noreferrer`,"aria-label":`React Flow attribution`,children:`React Flow`})})}var Nc=e=>{let t=[],n=[];for(let[,n]of e.nodeLookup)n.selected&&t.push(n.internals.userNode);for(let[,t]of e.edgeLookup)t.selected&&n.push(t);return{selectedNodes:t,selectedEdges:n}},Pc=e=>e.id;function Fc(e,t){return hc(e.selectedNodes.map(Pc),t.selectedNodes.map(Pc))&&hc(e.selectedEdges.map(Pc),t.selectedEdges.map(Pc))}function Ic({onSelectionChange:e}){let t=bc(),{selectedNodes:n,selectedEdges:r}=K(Nc,Fc);return(0,y.useEffect)(()=>{let i={nodes:n,edges:r};e?.(i),t.getState().onSelectionChangeHandlers.forEach(e=>e(i))},[n,r,e]),null}var Lc=e=>!!e.onSelectionChangeHandlers;function Rc({onSelectionChange:e}){let t=K(Lc);return e||t?(0,x.jsx)(Ic,{onSelectionChange:e}):null}var zc=[0,0],Bc={x:0,y:0,zoom:1},Vc=[...`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`.split(`.`),`rfId`],Hc=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}),Uc={translateExtent:ya,nodeOrigin:zc,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:`nopan`,rfId:`1`};function Wc(e){let{setNodes:t,setEdges:n,setMinZoom:r,setMaxZoom:i,setTranslateExtent:a,setNodeExtent:o,reset:s,setDefaultNodesAndEdges:c}=K(Hc,hc),l=bc();(0,y.useEffect)(()=>(c(e.defaultNodes,e.defaultEdges),()=>{u.current=Uc,s()}),[]);let u=(0,y.useRef)(Uc);return(0,y.useEffect)(()=>{for(let s of Vc){let c=e[s];c!==u.current[s]&&e[s]!==void 0&&(s===`nodes`?t(c):s===`edges`?n(c):s===`minZoom`?r(c):s===`maxZoom`?i(c):s===`translateExtent`?a(c):s===`nodeExtent`?o(c):s===`ariaLabelConfig`?l.setState({ariaLabelConfig:_o(c)}):s===`fitView`?l.setState({fitViewQueued:c}):s===`fitViewOptions`?l.setState({fitViewOptions:c}):l.setState({[s]:c}))}u.current=e},Vc.map(t=>e[t])),null}function Gc(){return typeof window>`u`||!window.matchMedia?null:window.matchMedia(`(prefers-color-scheme: dark)`)}function Kc(e){let[t,n]=(0,y.useState)(e===`system`?null:e);return(0,y.useEffect)(()=>{if(e!==`system`){n(e);return}let t=Gc(),r=()=>n(t?.matches?`dark`:`light`);return r(),t?.addEventListener(`change`,r),()=>{t?.removeEventListener(`change`,r)}},[e]),t===null?Gc()?.matches?`dark`:`light`:t}var qc=typeof document<`u`?document:null;function Jc(e=null,t={target:qc,actInsideInputWithModifier:!0}){let[n,r]=(0,y.useState)(!1),i=(0,y.useRef)(!1),a=(0,y.useRef)(new Set([])),[o,s]=(0,y.useMemo)(()=>{if(e!==null){let t=(Array.isArray(e)?e:[e]).filter(e=>typeof e==`string`).map(e=>e.replace(`+`,` -`).replace(` - -`,` -+`).split(` -`));return[t,t.reduce((e,t)=>e.concat(...t),[])]}return[[],[]]},[e]);return(0,y.useEffect)(()=>{let n=t?.target??qc,c=t?.actInsideInputWithModifier??!0;if(e!==null){let e=e=>{if(i.current=e.ctrlKey||e.metaKey||e.shiftKey||e.altKey,(!i.current||i.current&&!c)&&So(e))return!1;let n=Xc(e.code,s);if(a.current.add(e[n]),Yc(o,a.current,!1)){let n=e.composedPath?.()?.[0]||e.target,a=n?.nodeName===`BUTTON`||n?.nodeName===`A`;t.preventDefault!==!1&&(i.current||!a)&&e.preventDefault(),r(!0)}},l=e=>{let t=Xc(e.code,s);Yc(o,a.current,!0)?(r(!1),a.current.clear()):a.current.delete(e[t]),e.key===`Meta`&&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]),n}function Yc(e,t,n){return e.filter(e=>n||e.length===t.size).some(e=>e.every(e=>t.has(e)))}function Xc(e,t){return t.includes(e)?`code`:`key`}var Zc=()=>{let e=bc();return(0,y.useMemo)(()=>({zoomIn:async t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1.2,t):!1},zoomOut:async t=>{let{panZoom:n}=e.getState();return n?n.scaleBy(1/1.2,t):!1},zoomTo:async(t,n)=>{let{panZoom:r}=e.getState();return r?r.scaleTo(t,n):!1},getZoom:()=>e.getState().transform[2],setViewport:async(t,n)=>{let{transform:[r,i,a],panZoom:o}=e.getState();return o?(await o.setViewport({x:t.x??r,y:t.y??i,zoom:t.zoom??a},n),!0):!1},getViewport:()=>{let[t,n,r]=e.getState().transform;return{x:t,y:n,zoom:r}},setCenter:async(t,n,r)=>e.getState().setCenter(t,n,r),fitBounds:async(t,n)=>{let{width:r,height:i,minZoom:a,maxZoom:o,panZoom:s}=e.getState(),c=G(t,r,i,a,o,n?.padding??.1);return s?(await s.setViewport(c,{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0):!1},screenToFlowPosition:(t,n={})=>{let{transform:r,snapGrid:i,snapToGrid:a,domNode:o}=e.getState();if(!o)return t;let{x:s,y:c}=o.getBoundingClientRect(),l={x:t.x-s,y:t.y-c},u=n.snapGrid??i;return ao(l,r,n.snapToGrid??a,u)},flowToScreenPosition:t=>{let{transform:n,domNode:r}=e.getState();if(!r)return t;let{x:i,y:a}=r.getBoundingClientRect(),o=oo(t,n);return{x:o.x+i,y:o.y+a}}}),[])};function Qc(e,t){let n=[],r=new Map,i=[];for(let t of e)if(t.type===`add`){i.push(t);continue}else if(t.type===`remove`||t.type===`replace`)r.set(t.id,[t]);else{let e=r.get(t.id);e?e.push(t):r.set(t.id,[t])}for(let e of t){let t=r.get(e.id);if(!t){n.push(e);continue}if(t[0].type===`remove`)continue;if(t[0].type===`replace`){n.push({...t[0].item});continue}let i={...e};for(let e of t)$c(e,i);n.push(i)}return i.length&&i.forEach(e=>{e.index===void 0?n.push({...e.item}):n.splice(e.index,0,{...e.item})}),n}function $c(e,t){switch(e.type){case`select`:t.selected=e.selected;break;case`position`:e.position!==void 0&&(t.position=e.position),e.dragging!==void 0&&(t.dragging=e.dragging);break;case`dimensions`:e.dimensions!==void 0&&(t.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes===`width`)&&(t.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes===`height`)&&(t.height=e.dimensions.height))),typeof e.resizing==`boolean`&&(t.resizing=e.resizing);break}}function el(e,t){return Qc(e,t)}function tl(e,t){return Qc(e,t)}function nl(e,t){return{id:e,type:`select`,selected:t}}function rl(e,t=new Set,n=!1){let r=[];for(let[i,a]of e){let e=t.has(i);!(a.selected===void 0&&!e)&&a.selected!==e&&(n&&(a.selected=e),r.push(nl(a.id,e)))}return r}function il({items:e=[],lookup:t}){let n=[],r=new Map(e.map(e=>[e.id,e]));for(let[r,i]of e.entries()){let e=t.get(i.id),a=e?.internals?.userNode??e;a!==void 0&&a!==i&&n.push({id:i.id,item:i,type:`replace`}),a===void 0&&n.push({item:i,type:`add`,index:r})}for(let[e]of t)r.get(e)===void 0&&n.push({id:e,type:`remove`});return n}function al(e){return{id:e.id,type:`remove`}}var ol=ro(`React Flow`,`https://reactflow.dev/`);function sl(e,t,n={}){return Fo(e,t,{...n,onError:n.onError??ol})}var cl=e=>ja(e),ll=e=>Aa(e);function ul(e){return(0,y.forwardRef)(e)}var dl=typeof window<`u`?y.useLayoutEffect:y.useEffect;function fl(e){let[t,n]=(0,y.useState)(BigInt(0)),[r]=(0,y.useState)(()=>pl(()=>n(e=>e+BigInt(1))));return dl(()=>{let t=r.get();t.length&&(e(t),r.reset())},[t]),r}function pl(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:n=>{t.push(n),e()}}}var ml=(0,y.createContext)(null);function hl({children:e}){let t=bc(),n=fl((0,y.useCallback)(e=>{let{nodes:n=[],setNodes:r,hasDefaultNodes:i,onNodesChange:a,nodeLookup:o,fitViewQueued:s,onNodesChangeMiddlewareMap:c}=t.getState(),l=n;for(let t of e)l=typeof t==`function`?t(l):t;let u=il({items:l,lookup:o});for(let e of c.values())u=e(u);i&&r(l),u.length>0?a?.(u):s&&window.requestAnimationFrame(()=>{let{fitViewQueued:e,nodes:n,setNodes:r}=t.getState();e&&r(n)})},[])),r=fl((0,y.useCallback)(e=>{let{edges:n=[],setEdges:r,hasDefaultEdges:i,onEdgesChange:a,edgeLookup:o}=t.getState(),s=n;for(let t of e)s=typeof t==`function`?t(s):t;i?r(s):a&&a(il({items:s,lookup:o}))},[])),i=(0,y.useMemo)(()=>({nodeQueue:n,edgeQueue:r}),[]);return(0,x.jsx)(ml.Provider,{value:i,children:e})}function gl(){let e=(0,y.useContext)(ml);if(!e)throw Error(`useBatchContext must be used within a BatchProvider`);return e}var _l=e=>!!e.panZoom;function vl(){let e=Zc(),t=bc(),n=gl(),r=K(_l),i=(0,y.useMemo)(()=>{let e=e=>t.getState().nodeLookup.get(e),r=e=>{n.nodeQueue.push(e)},i=e=>{n.edgeQueue.push(e)},a=e=>{let{nodeLookup:n,nodeOrigin:r}=t.getState(),i=cl(e)?e:n.get(e.id),a=i.parentId?mo(i.position,i.measured,i.parentId,n,r):i.position;return Xa({...i,position:a,width:i.measured?.width??i.width,height:i.measured?.height??i.height})},o=(e,t,n={replace:!1})=>{r(r=>r.map(r=>{if(r.id===e){let e=typeof t==`function`?t(r):t;return n.replace&&cl(e)?e:{...r,...e}}return r}))},s=(e,t,n={replace:!1})=>{i(r=>r.map(r=>{if(r.id===e){let e=typeof t==`function`?t(r):t;return n.replace&&ll(e)?e:{...r,...e}}return r}))};return{getNodes:()=>t.getState().nodes.map(e=>({...e})),getNode:t=>e(t)?.internals.userNode,getInternalNode:e,getEdges:()=>{let{edges:e=[]}=t.getState();return e.map(e=>({...e}))},getEdge:e=>t.getState().edgeLookup.get(e),setNodes:r,setEdges:i,addNodes:e=>{let t=Array.isArray(e)?e:[e];n.nodeQueue.push(e=>[...e,...t])},addEdges:e=>{let t=Array.isArray(e)?e:[e];n.edgeQueue.push(e=>[...e,...t])},toObject:()=>{let{nodes:e=[],edges:n=[],transform:r}=t.getState(),[i,a,o]=r;return{nodes:e.map(e=>({...e})),edges:n.map(e=>({...e})),viewport:{x:i,y:a,zoom:o}}},deleteElements:async({nodes:e=[],edges:n=[]})=>{let{nodes:r,edges:i,onNodesDelete:a,onEdgesDelete:o,triggerNodeChanges:s,triggerEdgeChanges:c,onDelete:l,onBeforeDelete:u}=t.getState(),{nodes:d,edges:f}=await Va({nodesToRemove:e,edgesToRemove:n,nodes:r,edges:i,onBeforeDelete:u}),p=f.length>0,m=d.length>0;if(p){let e=f.map(al);o?.(f),c(e)}if(m){let e=d.map(al);a?.(d),s(e)}return(m||p)&&l?.({nodes:d,edges:f}),{deletedNodes:d,deletedEdges:f}},getIntersectingNodes:(e,n=!0,r)=>{let i=to(e),o=i?e:a(e),s=r!==void 0;return o?(r||t.getState().nodes).filter(r=>{let a=t.getState().nodeLookup.get(r.id);if(a&&!i&&(r.id===e.id||!a.internals.positionAbsolute))return!1;let c=Xa(s?r:a),l=eo(c,o);return n&&l>0||l>=c.width*c.height||l>=o.width*o.height}):[]},isNodeIntersecting:(e,t,n=!0)=>{let r=to(e)?e:a(e);if(!r)return!1;let i=eo(r,t);return n&&i>0||i>=t.width*t.height||i>=r.width*r.height},updateNode:o,updateNodeData:(e,t,n={replace:!1})=>{o(e,e=>{let r=typeof t==`function`?t(e):t;return n.replace?{...e,data:r}:{...e,data:{...e.data,...r}}},n)},updateEdge:s,updateEdgeData:(e,t,n={replace:!1})=>{s(e,e=>{let r=typeof t==`function`?t(e):t;return n.replace?{...e,data:r}:{...e,data:{...e.data,...r}}},n)},getNodesBounds:e=>{let{nodeLookup:n,nodeOrigin:r}=t.getState();return Pa(e,{nodeLookup:n,nodeOrigin:r})},getHandleConnections:({type:e,id:n,nodeId:r})=>Array.from(t.getState().connectionLookup.get(`${r}-${e}${n?`-${n}`:``}`)?.values()??[]),getNodeConnections:({type:e,handleId:n,nodeId:r})=>Array.from(t.getState().connectionLookup.get(`${r}${e?n?`-${e}-${n}`:`-${e}`:``}`)?.values()??[]),fitView:async e=>{let r=t.getState().fitViewResolver??go();return t.setState({fitViewQueued:!0,fitViewOptions:e,fitViewResolver:r}),n.nodeQueue.push(e=>[...e]),r.promise}}},[]);return(0,y.useMemo)(()=>({...i,...e,viewportInitialized:r}),[r])}var yl=e=>e.selected,bl=typeof window<`u`?window:void 0;function xl({deleteKeyCode:e,multiSelectionKeyCode:t}){let n=bc(),{deleteElements:r}=vl(),i=Jc(e,{actInsideInputWithModifier:!1}),a=Jc(t,{target:bl});(0,y.useEffect)(()=>{if(i){let{edges:e,nodes:t}=n.getState();r({nodes:t.filter(yl),edges:e.filter(yl)}),n.setState({nodesSelectionActive:!1})}},[i]),(0,y.useEffect)(()=>{n.setState({multiSelectionActive:a})},[a])}function Sl(e){let t=bc();(0,y.useEffect)(()=>{let n=()=>{if(!e.current||!(e.current.checkVisibility?.()??!0))return!1;let n=yo(e.current);(n.height===0||n.width===0)&&t.getState().onError?.(`004`,va.error004()),t.setState({width:n.width||500,height:n.height||500})};if(e.current){n(),window.addEventListener(`resize`,n);let t=new ResizeObserver(()=>n());return t.observe(e.current),()=>{window.removeEventListener(`resize`,n),t&&e.current&&t.unobserve(e.current)}}},[])}var Cl={position:`absolute`,width:`100%`,height:`100%`,top:0,left:0},wl=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function Tl({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:n=!0,panOnScroll:r=!1,panOnScrollSpeed:i=.5,panOnScrollMode:a=Ca.Free,zoomOnDoubleClick:o=!0,panOnDrag:s=!0,defaultViewport:c,translateExtent:l,minZoom:u,maxZoom:d,zoomActivationKeyCode:f,preventScrolling:p=!0,children:m,noWheelClassName:h,noPanClassName:g,onViewportChange:_,isControlledViewport:v,paneClickDistance:b,selectionOnDrag:S}){let C=bc(),w=(0,y.useRef)(null),{userSelectionActive:T,lib:E,connectionInProgress:D}=K(wl,hc),O=Jc(f),k=(0,y.useRef)();Sl(w);let A=(0,y.useCallback)(e=>{_?.({x:e[0],y:e[1],zoom:e[2]}),v||C.setState({transform:e})},[_,v]);return(0,y.useEffect)(()=>{if(w.current){k.current=Ws({domNode:w.current,minZoom:u,maxZoom:d,translateExtent:l,viewport:c,onDraggingChange:e=>C.setState(t=>t.paneDragging===e?t:{paneDragging:e}),onPanZoomStart:(e,t)=>{let{onViewportChangeStart:n,onMoveStart:r}=C.getState();r?.(e,t),n?.(t)},onPanZoom:(e,t)=>{let{onViewportChange:n,onMove:r}=C.getState();r?.(e,t),n?.(t)},onPanZoomEnd:(e,t)=>{let{onViewportChangeEnd:n,onMoveEnd:r}=C.getState();r?.(e,t),n?.(t)}});let{x:e,y:t,zoom:n}=k.current.getViewport();return C.setState({panZoom:k.current,transform:[e,t,n],domNode:w.current.closest(`.react-flow`)}),()=>{k.current?.destroy()}}},[]),(0,y.useEffect)(()=>{k.current?.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:n,panOnScroll:r,panOnScrollSpeed:i,panOnScrollMode:a,zoomOnDoubleClick:o,panOnDrag:s,zoomActivationKeyPressed:O,preventScrolling:p,noPanClassName:g,userSelectionActive:T,noWheelClassName:h,lib:E,onTransformChange:A,connectionInProgress:D,selectionOnDrag:S,paneClickDistance:b})},[e,t,n,r,i,a,o,s,O,p,g,T,h,E,A,D,S,b]),(0,x.jsx)(`div`,{className:`react-flow__renderer`,ref:w,style:Cl,children:m})}var El=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function Dl(){let{userSelectionActive:e,userSelectionRect:t}=K(El,hc);return e&&t?(0,x.jsx)(`div`,{className:`react-flow__selection react-flow__container`,style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}var Ol=(e,t)=>n=>{n.target===t.current&&e?.(n)},kl=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging,panBy:e.panBy,autoPanSpeed:e.autoPanSpeed});function Al({isSelecting:e,selectionKeyPressed:t,selectionMode:n=wa.Full,panOnDrag:r,autoPanOnSelection:i,paneClickDistance:a,selectionOnDrag:o,onSelectionStart:s,onSelectionEnd:c,onPaneClick:l,onPaneContextMenu:u,onPaneScroll:d,onPaneMouseEnter:f,onPaneMouseMove:p,onPaneMouseLeave:m,children:h}){let g=(0,y.useRef)(0),_=bc(),{userSelectionActive:v,elementsSelectable:b,dragging:C,panBy:w,autoPanSpeed:T}=K(kl,hc),E=b&&(e||v),D=(0,y.useRef)(null),O=(0,y.useRef)(),k=(0,y.useRef)(new Set),A=(0,y.useRef)(new Set),j=(0,y.useRef)(!1),M=(0,y.useRef)(!1),N=(0,y.useRef)({x:0,y:0}),P=(0,y.useRef)(!1),ee=e=>{if(M.current||j.current||_.getState().connection.inProgress){M.current=!1,j.current=!1;return}l?.(e),_.getState().resetSelectedElements(),_.setState({nodesSelectionActive:!1})},F=e=>{if(Array.isArray(r)&&r?.includes(2)){e.preventDefault();return}u?.(e)},I=d?e=>d(e):void 0,L=e=>{M.current&&=(e.stopPropagation(),!1)},te=n=>{let{domNode:r,transform:i}=_.getState();if(O.current=r?.getBoundingClientRect(),!O.current)return;let a=n.target===D.current;if(!a&&n.target.closest(`.nokey`)||!e||!(o&&a||t)||n.button!==0||!n.isPrimary)return;n.target?.setPointerCapture?.(n.pointerId),M.current=!1;let{x:s,y:c}=wo(n.nativeEvent,O.current),l=ao({x:s,y:c},i);_.setState({userSelectionRect:{width:0,height:0,startX:l.x,startY:l.y,x:s,y:c}}),a||(n.stopPropagation(),n.preventDefault())};function R(e,t){let{userSelectionRect:r}=_.getState();if(!r)return;let{transform:i,nodeLookup:a,edgeLookup:o,connectionLookup:s,triggerNodeChanges:c,triggerEdgeChanges:l,defaultEdgeOptions:u}=_.getState(),d={x:r.startX,y:r.startY},{x:f,y:p}=oo(d,i),m={startX:d.x,startY:d.y,x:ee.id)),A.current=new Set;let v=u?.selectable??!0;for(let e of k.current){let t=s.get(e);if(t)for(let{edgeId:e}of t.values()){let t=o.get(e);t&&(t.selectable??v)&&A.current.add(e)}}ho(h,k.current)||c(rl(a,k.current,!0)),ho(g,A.current)||l(rl(o,A.current)),_.setState({userSelectionRect:m,userSelectionActive:!0,nodesSelectionActive:!1})}function z(){if(!i||!O.current)return;let[e,t]=Ka(N.current,O.current,T);w({x:e,y:t}).then(e=>{if(!M.current||!e){g.current=requestAnimationFrame(z);return}let{x:t,y:n}=N.current;R(t,n),g.current=requestAnimationFrame(z)})}let B=()=>{cancelAnimationFrame(g.current),g.current=0,P.current=!1};return(0,y.useEffect)(()=>()=>B(),[]),(0,x.jsxs)(`div`,{className:S([`react-flow__pane`,{draggable:r===!0||Array.isArray(r)&&r.includes(0),dragging:C,selection:e}]),onClick:E?void 0:Ol(ee,D),onContextMenu:Ol(F,D),onWheel:Ol(I,D),onPointerEnter:E?void 0:f,onPointerMove:E?e=>{let{userSelectionRect:n,transform:r,resetSelectedElements:i}=_.getState();if(!O.current||!n)return;let{x:o,y:c}=wo(e.nativeEvent,O.current);N.current={x:o,y:c};let l=oo({x:n.startX,y:n.startY},r);if(!M.current){let n=t?0:a;if(Math.hypot(o-l.x,c-l.y)<=n)return;i(),s?.(e)}M.current=!0,P.current||=(z(),!0),R(o,c)}:p,onPointerUp:e=>{if(!E){e.target===D.current&&_.getState().connection.inProgress&&(j.current=!0);return}e.button===0&&(e.target?.releasePointerCapture?.(e.pointerId),!v&&e.target===D.current&&_.getState().userSelectionRect&&ee?.(e),_.setState({userSelectionActive:!1,userSelectionRect:null}),M.current&&(c?.(e),_.setState({nodesSelectionActive:k.current.size>0})),B())},onPointerCancel:E?e=>{e.target?.releasePointerCapture?.(e.pointerId),B()}:void 0,onPointerDownCapture:E?te:void 0,onClickCapture:E?L:void 0,onPointerLeave:m,ref:D,style:Cl,children:[h,(0,x.jsx)(Dl,{})]})}function jl({id:e,store:t,unselect:n=!1,nodeRef:r}){let{addSelectedNodes:i,unselectNodesAndEdges:a,multiSelectionActive:o,nodeLookup:s,onError:c}=t.getState(),l=s.get(e);if(!l){c?.(`012`,va.error012(e));return}t.setState({nodesSelectionActive:!1}),l.selected?(n||l.selected&&o)&&(a({nodes:[l],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):i([e])}function Ml({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:i,isSelectable:a,nodeClickDistance:o}){let s=bc(),[c,l]=(0,y.useState)(!1),u=(0,y.useRef)();return(0,y.useEffect)(()=>{if(!t)return u.current=ys({getStoreItems:()=>s.getState(),onNodeMouseDown:t=>{jl({id:t,store:s,nodeRef:e})},onDragStart:()=>{l(!0)},onDragStop:()=>{l(!1)}}),()=>{u.current?.destroy(),u.current=void 0}},[t,s,e]),(0,y.useEffect)(()=>{t||!e.current||!u.current||u.current.update({noDragClassName:n,handleSelector:r,domNode:e.current,isSelectable:a,nodeId:i,nodeClickDistance:o})},[n,r,t,a,e,i,o]),c}var Nl=e=>t=>t.selected&&(t.draggable||e&&t.draggable===void 0);function Pl(){let e=bc();return(0,y.useCallback)(t=>{let{nodeExtent:n,snapToGrid:r,snapGrid:i,nodesDraggable:a,onError:o,updateNodePositions:s,nodeLookup:c,nodeOrigin:l}=e.getState(),u=new Map,d=Nl(a),f=r?i[0]:5,p=r?i[1]:5,m=t.direction.x*f*t.factor,h=t.direction.y*p*t.factor;for(let[,e]of c){if(!d(e))continue;let t={x:e.internals.positionAbsolute.x+m,y:e.internals.positionAbsolute.y+h};r&&(t=io(t,i));let{position:a,positionAbsolute:s}=Ba({nodeId:e.id,nextPosition:t,nodeLookup:c,nodeExtent:n,nodeOrigin:l,onError:o});e.position=a,e.internals.positionAbsolute=s,u.set(e.id,e)}s(u)},[])}var Fl=(0,y.createContext)(null),Il=Fl.Provider;Fl.Consumer;var Ll=()=>(0,y.useContext)(Fl),q=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),Rl=(0,y.createContext)(null);function J({children:e}){let t=K(q,hc);return(0,x.jsx)(Rl.Provider,{value:t,children:e})}function Y(){let e=(0,y.useContext)(Rl);if(!e)throw Error(`useHandleConfig must be used within a HandleConfigProvider`);return e}var X={connectingFrom:!1,connectingTo:!1,clickConnecting:!1,isPossibleEndHandle:!0,connectionInProcess:!1,clickConnectionInProcess:!1,valid:!1},zl=(e,t,n)=>r=>{let{connectionClickStartHandle:i,connectionMode:a,connection:o}=r,{fromHandle:s,toHandle:c,isValid:l}=o;if(!s&&!i)return X;let u=c?.nodeId===e&&c?.id===t&&c?.type===n;return{connectingFrom:s?.nodeId===e&&s?.id===t&&s?.type===n,connectingTo:u,clickConnecting:i?.nodeId===e&&i?.id===t&&i?.type===n,isPossibleEndHandle:a===Sa.Strict?s?.type!==n:e!==s?.nodeId||t!==s?.id,connectionInProcess:!!s,clickConnectionInProcess:!!i,valid:u&&l}};function Bl({type:e=`source`,position:t=U.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:i=!0,isConnectableEnd:a=!0,id:o,onConnect:s,children:c,className:l,onMouseDown:u,onTouchStart:d,...f},p){let m=o||null,h=e===`target`,g=bc(),_=Ll(),{connectOnClick:v,noPanClassName:y,rfId:b}=Y(),{connectingFrom:C,connectingTo:w,clickConnecting:T,isPossibleEndHandle:E,connectionInProcess:D,clickConnectionInProcess:O,valid:k}=K(zl(_,m,e),hc);_||g.getState().onError?.(`010`,va.error010());let A=e=>{let{defaultEdgeOptions:t,onConnect:n,hasDefaultEdges:r}=g.getState(),i={...t,...e};if(r){let{edges:e,setEdges:t,onError:n}=g.getState();t(sl(i,e,{onError:n}))}n?.(i),s?.(i)},j=e=>{if(!_)return;let t=Co(e.nativeEvent);if(i&&(t&&e.button===0||!t)){let t=g.getState();ks.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:h,handleId:m,nodeId:_,flowId:t.rfId,panBy:t.panBy,cancelConnection:t.cancelConnection,onConnectStart:t.onConnectStart,onConnectEnd:(...e)=>g.getState().onConnectEnd?.(...e),updateConnection:t.updateConnection,onConnect:A,isValidConnection:n||((...e)=>g.getState().isValidConnection?.(...e)??!0),getTransform:()=>g.getState().transform,getFromHandle:()=>g.getState().connection.fromHandle,autoPanSpeed:t.autoPanSpeed,dragThreshold:t.connectionDragThreshold})}t?u?.(e):d?.(e)};return(0,x.jsx)(`div`,{"data-handleid":m,"data-nodeid":_,"data-handlepos":t,"data-id":`${b}-${_}-${m}-${e}`,className:S([`react-flow__handle`,`react-flow__handle-${t}`,`nodrag`,y,l,{source:!h,target:h,connectable:r,connectablestart:i,connectableend:a,clickconnecting:T,connectingfrom:C,connectingto:w,valid:k,connectionindicator:r&&(!D||E)&&(D||O?a:i)}]),onMouseDown:j,onTouchStart:j,onClick:v?t=>{let{onClickConnectStart:r,onClickConnectEnd:a,connectionClickStartHandle:o,connectionMode:s,isValidConnection:c,lib:l,rfId:u,nodeLookup:d,connection:f}=g.getState();if(!_||!o&&!i)return;if(!o){r?.(t.nativeEvent,{nodeId:_,handleId:m,handleType:e}),g.setState({connectionClickStartHandle:{nodeId:_,type:e,id:m}});return}let p=bo(t.target),h=n||c,{connection:v,isValid:y}=ks.isValid(t.nativeEvent,{handle:{nodeId:_,id:m,type:e},connectionMode:s,fromNodeId:o.nodeId,fromHandleId:o.id||null,fromType:o.type,isValidConnection:h,flowId:u,doc:p,lib:l,nodeLookup:d});y&&v&&A(v);let b=structuredClone(f);delete b.inProgress,b.toPosition=b.toHandle?b.toHandle.position:null,a?.(t,b),g.setState({connectionClickStartHandle:null})}:void 0,ref:p,...f,children:c})}var Vl=(0,y.memo)(ul(Bl));function Hl({data:e,isConnectable:t,sourcePosition:n=U.Bottom}){return(0,x.jsxs)(x.Fragment,{children:[e?.label,(0,x.jsx)(Vl,{type:`source`,position:n,isConnectable:t})]})}function Ul({data:e,isConnectable:t,targetPosition:n=U.Top,sourcePosition:r=U.Bottom}){return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(Vl,{type:`target`,position:n,isConnectable:t}),e?.label,(0,x.jsx)(Vl,{type:`source`,position:r,isConnectable:t})]})}function Wl(){return null}function Gl({data:e,isConnectable:t,targetPosition:n=U.Top}){return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(Vl,{type:`target`,position:n,isConnectable:t}),e?.label]})}var Kl={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},ql={input:Hl,default:Ul,output:Gl,group:Wl};function Jl(e){return e.internals.handleBounds===void 0?{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}}var Yl=e=>{let{width:t,height:n,x:r,y:i}=Fa(e.nodeLookup,{filter:e=>!!e.selected});return{width:no(t)?t:null,height:no(n)?n:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${r}px,${i}px)`}};function Xl({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){let r=bc(),{width:i,height:a,transformString:o,userSelectionActive:s}=K(Yl,hc),c=Pl(),l=(0,y.useRef)(null);(0,y.useEffect)(()=>{n||l.current?.focus({preventScroll:!0})},[n]);let u=!s&&i!==null&&a!==null;if(Ml({nodeRef:l,disabled:!u}),!u)return null;let d=e?t=>{e(t,r.getState().nodes.filter(e=>e.selected))}:void 0;return(0,x.jsx)(`div`,{className:S([`react-flow__nodesselection`,`react-flow__container`,t]),style:{transform:o},children:(0,x.jsx)(`div`,{ref:l,className:`react-flow__nodesselection-rect`,onContextMenu:d,tabIndex:n?void 0:-1,onKeyDown:n?void 0:e=>{Object.prototype.hasOwnProperty.call(Kl,e.key)&&(e.preventDefault(),c({direction:Kl[e.key],factor:e.shiftKey?4:1}))},style:{width:i,height:a}})})}var Zl=typeof window<`u`?window:void 0,Ql=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function $l({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:a,onPaneScroll:o,paneClickDistance:s,deleteKeyCode:c,selectionKeyCode:l,selectionOnDrag:u,selectionMode:d,onSelectionStart:f,onSelectionEnd:p,multiSelectionKeyCode:m,panActivationKeyCode:h,zoomActivationKeyCode:g,elementsSelectable:_,zoomOnScroll:v,zoomOnPinch:y,panOnScroll:b,panOnScrollSpeed:S,panOnScrollMode:C,zoomOnDoubleClick:w,panOnDrag:T,autoPanOnSelection:E,defaultViewport:D,translateExtent:O,minZoom:k,maxZoom:A,preventScrolling:j,onSelectionContextMenu:M,noWheelClassName:N,noPanClassName:P,disableKeyboardA11y:ee,onViewportChange:F,isControlledViewport:I}){let{nodesSelectionActive:L,userSelectionActive:te}=K(Ql,hc),R=Jc(l,{target:Zl}),z=Jc(h,{target:Zl}),B=z||T,V=z||b,ne=u&&B!==!0,re=R||te||ne;return xl({deleteKeyCode:c,multiSelectionKeyCode:m}),(0,x.jsx)(Tl,{onPaneContextMenu:a,elementsSelectable:_,zoomOnScroll:v,zoomOnPinch:y,panOnScroll:V,panOnScrollSpeed:S,panOnScrollMode:C,zoomOnDoubleClick:w,panOnDrag:!R&&B,defaultViewport:D,translateExtent:O,minZoom:k,maxZoom:A,zoomActivationKeyCode:g,preventScrolling:j,noWheelClassName:N,noPanClassName:P,onViewportChange:F,isControlledViewport:I,paneClickDistance:s,selectionOnDrag:ne,children:(0,x.jsxs)(Al,{onSelectionStart:f,onSelectionEnd:p,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:a,onPaneScroll:o,panOnDrag:B,autoPanOnSelection:E,isSelecting:!!re,selectionMode:d,selectionKeyPressed:R,paneClickDistance:s,selectionOnDrag:ne,children:[e,L&&(0,x.jsx)(Xl,{onSelectionContextMenu:M,noPanClassName:P,disableKeyboardA11y:ee})]})})}$l.displayName=`FlowRenderer`;var eu=(0,y.memo)($l),tu=e=>t=>e?Ia(t.nodeLookup,{x:0,y:0,width:t.width,height:t.height},t.transform,!0).map(e=>e.id):Array.from(t.nodeLookup.keys());function nu(e){return K((0,y.useCallback)(tu(e),[e]),hc)}var ru=e=>e.updateNodeInternals;function iu(){let e=K(ru),[t]=(0,y.useState)(()=>typeof ResizeObserver>`u`?null:new ResizeObserver(t=>{let n=new Map;t.forEach(e=>{let t=e.target.getAttribute(`data-id`);n.set(t,{id:t,nodeElement:e.target,force:!0})}),e(n)}));return(0,y.useEffect)(()=>()=>{t?.disconnect()},[t]),t}function au({node:e,nodeType:t,hasDimensions:n,resizeObserver:r}){let i=bc(),a=(0,y.useRef)(null),o=(0,y.useRef)(null),s=(0,y.useRef)(e.sourcePosition),c=(0,y.useRef)(e.targetPosition),l=(0,y.useRef)(t),u=n&&!!e.internals.handleBounds;return(0,y.useEffect)(()=>{a.current&&!e.hidden&&(!u||o.current!==a.current)&&(o.current&&r?.unobserve(o.current),r?.observe(a.current),o.current=a.current)},[u,e.hidden]),(0,y.useEffect)(()=>()=>{o.current&&=(r?.unobserve(o.current),null)},[]),(0,y.useEffect)(()=>{if(a.current){let n=l.current!==t,r=s.current!==e.sourcePosition,o=c.current!==e.targetPosition;(n||r||o)&&(l.current=t,s.current=e.sourcePosition,c.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}function ou({id:e,onClick:t,onMouseEnter:n,onMouseMove:r,onMouseLeave:i,onContextMenu:a,onDoubleClick:o,nodesDraggable:s,elementsSelectable:c,nodesConnectable:l,nodesFocusable:u,resizeObserver:d,noDragClassName:f,noPanClassName:p,disableKeyboardA11y:m,rfId:h,nodeTypes:g,nodeClickDistance:_,onError:v}){let{node:y,internals:b,isParent:C}=K(t=>{let n=t.nodeLookup.get(e),r=t.parentLookup.has(e);return{node:n,internals:n.internals,isParent:r}},hc),w=y.type||`default`,T=g?.[w]||ql[w];T===void 0&&(v?.(`003`,va.error003(w)),w=`default`,T=g?.default||ql.default);let E=!!(y.draggable||s&&y.draggable===void 0),D=!!(y.selectable||c&&y.selectable===void 0),O=!!(y.connectable||l&&y.connectable===void 0),k=!!(y.focusable||u&&y.focusable===void 0),A=bc(),j=po(y),M=au({node:y,nodeType:w,hasDimensions:j,resizeObserver:d}),N=Ml({nodeRef:M,disabled:y.hidden||!E,noDragClassName:f,handleSelector:y.dragHandle,nodeId:e,isSelectable:D,nodeClickDistance:_}),P=Pl();if(y.hidden)return null;let ee=fo(y),F=Jl(y),I=D||E||t||n||r||i,L=n?e=>n(e,{...b.userNode}):void 0,te=r?e=>r(e,{...b.userNode}):void 0,R=i?e=>i(e,{...b.userNode}):void 0,z=a?e=>a(e,{...b.userNode}):void 0,B=o?e=>o(e,{...b.userNode}):void 0,V=n=>{let{selectNodesOnDrag:r,nodeDragThreshold:i}=A.getState();D&&(!r||!E||i>0)&&jl({id:e,store:A,nodeRef:M}),t&&t(n,{...b.userNode})},ne=t=>{if(!(So(t.nativeEvent)||m)){if(ba.includes(t.key)&&D){let n=t.key===`Escape`;jl({id:e,store:A,unselect:n,nodeRef:M})}else if(E&&y.selected&&Object.prototype.hasOwnProperty.call(Kl,t.key)){t.preventDefault();let{ariaLabelConfig:e}=A.getState();A.setState({ariaLiveMessage:e[`node.a11yDescription.ariaLiveMessage`]({direction:t.key.replace(`Arrow`,``).toLowerCase(),x:~~b.positionAbsolute.x,y:~~b.positionAbsolute.y})}),P({direction:Kl[t.key],factor:t.shiftKey?4:1})}}},re=()=>{if(m||!M.current?.matches(`:focus-visible`))return;let{transform:t,width:n,height:r,autoPanOnNodeFocus:i,setCenter:a}=A.getState();i&&(Ia(new Map([[e,y]]),{x:0,y:0,width:n,height:r},t,!0).length>0||a(y.position.x+ee.width/2,y.position.y+ee.height/2,{zoom:t[2]}))};return(0,x.jsx)(`div`,{className:S([`react-flow__node`,`react-flow__node-${w}`,{[p]:E},y.className,{selected:y.selected,selectable:D,parent:C,draggable:E,dragging:N}]),ref:M,style:{zIndex:b.z,transform:`translate(${b.positionAbsolute.x}px,${b.positionAbsolute.y}px)`,pointerEvents:I?`all`:`none`,visibility:j?`visible`:`hidden`,...y.style,...F},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:L,onMouseMove:te,onMouseLeave:R,onContextMenu:z,onClick:V,onDoubleClick:B,onKeyDown:k?ne:void 0,tabIndex:k?0:void 0,onFocus:k?re:void 0,role:y.ariaRole??(k?`group`:void 0),"aria-roledescription":`node`,"aria-describedby":m?void 0:`${Cc}-${h}`,"aria-label":y.ariaLabel,...y.domAttributes,children:(0,x.jsx)(Il,{value:e,children:(0,x.jsx)(T,{id:e,data:y.data,type:w,positionAbsoluteX:b.positionAbsolute.x,positionAbsoluteY:b.positionAbsolute.y,selected:y.selected??!1,selectable:D,draggable:E,deletable:y.deletable??!0,isConnectable:O,sourcePosition:y.sourcePosition,targetPosition:y.targetPosition,dragging:N,dragHandle:y.dragHandle,zIndex:b.z,parentId:y.parentId,...ee})})})}var su=(0,y.memo)(ou),cu=e=>({nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function lu(e){let{nodesConnectable:t,nodesFocusable:n,elementsSelectable:r,onError:i}=K(cu,hc),a=nu(e.onlyRenderVisibleElements),o=iu();return(0,x.jsx)(`div`,{className:`react-flow__nodes`,style:Cl,children:a.map(a=>(0,x.jsx)(su,{id:a,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:o,nodesDraggable:e.nodesDraggable??!0,nodesConnectable:t,nodesFocusable:n,elementsSelectable:r,nodeClickDistance:e.nodeClickDistance,onError:i},a))})}lu.displayName=`NodeRenderer`;var uu=(0,y.memo)(lu);function du(e){return K((0,y.useCallback)(t=>{if(!e)return t.edges.map(e=>e.id);let n=[];if(t.width&&t.height)for(let e of t.edges){let r=t.nodeLookup.get(e.source),i=t.nodeLookup.get(e.target);r&&i&&Mo({sourceNode:r,targetNode:i,width:t.width,height:t.height,transform:t.transform})&&n.push(e.id)}return n},[e]),hc)}var fu=({color:e=`none`,strokeWidth:t=1})=>(0,x.jsx)(`polyline`,{className:`arrow`,style:{strokeWidth:t,...e&&{stroke:e}},strokeLinecap:`round`,fill:`none`,strokeLinejoin:`round`,points:`-5,-4 0,0 -5,4`}),pu=({color:e=`none`,strokeWidth:t=1})=>(0,x.jsx)(`polyline`,{className:`arrowclosed`,style:{strokeWidth:t,...e&&{stroke:e,fill:e}},strokeLinecap:`round`,strokeLinejoin:`round`,points:`-5,-4 0,0 -5,4 -5,-4`}),mu={[Da.Arrow]:fu,[Da.ArrowClosed]:pu};function hu(e){let t=bc();return(0,y.useMemo)(()=>Object.prototype.hasOwnProperty.call(mu,e)?mu[e]:(t.getState().onError?.(`009`,va.error009(e)),null),[e])}var gu=({id:e,type:t,color:n,width:r=12.5,height:i=12.5,markerUnits:a=`strokeWidth`,strokeWidth:o,orient:s=`auto-start-reverse`})=>{let c=hu(t);return c?(0,x.jsx)(`marker`,{className:`react-flow__arrowhead`,id:e,markerWidth:`${r}`,markerHeight:`${i}`,viewBox:`-10 -10 20 20`,markerUnits:a,orient:s,refX:`0`,refY:`0`,children:(0,x.jsx)(c,{color:n,strokeWidth:o})}):null},_u=({defaultColor:e,rfId:t})=>{let n=K(e=>e.edges),r=K(e=>e.defaultEdgeOptions),i=(0,y.useMemo)(()=>Yo(n,{id:t,defaultColor:e,defaultMarkerStart:r?.markerStart,defaultMarkerEnd:r?.markerEnd}),[n,r,t,e]);return i.length?(0,x.jsx)(`svg`,{className:`react-flow__marker`,"aria-hidden":`true`,children:(0,x.jsx)(`defs`,{children:i.map(e=>(0,x.jsx)(gu,{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};_u.displayName=`MarkerDefinitions`;var vu=(0,y.memo)(_u);function yu({x:e,y:t,label:n,labelStyle:r,labelShowBg:i=!0,labelBgStyle:a,labelBgPadding:o=[2,4],labelBgBorderRadius:s=2,children:c,className:l,...u}){let[d,f]=(0,y.useState)({x:1,y:0,width:0,height:0}),p=S([`react-flow__edge-textwrapper`,l]),m=(0,y.useRef)(null);return(0,y.useEffect)(()=>{if(m.current){let e=m.current.getBBox();f({x:e.x,y:e.y,width:e.width,height:e.height})}},[n]),n?(0,x.jsxs)(`g`,{transform:`translate(${e-d.width/2} ${t-d.height/2})`,className:p,visibility:d.width?`visible`:`hidden`,...u,children:[i&&(0,x.jsx)(`rect`,{width:d.width+2*o[0],x:-o[0],y:-o[1],height:d.height+2*o[1],className:`react-flow__edge-textbg`,style:a,rx:s,ry:s}),(0,x.jsx)(`text`,{className:`react-flow__edge-text`,y:d.height/2,dy:`0.3em`,ref:m,style:r,children:n}),c]}):null}yu.displayName=`EdgeText`;var bu=(0,y.memo)(yu);function xu({path:e,labelX:t,labelY:n,label:r,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:s,labelBgBorderRadius:c,interactionWidth:l=20,...u}){return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`path`,{...u,d:e,fill:`none`,className:S([`react-flow__edge-path`,u.className])}),l?(0,x.jsx)(`path`,{d:e,fill:`none`,strokeOpacity:0,strokeWidth:l,className:`react-flow__edge-interaction`}):null,r&&no(t)&&no(n)?(0,x.jsx)(bu,{x:t,y:n,label:r,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:s,labelBgBorderRadius:c}):null]})}function Su({pos:e,x1:t,y1:n,x2:r,y2:i}){return e===U.Left||e===U.Right?[.5*(t+r),n]:[t,.5*(n+i)]}function Cu({sourceX:e,sourceY:t,sourcePosition:n=U.Bottom,targetX:r,targetY:i,targetPosition:a=U.Top}){let[o,s]=Su({pos:n,x1:e,y1:t,x2:r,y2:i}),[c,l]=Su({pos:a,x1:r,y1:i,x2:e,y2:t}),[u,d,f,p]=Eo({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:o,sourceControlY:s,targetControlX:c,targetControlY:l});return[`M${e},${t} C${o},${s} ${c},${l} ${r},${i}`,u,d,f,p]}function wu(e){return(0,y.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,sourcePosition:o,targetPosition:s,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:_})=>{let[v,y,b]=Cu({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s});return(0,x.jsx)(xu,{id:e.isInternal?void 0:t,path:v,labelX:y,labelY:b,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:_})})}var Tu=wu({isInternal:!1}),Eu=wu({isInternal:!0});Tu.displayName=`SimpleBezierEdge`,Eu.displayName=`SimpleBezierEdgeInternal`;function Du(e){return(0,y.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,sourcePosition:p=U.Bottom,targetPosition:m=U.Top,markerEnd:h,markerStart:g,pathOptions:_,interactionWidth:v})=>{let[y,b,S]=Ho({sourceX:n,sourceY:r,sourcePosition:p,targetX:i,targetY:a,targetPosition:m,borderRadius:_?.borderRadius,offset:_?.offset,stepPosition:_?.stepPosition});return(0,x.jsx)(xu,{id:e.isInternal?void 0:t,path:y,labelX:b,labelY:S,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:g,interactionWidth:v})})}var Ou=Du({isInternal:!1}),ku=Du({isInternal:!0});Ou.displayName=`SmoothStepEdge`,ku.displayName=`SmoothStepEdgeInternal`;function Au(e){return(0,y.memo)(({id:t,...n})=>{let r=e.isInternal?void 0:t;return(0,x.jsx)(Ou,{...n,id:r,pathOptions:(0,y.useMemo)(()=>({borderRadius:0,offset:n.pathOptions?.offset}),[n.pathOptions?.offset])})})}var ju=Au({isInternal:!1}),Mu=Au({isInternal:!0});ju.displayName=`StepEdge`,Mu.displayName=`StepEdgeInternal`;function Nu(e){return(0,y.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:p,markerStart:m,interactionWidth:h})=>{let[g,_,v]=Io({sourceX:n,sourceY:r,targetX:i,targetY:a});return(0,x.jsx)(xu,{id:e.isInternal?void 0:t,path:g,labelX:_,labelY:v,label:o,labelStyle:s,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:p,markerStart:m,interactionWidth:h})})}var Pu=Nu({isInternal:!1}),Fu=Nu({isInternal:!0});Pu.displayName=`StraightEdge`,Fu.displayName=`StraightEdgeInternal`;function Iu(e){return(0,y.memo)(({id:t,sourceX:n,sourceY:r,targetX:i,targetY:a,sourcePosition:o=U.Bottom,targetPosition:s=U.Top,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,pathOptions:_,interactionWidth:v})=>{let[y,b,S]=ko({sourceX:n,sourceY:r,sourcePosition:o,targetX:i,targetY:a,targetPosition:s,curvature:_?.curvature});return(0,x.jsx)(xu,{id:e.isInternal?void 0:t,path:y,labelX:b,labelY:S,label:c,labelStyle:l,labelShowBg:u,labelBgStyle:d,labelBgPadding:f,labelBgBorderRadius:p,style:m,markerEnd:h,markerStart:g,interactionWidth:v})})}var Lu=Iu({isInternal:!1}),Ru=Iu({isInternal:!0});Lu.displayName=`BezierEdge`,Ru.displayName=`BezierEdgeInternal`;var zu={default:Ru,straight:Fu,step:Mu,smoothstep:ku,simplebezier:Eu},Bu={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null,zIndex:void 0},Vu=(e,t,n)=>n===U.Left?e-t:n===U.Right?e+t:e,Hu=(e,t,n)=>n===U.Top?e-t:n===U.Bottom?e+t:e,Uu=`react-flow__edgeupdater`;function Wu({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:i,onMouseEnter:a,onMouseOut:o,type:s}){return(0,x.jsx)(`circle`,{onMouseDown:i,onMouseEnter:a,onMouseOut:o,className:S([Uu,`${Uu}-${s}`]),cx:Vu(t,r,e),cy:Hu(n,r,e),r,stroke:`transparent`,fill:`transparent`})}function Z({isReconnectable:e,reconnectRadius:t,edge:n,sourceX:r,sourceY:i,targetX:a,targetY:o,sourcePosition:s,targetPosition:c,onReconnect:l,onReconnectStart:u,onReconnectEnd:d,setReconnecting:f,setUpdateHover:p}){let m=bc(),h=(e,t)=>{if(e.button!==0)return;let{autoPanOnConnect:r,domNode:i,connectionMode:a,connectionRadius:o,lib:s,onConnectStart:c,cancelConnection:p,nodeLookup:h,rfId:g,panBy:_,updateConnection:v}=m.getState(),y=t.type===`target`;ks.onPointerDown(e.nativeEvent,{autoPanOnConnect:r,connectionMode:a,connectionRadius:o,domNode:i,handleId:t.id,nodeId:t.nodeId,nodeLookup:h,isTarget:y,edgeUpdaterType:t.type,lib:s,flowId:g,cancelConnection:p,panBy:_,isValidConnection:(...e)=>m.getState().isValidConnection?.(...e)??!0,onConnect:e=>l?.(n,e),onConnectStart:(r,i)=>{f(!0),u?.(e,n,t.type),c?.(r,i)},onConnectEnd:(...e)=>m.getState().onConnectEnd?.(...e),onReconnectEnd:(e,r)=>{f(!1),d?.(e,n,t.type,r)},updateConnection:v,getTransform:()=>m.getState().transform,getFromHandle:()=>m.getState().connection.fromHandle,dragThreshold:m.getState().connectionDragThreshold,handleDomNode:e.currentTarget})},g=e=>h(e,{nodeId:n.target,id:n.targetHandle??null,type:`target`}),_=e=>h(e,{nodeId:n.source,id:n.sourceHandle??null,type:`source`}),v=()=>p(!0),y=()=>p(!1);return(0,x.jsxs)(x.Fragment,{children:[(e===!0||e===`source`)&&(0,x.jsx)(Wu,{position:s,centerX:r,centerY:i,radius:t,onMouseDown:g,onMouseEnter:v,onMouseOut:y,type:`source`}),(e===!0||e===`target`)&&(0,x.jsx)(Wu,{position:c,centerX:a,centerY:o,radius:t,onMouseDown:_,onMouseEnter:v,onMouseOut:y,type:`target`})]})}function Gu({id:e,edgesFocusable:t,edgesReconnectable:n,elementsSelectable:r,onClick:i,onDoubleClick:a,onContextMenu:o,onMouseEnter:s,onMouseMove:c,onMouseLeave:l,reconnectRadius:u,onReconnect:d,onReconnectStart:f,onReconnectEnd:p,rfId:m,edgeTypes:h,noPanClassName:g,onError:_,disableKeyboardA11y:v}){let b=K(t=>t.edgeLookup.get(e)),C=K(e=>e.defaultEdgeOptions);b=C?{...C,...b}:b;let w=b.type||`default`,T=h?.[w]||zu[w];T===void 0&&(_?.(`011`,va.error011(w)),w=`default`,T=h?.default||zu.default);let E=!!(b.focusable||t&&b.focusable===void 0),D=d!==void 0&&(b.reconnectable||n&&b.reconnectable===void 0),O=!!(b.selectable||r&&b.selectable===void 0),k=(0,y.useRef)(null),[A,j]=(0,y.useState)(!1),[M,N]=(0,y.useState)(!1),P=bc(),{zIndex:ee=b.zIndex,sourceX:F,sourceY:I,targetX:L,targetY:te,sourcePosition:R,targetPosition:z}=K((0,y.useCallback)(t=>{let n=t.nodeLookup.get(b.source),r=t.nodeLookup.get(b.target);if(!n||!r)return Bu;let i=Wo({id:e,sourceNode:n,targetNode:r,sourceHandle:b.sourceHandle||null,targetHandle:b.targetHandle||null,connectionMode:t.connectionMode,onError:_}),a=jo({selected:b.selected,zIndex:b.zIndex,sourceNode:n,targetNode:r,elevateOnSelect:t.elevateEdgesOnSelect,zIndexMode:t.zIndexMode});return{...i||Bu,zIndex:a}},[b.source,b.target,b.sourceHandle,b.targetHandle,b.selected,b.zIndex]),hc),B=(0,y.useMemo)(()=>b.markerStart?`url('#${Jo(b.markerStart,m)}')`:void 0,[b.markerStart,m]),V=(0,y.useMemo)(()=>b.markerEnd?`url('#${Jo(b.markerEnd,m)}')`:void 0,[b.markerEnd,m]);if(b.hidden||F===null||I===null||L===null||te===null)return null;let ne=t=>{let{addSelectedEdges:n,unselectNodesAndEdges:r,multiSelectionActive:a}=P.getState();O&&(P.setState({nodesSelectionActive:!1}),b.selected&&a?(r({nodes:[],edges:[b]}),k.current?.blur()):n([e])),i&&i(t,b)},re=a?e=>{a(e,{...b})}:void 0,ie=o?e=>{o(e,{...b})}:void 0,ae=s?e=>{s(e,{...b})}:void 0,oe=c?e=>{c(e,{...b})}:void 0,se=l?e=>{l(e,{...b})}:void 0;return(0,x.jsx)(`svg`,{style:{zIndex:ee},children:(0,x.jsxs)(`g`,{className:S([`react-flow__edge`,`react-flow__edge-${w}`,b.className,g,{selected:b.selected,animated:b.animated,inactive:!O&&!i,updating:A,selectable:O}]),onClick:ne,onDoubleClick:re,onContextMenu:ie,onMouseEnter:ae,onMouseMove:oe,onMouseLeave:se,onKeyDown:E?t=>{if(!v&&ba.includes(t.key)&&O){let{unselectNodesAndEdges:n,addSelectedEdges:r}=P.getState();t.key===`Escape`?(k.current?.blur(),n({edges:[b]})):r([e])}}:void 0,tabIndex:E?0:void 0,role:b.ariaRole??(E?`group`:`img`),"aria-roledescription":`edge`,"data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":b.ariaLabel===null?void 0:b.ariaLabel||`Edge from ${b.source} to ${b.target}`,"aria-describedby":E?`${wc}-${m}`:void 0,ref:k,...b.domAttributes,children:[!M&&(0,x.jsx)(T,{id:e,source:b.source,target:b.target,type:b.type,selected:b.selected,animated:b.animated,selectable:O,deletable:b.deletable??!0,label:b.label,labelStyle:b.labelStyle,labelShowBg:b.labelShowBg,labelBgStyle:b.labelBgStyle,labelBgPadding:b.labelBgPadding,labelBgBorderRadius:b.labelBgBorderRadius,sourceX:F,sourceY:I,targetX:L,targetY:te,sourcePosition:R,targetPosition:z,data:b.data,style:b.style,sourceHandleId:b.sourceHandle,targetHandleId:b.targetHandle,markerStart:B,markerEnd:V,pathOptions:`pathOptions`in b?b.pathOptions:void 0,interactionWidth:b.interactionWidth}),D&&(0,x.jsx)(Z,{edge:b,isReconnectable:D,reconnectRadius:u,onReconnect:d,onReconnectStart:f,onReconnectEnd:p,sourceX:F,sourceY:I,targetX:L,targetY:te,sourcePosition:R,targetPosition:z,setUpdateHover:j,setReconnecting:N})]})})}var Ku=(0,y.memo)(Gu),qu=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function Ju({defaultMarkerColor:e,onlyRenderVisibleElements:t,rfId:n,edgeTypes:r,noPanClassName:i,onReconnect:a,onEdgeContextMenu:o,onEdgeMouseEnter:s,onEdgeMouseMove:c,onEdgeMouseLeave:l,onEdgeClick:u,reconnectRadius:d,onEdgeDoubleClick:f,onReconnectStart:p,onReconnectEnd:m,disableKeyboardA11y:h}){let{edgesFocusable:g,edgesReconnectable:_,elementsSelectable:v,onError:y}=K(qu,hc),b=du(t);return(0,x.jsxs)(`div`,{className:`react-flow__edges`,children:[(0,x.jsx)(vu,{defaultColor:e,rfId:n}),b.map(e=>(0,x.jsx)(Ku,{id:e,edgesFocusable:g,edgesReconnectable:_,elementsSelectable:v,noPanClassName:i,onReconnect:a,onContextMenu:o,onMouseEnter:s,onMouseMove:c,onMouseLeave:l,onClick:u,reconnectRadius:d,onDoubleClick:f,onReconnectStart:p,onReconnectEnd:m,rfId:n,onError:y,edgeTypes:r,disableKeyboardA11y:h},e))]})}Ju.displayName=`EdgeRenderer`;var Yu=(0,y.memo)(Ju),Xu=e=>`translate(${e[0]}px,${e[1]}px) scale(${e[2]})`;function Zu({children:e}){let t=bc(),n=(0,y.useRef)(null),[r]=(0,y.useState)(()=>t.getState().transform);return dl(()=>{let e=null,r=()=>{let r=t.getState().transform;e&&r[0]===e[0]&&r[1]===e[1]&&r[2]===e[2]||(e=r,n.current&&(n.current.style.transform=Xu(r)))};return r(),t.subscribe(r)},[t]),(0,x.jsx)(`div`,{ref:n,className:`react-flow__viewport xyflow__viewport react-flow__container`,style:{transform:Xu(r)},children:e})}function Qu(e){let t=vl(),n=(0,y.useRef)(!1);(0,y.useEffect)(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}var $u=e=>e.panZoom?.syncViewport;function ed(e){let t=K($u),n=bc();return(0,y.useEffect)(()=>{e&&(t?.(e),n.setState({transform:[e.x,e.y,e.zoom]}))},[e,t]),null}function td(e){return e.connection.inProgress?{...e.connection,to:ao(e.connection.to,e.transform)}:{...e.connection}}function nd(e){return e?t=>e(td(t)):td}function rd(e){return K(nd(e),hc)}var id=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function ad({containerStyle:e,style:t,type:n,component:r}){let{nodesConnectable:i,width:a,height:o,isValid:s,inProgress:c}=K(id,hc);return a&&i&&c?(0,x.jsx)(`svg`,{style:e,width:a,height:o,className:`react-flow__connectionline react-flow__container`,children:(0,x.jsx)(`g`,{className:S([`react-flow__connection`,ka(s)]),children:(0,x.jsx)(od,{style:t,type:n,CustomComponent:r,isValid:s})})}):null}var od=({style:e,type:t=Ea.Bezier,CustomComponent:n,isValid:r})=>{let{inProgress:i,from:a,fromNode:o,fromHandle:s,fromPosition:c,to:l,toNode:u,toHandle:d,toPosition:f,pointer:p}=rd();if(!i)return;if(n)return(0,x.jsx)(n,{connectionLineType:t,connectionLineStyle:e,fromNode:o,fromHandle:s,fromX:a.x,fromY:a.y,toX:l.x,toY:l.y,fromPosition:c,toPosition:f,connectionStatus:ka(r),toNode:u,toHandle:d,pointer:p});let m=``,h={sourceX:a.x,sourceY:a.y,sourcePosition:c,targetX:l.x,targetY:l.y,targetPosition:f};switch(t){case Ea.Bezier:[m]=ko(h);break;case Ea.SimpleBezier:[m]=Cu(h);break;case Ea.Step:[m]=Ho({...h,borderRadius:0});break;case Ea.SmoothStep:[m]=Ho(h);break;default:[m]=Io(h)}return(0,x.jsx)(`path`,{d:m,fill:`none`,className:`react-flow__connection-path`,style:e})};od.displayName=`ConnectionLine`;var sd={};function cd(e=sd){(0,y.useRef)(e),bc(),(0,y.useEffect)(()=>{},[e])}function ld(){bc(),(0,y.useRef)(!1),(0,y.useEffect)(()=>{},[])}function ud({nodeTypes:e,edgeTypes:t,onInit:n,onNodeClick:r,onEdgeClick:i,onNodeDoubleClick:a,onEdgeDoubleClick:o,onNodeMouseEnter:s,onNodeMouseMove:c,onNodeMouseLeave:l,onNodeContextMenu:u,onSelectionContextMenu:d,onSelectionStart:f,onSelectionEnd:p,connectionLineType:m,connectionLineStyle:h,connectionLineComponent:g,connectionLineContainerStyle:_,selectionKeyCode:v,selectionOnDrag:y,selectionMode:b,multiSelectionKeyCode:S,panActivationKeyCode:C,zoomActivationKeyCode:w,deleteKeyCode:T,onlyRenderVisibleElements:E,elementsSelectable:D,defaultViewport:O,translateExtent:k,minZoom:A,maxZoom:j,preventScrolling:M,defaultMarkerColor:N,zoomOnScroll:P,zoomOnPinch:ee,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:L,zoomOnDoubleClick:te,panOnDrag:R,autoPanOnSelection:z,onPaneClick:B,onPaneMouseEnter:V,onPaneMouseMove:ne,onPaneMouseLeave:re,onPaneScroll:ie,onPaneContextMenu:ae,paneClickDistance:oe,nodeClickDistance:se,onEdgeContextMenu:ce,onEdgeMouseEnter:le,onEdgeMouseMove:ue,onEdgeMouseLeave:de,reconnectRadius:fe,onReconnect:pe,onReconnectStart:me,onReconnectEnd:he,noDragClassName:ge,noWheelClassName:_e,noPanClassName:ve,disableKeyboardA11y:ye,nodeExtent:be,rfId:xe,viewport:Se,onViewportChange:Ce,nodesDraggable:we}){return cd(e),cd(t),ld(),Qu(n),ed(Se),(0,x.jsx)(eu,{onPaneClick:B,onPaneMouseEnter:V,onPaneMouseMove:ne,onPaneMouseLeave:re,onPaneContextMenu:ae,onPaneScroll:ie,paneClickDistance:oe,deleteKeyCode:T,selectionKeyCode:v,selectionOnDrag:y,selectionMode:b,onSelectionStart:f,onSelectionEnd:p,multiSelectionKeyCode:S,panActivationKeyCode:C,zoomActivationKeyCode:w,elementsSelectable:D,zoomOnScroll:P,zoomOnPinch:ee,zoomOnDoubleClick:te,panOnScroll:F,panOnScrollSpeed:I,panOnScrollMode:L,panOnDrag:R,autoPanOnSelection:z,defaultViewport:O,translateExtent:k,minZoom:A,maxZoom:j,onSelectionContextMenu:d,preventScrolling:M,noDragClassName:ge,noWheelClassName:_e,noPanClassName:ve,disableKeyboardA11y:ye,onViewportChange:Ce,isControlledViewport:!!Se,children:(0,x.jsxs)(Zu,{children:[(0,x.jsx)(Yu,{edgeTypes:t,onEdgeClick:i,onEdgeDoubleClick:o,onReconnect:pe,onReconnectStart:me,onReconnectEnd:he,onlyRenderVisibleElements:E,onEdgeContextMenu:ce,onEdgeMouseEnter:le,onEdgeMouseMove:ue,onEdgeMouseLeave:de,reconnectRadius:fe,defaultMarkerColor:N,noPanClassName:ve,disableKeyboardA11y:ye,rfId:xe}),(0,x.jsx)(ad,{style:h,type:m,component:g,containerStyle:_}),(0,x.jsx)(`div`,{className:`react-flow__edgelabel-renderer`}),(0,x.jsx)(uu,{nodeTypes:e,onNodeClick:r,onNodeDoubleClick:a,onNodeMouseEnter:s,onNodeMouseMove:c,onNodeMouseLeave:l,onNodeContextMenu:u,nodeClickDistance:se,onlyRenderVisibleElements:E,noPanClassName:ve,noDragClassName:ge,disableKeyboardA11y:ye,nodeExtent:be,rfId:xe,nodesDraggable:we}),(0,x.jsx)(`div`,{className:`react-flow__viewport-portal`})]})})}ud.displayName=`GraphView`;var dd=(0,y.memo)(ud),fd=ro(`React Flow`,`https://reactflow.dev/`),pd=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c=.5,maxZoom:l=2,nodeOrigin:u,nodeExtent:d,zIndexMode:f=`basic`}={})=>{let p=new Map,m=new Map,h=new Map,g=new Map,_=r??t??[],v=n??e??[],y=u??[0,0],b=d??ya;ps(h,g,_);let{nodesInitialized:x}=is(v,p,m,{nodeOrigin:y,nodeExtent:b,zIndexMode:f}),S=[0,0,1];if(o&&i&&a){let{x:e,y:t,zoom:n}=G(Fa(p,{filter:e=>!!((e.width||e.initialWidth)&&(e.height||e.initialHeight))}),i,a,c,l,s?.padding??.1);S=[e,t,n]}return{rfId:`1`,width:i??0,height:a??0,transform:S,nodes:v,nodesInitialized:x,nodeLookup:p,parentLookup:m,edges:_,edgeLookup:g,connectionLookup:h,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:n!==void 0,hasDefaultEdges:r!==void 0,panZoom:null,minZoom:c,maxZoom:l,translateExtent:ya,nodeExtent:b,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:Sa.Strict,domNode:null,paneDragging:!1,noPanClassName:`nopan`,nodeOrigin:y,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:o??!1,fitViewOptions:s,fitViewResolver:null,connection:{...Ta},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:``,autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:fd,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:`react`,debug:!1,ariaLabelConfig:xa,zIndexMode:f,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},md=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c,maxZoom:l,nodeOrigin:u,nodeExtent:d,zIndexMode:f})=>mc((p,m)=>{async function h(){let{nodeLookup:e,panZoom:t,fitViewOptions:n,fitViewResolver:r,width:i,height:a,minZoom:o,maxZoom:s}=m();t&&(await za({nodes:e,width:i,height:a,panZoom:t,minZoom:o,maxZoom:s},n),r?.resolve(!0),p({fitViewResolver:null}))}return{...pd({nodes:e,edges:t,width:i,height:a,fitView:o,fitViewOptions:s,minZoom:c,maxZoom:l,nodeOrigin:u,nodeExtent:d,defaultNodes:n,defaultEdges:r,zIndexMode:f}),setNodes:e=>{let{nodeLookup:t,parentLookup:n,nodeOrigin:r,elevateNodesOnSelect:i,fitViewQueued:a,zIndexMode:o,nodesSelectionActive:s}=m(),{nodesInitialized:c,hasSelectedNodes:l}=is(e,t,n,{nodeOrigin:r,nodeExtent:d,elevateNodesOnSelect:i,checkEquality:!0,zIndexMode:o}),u=s&&l;a&&c?(h(),p({nodes:e,nodesInitialized:c,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:u})):p({nodes:e,nodesInitialized:c,nodesSelectionActive:u})},setEdges:e=>{let{connectionLookup:t,edgeLookup:n}=m();ps(t,n,e),p({edges:e})},setDefaultNodesAndEdges:(e,t)=>{if(e){let{setNodes:t}=m();t(e),p({hasDefaultNodes:!0})}if(t){let{setEdges:e}=m();e(t),p({hasDefaultEdges:!0})}},updateNodeInternals:e=>{let{triggerNodeChanges:t,nodeLookup:n,parentLookup:r,domNode:i,nodeOrigin:a,nodeExtent:o,debug:s,fitViewQueued:c,zIndexMode:l}=m(),{changes:u,updatedInternals:d}=us(e,n,r,i,a,o,l);d&&(ts(n,r,{nodeOrigin:a,nodeExtent:o,zIndexMode:l}),c?(h(),p({fitViewQueued:!1,fitViewOptions:void 0})):p({}),u?.length>0&&(s&&console.log(`React Flow: trigger node changes`,u),t?.(u)))},updateNodePositions:(e,t=!1)=>{let n=[],r=[],{nodeLookup:i,triggerNodeChanges:a,connection:o,updateConnection:s,onNodesChangeMiddlewareMap:c}=m();for(let[a,c]of e){let e=i.get(a),l=!!(e?.expandParent&&e?.parentId&&c?.position),u={id:a,type:`position`,position:l?{x:Math.max(0,c.position.x),y:Math.max(0,c.position.y)}:c.position,dragging:t};if(e&&o.inProgress&&o.fromNode.id===e.id){let t=Ko(e,o.fromHandle,U.Left,!0);s({...o,from:t})}l&&e.parentId&&n.push({id:a,parentId:e.parentId,rect:{...c.internals.positionAbsolute,width:c.measured.width??0,height:c.measured.height??0}}),r.push(u)}if(n.length>0){let{parentLookup:e,nodeOrigin:t}=m(),a=ls(n,i,e,t);r.push(...a)}for(let e of c.values())r=e(r);a(r)},triggerNodeChanges:e=>{let{onNodesChange:t,setNodes:n,nodes:r,hasDefaultNodes:i,debug:a}=m();e?.length&&(i&&n(el(e,r)),a&&console.log(`React Flow: trigger node changes`,e),t?.(e))},triggerEdgeChanges:e=>{let{onEdgesChange:t,setEdges:n,edges:r,hasDefaultEdges:i,debug:a}=m();e?.length&&(i&&n(tl(e,r)),a&&console.log(`React Flow: trigger edge changes`,e),t?.(e))},addSelectedNodes:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=m();if(t){i(e.map(e=>nl(e,!0)));return}i(rl(r,new Set([...e]),!0)),a(rl(n))},addSelectedEdges:e=>{let{multiSelectionActive:t,edgeLookup:n,nodeLookup:r,triggerNodeChanges:i,triggerEdgeChanges:a}=m();if(t){a(e.map(e=>nl(e,!0)));return}a(rl(n,new Set([...e]))),i(rl(r,new Set,!0))},unselectNodesAndEdges:({nodes:e,edges:t}={})=>{let{edges:n,nodes:r,nodeLookup:i,triggerNodeChanges:a,triggerEdgeChanges:o}=m(),s=e||r,c=t||n,l=[];for(let e of s){if(!e.selected)continue;let t=i.get(e.id);t&&(t.selected=!1),l.push(nl(e.id,!1))}let u=[];for(let e of c)e.selected&&u.push(nl(e.id,!1));a(l),o(u)},setMinZoom:e=>{let{panZoom:t,maxZoom:n}=m();t?.setScaleExtent([e,n]),p({minZoom:e})},setMaxZoom:e=>{let{panZoom:t,minZoom:n}=m();t?.setScaleExtent([n,e]),p({maxZoom:e})},setTranslateExtent:e=>{m().panZoom?.setTranslateExtent(e),p({translateExtent:e})},resetSelectedElements:()=>{let{edges:e,nodes:t,triggerNodeChanges:n,triggerEdgeChanges:r,elementsSelectable:i}=m();if(!i)return;let a=t.reduce((e,t)=>t.selected?[...e,nl(t.id,!1)]:e,[]),o=e.reduce((e,t)=>t.selected?[...e,nl(t.id,!1)]:e,[]);n(a),r(o)},setNodeExtent:e=>{let{nodes:t,nodeLookup:n,parentLookup:r,nodeOrigin:i,elevateNodesOnSelect:a,nodeExtent:o,zIndexMode:s}=m();e[0][0]===o[0][0]&&e[0][1]===o[0][1]&&e[1][0]===o[1][0]&&e[1][1]===o[1][1]||(is(t,n,r,{nodeOrigin:i,nodeExtent:e,elevateNodesOnSelect:a,checkEquality:!1,zIndexMode:s}),p({nodeExtent:e}))},panBy:e=>{let{transform:t,width:n,height:r,panZoom:i,translateExtent:a}=m();return ds({delta:e,panZoom:i,transform:t,translateExtent:a,width:n,height:r})},setCenter:async(e,t,n)=>{let{width:r,height:i,maxZoom:a,panZoom:o}=m();if(!o)return!1;let s=n?.zoom===void 0?a:n.zoom;return await o.setViewport({x:r/2-e*s,y:i/2-t*s,zoom:s},{duration:n?.duration,ease:n?.ease,interpolate:n?.interpolate}),!0},cancelConnection:()=>{p({connection:{...Ta}})},updateConnection:e=>{p({connection:e})},reset:()=>p({...pd()})}},Object.is);function hd({initialNodes:e,initialEdges:t,defaultNodes:n,defaultEdges:r,initialWidth:i,initialHeight:a,initialMinZoom:o,initialMaxZoom:s,initialFitViewOptions:c,fitView:l,nodeOrigin:u,nodeExtent:d,zIndexMode:f,children:p}){let[m]=(0,y.useState)(()=>md({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,width:i,height:a,fitView:l,minZoom:o,maxZoom:s,fitViewOptions:c,nodeOrigin:u,nodeExtent:d,zIndexMode:f}));return(0,x.jsx)(vc,{value:m,children:(0,x.jsx)(hl,{children:(0,x.jsx)(J,{children:p})})})}function gd({children:e,nodes:t,edges:n,defaultNodes:r,defaultEdges:i,width:a,height:o,fitView:s,fitViewOptions:c,minZoom:l,maxZoom:u,nodeOrigin:d,nodeExtent:f,zIndexMode:p}){return(0,y.useContext)(_c)?(0,x.jsx)(x.Fragment,{children:e}):(0,x.jsx)(hd,{initialNodes:t,initialEdges:n,defaultNodes:r,defaultEdges:i,initialWidth:a,initialHeight:o,fitView:s,initialFitViewOptions:c,initialMinZoom:l,initialMaxZoom:u,nodeOrigin:d,nodeExtent:f,zIndexMode:p,children:e})}var _d={width:`100%`,height:`100%`,overflow:`hidden`,position:`relative`,zIndex:0};function vd({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:i,nodeTypes:a,edgeTypes:o,onNodeClick:s,onEdgeClick:c,onInit:l,onMove:u,onMoveStart:d,onMoveEnd:f,onConnect:p,onConnectStart:m,onConnectEnd:h,onClickConnectStart:g,onClickConnectEnd:_,onNodeMouseEnter:v,onNodeMouseMove:b,onNodeMouseLeave:C,onNodeContextMenu:w,onNodeDoubleClick:T,onNodeDragStart:E,onNodeDrag:D,onNodeDragStop:O,onNodesDelete:k,onEdgesDelete:A,onDelete:j,onSelectionChange:M,onSelectionDragStart:N,onSelectionDrag:P,onSelectionDragStop:ee,onSelectionContextMenu:F,onSelectionStart:I,onSelectionEnd:L,onBeforeDelete:te,connectionMode:R,connectionLineType:z=Ea.Bezier,connectionLineStyle:B,connectionLineComponent:V,connectionLineContainerStyle:ne,deleteKeyCode:re=`Backspace`,selectionKeyCode:ie=`Shift`,selectionOnDrag:ae=!1,selectionMode:oe=wa.Full,panActivationKeyCode:se=`Space`,multiSelectionKeyCode:ce=lo()?`Meta`:`Control`,zoomActivationKeyCode:le=lo()?`Meta`:`Control`,snapToGrid:ue,snapGrid:de,onlyRenderVisibleElements:fe=!1,selectNodesOnDrag:pe,nodesDraggable:me,autoPanOnNodeFocus:he,nodesConnectable:ge,nodesFocusable:_e,nodeOrigin:ve=zc,edgesFocusable:ye,edgesReconnectable:be,elementsSelectable:xe=!0,defaultViewport:Se=Bc,minZoom:Ce=.5,maxZoom:we=2,translateExtent:Te=ya,preventScrolling:Ee=!0,nodeExtent:De,defaultMarkerColor:Oe=`#b1b1b7`,zoomOnScroll:ke=!0,zoomOnPinch:Ae=!0,panOnScroll:je=!1,panOnScrollSpeed:Me=.5,panOnScrollMode:Ne=Ca.Free,zoomOnDoubleClick:Pe=!0,panOnDrag:Fe=!0,onPaneClick:Ie,onPaneMouseEnter:Le,onPaneMouseMove:Re,onPaneMouseLeave:ze,onPaneScroll:Be,onPaneContextMenu:Ve,paneClickDistance:He=1,nodeClickDistance:Ue=0,children:We,onReconnect:Ge,onReconnectStart:Ke,onReconnectEnd:qe,onEdgeContextMenu:Je,onEdgeDoubleClick:Ye,onEdgeMouseEnter:Xe,onEdgeMouseMove:Ze,onEdgeMouseLeave:Qe,reconnectRadius:$e=10,onNodesChange:et,onEdgesChange:tt,noDragClassName:nt=`nodrag`,noWheelClassName:rt=`nowheel`,noPanClassName:it=`nopan`,fitView:at,fitViewOptions:ot,connectOnClick:st,attributionPosition:ct,proOptions:lt,defaultEdgeOptions:ut,elevateNodesOnSelect:dt=!0,elevateEdgesOnSelect:ft=!1,disableKeyboardA11y:pt=!1,autoPanOnConnect:mt,autoPanOnNodeDrag:ht,autoPanOnSelection:gt=!0,autoPanSpeed:_t,connectionRadius:vt,isValidConnection:yt,onError:bt,style:xt,id:St,nodeDragThreshold:Ct,connectionDragThreshold:wt,viewport:Tt,onViewportChange:Et,width:Dt,height:Ot,colorMode:kt=`light`,debug:At,onScroll:jt,ariaLabelConfig:Mt,zIndexMode:Nt=`basic`,...Pt},Ft){let It=St||`1`,Lt=Kc(kt),Rt=(0,y.useCallback)(e=>{e.currentTarget.scrollTo({top:0,left:0,behavior:`instant`}),jt?.(e)},[jt]);return(0,x.jsx)(`div`,{"data-testid":`rf__wrapper`,...Pt,onScroll:Rt,style:{...xt,..._d},ref:Ft,className:S([`react-flow`,i,Lt]),id:St,role:`application`,children:(0,x.jsxs)(gd,{nodes:e,edges:t,width:Dt,height:Ot,fitView:at,fitViewOptions:ot,minZoom:Ce,maxZoom:we,nodeOrigin:ve,nodeExtent:De,zIndexMode:Nt,children:[(0,x.jsx)(Wc,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:p,onConnectStart:m,onConnectEnd:h,onClickConnectStart:g,onClickConnectEnd:_,nodesDraggable:me,autoPanOnNodeFocus:he,nodesConnectable:ge,nodesFocusable:_e,edgesFocusable:ye,edgesReconnectable:be,elementsSelectable:xe,elevateNodesOnSelect:dt,elevateEdgesOnSelect:ft,minZoom:Ce,maxZoom:we,nodeExtent:De,onNodesChange:et,onEdgesChange:tt,snapToGrid:ue,snapGrid:de,connectionMode:R,translateExtent:Te,connectOnClick:st,defaultEdgeOptions:ut,fitView:at,fitViewOptions:ot,onNodesDelete:k,onEdgesDelete:A,onDelete:j,onNodeDragStart:E,onNodeDrag:D,onNodeDragStop:O,onSelectionDrag:P,onSelectionDragStart:N,onSelectionDragStop:ee,onMove:u,onMoveStart:d,onMoveEnd:f,noPanClassName:it,nodeOrigin:ve,rfId:It,autoPanOnConnect:mt,autoPanOnNodeDrag:ht,autoPanSpeed:_t,onError:bt,connectionRadius:vt,isValidConnection:yt,selectNodesOnDrag:pe,nodeDragThreshold:Ct,connectionDragThreshold:wt,onBeforeDelete:te,debug:At,ariaLabelConfig:Mt,zIndexMode:Nt}),(0,x.jsx)(dd,{onInit:l,onNodeClick:s,onEdgeClick:c,onNodeMouseEnter:v,onNodeMouseMove:b,onNodeMouseLeave:C,onNodeContextMenu:w,onNodeDoubleClick:T,nodeTypes:a,edgeTypes:o,connectionLineType:z,connectionLineStyle:B,connectionLineComponent:V,connectionLineContainerStyle:ne,selectionKeyCode:ie,selectionOnDrag:ae,selectionMode:oe,deleteKeyCode:re,multiSelectionKeyCode:ce,panActivationKeyCode:se,zoomActivationKeyCode:le,onlyRenderVisibleElements:fe,defaultViewport:Se,translateExtent:Te,minZoom:Ce,maxZoom:we,preventScrolling:Ee,zoomOnScroll:ke,zoomOnPinch:Ae,zoomOnDoubleClick:Pe,panOnScroll:je,panOnScrollSpeed:Me,panOnScrollMode:Ne,panOnDrag:Fe,autoPanOnSelection:gt,onPaneClick:Ie,onPaneMouseEnter:Le,onPaneMouseMove:Re,onPaneMouseLeave:ze,onPaneScroll:Be,onPaneContextMenu:Ve,paneClickDistance:He,nodeClickDistance:Ue,onSelectionContextMenu:F,onSelectionStart:I,onSelectionEnd:L,onReconnect:Ge,onReconnectStart:Ke,onReconnectEnd:qe,onEdgeContextMenu:Je,onEdgeDoubleClick:Ye,onEdgeMouseEnter:Xe,onEdgeMouseMove:Ze,onEdgeMouseLeave:Qe,reconnectRadius:$e,defaultMarkerColor:Oe,noDragClassName:nt,noWheelClassName:rt,noPanClassName:it,rfId:It,disableKeyboardA11y:pt,nodeExtent:De,viewport:Tt,onViewportChange:Et,nodesDraggable:me}),(0,x.jsx)(Rc,{onSelectionChange:M}),We,(0,x.jsx)(Mc,{proOptions:lt,position:ct}),(0,x.jsx)(kc,{rfId:It,disableKeyboardA11y:pt})]})})}var yd=ul(vd),Q=e=>e.domNode?.querySelector(`.react-flow__edgelabel-renderer`);function bd({children:e}){let t=K(Q);return t?(0,gc.createPortal)(e,t):null}function xd(e){let[t,n]=(0,y.useState)(e);return[t,n,(0,y.useCallback)(e=>n(t=>el(e,t)),[])]}function Sd(e){let[t,n]=(0,y.useState)(e);return[t,n,(0,y.useCallback)(e=>n(t=>tl(e,t)),[])]}va.error014();function Cd(e){return K((0,y.useCallback)(t=>t.nodeLookup.get(e),[e]),hc)}function wd({dimensions:e,lineWidth:t,variant:n,className:r}){return(0,x.jsx)(`path`,{strokeWidth:t,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:S([`react-flow__background-pattern`,n,r])})}function Td({radius:e,className:t}){return(0,x.jsx)(`circle`,{cx:e,cy:e,r:e,className:S([`react-flow__background-pattern`,`dots`,t])})}var Ed;(function(e){e.Lines=`lines`,e.Dots=`dots`,e.Cross=`cross`})(Ed||={});var Dd={[Ed.Dots]:1,[Ed.Lines]:1,[Ed.Cross]:6},Od=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function kd({id:e,variant:t=Ed.Dots,gap:n=20,size:r,lineWidth:i=1,offset:a=0,color:o,bgColor:s,style:c,className:l,patternClassName:u}){let d=(0,y.useRef)(null),{transform:f,patternId:p}=K(Od,hc),m=r||Dd[t],h=t===Ed.Dots,g=t===Ed.Cross,_=Array.isArray(n)?n:[n,n],v=[_[0]*f[2]||1,_[1]*f[2]||1],b=m*f[2],C=Array.isArray(a)?a:[a,a],w=g?[b,b]:v,T=[C[0]*f[2]||1+w[0]/2,C[1]*f[2]||1+w[1]/2],E=`${p}${e||``}`;return(0,x.jsxs)(`svg`,{className:S([`react-flow__background`,l]),style:{...c,...Cl,"--xy-background-color-props":s,"--xy-background-pattern-color-props":o},ref:d,"data-testid":`rf__background`,children:[(0,x.jsx)(`pattern`,{id:E,x:f[0]%v[0],y:f[1]%v[1],width:v[0],height:v[1],patternUnits:`userSpaceOnUse`,patternTransform:`translate(-${T[0]},-${T[1]})`,children:h?(0,x.jsx)(Td,{radius:b/2,className:u}):(0,x.jsx)(wd,{dimensions:w,lineWidth:i,variant:t,className:u})}),(0,x.jsx)(`rect`,{x:`0`,y:`0`,width:`100%`,height:`100%`,fill:`url(#${E})`})]})}kd.displayName=`Background`;var Ad=(0,y.memo)(kd);function jd(){return(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 32`,children:(0,x.jsx)(`path`,{d:`M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z`})})}function Md(){return(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 5`,children:(0,x.jsx)(`path`,{d:`M0 0h32v4.2H0z`})})}function Nd(){return(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 30`,children:(0,x.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 Pd(){return(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 25 32`,children:(0,x.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 Fd(){return(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 25 32`,children:(0,x.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 Id({children:e,className:t,...n}){return(0,x.jsx)(`button`,{type:`button`,className:S([`react-flow__controls-button`,t]),...n,children:e})}var Ld=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function Rd({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:i,onZoomIn:a,onZoomOut:o,onFitView:s,onInteractiveChange:c,className:l,children:u,position:d=`bottom-left`,orientation:f=`vertical`,"aria-label":p}){let m=bc(),{isInteractive:h,minZoomReached:g,maxZoomReached:_,ariaLabelConfig:v}=K(Ld,hc),{zoomIn:y,zoomOut:b,fitView:C}=vl();return(0,x.jsxs)(Ac,{className:S([`react-flow__controls`,f===`horizontal`?`horizontal`:`vertical`,l]),position:d,style:e,"data-testid":`rf__controls`,"aria-label":p??v[`controls.ariaLabel`],children:[t&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(Id,{onClick:()=>{y(),a?.()},className:`react-flow__controls-zoomin`,title:v[`controls.zoomIn.ariaLabel`],"aria-label":v[`controls.zoomIn.ariaLabel`],disabled:_,children:(0,x.jsx)(jd,{})}),(0,x.jsx)(Id,{onClick:()=>{b(),o?.()},className:`react-flow__controls-zoomout`,title:v[`controls.zoomOut.ariaLabel`],"aria-label":v[`controls.zoomOut.ariaLabel`],disabled:g,children:(0,x.jsx)(Md,{})})]}),n&&(0,x.jsx)(Id,{className:`react-flow__controls-fitview`,onClick:()=>{C(i),s?.()},title:v[`controls.fitView.ariaLabel`],"aria-label":v[`controls.fitView.ariaLabel`],children:(0,x.jsx)(Nd,{})}),r&&(0,x.jsx)(Id,{className:`react-flow__controls-interactive`,onClick:()=>{m.setState({nodesDraggable:!h,nodesConnectable:!h,elementsSelectable:!h}),c?.(!h)},title:v[`controls.interactive.ariaLabel`],"aria-label":v[`controls.interactive.ariaLabel`],children:h?(0,x.jsx)(Fd,{}):(0,x.jsx)(Pd,{})}),u]})}Rd.displayName=`Controls`;var zd=(0,y.memo)(Rd);function Bd({id:e,x:t,y:n,width:r,height:i,style:a,color:o,strokeColor:s,strokeWidth:c,className:l,borderRadius:u,shapeRendering:d,selected:f,onClick:p}){let{background:m,backgroundColor:h}=a||{},g=o||m||h;return(0,x.jsx)(`rect`,{className:S([`react-flow__minimap-node`,{selected:f},l]),x:t,y:n,rx:u,ry:u,width:r,height:i,style:{fill:g,stroke:s,strokeWidth:c},shapeRendering:d,onClick:p?t=>p(t,e):void 0})}var Vd=(0,y.memo)(Bd),Hd=e=>e.nodes.map(e=>e.id),Ud=e=>e instanceof Function?e:()=>e;function Wd({nodeStrokeColor:e,nodeColor:t,nodeClassName:n=``,nodeBorderRadius:r=5,nodeStrokeWidth:i,nodeComponent:a=Vd,onClick:o}){let s=K(Hd,hc),c=Ud(t),l=Ud(e),u=Ud(n),d=typeof window>`u`||window.chrome?`crispEdges`:`geometricPrecision`;return(0,x.jsx)(x.Fragment,{children:s.map(e=>(0,x.jsx)(Kd,{id:e,nodeColorFunc:c,nodeStrokeColorFunc:l,nodeClassNameFunc:u,nodeBorderRadius:r,nodeStrokeWidth:i,NodeComponent:a,onClick:o,shapeRendering:d},e))})}function Gd({id:e,nodeColorFunc:t,nodeStrokeColorFunc:n,nodeClassNameFunc:r,nodeBorderRadius:i,nodeStrokeWidth:a,shapeRendering:o,NodeComponent:s,onClick:c}){let{node:l,x:u,y:d,width:f,height:p}=K(t=>{let n=t.nodeLookup.get(e);if(!n)return{node:void 0,x:0,y:0,width:0,height:0};let r=n.internals.userNode,{x:i,y:a}=n.internals.positionAbsolute,{width:o,height:s}=fo(r);return{node:r,x:i,y:a,width:o,height:s}},hc);return!l||l.hidden||!po(l)?null:(0,x.jsx)(s,{x:u,y:d,width:f,height:p,style:l.style,selected:!!l.selected,className:r(l),color:t(l),borderRadius:i,strokeColor:n(l),strokeWidth:a,shapeRendering:o,onClick:c,id:l.id})}var Kd=(0,y.memo)(Gd),qd=(0,y.memo)(Wd),Jd=200,Yd=150,Xd=e=>!e.hidden,Zd=e=>{let 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?Qa(Fa(e.nodeLookup,{filter:Xd}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},Qd=(e,t)=>e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height,$d=(e,t)=>Qd(e.viewBB,t.viewBB)&&Qd(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,ef=`react-flow__minimap-desc`;function tf({style:e,className:t,nodeStrokeColor:n,nodeColor:r,nodeClassName:i=``,nodeBorderRadius:a=5,nodeStrokeWidth:o,nodeComponent:s,bgColor:c,maskColor:l,maskStrokeColor:u,maskStrokeWidth:d,position:f=`bottom-right`,onClick:p,onNodeClick:m,pannable:h=!1,zoomable:g=!1,ariaLabel:_,inversePan:v,zoomStep:b=1,offsetScale:C=5}){let w=bc(),T=(0,y.useRef)(null),{boundingRect:E,viewBB:D,rfId:O,panZoom:k,translateExtent:A,flowWidth:j,flowHeight:M,ariaLabelConfig:N}=K(Zd,$d),P=e?.width??Jd,ee=e?.height??Yd,F=E.width/P,I=E.height/ee,L=Math.max(F,I),te=L*P,R=L*ee,z=C*L,B=E.x-(te-E.width)/2-z,V=E.y-(R-E.height)/2-z,ne=te+z*2,re=R+z*2,ie=`${ef}-${O}`,ae=(0,y.useRef)(0),oe=(0,y.useRef)();ae.current=L,(0,y.useEffect)(()=>{if(T.current&&k)return oe.current=As({domNode:T.current,panZoom:k,getTransform:()=>w.getState().transform,getViewScale:()=>ae.current}),()=>{oe.current?.destroy()}},[k]),(0,y.useEffect)(()=>{oe.current?.update({translateExtent:A,width:j,height:M,inversePan:v,pannable:h,zoomStep:b,zoomable:g})},[h,g,v,b,A,j,M]);let se=p?e=>{let[t,n]=oe.current?.pointer(e)||[0,0];p(e,{x:t,y:n})}:void 0,ce=m?(0,y.useCallback)((e,t)=>{let n=w.getState().nodeLookup.get(t).internals.userNode;m(e,n)},[]):void 0,le=_??N[`minimap.ariaLabel`];return(0,x.jsx)(Ac,{position:f,style:{...e,"--xy-minimap-background-color-props":typeof c==`string`?c:void 0,"--xy-minimap-mask-background-color-props":typeof l==`string`?l:void 0,"--xy-minimap-mask-stroke-color-props":typeof u==`string`?u:void 0,"--xy-minimap-mask-stroke-width-props":typeof d==`number`?d*L:void 0,"--xy-minimap-node-background-color-props":typeof r==`string`?r:void 0,"--xy-minimap-node-stroke-color-props":typeof n==`string`?n:void 0,"--xy-minimap-node-stroke-width-props":typeof o==`number`?o:void 0},className:S([`react-flow__minimap`,t]),"data-testid":`rf__minimap`,children:(0,x.jsxs)(`svg`,{width:P,height:ee,viewBox:`${B} ${V} ${ne} ${re}`,className:`react-flow__minimap-svg`,role:`img`,"aria-labelledby":ie,ref:T,onClick:se,children:[le&&(0,x.jsx)(`title`,{id:ie,children:le}),(0,x.jsx)(qd,{onClick:ce,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:a,nodeClassName:i,nodeStrokeWidth:o,nodeComponent:s}),(0,x.jsx)(`path`,{className:`react-flow__minimap-mask`,d:`M${B-z},${V-z}h${ne+z*2}v${re+z*2}h${-ne-z*2}z - M${D.x},${D.y}h${D.width}v${D.height}h${-D.width}z`,fillRule:`evenodd`,pointerEvents:`none`})]})})}tf.displayName=`MiniMap`;var nf=(0,y.memo)(tf),rf=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,af={[Gs.Line]:`right`,[Gs.Handle]:`bottom-right`};function of({nodeId:e,position:t,variant:n=Gs.Handle,className:r,style:i=void 0,children:a,color:o,minWidth:s=10,minHeight:c=10,maxWidth:l=Number.MAX_VALUE,maxHeight:u=Number.MAX_VALUE,keepAspectRatio:d=!1,resizeDirection:f,autoScale:p=!0,shouldResize:m,onResizeStart:h,onResize:g,onResizeEnd:_}){let v=Ll(),b=typeof e==`string`?e:v,C=bc(),w=(0,y.useRef)(null),T=n===Gs.Handle,E=K((0,y.useCallback)(rf(T&&p),[T,p]),hc),D=(0,y.useRef)(null),O=t??af[n];return(0,y.useEffect)(()=>{if(!(!w.current||!b))return D.current||=nc({domNode:w.current,nodeId:b,getStoreItems:()=>{let{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:r,nodeOrigin:i,domNode:a}=C.getState();return{nodeLookup:e,transform:t,snapGrid:n,snapToGrid:r,nodeOrigin:i,paneDomNode:a}},onChange:(e,t)=>{let{triggerNodeChanges:n,nodeLookup:r,parentLookup:i,nodeOrigin:a}=C.getState(),o=[],s={x:e.x,y:e.y},c=r.get(b);if(c&&c.expandParent&&c.parentId){let t=c.origin??a,n=e.width??c.measured.width??0,l=e.height??c.measured.height??0,u=ls([{id:c.id,parentId:c.parentId,rect:{width:n,height:l,...mo({x:e.x??c.position.x,y:e.y??c.position.y},{width:n,height:l},c.parentId,r,t)}}],r,i,a);o.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(s.x!==void 0&&s.y!==void 0){let e={id:b,type:`position`,position:{...s}};o.push(e)}if(e.width!==void 0&&e.height!==void 0){let t={id:b,type:`dimensions`,resizing:!0,setAttributes:f?f===`horizontal`?`width`:`height`:!0,dimensions:{width:e.width,height:e.height}};o.push(t)}for(let e of t){let t={...e,type:`position`};o.push(t)}n(o)},onEnd:({width:e,height:t})=>{let n={id:b,type:`dimensions`,resizing:!1,dimensions:{width:e,height:t}};C.getState().triggerNodeChanges([n])}}),D.current.update({controlPosition:O,boundaries:{minWidth:s,minHeight:c,maxWidth:l,maxHeight:u},keepAspectRatio:d,resizeDirection:f,onResizeStart:h,onResize:g,onResizeEnd:_,shouldResize:m}),()=>{D.current?.destroy()}},[O,s,c,l,u,d,h,g,_,m]),(0,x.jsx)(`div`,{className:S([`react-flow__resize-control`,`nodrag`,...O.split(`-`),n,r]),ref:w,style:{...i,scale:E,...o&&{[T?`backgroundColor`:`borderColor`]:o}},children:a})}(0,y.memo)(of);var $=e=>typeof e==`string`,sf=()=>{let e,t,n=new Promise((n,r)=>{e=n,t=r});return n.resolve=e,n.reject=t,n},cf=e=>e==null?``:String(e),lf=(e,t,n)=>{e.forEach(e=>{t[e]&&(n[e]=t[e])})},uf=/###/g,df=e=>e&&e.includes(`###`)?e.replace(uf,`.`):e,ff=e=>!e||$(e),pf=(e,t,n)=>{let r=$(t)?t.split(`.`):t,i=0;for(;i{let{obj:r,k:i}=pf(e,t,Object);if(r!==void 0||t.length===1){r[i]=n;return}let a=t[t.length-1],o=t.slice(0,t.length-1),s=pf(e,o,Object);for(;s.obj===void 0&&o.length;)a=`${o[o.length-1]}.${a}`,o=o.slice(0,o.length-1),s=pf(e,o,Object),s?.obj&&s.obj[`${s.k}.${a}`]!==void 0&&(s.obj=void 0);s.obj[`${s.k}.${a}`]=n},hf=(e,t,n,r)=>{let{obj:i,k:a}=pf(e,t,Object);i[a]=i[a]||[],i[a].push(n)},gf=(e,t)=>{let{obj:n,k:r}=pf(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,r))return n[r]},_f=(e,t,n)=>{let r=gf(e,n);return r===void 0?gf(t,n):r},vf=(e,t,n)=>{for(let r in t)r!==`__proto__`&&r!==`constructor`&&(Object.prototype.hasOwnProperty.call(e,r)?$(e[r])||e[r]instanceof String||$(t[r])||t[r]instanceof String?n&&(e[r]=t[r]):vf(e[r],t[r],n):e[r]=t[r]);return e},yf=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,`\\$&`),bf={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`,"/":`/`},xf=e=>$(e)?e.replace(/[&<>"'\/]/g,e=>bf[e]):e,Sf=class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){let t=this.regExpMap.get(e);if(t!==void 0)return t;let n=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,n),this.regExpQueue.push(e),n}},Cf=[` `,`,`,`?`,`!`,`;`],wf=new Sf(20),Tf=(e,t,n)=>{t||=``,n||=``;let r=Cf.filter(e=>!t.includes(e)&&!n.includes(e));if(r.length===0)return!0;let i=wf.getRegExp(`(${r.map(e=>e===`?`?`\\?`:e).join(`|`)})`),a=!i.test(e);if(!a){let t=e.indexOf(n);t>0&&!i.test(e.substring(0,t))&&(a=!0)}return a},Ef=(e,t,n=`.`)=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;let r=t.split(n),i=e;for(let e=0;ee?.replace(/_/g,`-`),Of={type:`logger`,log(e){this.output(`log`,e)},warn(e){this.output(`warn`,e)},error(e){this.output(`error`,e)},output(e,t){console?.[e]?.apply?.(console,t)}},kf=new class e{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||`i18next:`,this.logger=e||Of,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,`log`,``,!0)}warn(...e){return this.forward(e,`warn`,``,!0)}error(...e){return this.forward(e,`error`,``)}deprecate(...e){return this.forward(e,`warn`,`WARNING DEPRECATED: `,!0)}forward(e,t,n,r){return r&&!this.debug?null:(e=e.map(e=>$(e)?e.replace(/[\r\n\x00-\x1F\x7F]/g,` `):e),$(e[0])&&(e[0]=`${n}${this.prefix} ${e[0]}`),this.logger[t](e))}create(t){return new e(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t||=this.options,t.prefix=t.prefix||this.prefix,new e(this.logger,t)}},Af=class{constructor(){this.observers={}}on(e,t){return e.split(` `).forEach(e=>{this.observers[e]||(this.observers[e]=new Map);let n=this.observers[e].get(t)||0;this.observers[e].set(t,n+1)}),this}off(e,t){if(this.observers[e]){if(!t){delete this.observers[e];return}this.observers[e].delete(t)}}once(e,t){let n=(...r)=>{t(...r),this.off(e,n)};return this.on(e,n),this}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,n])=>{for(let r=0;r{for(let i=0;i-1&&this.options.ns.splice(t,1)}getResource(e,t,n,r={}){let i=r.keySeparator===void 0?this.options.keySeparator:r.keySeparator,a=r.ignoreJSONStructure===void 0?this.options.ignoreJSONStructure:r.ignoreJSONStructure,o;e.includes(`.`)?o=e.split(`.`):(o=[e,t],n&&(Array.isArray(n)?o.push(...n):$(n)&&i?o.push(...n.split(i)):o.push(n)));let s=gf(this.data,o);return!s&&!t&&!n&&e.includes(`.`)&&(e=o[0],t=o[1],n=o.slice(2).join(`.`)),s||!a||!$(n)?s:Ef(this.data?.[e]?.[t],n,i)}addResource(e,t,n,r,i={silent:!1}){let a=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,o=[e,t];n&&(o=o.concat(a?n.split(a):n)),e.includes(`.`)&&(o=e.split(`.`),r=t,t=o[1]),this.addNamespaces(t),mf(this.data,o,r),i.silent||this.emit(`added`,e,t,n,r)}addResources(e,t,n,r={silent:!1}){for(let r in n)($(n[r])||Array.isArray(n[r]))&&this.addResource(e,t,r,n[r],{silent:!0});r.silent||this.emit(`added`,e,t,n)}addResourceBundle(e,t,n,r,i,a={silent:!1,skipCopy:!1}){let o=[e,t];e.includes(`.`)&&(o=e.split(`.`),r=n,n=t,t=o[1]),this.addNamespaces(t);let s=gf(this.data,o)||{};a.skipCopy||(n=JSON.parse(JSON.stringify(n))),r?vf(s,n,i):s={...s,...n},mf(this.data,o,s),a.silent||this.emit(`added`,e,t,n)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit(`removed`,e,t)}hasResourceBundle(e,t){return this.getResource(e,t)!==void 0}getResourceBundle(e,t){return t||=this.options.defaultNS,this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){let t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}},Mf={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(e=>{t=this.processors[e]?.process(t,n,r,i)??t}),t}},Nf=Symbol(`i18next/PATH_KEY`);function Pf(){let e=[],t=Object.create(null),n;return t.get=(r,i)=>(n?.revoke?.(),i===Nf?e:(e.push(i),n=Proxy.revocable(r,t),n.proxy)),Proxy.revocable(Object.create(null),t).proxy}function Ff(e,t){let{[Nf]:n}=e(Pf()),r=t?.keySeparator??`.`,i=t?.nsSeparator??`:`,a=t?.enableSelector===`strict`;if(n.length>1&&i){let e=t?.ns,o=a?Array.isArray(e)?e:e?[e]:null:Array.isArray(e)?e:null;if(o&&(a?o:o.length>1?o.slice(1):[]).includes(n[0]))return`${n[0]}${i}${n.slice(1).join(r)}`}return n.join(r)}var If=e=>!$(e)&&typeof e!=`boolean`&&typeof e!=`number`,Lf=class e extends Af{constructor(e,t={}){super(),lf([`resourceStore`,`languageUtils`,`pluralResolver`,`interpolator`,`backendConnector`,`i18nFormat`,`utils`],e,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.logger=kf.create(`translator`),this.checkedLoadedFor={}}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){let n={...t};if(e==null)return!1;let r=this.resolve(e,n);if(r?.res===void 0)return!1;let i=If(r.res);return!(n.returnObjects===!1&&i)}extractFromKey(e,t){let n=t.nsSeparator===void 0?this.options.nsSeparator:t.nsSeparator;n===void 0&&(n=`:`);let r=t.keySeparator===void 0?this.options.keySeparator:t.keySeparator,i=t.ns||this.options.defaultNS||[],a=n&&e.includes(n),o=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!Tf(e,n,r);if(a&&!o){let t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:$(i)?[i]:i};let a=e.split(n);(n!==r||n===r&&this.options.ns.includes(a[0]))&&(i=a.shift()),e=a.join(r)}return{key:e,namespaces:$(i)?[i]:i}}translate(t,n,r){let i=typeof n==`object`?{...n}:n;if(typeof i!=`object`&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),typeof i==`object`&&(i={...i}),i||={},t==null)return``;typeof t==`function`&&(t=Ff(t,{...this.options,...i})),Array.isArray(t)||(t=[String(t)]),t=t.map(e=>typeof e==`function`?Ff(e,{...this.options,...i}):String(e));let a=i.returnDetails===void 0?this.options.returnDetails:i.returnDetails,o=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,{key:s,namespaces:c}=this.extractFromKey(t[t.length-1],i),l=c[c.length-1],u=i.nsSeparator===void 0?this.options.nsSeparator:i.nsSeparator;u===void 0&&(u=`:`);let d=i.lng||this.language,f=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d?.toLowerCase()===`cimode`)return f?a?{res:`${l}${u}${s}`,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:`${l}${u}${s}`:a?{res:s,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:s;let p=this.resolve(t,i),m=p?.res,h=p?.usedKey||s,g=p?.exactUsedKey||s,_=[`[object Number]`,`[object Function]`,`[object RegExp]`],v=i.joinArrays===void 0?this.options.joinArrays:i.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,b=i.count!==void 0&&!$(i.count),x=e.hasDefaultValue(i),S=b?this.pluralResolver.getSuffix(d,i.count,i):``,C=i.ordinal&&b?this.pluralResolver.getSuffix(d,i.count,{ordinal:!1}):``,w=b&&!i.ordinal&&i.count===0,T=w&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${S}`]||i[`defaultValue${C}`]||i.defaultValue,E=m;y&&!m&&x&&(E=T);let D=If(E),O=Object.prototype.toString.apply(E);if(y&&E&&D&&!_.includes(O)&&!($(v)&&Array.isArray(E))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn(`accessing an object - but returnObjects options is not enabled!`);let e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,E,{...i,ns:c}):`key '${s} (${this.language})' returned an object instead of string.`;return a?(p.res=e,p.usedParams=this.getUsedParamsDetails(i),p):e}if(o){let e=Array.isArray(E),t=e?[]:{},n=e?g:h;for(let e in E)if(Object.prototype.hasOwnProperty.call(E,e)){let r=`${n}${o}${e}`;x&&!m?t[e]=this.translate(r,{...i,defaultValue:If(T)?T[e]:void 0,joinArrays:!1,ns:c}):t[e]=this.translate(r,{...i,joinArrays:!1,ns:c}),t[e]===r&&(t[e]=E[e])}m=t}}else if(y&&$(v)&&Array.isArray(m))m=m.join(v),m&&=this.extendTranslation(m,t,i,r);else{let e=!1,n=!1;!this.isValidLookup(m)&&x&&(e=!0,m=T),this.isValidLookup(m)||(n=!0,m=s);let a=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:m,c=x&&T!==m&&this.options.updateMissing;if(n||e||c){if(this.logger.log(c?`updateKey`:`missingKey`,d,l,b&&!c?`${s}${this.pluralResolver.getSuffix(d,i.count,i)}`:s,c?T:m),o){let e=this.resolve(s,{...i,keySeparator:!1});e&&e.res&&this.logger.warn(`Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.`)}let e=[],t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo===`fallback`&&t&&t[0])for(let n=0;n{let r=x&&n!==m?n:a;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,r,c,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,l,t,r,c,i),this.emit(`missingKey`,e,l,t,m)};this.options.saveMissing&&(this.options.saveMissingPlurals&&b?e.forEach(e=>{let t=this.pluralResolver.getSuffixes(e,i);w&&i[`defaultValue${this.options.pluralSeparator}zero`]&&!t.includes(`${this.options.pluralSeparator}zero`)&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{n([e],s+t,i[`defaultValue${t}`]||T)})}):n(e,s,T))}m=this.extendTranslation(m,t,i,p,r),n&&m===s&&this.options.appendNamespaceToMissingKey&&(m=`${l}${u}${s}`),(n||e)&&this.options.parseMissingKeyHandler&&(m=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${u}${s}`:s,e?m:void 0,i))}return a?(p.res=m,p.usedParams=this.getUsedParamsDetails(i),p):m}extendTranslation(e,t,n,r,i){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...n},n.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init({...n,interpolation:{...this.options.interpolation,...n.interpolation}});let a=$(e)&&(n?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:n.interpolation.skipOnVariables),o;if(a){let t=e.match(this.interpolator.nestingRegexp);o=t&&t.length}let s=n.replace&&!$(n.replace)?n.replace:n;if(this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),e=this.interpolator.interpolate(e,s,n.lng||this.language||r.usedLng,n),a){let t=e.match(this.interpolator.nestingRegexp),r=t&&t.length;oi?.[0]===e[0]&&!n.context?(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null):this.translate(...e,t),n)),n.interpolation&&this.interpolator.reset()}let a=n.postProcess||this.options.postProcess,o=$(a)?[a]:a;return e!=null&&o?.length&&n.applyPostProcessor!==!1&&(e=Mf.handle(o,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(n)},...n}:n,this)),e}resolve(e,t={}){let n,r,i,a,o;return $(e)&&(e=[e]),Array.isArray(e)&&(e=e.map(e=>typeof e==`function`?Ff(e,{...this.options,...t}):e)),e.forEach(e=>{if(this.isValidLookup(n))return;let s=this.extractFromKey(e,t),c=s.key;r=c;let l=s.namespaces;this.options.fallbackNS&&(l=l.concat(this.options.fallbackNS));let u=t.count!==void 0&&!$(t.count),d=u&&!t.ordinal&&t.count===0,f=t.context!==void 0&&($(t.context)||typeof t.context==`number`)&&t.context!==``,p=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);l.forEach(e=>{this.isValidLookup(n)||(o=e,!this.checkedLoadedFor[`${p[0]}-${e}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(o)&&(this.checkedLoadedFor[`${p[0]}-${e}`]=!0,this.logger.warn(`key "${r}" for languages "${p.join(`, `)}" won't get resolved as namespace "${o}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`)),p.forEach(r=>{if(this.isValidLookup(n))return;a=r;let o=[c];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(o,c,r,e,t);else{let e;u&&(e=this.pluralResolver.getSuffix(r,t.count,t));let n=`${this.options.pluralSeparator}zero`,i=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(u&&(t.ordinal&&e.startsWith(i)&&o.push(c+e.replace(i,this.options.pluralSeparator)),o.push(c+e),d&&o.push(c+n)),f){let r=`${c}${this.options.contextSeparator||`_`}${t.context}`;o.push(r),u&&(t.ordinal&&e.startsWith(i)&&o.push(r+e.replace(i,this.options.pluralSeparator)),o.push(r+e),d&&o.push(r+n))}}let s;for(;s=o.pop();)this.isValidLookup(n)||(i=s,n=this.getResource(r,e,s,t))}))})}),{res:n,usedKey:r,exactUsedKey:i,usedLng:a,usedNS:o}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e===``)}getResource(e,t,n,r={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,n,r):this.resourceStore.getResource(e,t,n,r)}getUsedParamsDetails(e={}){let t=[`defaultValue`,`ordinal`,`context`,`replace`,`lng`,`lngs`,`fallbackLng`,`ns`,`keySeparator`,`nsSeparator`,`returnObjects`,`returnDetails`,`joinArrays`,`postProcess`,`interpolation`],n=e.replace&&!$(e.replace),r=n?e.replace:e;if(n&&e.count!==void 0&&(r={...r,count:e.count}),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!n){r={...r};for(let e of t)delete r[e]}return r}static hasDefaultValue(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&t.startsWith(`defaultValue`)&&e[t]!==void 0)return!0;return!1}},Rf=class{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=kf.create(`languageUtils`)}getScriptPartFromCode(e){if(e=Df(e),!e||!e.includes(`-`))return null;let t=e.split(`-`);return t.length===2||(t.pop(),t[t.length-1].toLowerCase()===`x`)?null:this.formatLanguageCode(t.join(`-`))}getLanguagePartFromCode(e){if(e=Df(e),!e||!e.includes(`-`))return e;let t=e.split(`-`);return this.formatLanguageCode(t[0])}formatLanguageCode(e){if($(e)&&e.includes(`-`)){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch{}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load===`languageOnly`||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(e)}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;let n=this.formatLanguageCode(e);(!this.options.supportedLngs||this.isSupportedCode(n))&&(t=n)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;let n=this.getScriptPartFromCode(e);if(this.isSupportedCode(n))return t=n;let r=this.getLanguagePartFromCode(e);if(this.isSupportedCode(r))return t=r;t=this.options.supportedLngs.find(e=>e===r?!0:!e.includes(`-`)&&!r.includes(`-`)?!1:!!(e.includes(`-`)&&!r.includes(`-`)&&e.slice(0,e.indexOf(`-`))===r||e.startsWith(r)&&r.length>1))}),t||=this.getFallbackCodes(this.options.fallbackLng)[0],t}getFallbackCodes(e,t){if(!e)return[];if(typeof e==`function`&&(e=e(t)),$(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let n=e[t];return n||=e[this.getScriptPartFromCode(t)],n||=e[this.formatLanguageCode(t)],n||=e[this.getLanguagePartFromCode(t)],n||=e.default,n||[]}toResolveHierarchy(e,t){let n=this.getFallbackCodes((t===!1?[]:t)||this.options.fallbackLng||[],e),r=[],i=e=>{e&&(this.isSupportedCode(e)?r.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return $(e)&&(e.includes(`-`)||e.includes(`_`))?(this.options.load!==`languageOnly`&&i(this.formatLanguageCode(e)),this.options.load!==`languageOnly`&&this.options.load!==`currentOnly`&&i(this.getScriptPartFromCode(e)),this.options.load!==`currentOnly`&&i(this.getLanguagePartFromCode(e))):$(e)&&i(this.formatLanguageCode(e)),n.forEach(e=>{r.includes(e)||i(this.formatLanguageCode(e))}),r}},zf={zero:0,one:1,two:2,few:3,many:4,other:5},Bf={select:e=>e===1?`one`:`other`,resolvedOptions:()=>({pluralCategories:[`one`,`other`]})},Vf=class{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=kf.create(`pluralResolver`),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){let n=Df(e===`dev`?`en`:e),r=t.ordinal?`ordinal`:`cardinal`,i=JSON.stringify({cleanedCode:n,type:r});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let a;try{a=new Intl.PluralRules(n,{type:r})}catch{if(typeof Intl>`u`)return this.logger.error(`No Intl support, please use an Intl polyfill!`),Bf;if(!e.match(/-|_/))return Bf;let n=this.languageUtils.getLanguagePartFromCode(e);a=this.getRule(n,t)}return this.pluralRulesCache[i]=a,a}needsPlural(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,n={}){return this.getSuffixes(e,n).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?n.resolvedOptions().pluralCategories.sort((e,t)=>zf[e]-zf[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:``}${e}`):[]}getSuffix(e,t,n={}){let r=this.getRule(e,n);return r?`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:``}${r.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix(`dev`,t,n))}},Hf=(e,t,n,r=`.`,i=!0)=>{let a=_f(e,t,n);return!a&&i&&$(n)&&(a=Ef(e,n,r),a===void 0&&(a=Ef(t,n,r))),a},Uf=e=>e.replace(/\$/g,`$$$$`),Wf=class{constructor(e={}){this.logger=kf.create(`interpolator`),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||={escapeValue:!0};let{escape:t,escapeValue:n,useRawValueToEscape:r,prefix:i,prefixEscaped:a,suffix:o,suffixEscaped:s,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:d,nestingPrefixEscaped:f,nestingSuffix:p,nestingSuffixEscaped:m,nestingOptionsSeparator:h,maxReplaces:g,alwaysFormat:_}=e.interpolation;this.escape=t===void 0?xf:t,this.escapeValue=n===void 0||n,this.useRawValueToEscape=r!==void 0&&r,this.prefix=i?yf(i):a||`{{`,this.suffix=o?yf(o):s||`}}`,this.formatSeparator=c||`,`,this.unescapePrefix=l?``:u?yf(u):`-`,this.unescapeSuffix=this.unescapePrefix?``:l?yf(l):``,this.nestingPrefix=d?yf(d):f||yf(`$t(`),this.nestingSuffix=p?yf(p):m||yf(`)`),this.nestingOptionsSeparator=h||`,`,this.maxReplaces=g||1e3,this.alwaysFormat=_!==void 0&&_,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,`g`);this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,n,r){let i,a,o,s=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=e=>{if(!e.includes(this.formatSeparator)){let i=Hf(t,s,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(i,void 0,n,{...r,...t,interpolationkey:e}):i}let i=e.split(this.formatSeparator),a=i.shift().trim(),o=i.join(this.formatSeparator).trim();return this.format(Hf(t,s,a,this.options.keySeparator,this.options.ignoreJSONStructure),o,n,{...r,...t,interpolationkey:a})};this.resetRegExp(),!this.escapeValue&&typeof e==`string`&&/\$t\([^)]*\{[^}]*\{\{/.test(e)&&this.logger.warn(`nesting options string contains interpolated variables with escapeValue: false — if any of those values are attacker-controlled they can inject additional nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing it to t(), or keep escapeValue: true.`);let l=r?.missingInterpolationHandler||this.options.missingInterpolationHandler,u=r?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:r.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>e},{regex:this.regexp,safeValue:e=>this.escapeValue?this.escape(e):e}].forEach(t=>{for(o=0;i=t.regex.exec(e);){let n=i[1].trim();if(a=c(n),a===void 0)if(typeof l==`function`){let t=l(e,i,r);a=$(t)?t:``}else if(r&&Object.prototype.hasOwnProperty.call(r,n))a=``;else if(u){a=i[0];continue}else this.logger.warn(`missed to pass in variable ${n} for interpolating ${e}`),a=``;else!$(a)&&!this.useRawValueToEscape&&(a=cf(a));let s=t.safeValue(a);if(e=e.replace(i[0],Uf(s)),u?(t.regex.lastIndex+=s.length,t.regex.lastIndex-=i[0].length):t.regex.lastIndex=0,o++,o>=this.maxReplaces)break}}),e}nest(e,t,n={}){let r,i,a,o=(e,t)=>{let n=this.nestingOptionsSeparator;if(!e.includes(n))return e;let r=e.split(RegExp(`${yf(n)}[ ]*{`)),i=`{${r[1]}`;e=r[0],i=this.interpolate(i,a);let o=i.match(/'/g),s=i.match(/"/g);((o?.length??0)%2==0&&!s||(s?.length??0)%2!=0)&&(i=i.replace(/'/g,`"`));try{a=JSON.parse(i),t&&(a={...t,...a})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${n}${i}`}return a.defaultValue&&a.defaultValue.includes(this.prefix)&&delete a.defaultValue,e};for(;r=this.nestingRegexp.exec(e);){let s=[];a={...n},a=a.replace&&!$(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;let c=/{.*}/s.test(r[1])?r[1].lastIndexOf(`}`)+1:r[1].indexOf(this.formatSeparator);if(c!==-1&&(s=r[1].slice(c).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),r[1]=r[1].slice(0,c)),i=t(o.call(this,r[1].trim(),a),a),i&&r[0]===e&&!$(i))return i;$(i)||(i=cf(i)),i||=(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),``),s.length&&(i=s.reduce((e,t)=>this.format(e,t,n.lng,{...n,interpolationkey:r[1].trim()}),i.trim())),e=e.replace(r[0],i),this.regexp.lastIndex=0}return e}},Gf=e=>{let t=e.toLowerCase().trim(),n={};if(e.includes(`(`)){let r=e.split(`(`);t=r[0].toLowerCase().trim();let i=r[1].slice(0,-1);t===`currency`&&!i.includes(`:`)?n.currency||=i.trim():t===`relativetime`&&!i.includes(`:`)?n.range||=i.trim():i.split(`;`).forEach(e=>{if(e){let[t,...r]=e.split(`:`),i=r.join(`:`).trim().replace(/^'+|'+$/g,``),a=t.trim();n[a]||(n[a]=i),i===`false`&&(n[a]=!1),i===`true`&&(n[a]=!0),isNaN(i)||(n[a]=parseInt(i,10))}})}return{formatName:t,formatOptions:n}},Kf=e=>{let t={};return(n,r,i)=>{let a=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(a={...a,[i.interpolationkey]:void 0});let o=r+JSON.stringify(a),s=t[o];return s||(s=e(Df(r),i),t[o]=s),s(n)}},qf=e=>(t,n,r)=>e(Df(n),r)(t),Jf=class{constructor(e={}){this.logger=kf.create(`formatter`),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||`,`;let n=t.cacheInBuiltFormats?Kf:qf;this.formats={number:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t});return e=>n.format(e)}),currency:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t,style:`currency`});return e=>n.format(e)}),datetime:n((e,t)=>{let n=new Intl.DateTimeFormat(e,{...t});return e=>n.format(e)}),relativetime:n((e,t)=>{let n=new Intl.RelativeTimeFormat(e,{...t});return e=>n.format(e,t.range||`day`)}),list:n((e,t)=>{let n=new Intl.ListFormat(e,{...t});return e=>n.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=Kf(t)}format(e,t,n,r={}){if(!t||e==null)return e;let i=t.split(this.formatSeparator),a=[];for(let e=0;e-1&&!t.includes(`)`)&&e+1{let{formatName:i,formatOptions:a}=Gf(t);if(this.formats[i]){let t=e;try{let o=r?.formatParams?.[r.interpolationkey]||{},s=o.locale||o.lng||r.locale||r.lng||n;t=this.formats[i](e,s,{...a,...r,...o})}catch(e){this.logger.warn(e)}return t}else this.logger.warn(`there was no format function for ${i}`);return e},e)}},Yf=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)},Xf=class extends Af{constructor(e,t,n,r={}){super(),this.backend=e,this.store=t,this.services=n,this.languageUtils=n.languageUtils,this.options=r,this.logger=kf.create(`backendConnector`),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(n,r.backend,r)}queueLoad(e,t,n,r){let i={},a={},o={},s={};return e.forEach(e=>{let r=!0;t.forEach(t=>{let o=`${e}|${t}`;!n.reload&&this.store.hasResourceBundle(e,t)?this.state[o]=2:this.state[o]<0||(this.state[o]===1?a[o]===void 0&&(a[o]=!0):(this.state[o]=1,r=!1,a[o]===void 0&&(a[o]=!0),i[o]===void 0&&(i[o]=!0),s[t]===void 0&&(s[t]=!0)))}),r||(o[e]=!0)}),(Object.keys(i).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(i),pending:Object.keys(a),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(s)}}loaded(e,t,n){let r=e.split(`|`),i=r[0],a=r[1];t&&this.emit(`failedLoading`,i,a,t),!t&&n&&this.store.addResourceBundle(i,a,n,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&n&&(this.state[e]=0);let o={};this.queue.forEach(n=>{hf(n.loaded,[i],a),Yf(n,e),t&&n.errors.push(t),n.pendingCount===0&&!n.done&&(Object.keys(n.loaded).forEach(e=>{o[e]||(o[e]={});let t=n.loaded[e];t.length&&t.forEach(t=>{o[e][t]===void 0&&(o[e][t]=!0)})}),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())}),this.emit(`loaded`,o),this.queue=this.queue.filter(e=>!e.done)}read(e,t,n,r=0,i=this.retryTimeout,a){if(!e.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:t,fcName:n,tried:r,wait:i,callback:a});return}this.readingCalls++;let o=(o,s)=>{if(this.readingCalls--,this.waitingReads.length>0){let e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}if(o&&s&&r{this.read(e,t,n,r+1,i*2,a)},i);return}a(o,s)},s=this.backend[n].bind(this.backend);if(s.length===2){try{let n=s(e,t);n&&typeof n.then==`function`?n.then(e=>o(null,e)).catch(o):o(null,n)}catch(e){o(e)}return}return s(e,t,o)}prepareLoading(e,t,n={},r){if(!this.backend)return this.logger.warn(`No backend was added via i18next.use. Will not load resources.`),r&&r();$(e)&&(e=this.languageUtils.toResolveHierarchy(e)),$(t)&&(t=[t]);let i=this.queueLoad(e,t,n,r);if(!i.toLoad.length)return i.pending.length||r(),null;i.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,n){this.prepareLoading(e,t,{},n)}reload(e,t,n){this.prepareLoading(e,t,{reload:!0},n)}loadOne(e,t=``){let n=e.split(`|`),r=n[0],i=n[1];this.read(r,i,`read`,void 0,void 0,(n,a)=>{n&&this.logger.warn(`${t}loading namespace ${i} for language ${r} failed`,n),!n&&a&&this.logger.log(`${t}loaded namespace ${i} for language ${r}`,a),this.loaded(e,n,a)})}saveMissing(e,t,n,r,i,a={},o=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(t)){this.logger.warn(`did not save key "${n}" as the namespace "${t}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`);return}if(!(n==null||n===``)){if(this.backend?.create){let s={...a,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=c.length===5?c(e,t,n,r,s):c(e,t,n,r),i&&typeof i.then==`function`?i.then(e=>o(null,e)).catch(o):o(null,i)}catch(e){o(e)}else c(e,t,n,r,o,s)}!e||!e[0]||this.store.addResource(e[0],t,n,r)}}},Zf=()=>({debug:!1,initAsync:!0,ns:[`translation`],defaultNS:[`translation`],fallbackLng:[`dev`],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:`all`,preload:!1,keySeparator:`.`,nsSeparator:`:`,pluralSeparator:`_`,contextSeparator:`_`,enableSelector:!1,partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:`fallback`,saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]==`object`&&(t=e[1]),$(e[1])&&(t.defaultValue=e[1]),$(e[2])&&(t.tDescription=e[2]),typeof e[2]==`object`||typeof e[3]==`object`){let n=e[3]||e[2];Object.keys(n).forEach(e=>{t[e]=n[e]})}return t},interpolation:{escapeValue:!0,prefix:`{{`,suffix:`}}`,formatSeparator:`,`,unescapePrefix:`-`,nestingPrefix:`$t(`,nestingSuffix:`)`,nestingOptionsSeparator:`,`,maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),Qf=e=>($(e.ns)&&(e.ns=[e.ns]),$(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),$(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes(`cimode`)&&(e.supportedLngs=e.supportedLngs.concat([`cimode`])),e),$f=()=>{},ep=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(t=>{typeof e[t]==`function`&&(e[t]=e[t].bind(e))})},tp=class e extends Af{constructor(e={},t){if(super(),this.options=Qf(e),this.services={},this.logger=kf,this.modules={external:[]},ep(this),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,typeof e==`function`&&(t=e,e={}),e.defaultNS==null&&e.ns&&($(e.ns)?e.defaultNS=e.ns:e.ns.includes(`translation`)||(e.defaultNS=e.ns[0]));let n=Zf();this.options={...n,...this.options,...Qf(e)},this.options.interpolation={...n.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator),typeof this.options.overloadTranslationOptionHandler!=`function`&&(this.options.overloadTranslationOptionHandler=n.overloadTranslationOptionHandler);let r=e=>e?typeof e==`function`?new e:e:null;if(!this.options.isClone){this.modules.logger?kf.init(r(this.modules.logger),this.options):kf.init(null,this.options);let e;e=this.modules.formatter?this.modules.formatter:Jf;let t=new Rf(this.options);this.store=new jf(this.options.resources,this.options);let n=this.services;n.logger=kf,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new Vf(t,{prepend:this.options.pluralSeparator}),e&&(n.formatter=r(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new Wf(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new Xf(r(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=r(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=r(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new Lf(this.services,this.options),this.translator.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||=$f,this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&e[0]!==`dev`&&(this.options.lng=e[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn(`init: no languageDetector is used and no lng is defined`),[`getResource`,`hasResourceBundle`,`getResourceBundle`,`getDataByLanguage`].forEach(e=>{this[e]=(...t)=>this.store[e](...t)}),[`addResource`,`addResources`,`addResourceBundle`,`removeResourceBundle`].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});let i=sf(),a=()=>{let e=(e,n)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn(`init: i18next is already initialized. You should call init just once!`),this.isInitialized=!0,this.options.isClone||this.logger.log(`initialized`,this.options),this.emit(`initialized`,this.options),i.resolve(n),t(e,n)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?a():setTimeout(a,0),i}loadResources(e,t=$f){let n=t,r=$(e)?e:this.language;if(typeof e==`function`&&(n=e),!this.options.resources||this.options.partialBundledLanguages){if(r?.toLowerCase()===`cimode`&&(!this.options.preload||this.options.preload.length===0))return n();let e=[],t=t=>{t&&t!==`cimode`&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{t!==`cimode`&&(e.includes(t)||e.push(t))})};r?t(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{!e&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),n(e)})}else n(null)}reloadResources(e,t,n){let r=sf();return typeof e==`function`&&(n=e,e=void 0),typeof t==`function`&&(n=t,t=void 0),e||=this.languages,t||=this.options.ns,n||=$f,this.services.backendConnector.reload(e,t,e=>{r.resolve(),n(e)}),r}use(e){if(!e)throw Error(`You are passing an undefined module! Please check the object you are passing to i18next.use()`);if(!e.type)throw Error(`You are passing a wrong module! Please check the object you are passing to i18next.use()`);return e.type===`backend`&&(this.modules.backend=e),(e.type===`logger`||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type===`languageDetector`&&(this.modules.languageDetector=e),e.type===`i18nFormat`&&(this.modules.i18nFormat=e),e.type===`postProcessor`&&Mf.addPostProcessor(e),e.type===`formatter`&&(this.modules.formatter=e),e.type===`3rdParty`&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&![`cimode`,`dev`].includes(e)){for(let e=0;e{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},i=(i,a)=>{a?this.isLanguageChangingTo===e&&(r(a),this.translator.changeLanguage(a),this.isLanguageChangingTo=void 0,this.emit(`languageChanged`,a),this.logger.log(`languageChanged`,a)):this.isLanguageChangingTo=void 0,n.resolve((...e)=>this.t(...e)),t&&t(i,(...e)=>this.t(...e))},a=t=>{!e&&!t&&this.services.languageDetector&&(t=[]);let n=$(t)?t:t&&t[0],a=this.store.hasLanguageSomeTranslations(n)?n:this.services.languageUtils.getBestMatchFromCodes($(t)?[t]:t);a&&(this.language||r(a),this.translator.language||this.translator.changeLanguage(a),this.services.languageDetector?.cacheUserLanguage?.(a)),this.loadResources(a,e=>{i(e,a)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e),n}getFixedT(e,t,n,r){let i=r?.scopeNs,a=(e,t,...r)=>{let o;o=typeof t==`object`?{...t}:this.options.overloadTranslationOptionHandler([e,t].concat(r)),o.lng=o.lng||a.lng,o.lngs=o.lngs||a.lngs;let s=o.ns!==void 0&&o.ns!==null;o.ns=o.ns||a.ns,o.keyPrefix!==``&&(o.keyPrefix=o.keyPrefix||n||a.keyPrefix);let c={...this.options,...o};Array.isArray(i)&&!s&&(c.ns=i),typeof o.keyPrefix==`function`&&(o.keyPrefix=Ff(o.keyPrefix,c));let l=this.options.keySeparator||`.`,u;return o.keyPrefix&&Array.isArray(e)?u=e.map(e=>(typeof e==`function`&&(e=Ff(e,c)),`${o.keyPrefix}${l}${e}`)):(typeof e==`function`&&(e=Ff(e,c)),u=o.keyPrefix?`${o.keyPrefix}${l}${e}`:e),this.t(u,o)};return $(e)?a.lng=e:a.lngs=e,a.ns=t,a.keyPrefix=n,a}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn(`hasLoadedNamespace: i18next was not initialized`,this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn(`hasLoadedNamespace: i18n.languages were undefined or empty`,this.languages),!1;let n=t.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,i=this.languages[this.languages.length-1];if(n.toLowerCase()===`cimode`)return!0;let a=(e,t)=>{let n=this.services.backendConnector.state[`${e}|${t}`];return n===-1||n===0||n===2};if(t.precheck){let e=t.precheck(this,a);if(e!==void 0)return e}return!!(this.hasResourceBundle(n,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(n,e)&&(!r||a(i,e)))}loadNamespaces(e,t){let n=sf();return this.options.ns?($(e)&&(e=[e]),e.forEach(e=>{this.options.ns.includes(e)||this.options.ns.push(e)}),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}loadLanguages(e,t){let n=sf();$(e)&&(e=[e]);let r=this.options.preload||[],i=e.filter(e=>!r.includes(e)&&this.services.languageUtils.isSupportedCode(e));return i.length?(this.options.preload=r.concat(i),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}dir(e){if(e||=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language),!e)return`rtl`;try{let t=new Intl.Locale(e);if(t&&t.getTextInfo){let e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch{}let t=`ar.shu.sqr.ssh.xaa.yhd.yud.aao.abh.abv.acm.acq.acw.acx.acy.adf.ads.aeb.aec.afb.ajp.apc.apd.arb.arq.ars.ary.arz.auz.avl.ayh.ayl.ayn.ayp.bbz.pga.he.iw.ps.pbt.pbu.pst.prp.prd.ug.ur.ydd.yds.yih.ji.yi.hbo.men.xmn.fa.jpr.peo.pes.prs.dv.sam.ckb`.split(`.`),n=this.services?.languageUtils||new Rf(Zf());return e.toLowerCase().indexOf(`-latn`)>1?`ltr`:t.includes(n.getLanguagePartFromCode(e))||e.toLowerCase().indexOf(`-arab`)>1?`rtl`:`ltr`}static createInstance(t={},n){let r=new e(t,n);return r.createInstance=e.createInstance,r}cloneInstance(t={},n=$f){let r=t.forkResourceStore;r&&delete t.forkResourceStore;let i={...this.options,...t,isClone:!0},a=new e(i);if((t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),[`store`,`services`,`language`].forEach(e=>{a[e]=this[e]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},r&&(a.store=new jf(Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((n,r)=>(n[r]={...e[t][r]},n),e[t]),e),{}),i),a.services.resourceStore=a.store),t.interpolation){let e={...Zf().interpolation,...this.options.interpolation,...t.interpolation},n={...i,interpolation:e};a.services.interpolator=new Wf(n)}return a.translator=new Lf(a.services,i),a.translator.on(`*`,(e,...t)=>{a.emit(e,...t)}),a.init(i,n),a.translator.options=i,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}.createInstance();tp.createInstance,tp.dir,tp.init,tp.loadResources,tp.reloadResources,tp.use,tp.changeLanguage,tp.getFixedT,tp.t,tp.exists,tp.setDefaultNamespace,tp.hasLoadedNamespace,tp.loadNamespaces,tp.loadLanguages;var np=(e,t,n,r)=>{let i=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,`warn`,`react-i18next::`,!0);lp(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)},rp={},ip=(e,t,n,r)=>{lp(n)&&rp[n]||(lp(n)&&(rp[n]=new Date),np(e,t,n,r))},ap=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off(`initialized`,n)},0),t()};e.on(`initialized`,n)}},op=(e,t,n)=>{e.loadNamespaces(t,ap(e,n))},sp=(e,t,n,r)=>{if(lp(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return op(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,ap(e,r))},cp=(e,t,n={})=>!t.languages||!t.languages.length?(ip(t,`NO_LANGUAGES`,`i18n.languages were undefined or empty`,{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf(`languageChanging`)>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}),lp=e=>typeof e==`string`,up=e=>typeof e==`object`&&!!e,dp=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,fp={"&":`&`,"&":`&`,"<":`<`,"<":`<`,">":`>`,">":`>`,"'":`'`,"'":`'`,""":`"`,""":`"`," ":` `," ":` `,"©":`©`,"©":`©`,"®":`®`,"®":`®`,"…":`…`,"…":`…`,"/":`/`,"/":`/`},pp=e=>fp[e],mp={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:e=>e.replace(dp,pp),transDefaultProps:void 0},hp=(e={})=>{mp={...mp,...e}},gp=()=>mp,_p,vp=e=>{_p=e},yp=()=>_p,bp={type:`3rdParty`,init(e){hp(e.options.react),vp(e)}},xp=(0,y.createContext)(),Sp=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}},Cp=ic(),wp={t:(e,t)=>{if(lp(t))return t;if(up(t)&&lp(t.defaultValue))return t.defaultValue;if(typeof e==`function`)return``;if(Array.isArray(e)){let t=e[e.length-1];return typeof t==`function`?``:t}return e},ready:!1},Tp=()=>()=>{},Ep=(e,t={})=>{let{i18n:n}=t,{i18n:r,defaultNS:i}=(0,y.useContext)(xp)||{},a=n||r||yp();a&&!a.reportNamespaces&&(a.reportNamespaces=new Sp),a||ip(a,`NO_I18NEXT_INSTANCE`,`useTranslation: You will need to pass in an i18next instance by using initReactI18next or by passing it via props or context. In monorepo setups, make sure there is only one instance of react-i18next.`);let o=(0,y.useMemo)(()=>({...gp(),...a?.options?.react,...t}),[a,t]),{useSuspense:s,keyPrefix:c}=o,l=e||i||a?.options?.defaultNS,u=lp(l)?[l]:l||[`translation`],d=(0,y.useMemo)(()=>u,u);a?.reportNamespaces?.addUsedNamespaces?.(d);let f=(0,y.useRef)(0),p=(0,y.useCallback)(e=>{if(!a)return Tp;let{bindI18n:t,bindI18nStore:n}=o,r=()=>{f.current+=1,e()};return t&&a.on(t,r),n&&a.store.on(n,r),()=>{t&&t.split(` `).forEach(e=>a.off(e,r)),n&&n.split(` `).forEach(e=>a.store.off(e,r))}},[a,o]),m=(0,y.useRef)(),h=(0,y.useCallback)(()=>{if(!a)return wp;let e=!!(a.isInitialized||a.initializedStoreOnce)&&d.every(e=>cp(e,a,o)),n=t.lng||a.language,r=f.current,i=m.current;if(i&&i.ready===e&&i.lng===n&&i.keyPrefix===c&&i.revision===r)return i;let s={t:a.getFixedT(n,o.nsMode===`fallback`?d:d[0],c,{scopeNs:d}),ready:e,lng:n,keyPrefix:c,revision:r};return m.current=s,s},[a,d,c,o,t.lng]),[g,_]=(0,y.useState)(0),{t:v,ready:b}=(0,Cp.useSyncExternalStore)(p,h,h);(0,y.useEffect)(()=>{if(a&&!b&&!s){let e=()=>_(e=>e+1);t.lng?sp(a,t.lng,d,e):op(a,d,e)}},[a,t.lng,d,b,s,g]);let x=a||{},S=(0,y.useRef)(null),C=(0,y.useRef)(),w=e=>{let t=Object.getOwnPropertyDescriptors(e);t.__original&&delete t.__original;let n=Object.create(Object.getPrototypeOf(e),t);if(!Object.prototype.hasOwnProperty.call(n,`__original`))try{Object.defineProperty(n,"__original",{value:e,writable:!1,enumerable:!1,configurable:!1})}catch{}return n},T=(0,y.useMemo)(()=>{let e=x,t=e?.language,n=e;e&&(S.current&&S.current.__original===e&&C.current===t?n=S.current:(n=w(e),S.current=n,C.current=t));let r=!b&&!s?(...e)=>(ip(a,`USE_T_BEFORE_READY`,`useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.`),v(...e)):v,i=[r,n,b];return i.t=r,i.i18n=n,i.ready=b,i},[v,x,b,x.resolvedLanguage,x.language,x.languages]);if(a&&s&&!b){let e=!1;try{e=!1}catch{}throw e&&ip(a,`SUSPENDED_WHILE_LOADING`,`useTranslation: suspended while translations are loading (useSuspense is true by default). Add a boundary above this component, or set react.useSuspense: false in the i18next init options. https://react.i18next.com/latest/usetranslation-hook`),new Promise(e=>{let n=()=>e();t.lng?sp(a,t.lng,d,n):op(a,d,n)})}return T};function Dp({i18n:e,defaultNS:t,children:n}){let r=(0,y.useMemo)(()=>({i18n:e,defaultNS:t}),[e,t]);return(0,y.createElement)(xp.Provider,{value:r},n)}function Op(e,t){var n,r=1;e??=0,t??=0;function i(){var i,a=n.length,o,s=0,c=0;for(i=0;i=(d=(s+l)/2))?s=d:l=d,(g=n>=(f=(c+u)/2))?c=f:u=f,i=a,!(a=a[_=g<<1|h]))return i[_]=o,e;if(p=+e._x.call(null,a.data),m=+e._y.call(null,a.data),t===p&&n===m)return o.next=a,i?i[_]=o:e._root=o,e;do i=i?i[_]=[,,,,]:e._root=[,,,,],(h=t>=(d=(s+l)/2))?s=d:l=d,(g=n>=(f=(c+u)/2))?c=f:u=f;while((_=g<<1|h)==(v=(m>=f)<<1|p>=d));return i[v]=a,i[_]=o,e}function jp(e){var t,n,r=e.length,i,a,o=Array(r),s=Array(r),c=1/0,l=1/0,u=-1/0,d=-1/0;for(n=0;nu&&(u=i),ad&&(d=a));if(c>u||l>d)return this;for(this.cover(c,l).cover(u,d),n=0;ne||e>=i||r>t||t>=a;)switch(l=(tu||(s=m.y0)>d||(c=m.x1)=_)<<1|e>=g)&&(m=f[f.length-1],f[f.length-1]=f[f.length-1-h],f[f.length-1-h]=m)}else{var v=e-+this._x.call(null,p.data),y=t-+this._y.call(null,p.data),b=v*v+y*y;if(b=(f=(o+c)/2))?o=f:c=f,(h=d>=(p=(s+l)/2))?s=p:l=p,t=n,!(n=n[g=h<<1|m]))return this;if(!n.length)break;(t[g+1&3]||t[g+2&3]||t[g+3&3])&&(r=t,_=g)}for(;n.data!==e;)if(i=n,!(n=n.next))return this;return(a=n.next)&&delete n.next,i?(a?i.next=a:delete i.next,this):t?(a?t[g]=a:delete t[g],(n=t[0]||t[1]||t[2]||t[3])&&n===(t[3]||t[2]||t[1]||t[0])&&!n.length&&(r?r[_]=n:this._root=n),this):(this._root=a,this)}function Rp(e){for(var t=0,n=e.length;tl.index){var h=u-s.x-s.vx,g=d-s.y-s.vy,_=h*h+g*g;_u+m||ad+m||oe.r&&(e.r=e[t].r)}function c(){if(t){var r,i=t.length,a;for(n=Array(i),r=0;r[t(e,n,o),e])),d;for(n=0,s=Array(i);n(e=(am*e+om)%sm)/sm}function lm(e){return e.x}function um(e){return e.y}var dm=10,fm=Math.PI*(3-Math.sqrt(5));function pm(e){var t,n=1,r=.001,i=1-r**(1/300),a=0,o=.6,s=new Map,c=Nr(d),l=w(`tick`,`end`),u=cm();e??=[];function d(){f(),l.call(`tick`,t),n1?(n==null?s.delete(e):s.set(e,m(n)),t):s.get(e)},find:function(t,n,r){var i=0,a=e.length,o,s,c,l,u;for(r==null?r=1/0:r*=r,i=0;i1?(l.on(e,n),t):l.on(e)}}}function mm(){var e,t,n,r,i=Zp(-30),a,o=1,s=1/0,c=.81;function l(n){var i,a=e.length,o=qp(e,lm,um).visitAfter(d);for(r=n,i=0;i=s)){(e.data!==t||e.next)&&(d===0&&(d=Qp(n),m+=d*d),f===0&&(f=Qp(n),m+=f*f),m0&&(0,x.jsx)(`span`,{title:`${e.changedPropertyCount} of its properties change`,style:{flexShrink:0,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,minWidth:16,height:16,padding:`0 4px`,borderRadius:8,background:`#fff7ed`,color:`#c2410c`,border:`1px solid #fdba74`,font:`700 10px/1 ui-sans-serif, system-ui, sans-serif`},children:e.changedPropertyCount}),e.evidenceMissing&&(0,x.jsx)(`span`,{title:`This change cites no source`,style:{flexShrink:0,padding:`1px 5px`,borderRadius:8,background:`#fef3c7`,color:`#92400e`,border:`1px dashed #fcd34d`,font:`700 10px/1.4 ui-sans-serif, system-ui, sans-serif`},children:`?`}),e.overlaps?.length>0&&(0,x.jsx)(`span`,{title:`Also edited by ${e.overlaps.length} other pending change request(s)`,style:{flexShrink:0,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:16,height:16,borderRadius:8,background:`#e0e7ff`,color:`#4338ca`,border:`1px solid #a5b4fc`,font:`700 10px/1 ui-sans-serif, system-ui, sans-serif`},children:e.overlaps.length>1?e.overlaps.length:`⇄`}),e.consumers?.total>0&&(0,x.jsxs)(`span`,{title:`${e.consumers.total} consumer(s) depend on this`,style:{flexShrink:0,display:`inline-flex`,alignItems:`center`,gap:2,padding:`1px 6px 1px 4px`,borderRadius:8,background:`#fef3c7`,color:`#92400e`,border:`1px solid #fcd34d`,font:`700 10px/1.4 ui-sans-serif, system-ui, sans-serif`},children:[(0,x.jsx)(`svg`,{width:`10`,height:`10`,viewBox:`0 0 20 20`,fill:`#b45309`,"aria-hidden":`true`,children:(0,x.jsx)(`path`,{fillRule:`evenodd`,d:`M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495ZM10 5a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 10 5Zm0 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z`,clipRule:`evenodd`})}),e.consumers.total]}),(0,x.jsx)(`span`,{style:{flexShrink:0,display:`flex`},children:a}),(0,x.jsx)(`span`,{style:{fontWeight:600,fontSize:13,color:n?`#94a3b8`:`#1e293b`,overflow:`hidden`,textOverflow:`ellipsis`},children:e.label})]})}var Cm=8,wm={entity:`#3b82f6`,property:`#22c55e`,metric:`#8b5cf6`},Tm={entity:(0,x.jsx)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 20 20`,fill:`#60a5fa`,children:(0,x.jsx)(`path`,{d:`M10.362 1.093a.75.75 0 0 0-.724 0L2.523 5.018 10 9.143l7.477-4.125-7.115-3.925ZM18 6.443l-7.25 4v8.25l6.888-3.8A.75.75 0 0 0 18 14.25V6.443ZM9.25 18.693v-8.25l-7.25-4v7.807a.75.75 0 0 0 .362.643l6.888 3.8Z`})}),metric:(0,x.jsx)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 20 20`,fill:`#c084fc`,children:(0,x.jsx)(`path`,{d:`M15.5 2A1.5 1.5 0 0 0 14 3.5v13a1.5 1.5 0 0 0 1.5 1.5h1a1.5 1.5 0 0 0 1.5-1.5v-13A1.5 1.5 0 0 0 16.5 2h-1ZM9.5 6A1.5 1.5 0 0 0 8 7.5v9A1.5 1.5 0 0 0 9.5 18h1a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 10.5 6h-1ZM3.5 10A1.5 1.5 0 0 0 2 11.5v5A1.5 1.5 0 0 0 3.5 18h1A1.5 1.5 0 0 0 6 16.5v-5A1.5 1.5 0 0 0 4.5 10h-1Z`})}),property:(0,x.jsx)(`svg`,{width:`16`,height:`16`,viewBox:`0 0 20 20`,fill:`#4ade80`,children:(0,x.jsx)(`path`,{fillRule:`evenodd`,d:`M4.5 2A2.5 2.5 0 0 0 2 4.5v3.879a2.5 2.5 0 0 0 .732 1.767l7.5 7.5a2.5 2.5 0 0 0 3.536 0l3.878-3.878a2.5 2.5 0 0 0 0-3.536l-7.5-7.5A2.5 2.5 0 0 0 8.38 2H4.5ZM5 6a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z`,clipRule:`evenodd`})})},Em=()=>(0,x.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`#9ca3af`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,x.jsx)(`path`,{d:`M15.75 5.25a3 3 0 013 3m3 0a6 6 0 01-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1121.75 8.25z`})}),Dm={visibility:`hidden`,width:8,height:8};function Om({data:e,type:t}){let{t:n}=Ep(),r=wm[t]||wm.entity,i=Tm[t]||Tm.entity,a=e.hideProperties?[]:e.properties||[],[o,s]=(0,y.useState)(a.some((e,t)=>(e.highlight||e.diff)&&t>=Cm)),c=!o&&a.length>Cm,l=c?a.slice(0,Cm):a,u=a.length-Cm;e.description;let d=e=>{e.stopPropagation(),s(e=>!e)},f=_m[e.diff],p=e.changedPropertyCount||0,m=f||(p>0?_m.modify:null),h=f?f.label:n(`node.propertiesChanged`,{count:p});return(0,x.jsxs)(`div`,{style:{minWidth:220,borderRadius:6,overflow:`hidden`,position:`relative`,opacity:e.dimmed?.4:e.diff===`remove`?.65:1,cursor:e.link?`pointer`:`default`,boxShadow:m?`0 0 0 3px ${m.color}, 0 0 14px ${m.color}55`:e.selected?`0 0 0 3px #ffffff, 0 0 0 5px ${r}, 0 0 16px ${r}66`:e.highlight?`0 0 0 2px ${r}, 0 0 12px ${r}40`:`0 1px 3px rgba(0,0,0,0.06)`},children:[m&&(0,x.jsx)(`div`,{style:{position:`absolute`,top:0,right:0,zIndex:1,background:m.color,color:`#fff`,font:`600 10px/1 ui-sans-serif, system-ui, sans-serif`,letterSpacing:`0.06em`,textTransform:`uppercase`,padding:`3px 6px`,borderBottomLeftRadius:6},children:h}),(0,x.jsx)(Vl,{type:`target`,position:U.Top,id:`top`,style:Dm}),(0,x.jsx)(Vl,{type:`source`,position:U.Bottom,id:`bottom`,style:Dm}),(0,x.jsx)(`div`,{style:{height:6,background:r}}),(0,x.jsxs)(`div`,{style:{border:`3px solid #E9EEF4`,borderTop:`none`,borderRadius:`0 0 6px 6px`,overflow:`hidden`},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,background:`#E9EEF4`,padding:`6px 10px`,gap:6},children:[(0,x.jsx)(`span`,{style:{flexShrink:0,display:`flex`},children:i}),(0,x.jsx)(`span`,{style:{fontWeight:700,fontSize:14,color:`#111827`,whiteSpace:`nowrap`,overflow:`hidden`,textOverflow:`ellipsis`},children:e.label})]}),(0,x.jsx)(`div`,{style:{background:`#fff`},children:l.length>0?(0,x.jsxs)(x.Fragment,{children:[l.map((e,t)=>{let r=_m[e.diff],i=r?r.color:e.highlight?wm.property:null;return(0,x.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,padding:`5px 10px`,borderTop:`1px solid #E9EEF4`,gap:8,background:i?`${i}1a`:`transparent`,boxShadow:i?`inset 3px 0 0 ${i}`:`none`},children:[(0,x.jsx)(`span`,{style:{fontSize:13,fontWeight:e.highlight||r?700:500,color:e.inherited?`#9ca3af`:`#111827`,fontStyle:e.inherited?`italic`:`normal`,textDecoration:e.diff===`remove`?`line-through`:`none`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,flex:1,minWidth:0},children:e.name}),(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:4,flexShrink:0},children:[r?(0,x.jsx)(`span`,{style:{color:r.color,font:`600 10px/1 ui-sans-serif, system-ui, sans-serif`,letterSpacing:`0.06em`,textTransform:`uppercase`},children:n(`detail.diff.op.${e.diff}`)}):e.type&&(0,x.jsx)(`span`,{style:{fontSize:11,color:`#9ca3af`},children:e.type}),e.primaryKey&&(0,x.jsx)(Em,{})]})]},t)}),(c||o&&a.length>Cm)&&(0,x.jsx)(`div`,{onClick:d,style:{padding:`4px 10px`,borderTop:`1px solid #E9EEF4`,fontSize:11,color:`#6366f1`,textAlign:`center`,cursor:`pointer`,fontWeight:500},onMouseOver:e=>e.currentTarget.style.background=`#f5f3ff`,onMouseOut:e=>e.currentTarget.style.background=`transparent`,children:o?`show less`:`+${u} more`})]}):(0,x.jsx)(`div`,{style:{padding:`6px 10px`,fontSize:12,color:`#9ca3af`,fontStyle:`italic`,lineHeight:1.4},children:n(`node.noProperties`)})})]})]})}var km=(0,y.createContext)({toggleCollapse:()=>{},collapsedSet:new Set}),Am={visibility:`hidden`,width:6,height:6},jm=180,Mm=56,Nm=72,Pm=`#f97316`,Fm=`rgba(249, 115, 22, 0.06)`,Im=`rgba(249, 115, 22, 0.28)`,Lm=`rgba(249, 115, 22, 0.03)`,Rm=`rgba(249, 115, 22, 0.12)`,zm=`#fff7ed`,Bm=`#fffbf5`,Vm=`#fed7aa`;function Hm(e){let t=e.slice().sort((e,t)=>e.x-t.x||e.y-t.y);if(t.length<=1)return t.slice();let n=(e,t,n)=>(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x),r=e=>{let t=[];for(let r of e){for(;t.length>=2&&n(t[t.length-2],t[t.length-1],r)<=0;)t.pop();t.push(r)}return t},i=r(t),a=r(t.slice().reverse());return i.pop(),a.pop(),i.concat(a)}function Um(e,t){let n=e.length;if(n===0)return``;if(n===1){let n=e[0];return`M ${(n.x-t).toFixed(2)} ${n.y.toFixed(2)} A ${t} ${t} 0 1 1 ${(n.x+t).toFixed(2)} ${n.y.toFixed(2)} A ${t} ${t} 0 1 1 ${(n.x-t).toFixed(2)} ${n.y.toFixed(2)} Z`}if(n===2){let n=e[0],r=e[1],i=r.x-n.x,a=r.y-n.y,o=Math.hypot(i,a)||1,s=a/o,c=-i/o,l={x:n.x+s*t,y:n.y+c*t},u={x:r.x+s*t,y:r.y+c*t},d={x:n.x-s*t,y:n.y-c*t},f={x:r.x-s*t,y:r.y-c*t};return`M ${l.x.toFixed(2)} ${l.y.toFixed(2)} L ${u.x.toFixed(2)} ${u.y.toFixed(2)} A ${t} ${t} 0 0 1 ${f.x.toFixed(2)} ${f.y.toFixed(2)} L ${d.x.toFixed(2)} ${d.y.toFixed(2)} A ${t} ${t} 0 0 1 ${l.x.toFixed(2)} ${l.y.toFixed(2)} Z`}let r=[];for(let t=0;tt=>{let n=[];return t.nodeLookup.forEach(t=>{if(t.parentId!==e)return;let r=t.measured?.width??t.width??t.style?.width??jm,i=t.measured?.height??t.height??t.style?.height??Mm;n.push(`${t.position.x.toFixed(1)},${t.position.y.toFixed(1)},${r},${i}`)}),n.sort(),n.join(`|`)};function Gm(e){return e?e.split(`|`).map(e=>{let[t,n,r,i]=e.split(`,`).map(Number);return{x:t,y:n,w:r,h:i}}):[]}var Km=()=>(0,x.jsxs)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 20 20`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.2`,strokeLinecap:`round`,children:[(0,x.jsx)(`line`,{x1:`5`,y1:`10`,x2:`15`,y2:`10`}),(0,x.jsx)(`line`,{x1:`10`,y1:`5`,x2:`10`,y2:`15`})]}),qm=()=>(0,x.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 20 20`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.2`,strokeLinecap:`round`,children:(0,x.jsx)(`line`,{x1:`5`,y1:`10`,x2:`15`,y2:`10`})}),Jm=e=>({display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:22,height:22,borderRadius:6,background:`#fff`,border:`1px solid ${e?`#e2e8f0`:`#cbd5e1`}`,color:e?`#94a3b8`:`#475569`,cursor:`pointer`,padding:0,boxShadow:`0 1px 2px rgba(0,0,0,0.05)`,pointerEvents:`auto`,flexShrink:0});function Ym({data:e,onToggle:t}){let{t:n}=Ep(),r=e.dimmed,i=e.memberCount;return(0,x.jsxs)(`div`,{style:{width:`100%`,height:`100%`,display:`flex`,flexDirection:`column`,padding:`14px 16px`,borderRadius:16,background:r?Bm:zm,border:`2px solid ${r?Vm:Pm}`,boxShadow:`0 2px 8px rgba(0,0,0,0.06)`,boxSizing:`border-box`,opacity:r?.5:1,userSelect:`none`,transition:`opacity 0.2s, background 0.2s, border-color 0.2s`,gap:6},children:[(0,x.jsx)(Vl,{type:`target`,position:U.Top,id:`top`,style:Am}),(0,x.jsx)(Vl,{type:`source`,position:U.Bottom,id:`bottom`,style:Am}),(0,x.jsx)(Vl,{type:`target`,position:U.Left,id:`left`,style:Am}),(0,x.jsx)(Vl,{type:`source`,position:U.Right,id:`right`,style:Am}),(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,x.jsx)(`span`,{style:{fontSize:10,fontWeight:700,letterSpacing:`0.08em`,textTransform:`uppercase`,color:r?`#fdba74`:Pm},children:n(`node.group`)}),(0,x.jsx)(`div`,{style:{flex:1}}),(0,x.jsx)(`button`,{type:`button`,onClick:t,onMouseDown:e=>e.stopPropagation(),title:n(`node.expandGroup`),"aria-label":n(`node.expandGroup`),style:Jm(r),children:(0,x.jsx)(Km,{})})]}),(0,x.jsx)(`div`,{style:{fontSize:16,fontWeight:700,color:r?`#94a3b8`:`#1e293b`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,lineHeight:1.2},children:e.label}),i>0&&(0,x.jsxs)(`div`,{style:{marginTop:`auto`,display:`flex`,alignItems:`center`,gap:6},children:[(0,x.jsxs)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 20 20`,fill:`none`,stroke:r?`#cbd5e1`:`#94a3b8`,strokeWidth:`2`,children:[(0,x.jsx)(`rect`,{x:`2.5`,y:`3.5`,width:`15`,height:`5`,rx:`1`}),(0,x.jsx)(`rect`,{x:`2.5`,y:`11.5`,width:`15`,height:`5`,rx:`1`})]}),(0,x.jsxs)(`span`,{style:{fontSize:12,fontWeight:500,color:r?`#94a3b8`:`#64748b`},children:[i,` `,i===1?`member`:`members`]})]})]})}function Xm({id:e,data:t}){let{t:n}=Ep(),{toggleCollapse:r,collapsedSet:i}=(0,y.useContext)(km),a=i.has(e),o=t=>{t.stopPropagation(),r(e)},s=K((0,y.useMemo)(()=>Wm(e),[e])),{pathD:c,labelPos:l}=(0,y.useMemo)(()=>{if(a)return{pathD:``,labelPos:null};let e=Gm(s);if(e.length===0)return{pathD:``,labelPos:null};let t=[];for(let n of e)t.push({x:n.x,y:n.y},{x:n.x+n.w,y:n.y},{x:n.x+n.w,y:n.y+n.h},{x:n.x,y:n.y+n.h});let n=Hm(t),r=1/0,i=-1/0,o=-1/0;for(let e of n)e.xi&&(i=e.x),e.y>o&&(o=e.y);let c=(r+i)/2,l=o;for(let e=0;e0)continue;let i=(c-t.x)/(r.x-t.x),a=t.y+i*(r.y-t.y);ae.stopPropagation(),title:n(`node.collapseGroup`),"aria-label":n(`node.collapseGroup`),style:Jm(u),children:(0,x.jsx)(qm,{})}),(0,x.jsx)(`span`,{style:{fontSize:12,fontWeight:600,color:u?`#94a3b8`:`#475569`,letterSpacing:`0.02em`,textTransform:`uppercase`},children:t.label})]})]})}function Zm(e){let t=e.measured?.width??e.width??150,n=e.measured?.height??e.height??40;return{x:e.internals.positionAbsolute.x,y:e.internals.positionAbsolute.y,w:t,h:n,cx:e.internals.positionAbsolute.x+t/2,cy:e.internals.positionAbsolute.y+n/2}}function Qm(e,t,n,r){let{cx:i,cy:a,w:o,h:s}=e,c=t-i,l=n-a;if(c===0&&l===0)return{x:i,y:a};let u=o/2+r,d=s/2+r,f=Math.abs(c)<.001?1/0:u/Math.abs(c),p=Math.abs(l)<.001?1/0:d/Math.abs(l),m=Math.min(f,p);return{x:i+c*m,y:a+l*m}}function $m(e,t,n,r){if(r<=1)return 0;let i=t.cx-e.cx,a=t.cy-e.cy,o=Math.sqrt(i*i+a*a)||1,s=Math.max(60,Math.min(o*.3,120));return(n-(r-1)/2)*s}function eh({id:e,source:t,target:n,label:r,style:i,data:a,markerEnd:o,labelStyle:s,labelBgStyle:c,labelBgPadding:l}){let u=Cd(t),d=Cd(n);if(!u||!d)return null;let f=Zm(u),p=Zm(d),m=a?.parallel||{index:0,total:1},h=$m(f,p,m.index,m.total);if(h===0){let t=Qm(f,p.cx,p.cy,2),n=Qm(p,f.cx,f.cy,6),a=`M ${t.x} ${t.y} L ${n.x} ${n.y}`,u=(t.x+n.x)/2,d=(t.y+n.y)/2;return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(xu,{id:e,path:a,style:i,markerEnd:o}),r&&(0,x.jsx)(bd,{children:(0,x.jsx)(`div`,{style:th(u,d,s,c,l),children:r})})]})}let g=(f.cx+p.cx)/2,_=(f.cy+p.cy)/2,v=t>n,y=v?f.cx-p.cx:p.cx-f.cx,b=v?f.cy-p.cy:p.cy-f.cy,S=Math.sqrt(y*y+b*b)||1,C=-b/S,w=y/S,T=g+C*h,E=_+w*h,D=Qm(f,T,E,2),O=Qm(p,T,E,6),k=`M ${D.x} ${D.y} Q ${T} ${E} ${O.x} ${O.y}`,A=.25*D.x+.5*T+.25*O.x,j=.25*D.y+.5*E+.25*O.y;return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(xu,{id:e,path:k,style:i,markerEnd:o}),r&&(0,x.jsx)(bd,{children:(0,x.jsx)(`div`,{style:th(A,j,s,c,l),children:r})})]})}function th(e,t,n,r,i){return{position:`absolute`,transform:`translate(-50%, -50%) translate(${e}px, ${t}px)`,pointerEvents:`none`,fontSize:n?.fontSize??10,fontWeight:n?.fontWeight??500,color:n?.fill??`#64748b`,background:r?.fill??`#fff`,opacity:r?.fillOpacity??.9,padding:`${i?.[1]??2}px ${i?.[0]??4}px`,borderRadius:4}}var nh={structural:`#dc2626`,descriptive:`#d97706`,cosmetic:`#64748b`},rh={width:`${.5*100}%`,flexShrink:0,background:`#fff`,borderLeft:`1px solid #e5e7eb`,display:`flex`,flexDirection:`column`,overflow:`hidden`},ih=(e,t={})=>e?{display:`flex`,flexDirection:`column`,...t}:{flex:1,overflow:`auto`,display:`flex`,flexDirection:`column`,...t},ah={display:`flex`,flexDirection:`column`,flexShrink:0,borderBottom:`1px solid #e5e7eb`},oh={background:`none`,border:`none`,cursor:`pointer`,padding:4,color:`#9ca3af`,fontSize:18,lineHeight:1,flexShrink:0,marginLeft:8},sh={padding:`10px 16px 6px`,fontSize:11,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.05em`,color:`#9ca3af`,background:`#f9fafb`,borderBottom:`1px solid #e5e7eb`},ch={padding:`2px 7px`,borderRadius:4,background:`#f1f5f9`,border:`1px solid #e2e8f0`,fontWeight:600},lh={entity:`#3b82f6`,property:`#22c55e`,shared_property:`#22c55e`,metric:`#8b5cf6`,group:`#f97316`,collapsed_group:`#f97316`},uh={entity:`detail.type.entity`,property:`detail.type.property`,shared_property:`detail.type.property`,metric:`detail.type.metric`,group:`detail.type.group`,collapsed_group:`detail.type.group`},dh=new Set([`group`,`collapsed_group`]),fh={entity:`#60a5fa`,metric:`#c084fc`,property:`#4ade80`,shared_property:`#4ade80`},ph={entity:(0,x.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 20 20`,fill:fh.entity,children:(0,x.jsx)(`path`,{d:`M10.362 1.093a.75.75 0 0 0-.724 0L2.523 5.018 10 9.143l7.477-4.125-7.115-3.925ZM18 6.443l-7.25 4v8.25l6.888-3.8A.75.75 0 0 0 18 14.25V6.443ZM9.25 18.693v-8.25l-7.25-4v7.807a.75.75 0 0 0 .362.643l6.888 3.8Z`})}),metric:(0,x.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 20 20`,fill:fh.metric,children:(0,x.jsx)(`path`,{d:`M15.5 2A1.5 1.5 0 0 0 14 3.5v13a1.5 1.5 0 0 0 1.5 1.5h1a1.5 1.5 0 0 0 1.5-1.5v-13A1.5 1.5 0 0 0 16.5 2h-1ZM9.5 6A1.5 1.5 0 0 0 8 7.5v9A1.5 1.5 0 0 0 9.5 18h1a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 10.5 6h-1ZM3.5 10A1.5 1.5 0 0 0 2 11.5v5A1.5 1.5 0 0 0 3.5 18h1A1.5 1.5 0 0 0 6 16.5v-5A1.5 1.5 0 0 0 4.5 10h-1Z`})}),property:(0,x.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 20 20`,fill:fh.property,children:(0,x.jsx)(`path`,{fillRule:`evenodd`,d:`M4.5 2A2.5 2.5 0 0 0 2 4.5v3.879a2.5 2.5 0 0 0 .732 1.767l7.5 7.5a2.5 2.5 0 0 0 3.536 0l3.878-3.878a2.5 2.5 0 0 0 0-3.536l-7.5-7.5A2.5 2.5 0 0 0 8.38 2H4.5ZM5 6a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z`,clipRule:`evenodd`})}),shared_property:(0,x.jsx)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 20 20`,fill:fh.shared_property,children:(0,x.jsx)(`path`,{fillRule:`evenodd`,d:`M4.5 2A2.5 2.5 0 0 0 2 4.5v3.879a2.5 2.5 0 0 0 .732 1.767l7.5 7.5a2.5 2.5 0 0 0 3.536 0l3.878-3.878a2.5 2.5 0 0 0 0-3.536l-7.5-7.5A2.5 2.5 0 0 0 8.38 2H4.5ZM5 6a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z`,clipRule:`evenodd`})}),group:(0,x.jsxs)(`svg`,{width:`12`,height:`12`,viewBox:`0 0 20 20`,fill:`none`,stroke:`#64748b`,strokeWidth:`2`,children:[(0,x.jsx)(`rect`,{x:`2.5`,y:`3.5`,width:`15`,height:`5`,rx:`1`}),(0,x.jsx)(`rect`,{x:`2.5`,y:`11.5`,width:`15`,height:`5`,rx:`1`})]})},mh=()=>(0,x.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`#9ca3af`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,x.jsx)(`path`,{d:`M15.75 5.25a3 3 0 013 3m3 0a6 6 0 01-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1121.75 8.25z`})});function hh({node:e,edge:t,change:n,changesOnly:r,graphData:i,isCollapsed:a,onToggleCollapse:o,onCollapseOthers:s,onExpandAll:c,onClose:l,selection:u,stacked:d}){let{t:f}=Ep();if(!d&&u&&u.length>1)return(0,x.jsx)(`div`,{style:{...rh,overflow:`auto`},children:u.map((e,t)=>(0,x.jsx)(hh,{node:e.node,change:e.change,changesOnly:r,graphData:i,isCollapsed:a,onToggleCollapse:o,onCollapseOthers:s,onExpandAll:c,onClose:t===0?l:void 0,stacked:!0},e.key))});if(t)return(0,x.jsx)(gh,{edge:t,graphData:i,onClose:l,stacked:d});if(!e&&n)return(0,x.jsx)(_h,{change:n,onClose:l,stacked:d});if(!e)return null;let p=e.type||`entity`,m=_m[e.data.diff],h=m?m.color:lh[p]||lh.entity,{label:g,description:_,link:v}=e.data,y=dh.has(p);return(0,x.jsxs)(`div`,{style:d?ah:rh,children:[(0,x.jsx)(`div`,{style:{height:4,background:h,flexShrink:0}}),(0,x.jsxs)(`div`,{style:{padding:`16px 16px 12px`,borderBottom:`1px solid #e5e7eb`,flexShrink:0},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`flex-start`},children:[(0,x.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,x.jsx)(`div`,{style:{fontSize:11,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.05em`,color:h,marginBottom:4},children:f(uh[p]||`detail.type.entity`)}),v?(0,x.jsx)(`a`,{href:v,style:{fontSize:16,fontWeight:700,color:`#111827`,wordBreak:`break-word`,textDecoration:`none`,display:`block`},onMouseOver:e=>e.currentTarget.style.color=h,onMouseOut:e=>e.currentTarget.style.color=`#111827`,children:g}):(0,x.jsx)(`div`,{style:{fontSize:16,fontWeight:700,color:`#111827`,wordBreak:`break-word`},children:g})]}),l?(0,x.jsx)(`button`,{onClick:l,style:oh,title:f(`detail.close`),children:`✕`}):null]}),e.data.unresolved&&(0,x.jsxs)(`div`,{style:{marginTop:8,padding:`8px 11px`,borderRadius:6,background:`#fef2f2`,border:`1px solid #fecaca`,fontSize:12.5,color:`#b91c1c`,lineHeight:1.5},children:[f(`detail.unresolved`),e.data.removedBy&&(0,x.jsx)(`div`,{style:{marginTop:6},children:(0,x.jsx)(`a`,{href:e.data.removedBy.link,style:{color:`#b91c1c`,fontWeight:700,textDecoration:`underline`},children:f(`detail.unresolvedRemovedBy`)})})]}),e.data.externalNamespace&&(0,x.jsxs)(`div`,{style:{marginTop:8,display:`inline-flex`,alignItems:`center`,gap:5,padding:`3px 9px`,borderRadius:999,background:`#f1f5f9`,border:`1px dashed #cbd5e1`,fontSize:12,fontWeight:600,color:`#475569`},children:[`↗ `,f(`detail.externalNamespace`,{namespace:e.data.externalNamespace})]}),_&&(0,x.jsx)(`div`,{style:{marginTop:8,fontSize:13,color:`#6b7280`,lineHeight:1.5},children:_}),v&&(0,x.jsx)(`a`,{href:v,style:{display:`inline-flex`,alignItems:`center`,gap:4,marginTop:10,fontSize:12,fontWeight:500,color:h,textDecoration:`none`},onMouseOver:e=>e.currentTarget.style.textDecoration=`underline`,onMouseOut:e=>e.currentTarget.style.textDecoration=`none`,children:f(`detail.openDetails`)})]}),y?(0,x.jsx)(Gh,{node:e,graphData:i,isCollapsed:a,onToggleCollapse:o,onCollapseOthers:s,onExpandAll:c}):(0,x.jsxs)(`div`,{style:ih(d),children:[(0,x.jsx)(Sh,{detail:e.data.diffDetail}),(0,x.jsx)(Wh,{node:e,changesOnly:r}),(0,x.jsx)(vh,{relationships:n?.externalId===e.data?.externalId?n.relationships:null}),(0,x.jsx)(yh,{evidence:e.data.evidence,missing:e.data.evidenceMissing}),(0,x.jsx)(bh,{overlaps:e.data.overlaps}),(0,x.jsx)(xh,{consumers:e.data.consumers})]})]})}function gh({edge:e,graphData:t,onClose:n,stacked:r}){let{t:i}=Ep(),a=e.data?.diffDetail??e.diffDetail,o=_m[e.data?.diff??e.diff],s=o?o.color:`#64748b`,c=e=>t?.nodes?.find(t=>t.id===e)?.data?.label||e;return(0,x.jsxs)(`div`,{style:r?ah:rh,children:[(0,x.jsx)(`div`,{style:{height:4,background:s,flexShrink:0}}),(0,x.jsxs)(`div`,{style:{padding:`16px 16px 12px`,borderBottom:`1px solid #e5e7eb`,flexShrink:0},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`flex-start`},children:[(0,x.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,x.jsx)(`div`,{style:{fontSize:11,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.05em`,color:s,marginBottom:4},children:i(`detail.type.relationship`)}),(0,x.jsx)(`div`,{style:{fontSize:16,fontWeight:700,color:`#111827`,wordBreak:`break-word`},children:e.data?.label||e.label})]}),n?(0,x.jsx)(`button`,{onClick:n,style:oh,title:i(`detail.close`),children:`✕`}):null]}),(0,x.jsxs)(`div`,{style:{marginTop:10,display:`flex`,alignItems:`center`,gap:6,flexWrap:`wrap`,fontSize:12,color:`#374151`},children:[(0,x.jsx)(`span`,{style:ch,children:c(e.source)}),(0,x.jsx)(`span`,{style:{color:`#9ca3af`},children:`→`}),(0,x.jsx)(`span`,{style:ch,children:c(e.target)})]})]}),(0,x.jsxs)(`div`,{style:ih(r),children:[(0,x.jsx)(Sh,{detail:a}),(0,x.jsx)(yh,{evidence:e.data?.evidence??e.evidence,missing:e.data?.evidenceMissing??e.evidenceMissing})]})]})}function _h({change:e,onClose:t,stacked:n}){let{t:r}=Ep(),i=_m[e.op]||_m.modify;return(0,x.jsxs)(`div`,{style:n?ah:rh,children:[(0,x.jsx)(`div`,{style:{height:4,background:i.color,flexShrink:0}}),(0,x.jsx)(`div`,{style:{padding:`16px 16px 12px`,borderBottom:`1px solid #e5e7eb`,flexShrink:0},children:(0,x.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`flex-start`},children:[(0,x.jsxs)(`div`,{style:{flex:1,minWidth:0},children:[(0,x.jsx)(`div`,{style:{fontSize:11,fontWeight:600,letterSpacing:`0.05em`,textTransform:`uppercase`,color:`#6b7280`},children:e.elementType}),(0,x.jsx)(`div`,{style:{fontSize:16,fontWeight:700,color:`#111827`,wordBreak:`break-word`},children:e.name||e.externalId})]}),t?(0,x.jsx)(`button`,{onClick:t,style:oh,"aria-label":`Close`,children:`×`}):null]})}),(0,x.jsxs)(`div`,{style:ih(n),children:[(0,x.jsx)(Sh,{detail:{op:e.op,impact:e.impact?.toLowerCase(),fields:e.fields||[]}}),(0,x.jsx)(yh,{evidence:e.evidence,missing:!e.evidence||e.evidence.length===0})]})]})}function vh({relationships:e}){let{t}=Ep();if(!e||e.length===0)return null;let n={add:`#15803d`,remove:`#b91c1c`,modify:`#b45309`};return(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`div`,{style:sh,children:[t(`detail.relationshipChanges`,`Relationships`),` (`,e.length,`)`]}),e.map(e=>(0,x.jsxs)(`div`,{style:{padding:`8px 16px`,borderBottom:`1px solid #f3f4f6`},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`baseline`,gap:8},children:[(0,x.jsx)(`span`,{style:{fontSize:10,fontWeight:700,textTransform:`uppercase`,letterSpacing:`0.05em`,color:n[e.op]||`#6b7280`,flexShrink:0},children:t(`detail.op.`+e.op,e.op)}),(0,x.jsx)(`span`,{style:{fontSize:12.5,color:`#374151`,overflowWrap:`anywhere`},children:e.from&&e.to?`${e.from} → ${e.to}`:e.name||e.externalId})]}),e.fields?.map(e=>(0,x.jsxs)(`div`,{style:{marginTop:4},children:[(0,x.jsx)(`div`,{style:{fontSize:10,fontWeight:700,textTransform:`uppercase`,letterSpacing:`0.04em`,color:`#6b7280`},children:e.field}),(0,x.jsx)(Uh,{field:e.field,before:e.before,after:e.after,base:e.base})]},e.field))]},e.externalId))]})}function yh({evidence:e,missing:t}){let{t:n}=Ep(),r=e||[];return r.length===0&&!t?null:r.length===0?(0,x.jsxs)(`div`,{style:{borderBottom:`1px solid #e5e7eb`},children:[(0,x.jsx)(`div`,{style:sh,children:n(`detail.evidence.heading`)}),(0,x.jsx)(`div`,{style:{background:`#fffbeb`,padding:`10px 16px`,fontSize:12.5,color:`#78350f`,lineHeight:1.5},children:n(`detail.evidence.none`)})]}):(0,x.jsxs)(`div`,{style:{borderBottom:`1px solid #e5e7eb`},children:[(0,x.jsxs)(`div`,{style:sh,children:[n(`detail.evidence.heading`),` (`,r.length,`)`]}),(0,x.jsx)(`div`,{style:{padding:`10px 16px 12px`,display:`flex`,flexDirection:`column`,gap:10},children:r.map((e,t)=>(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`blockquote`,{style:{margin:0,padding:`6px 0 6px 10px`,borderLeft:`3px solid #cbd5e1`,fontSize:12.5,lineHeight:1.5,color:`#334155`,fontStyle:`italic`},children:e.quote}),e.label&&(0,x.jsx)(`div`,{style:{marginTop:3,fontSize:11.5,color:e.resolvable===!1?`#b45309`:`#64748b`},children:e.label}),e.resolvable===!1&&(0,x.jsx)(`div`,{style:{marginTop:2,fontSize:11.5,color:`#b45309`},children:n(`detail.evidence.unresolvable`)})]},t))})]})}function bh({overlaps:e}){let{t}=Ep();return!e||e.length===0?null:(0,x.jsxs)(`div`,{style:{borderBottom:`1px solid #e5e7eb`,background:`#eef2ff`},children:[(0,x.jsxs)(`div`,{style:{...sh,background:`transparent`,borderBottom:`none`,color:`#4338ca`},children:[t(`detail.overlap.heading`),` (`,e.length,`)`]}),(0,x.jsx)(`div`,{style:{padding:`0 16px 12px`,fontSize:12.5,color:`#3730a3`,lineHeight:1.5},children:t(`detail.overlap.description`)}),(0,x.jsx)(`div`,{style:{padding:`0 16px 12px`},children:e.map(e=>(0,x.jsxs)(`div`,{style:{fontSize:13,marginTop:2},children:[(0,x.jsx)(`a`,{href:e.link,style:{color:`#4338ca`,fontWeight:600,textDecoration:`none`},onMouseOver:e=>e.currentTarget.style.textDecoration=`underline`,onMouseOut:e=>e.currentTarget.style.textDecoration=`none`,children:t(`detail.overlap.view`)}),e.teamName&&(0,x.jsxs)(`span`,{style:{color:`#4f46e5`},children:[` · `,e.teamName]})]},e.changeRequestExternalId))})]})}function xh({consumers:e}){let{t}=Ep();if(!e||e.total===0)return null;let n=[[`relationship`,e.relationships],[`dataProduct`,e.dataProducts],[`dataContract`,e.dataContracts]].filter(([,e])=>e&&e.length>0);return(0,x.jsxs)(`div`,{style:{borderBottom:`1px solid #e5e7eb`,background:`#fffbeb`},children:[(0,x.jsxs)(`div`,{style:{...sh,background:`transparent`,borderBottom:`none`,color:`#92400e`},children:[t(`detail.consumers.heading`),` (`,e.total,`)`]}),(0,x.jsx)(`div`,{style:{padding:`0 16px 12px`,fontSize:12.5,color:`#78350f`,lineHeight:1.5},children:t(`detail.consumers.description`)}),n.map(([e,n])=>(0,x.jsxs)(`div`,{style:{padding:`0 16px 10px`},children:[(0,x.jsx)(`div`,{style:{fontSize:10.5,fontWeight:700,textTransform:`uppercase`,letterSpacing:`0.04em`,color:`#b45309`,marginBottom:4},children:t(`detail.consumers.${e}`)}),n.map((e,t)=>(0,x.jsxs)(`div`,{style:{fontSize:13,marginTop:2},children:[e.link?(0,x.jsx)(`a`,{href:e.link,style:{color:`#92400e`,fontWeight:600,textDecoration:`none`},onMouseOver:e=>e.currentTarget.style.textDecoration=`underline`,onMouseOut:e=>e.currentTarget.style.textDecoration=`none`,children:e.label}):(0,x.jsx)(`span`,{style:{color:`#92400e`,fontWeight:600},children:e.label}),e.namespace&&(0,x.jsxs)(`span`,{style:{color:`#b45309`,fontWeight:400},children:[` · `,e.namespace]})]},t))]},e))]})}function Sh({detail:e}){let{t}=Ep();if(!e)return null;let n=_m[e.op]||_m.modify,r=nh[e.impact]||nh.cosmetic;return(0,x.jsxs)(`div`,{style:{borderBottom:`1px solid #e5e7eb`,background:`${n.color}08`},children:[(0,x.jsxs)(`div`,{style:{padding:`12px 16px`},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,flexWrap:`wrap`},children:[(0,x.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:5,padding:`3px 9px`,borderRadius:999,background:n.color,color:`#fff`,fontSize:11,fontWeight:700,letterSpacing:`0.02em`},children:[(0,x.jsx)(`span`,{style:{fontSize:12,lineHeight:1},children:n.symbol}),t(`detail.diff.op.${e.op}`)]}),(0,x.jsx)(`span`,{style:{padding:`3px 9px`,borderRadius:999,border:`1px solid ${r}`,color:r,fontSize:11,fontWeight:600},title:t(`detail.diff.impactHint.${e.impact}`),children:t(`detail.diff.impact.${e.impact}`)})]}),(0,x.jsx)(`div`,{style:{marginTop:8,fontSize:12.5,color:`#4b5563`,lineHeight:1.5},children:t(`detail.diff.summary.${e.op}`)})]}),e.fields?.length>0&&(0,x.jsx)(`div`,{style:{padding:`0 16px 14px`,display:`flex`,flexDirection:`column`,gap:10},children:e.fields.map(e=>(0,x.jsx)(Ch,{change:e},e.field))})]})}function Ch({change:e}){let{t}=Ep();return(0,x.jsxs)(`div`,{style:{background:`#fff`,border:`1px solid #e5e7eb`,borderLeft:`3px solid ${nh[e.impact]||nh.cosmetic}`,borderRadius:5,padding:`9px 11px`},children:[(0,x.jsx)(`div`,{style:{fontSize:11,fontWeight:700,textTransform:`uppercase`,letterSpacing:`0.04em`,color:`#6b7280`,marginBottom:7},children:e.field}),(0,x.jsx)(Uh,{field:e.field,before:e.before,after:e.after,base:e.base})]})}var wh={red:[`#fef2f2`,`#b91c1c`,`#fecaca`],orange:[`#fff7ed`,`#c2410c`,`#fed7aa`],amber:[`#fffbeb`,`#b45309`,`#fde68a`],yellow:[`#fefce8`,`#854d0e`,`#fef08a`],green:[`#f0fdf4`,`#15803d`,`#bbf7d0`],teal:[`#f0fdfa`,`#0f766e`,`#99f6e4`],blue:[`#eff6ff`,`#1d4ed8`,`#bfdbfe`],indigo:[`#eef2ff`,`#4338ca`,`#c7d2fe`],purple:[`#faf5ff`,`#7e22ce`,`#e9d5ff`],pink:[`#fdf2f8`,`#be185d`,`#fbcfe8`],gray:[`#f9fafb`,`#4b5563`,`#e5e7eb`]};function Th({value:e,strike:t}){let n=!!e.href&&!t,r=e.display===`badge`?(0,x.jsx)(Eh,{badge:e,strike:t}):(0,x.jsx)(`span`,{style:{...Ih(`same`),...n?{color:`#4338ca`,borderColor:`#c7d2fe`,background:`#eef2ff`}:{},textDecoration:t?`line-through`:n?`underline`:`none`,textUnderlineOffset:2},children:e.label});return e.href?(0,x.jsx)(`a`,{href:e.href,title:e.label,style:{textDecoration:`none`,display:`inline-flex`,borderRadius:6},onMouseOver:e=>{e.currentTarget.style.opacity=.75},onMouseOut:e=>{e.currentTarget.style.opacity=1},children:r}):r}function Eh({badge:e,strike:t}){let[n,r,i]=wh[(e.color||`gray`).toLowerCase()]||wh.gray;return(0,x.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:4,borderRadius:6,padding:`2px 8px`,fontSize:11.5,fontWeight:500,background:n,color:r,border:`1px solid ${i}`,marginTop:3,textDecoration:t?`line-through`:`none`},children:[e.icon?(0,x.jsx)(`span`,{style:{width:14,height:14,display:`inline-flex`},dangerouslySetInnerHTML:{__html:e.icon}}):null,e.label]})}var Dh={de:`🇩🇪`,fr:`🇫🇷`,es:`🇪🇸`,it:`🇮🇹`,nl:`🇳🇱`,pt:`🇵🇹`,pl:`🇵🇱`,en:`🇬🇧`};function Oh({name:e}){let t=e.lastIndexOf(`@`);if(t<0)return(0,x.jsx)(`span`,{style:{fontFamily:`ui-monospace, SFMono-Regular, Menlo, monospace`,fontSize:11,color:`#6b7280`,marginRight:12},children:e});let n=e.slice(0,t),r=e.slice(t+1).toLowerCase();return(0,x.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:8,marginRight:12},children:[(0,x.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:5,borderRadius:4,border:`1px solid #e5e7eb`,background:`#fff`,padding:`2px 7px`,fontSize:11,color:`#374151`},children:[(0,x.jsx)(`span`,{children:Dh[r]||`🌐`}),(0,x.jsx)(`span`,{style:{fontWeight:600,letterSpacing:`0.04em`},children:r.toUpperCase()})]}),(0,x.jsx)(`span`,{style:{fontSize:11,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.04em`,color:`#6b7280`},children:n})]})}var kh=new Set([`status`,`kind`,`element_type`,`better_when`]),Ah=new Set([`pattern`,`formula`,`iri`,`data_type`,`extends`,`unit`]),jh=e=>e==null||e===``||Array.isArray(e)&&e.length===0,Mh=e=>Array.isArray(e),Nh=e=>typeof e==`object`&&!!e&&!Array.isArray(e)&&!e.display,Ph=e=>typeof e==`boolean`,Fh=e=>typeof e==`object`&&!!e&&typeof e.display==`string`,Ih=e=>({display:`inline-block`,fontSize:11.5,padding:`1px 7px`,borderRadius:4,border:`1px solid`,marginRight:4,marginTop:3,...e===`add`?{color:`#15803d`,borderColor:`#bbf7d0`,background:`#f0fdf4`}:e===`remove`?{color:`#b91c1c`,borderColor:`#fecaca`,background:`#fef2f2`,textDecoration:`line-through`}:{color:`#374151`,borderColor:`#e5e7eb`,background:`#f9fafb`}});function Lh({value:e,kind:t,mono:n}){let{t:r}=Ep();return Fh(e)?(0,x.jsx)(Th,{value:e,strike:t===`remove`}):jh(e)?(0,x.jsx)(`span`,{style:{...Ih(`same`),color:`#9ca3af`,fontStyle:`italic`},children:r(`detail.diff.unset`)}):(0,x.jsx)(`span`,{style:{...Ih(t),...n?{fontFamily:`ui-monospace, SFMono-Regular, Menlo, monospace`,maxWidth:`100%`,overflowWrap:`anywhere`}:{}},children:String(e)})}function Rh({before:e,after:t,mono:n}){return(0,x.jsxs)(`div`,{style:{marginTop:3,display:`flex`,alignItems:`center`,gap:4,flexWrap:`wrap`},children:[(0,x.jsx)(Lh,{value:e,kind:`remove`,mono:n}),(0,x.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:4,minWidth:0,maxWidth:`100%`},children:[(0,x.jsx)(`span`,{style:{color:`#9ca3af`,fontSize:12},children:`→`}),(0,x.jsx)(Lh,{value:t,kind:`add`,mono:n})]})]})}function zh({before:e,after:t}){let n=e=>Fh(e)?`d:${e.display}:${e.label}`:String(e),r=(e||[]).map(n),i=(t||[]).map(n),a=new Map([...e||[],...t||[]].map(e=>[n(e),e])),o=(e,t)=>(0,x.jsx)(Lh,{value:a.get(e),kind:t},t+e),s=r.filter(e=>!i.includes(e)),c=i.filter(e=>!r.includes(e));return(0,x.jsxs)(`div`,{style:{marginTop:3},children:[i.filter(e=>r.includes(e)).map(e=>o(e,`same`)),s.map(e=>o(e,`remove`)),c.map(e=>o(e,`add`))]})}function Bh({before:e,after:t}){let n=Nh(e)?e:{},r=Nh(t)?t:{},i=[...new Set([...Object.keys(n),...Object.keys(r)])].filter(e=>e!==`evidence`).sort().filter(e=>JSON.stringify(n[e])!==JSON.stringify(r[e]));return i.length===0?null:(0,x.jsx)(`div`,{style:{marginTop:3},children:i.map(e=>(0,x.jsxs)(`div`,{style:{marginTop:10},children:[(0,x.jsx)(Oh,{name:e}),jh(n[e])?(0,x.jsx)(Lh,{value:r[e],kind:`add`}):jh(r[e])?(0,x.jsx)(Lh,{value:n[e],kind:`remove`}):Fh(n[e])||Fh(r[e])?(0,x.jsx)(Rh,{before:n[e],after:r[e]}):(0,x.jsx)(Vh,{before:n[e],after:r[e]})]},e))})}function Vh({before:e,after:t,base:n}){let{t:r}=Ep();return(0,x.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`repeat(auto-fit, minmax(175px, 1fr))`,gap:10,marginTop:3},children:[n!=null&&(0,x.jsx)(Hh,{label:r(`detail.diff.base`,`Was`),value:n,color:`#6b7280`}),(0,x.jsx)(Hh,{label:r(`detail.diff.before`),value:e,color:`#dc2626`,strike:!0}),(0,x.jsx)(Hh,{label:r(`detail.diff.after`),value:t,color:`#16a34a`})]})}function Hh({label:e,value:t,color:n,strike:r}){let{t:i}=Ep(),a=t==null||t===``;return(0,x.jsxs)(`div`,{style:{minWidth:0},children:[(0,x.jsx)(`div`,{style:{fontSize:10,fontWeight:700,textTransform:`uppercase`,letterSpacing:`0.04em`,color:n,marginBottom:3},children:e}),(0,x.jsx)(`div`,{style:{fontSize:12.5,lineHeight:1.5,color:a?`#9ca3af`:`#374151`,fontStyle:a?`italic`:`normal`,textDecoration:!a&&r?`line-through`:`none`,overflowWrap:`anywhere`},children:a?i(`detail.diff.unset`):String(t)})]})}function Uh({field:e,before:t,after:n,base:r}){let i=r!=null;if(!i){if(Fh(t)||Fh(n))return(0,x.jsx)(Rh,{before:t,after:n});if(Nh(t)||Nh(n))return(0,x.jsx)(Bh,{before:t,after:n});if(Mh(t)||Mh(n))return(0,x.jsx)(zh,{before:t,after:n});if(Ph(t)||Ph(n)||kh.has(e))return(0,x.jsx)(Rh,{before:t,after:n})}return!i&&Ah.has(e)?(0,x.jsx)(Rh,{before:t,after:n,mono:!0}):(0,x.jsx)(Vh,{before:t,after:n,base:r})}function Wh({node:e,changesOnly:t}){let{t:n}=Ep(),{description:r,properties:i=[]}=e.data,a=i.filter(e=>!e.inherited),o=i.filter(e=>e.inherited);return(0,x.jsxs)(`div`,{children:[a.length>0&&(0,x.jsx)(Jh,{title:n(`detail.properties`),properties:a,count:a.length,changesOnly:t}),o.length>0&&(0,x.jsx)(Jh,{title:n(`detail.inherited`),properties:o,count:o.length,inherited:!0,changesOnly:t}),i.length===0&&!r&&(0,x.jsx)(`div`,{style:{padding:16,fontSize:13,color:`#9ca3af`,textAlign:`center`},children:n(`detail.noProperties`)})]})}function Gh({node:e,graphData:t,isCollapsed:n,onToggleCollapse:r,onCollapseOthers:i,onExpandAll:a}){let{t:o}=Ep(),s=(t?.nodes||[]).filter(t=>t.parentId===e.id);s.filter(e=>e.type===`group`);let c=(()=>{new Map((t?.nodes||[]).map(e=>[e.id,e]));let n=new Map;(t?.nodes||[]).forEach(e=>{e.parentId&&(n.has(e.parentId)||n.set(e.parentId,[]),n.get(e.parentId).push(e))});let r=0,i=[e.id];for(;i.length;){let e=i.pop();(n.get(e)||[]).forEach(e=>{i.push(e.id),e.type!==`group`&&r++})}return r})();return(0,x.jsxs)(`div`,{style:{flex:1,overflow:`auto`,padding:`0`},children:[(0,x.jsxs)(`div`,{style:{padding:`12px 16px`,display:`flex`,flexDirection:`column`,gap:6,borderBottom:`1px solid #e5e7eb`},children:[(0,x.jsx)(Kh,{onClick:()=>r?.(e.id),label:o(n?`detail.expandThisGroup`:`detail.collapseThisGroup`),accent:`#4f46e5`}),(0,x.jsx)(Kh,{onClick:()=>i?.(e.id),label:`Collapse other groups at this level`}),(0,x.jsx)(Kh,{onClick:()=>a?.(),label:`Expand all groups`})]}),(0,x.jsxs)(`div`,{style:{padding:`10px 16px 6px`,fontSize:11,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.05em`,color:`#9ca3af`,background:`#f9fafb`,borderBottom:`1px solid #e5e7eb`},children:[o(`detail.members`,{count:s.length}),c===s.length?``:o(`detail.membersTotal`,{total:c})]}),s.length===0?(0,x.jsx)(`div`,{style:{padding:16,fontSize:13,color:`#9ca3af`,textAlign:`center`},children:o(`detail.noMembers`)}):s.map(e=>(0,x.jsx)(qh,{member:e},e.id))]})}function Kh({onClick:e,label:t,accent:n}){return(0,x.jsx)(`button`,{type:`button`,onClick:e,style:{textAlign:`left`,padding:`7px 10px`,border:`1px solid #e5e7eb`,borderRadius:6,background:`#fff`,cursor:`pointer`,fontSize:13,fontWeight:500,color:n||`#374151`,transition:`background 0.12s, border-color 0.12s`},onMouseOver:e=>{e.currentTarget.style.background=`#f9fafb`,e.currentTarget.style.borderColor=`#cbd5e1`},onMouseOut:e=>{e.currentTarget.style.background=`#fff`,e.currentTarget.style.borderColor=`#e5e7eb`},children:t})}function qh({member:e}){let{t}=Ep(),n=e.type||`entity`,r=t(uh[n]||`detail.type.entity`),i=ph[n]||ph.entity,{label:a,link:o}=e.data||{},s=(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8,padding:`7px 16px`,borderBottom:`1px solid #f3f4f6`,fontSize:13,color:`#374151`},children:[(0,x.jsx)(`span`,{style:{flexShrink:0,display:`flex`},children:i}),(0,x.jsx)(`span`,{style:{flex:1,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:a||e.id}),(0,x.jsx)(`span`,{style:{fontSize:10,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.05em`,color:`#9ca3af`,flexShrink:0},children:r})]});return o?(0,x.jsx)(`a`,{href:o,style:{textDecoration:`none`,color:`inherit`,display:`block`},onMouseOver:e=>e.currentTarget.style.background=`#f9fafb`,onMouseOut:e=>e.currentTarget.style.background=`transparent`,children:s}):s}function Jh({title:e,properties:t,count:n,inherited:r,changesOnly:i}){let{t:a}=Ep(),o=t.filter(e=>e.diff),s=i?o:t;return s.length===0?null:(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`div`,{style:sh,children:[e,` (`,n,o.length>0?a(`detail.propertiesChanged`,{count:o.length}):``,`)`]}),s.map((e,t)=>(0,x.jsxs)(`div`,{style:{padding:`7px 16px`,borderBottom:`1px solid #f3f4f6`,background:e.diff?`${_m[e.diff]?.color??`#94a3b8`}08`:`transparent`},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,alignItems:`center`,gap:8},children:[(0,x.jsx)(`span`,{style:{fontSize:13,fontWeight:e.diff?700:500,color:e.diff?_m[e.diff]?.color??`#374151`:r?`#9ca3af`:`#374151`,fontStyle:r?`italic`:`normal`,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`,flex:1,minWidth:0},children:e.name}),(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:4,flexShrink:0},children:[e.type&&(0,x.jsx)(`span`,{style:{fontSize:11,color:`#9ca3af`,background:`#f3f4f6`,padding:`1px 6px`,borderRadius:3},children:e.type}),e.shared&&(0,x.jsx)(`span`,{style:{fontSize:10,fontWeight:600,textTransform:`uppercase`,letterSpacing:`0.04em`,color:`#6366f1`,border:`1px solid #c7d2fe`,borderRadius:3,padding:`0 4px`},children:a(`detail.shared`,`shared`)}),e.primaryKey&&(0,x.jsx)(mh,{}),e.diff&&(0,x.jsx)(`span`,{style:{fontSize:10,fontWeight:700,textTransform:`uppercase`,letterSpacing:`0.04em`,color:_m[e.diff]?.color??`#374151`},children:_m[e.diff]?.label})]})]}),e.description&&(0,x.jsx)(`div`,{style:{fontSize:11,color:`#6b7280`,marginTop:2,lineHeight:1.4},children:e.description}),e.diffDetail?.fields?.length>0&&(0,x.jsx)(`div`,{style:{marginTop:5},children:e.diffDetail.fields.map(e=>(0,x.jsxs)(`div`,{style:{marginTop:3},children:[(0,x.jsx)(`div`,{style:{fontSize:10,fontWeight:700,textTransform:`uppercase`,letterSpacing:`0.04em`,color:`#6b7280`},children:e.field}),(0,x.jsx)(Uh,{field:e.field,before:e.before,after:e.after,base:e.base})]},e.field))})]},t))]})}var Yh={accepted:{text:`#15803d`,badge:`#dcfce7`,tint:`#f6fefa`},rejected:{text:`#b91c1c`,badge:`#fee2e2`,tint:`#fffafa`}},Xh={structural:`#dc2626`,descriptive:`#d97706`,cosmetic:`#64748b`},Zh={width:300,flexShrink:0,background:`#fff`,borderRight:`1px solid #e5e7eb`,display:`flex`,flexDirection:`column`,overflow:`hidden`},Qh={fontSize:11,fontWeight:600,letterSpacing:`0.05em`,textTransform:`uppercase`,color:`#6b7280`};function $h({changes:e,targetName:t,selectedIds:n,onSelectionChange:r,onFocus:i,onDecide:a}){let{t:o}=Ep(),s=(0,y.useMemo)(()=>new Set(e.filter(e=>e.decidable!==!1&&!e.decision).map(e=>e.externalId)),[e]),c=(0,y.useMemo)(()=>new Set(e.filter(e=>e.decidable!==!1).map(e=>e.externalId)),[e]),l=(0,y.useMemo)(()=>[...n].filter(e=>c.has(e)),[n,c]),u=(0,y.useMemo)(()=>l.filter(t=>e.find(e=>e.externalId===t)?.decision),[l,e]),d=(0,y.useMemo)(()=>e.filter(e=>e.decision===`accepted`).length,[e]),f=(0,y.useMemo)(()=>e.filter(e=>e.decision===`rejected`).length,[e]);if(!e||e.length===0)return null;let p=(e,t)=>{let i=new Set(t?n:[]);n.has(e)&&t?i.delete(e):i.add(e),r(i)};return(0,x.jsxs)(`div`,{style:Zh,"data-testid":`review-panel`,children:[(0,x.jsx)(`div`,{style:{height:4,background:`#6366f1`,flexShrink:0}}),(0,x.jsxs)(`div`,{style:{padding:`16px 16px 12px`,borderBottom:`1px solid #e5e7eb`,flexShrink:0},children:[(0,x.jsx)(`div`,{style:Qh,children:o(`review.eyebrow`,`Proposal`)}),(0,x.jsx)(`div`,{style:{fontSize:16,fontWeight:700,color:`#111827`,marginTop:2},children:o(`review.pending`,`{{count}} to review`,{count:s.size})}),d||f?(0,x.jsxs)(`div`,{style:{fontSize:12,color:`#6b7280`,marginTop:3,display:`flex`,gap:10},children:[d?(0,x.jsx)(`span`,{style:{color:Yh.accepted.text},children:o(`review.summary.accepted`,`{{count}} accepted`,{count:d})}):null,f?(0,x.jsx)(`span`,{style:{color:Yh.rejected.text},children:o(`review.summary.rejected`,`{{count}} rejected`,{count:f})}):null]}):null]}),(0,x.jsx)(`div`,{style:{flex:1,overflow:`auto`,padding:8},children:e.map(e=>{let r=_m[e.op]||_m.modify,a=n.has(e.externalId),s=!!e.decision,c=e.evidence?.some(e=>e.resolvable===!1);return(0,x.jsxs)(`div`,{"data-testid":`review-card`,"data-external-id":e.externalId,onClick:t=>{p(e.externalId,t.metaKey||t.ctrlKey||t.shiftKey),i?.(e.externalId)},style:{border:`1px solid ${a?`#6366f1`:`#e5e7eb`}`,boxShadow:a?`0 0 0 1px #6366f1`:`none`,borderRadius:6,padding:`8px 10px`,marginBottom:6,cursor:`pointer`,opacity:e.decidable===!1&&!s?.75:1,background:s?Yh[e.decision]?.tint||`#fff`:e.decidable===!1?`#fafafa`:`#fff`},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:6},children:[(0,x.jsx)(`span`,{style:{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:16,height:16,border:`1px solid ${r.color}`,borderRadius:4,color:r.color,fontSize:11,lineHeight:1,flexShrink:0},children:r.symbol}),(0,x.jsx)(`span`,{style:{fontWeight:600,color:`#111827`,flex:1,minWidth:0,wordBreak:`break-word`},children:e.name||e.externalId}),e.impact?(0,x.jsx)(`span`,{style:{flexShrink:0,fontSize:10,fontWeight:700,textTransform:`uppercase`,letterSpacing:`0.04em`,color:Xh[e.impact]||Xh.cosmetic},children:o(`review.impact.${e.impact}`,e.impact)}):null]}),e.owningTeam?(0,x.jsxs)(`div`,{style:{fontSize:11,color:`#6b7280`,marginTop:2,display:`flex`,alignItems:`center`,gap:4},children:[e.owner?.iconUrl?(0,x.jsx)(`img`,{src:e.owner.iconUrl,alt:``,"aria-hidden":`true`,style:{width:14,height:14,flexShrink:0,objectFit:`contain`}}):e.owner?.icon?(0,x.jsx)(`span`,{style:{width:14,height:14,display:`inline-flex`,flexShrink:0},dangerouslySetInnerHTML:{__html:e.owner.icon}}):null,e.owner?.label||e.owningTeam,e.decidable===!1&&!e.decision?(0,x.jsxs)(`span`,{style:{color:e.blockedBy===`conflict`?`#b45309`:`#9ca3af`},children:[` · `,e.blockedBy===`conflict`?o(`review.frozenByConflict`,`frozen by a conflict`):o(`review.notYours`,`{{team}}'s to decide`,{team:e.owningTeam})]}):null]}):null,e.conflictReason?(0,x.jsxs)(`div`,{style:{marginTop:4,fontSize:11,color:`#92400e`,background:`#fffbeb`,border:`1px solid #fde68a`,borderRadius:4,padding:`2px 6px`},children:[o(`review.conflict.`+e.conflictReason,{target:t||o(`review.conflict.target`)}),e.conflictSource?(0,x.jsxs)(x.Fragment,{children:[` `+o(`review.conflict.by`)+` `,(0,x.jsx)(`a`,{href:e.conflictSource.href,onClick:e=>e.stopPropagation(),style:{color:`#92400e`,fontWeight:600,textDecoration:`underline`,textUnderlineOffset:2},children:e.conflictSource.label})]}):null]}):null,e.evidence?.length?(0,x.jsx)(`div`,{style:{marginTop:4},children:(0,x.jsx)(`span`,{style:{display:`inline-block`,borderRadius:4,padding:`1px 7px`,fontSize:11,fontWeight:600,color:c?`#b45309`:`#047857`,background:c?`#fffbeb`:`#ecfdf5`},title:e.evidence.map(e=>e.quote).join(` - -`),children:c?o(`review.citedUnresolvable`,`Cited, not re-checkable`):o(`review.cited`,`Cited`)})}):null,e.mergeNotes?.map(e=>(0,x.jsx)(`div`,{style:{fontSize:11,color:`#b45309`,marginTop:4},children:e},e)),e.decision?(0,x.jsx)(`div`,{style:{marginTop:5},children:(0,x.jsx)(`span`,{style:{display:`inline-block`,borderRadius:4,padding:`1px 7px`,fontSize:11,fontWeight:600,color:Yh[e.decision]?.text||`#374151`,background:Yh[e.decision]?.badge||`#f3f4f6`},children:o(`review.decision.${e.decision}`,e.decision)})}):null]},e.externalId||`__namespace__`)})}),a&&l.length>0?(0,x.jsxs)(`div`,{style:{borderTop:`1px solid #e5e7eb`,padding:`12px 16px`,flexShrink:0},children:[(0,x.jsxs)(`div`,{style:{fontSize:11,color:`#6b7280`,marginBottom:8},children:[n.size===l.length?o(`review.selected`,`{{count}} selected`,{count:n.size}):o(`review.selectedPartial`,`{{total}} selected, {{count}} you can decide`,{total:n.size,count:l.length}),u.length?(0,x.jsxs)(`span`,{style:{color:`#b45309`},children:[` · `,o(`review.willChange`,`{{count}} already decided`,{count:u.length})]}):null]}),(0,x.jsxs)(`div`,{style:{display:`flex`,gap:8},children:[(0,x.jsx)(`button`,{type:`button`,onClick:()=>a(`accepted`,l),style:{flex:1,border:`1px solid ${_m.add.color}`,color:_m.add.color,background:`#fff`,borderRadius:6,padding:`5px 10px`,fontSize:12,cursor:`pointer`},children:o(`review.accept`,`Accept`)}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>a(`rejected`,l),style:{flex:1,border:`1px solid ${_m.remove.color}`,color:_m.remove.color,background:`#fff`,borderRadius:6,padding:`5px 10px`,fontSize:12,cursor:`pointer`},children:o(`review.reject`,`Reject`)})]})]}):null]})}var eg=(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,children:(0,x.jsx)(`path`,{d:`M8.424 0.47212800000000005C7.210464 0.516528 6.059064 0.8152320000000001 4.968648 1.368504C4.183608 1.766856 3.56184 2.2213920000000003 2.90208 2.879232C2.226216 3.5531520000000003 1.7667599999999999 4.181544 1.357296 4.992C0.8284320000000001 6.0388079999999995 0.5420400000000001 7.117896 0.483624 8.284128C0.409488 9.763416000000001 0.70452 11.160216 1.3673039999999999 12.468C2.2933920000000003 14.295312000000001 3.9517680000000004 15.765336000000001 5.874624000000001 16.463376C6.4847280000000005 16.684872 7.057272 16.824432 7.716 16.912224000000002C8.155296 16.970784 9.295512 16.970448 9.72 16.911624C11.284583999999999 16.694856 12.52992 16.183608 13.74768 15.258168L13.99884 15.067295999999999 18.177408000000003 19.242C22.794984000000003 23.855304 22.438992 23.522688 22.760664000000002 23.524416C23.036928 23.525904 23.223888000000002 23.433552000000002 23.392656 23.212296C23.487047999999998 23.088528 23.525472 22.956864 23.524416 22.760664000000002C23.522688 22.438872 23.855688 22.795272 19.241471999999998 18.176904L15.06612 13.997784 15.257280000000002 13.748904C16.164888 12.56724 16.713768 11.23356 16.9104 9.732C16.959576000000002 9.356424 16.979208 8.500608 16.947648 8.107368000000001C16.858344000000002 6.994536000000001 16.585008000000002 6.001584 16.102488 5.037336000000001C14.87796 2.590272 12.533904 0.90744 9.84 0.541416C9.585216 0.506784 8.762784 0.451296 8.652000000000001 0.46123200000000003C8.6256 0.463608 8.523 0.46850400000000003 8.424 0.47212800000000005M8.158968 1.991976C7.07964 2.089632 6.011184 2.447208 5.124 3.0076799999999997C4.516776 3.391272 3.7454880000000004 4.10112 3.333 4.656C2.612496 5.625264 2.192112 6.658488 2.024568 7.872C1.9728 8.246903999999999 1.966512 9.115488000000001 2.0129520000000003 9.48C2.196168 10.918656 2.7660240000000003 12.181296 3.703296 13.225416C4.758144 14.400456 6.150072 15.146736 7.752 15.396168C8.089464 15.448704000000001 8.956176 15.469920000000002 9.324 15.434664C10.192704 15.351336 10.915656 15.146184 11.7012 14.760024C13.026048 14.108784 14.086344 13.056072000000002 14.742384 11.740536C15.084552 11.054400000000001 15.279623999999998 10.441104 15.400319999999999 9.672C15.462096 9.278304 15.462288 8.171712 15.400632 7.776C15.236616000000001 6.723264 14.869079999999999 5.767896 14.309616000000002 4.9400640000000005C14.087832000000002 4.611888 13.798728 4.266624 13.478040000000002 3.946968C12.922272 3.3930000000000002 12.415728 3.0294719999999997 11.724 2.688144C10.977744 2.319912 10.372176 2.132712 9.58704 2.027568C9.246264 1.98192 8.480903999999999 1.96284 8.158968 1.991976M8.518824 4.711272C8.287608 4.776624 8.10144 4.949136 8.016192 5.176992C7.970064000000001 5.30028 7.968 5.3628 7.968 6.636912000000001L7.968 7.968 6.636912000000001 7.968C5.35728 7.968 5.30076 7.969896 5.1753599999999995 8.016792C4.666224 8.207304 4.5252479999999995 8.863824000000001 4.910712 9.249288C4.962024 9.3006 5.0634 9.3708 5.136 9.405288L5.268 9.468 6.617256 9.475272L7.966488 9.482568 7.973256 10.843272L7.98 12.204 8.03808 12.317664C8.37156 12.970224000000002 9.321912000000001 12.84636 9.453768 12.133152C9.470616 12.042 9.48 11.541648 9.48 10.735584L9.48 9.48 10.722 9.479808C11.465184 9.479712000000001 12.025704000000001 9.469631999999999 12.117624000000001 9.454704000000001C12.592416 9.377664 12.8664 8.89692 12.695616000000001 8.440464C12.637680000000001 8.285616 12.478296 8.115096000000001 12.317496000000002 8.035896000000001L12.204 7.98 10.843272 7.9734240000000005L9.482568 7.966848 9.475272 6.617424L9.468 5.268 9.405288 5.136C9.246168 4.801032 8.858424 4.615248 8.518824 4.711272`,stroke:`none`,fill:`currentColor`,fillRule:`evenodd`})}),tg=(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,children:(0,x.jsx)(`path`,{d:`M8.424 0.47212800000000005C7.210464 0.516528 6.059064 0.8152320000000001 4.968648 1.368504C4.183608 1.766856 3.56184 2.2213920000000003 2.90208 2.879232C2.226216 3.5531520000000003 1.7667599999999999 4.181544 1.357296 4.992C0.8284320000000001 6.0388079999999995 0.5420400000000001 7.117896 0.483624 8.284128C0.409488 9.763416000000001 0.70452 11.160216 1.3673039999999999 12.468C2.2933920000000003 14.295312000000001 3.9517680000000004 15.765336000000001 5.874624000000001 16.463376C6.4847280000000005 16.684872 7.057272 16.824432 7.716 16.912224000000002C8.155296 16.970784 9.295512 16.970448 9.72 16.911624C11.284583999999999 16.694856 12.52992 16.183608 13.74768 15.258168L13.99884 15.067295999999999 18.177408000000003 19.242C22.794984000000003 23.855304 22.438992 23.522688 22.760664000000002 23.524416C23.036928 23.525904 23.223888000000002 23.433552000000002 23.392656 23.212296C23.487047999999998 23.088528 23.525472 22.956864 23.524416 22.760664000000002C23.522688 22.438872 23.855688 22.795272 19.241471999999998 18.176904L15.06612 13.997784 15.257280000000002 13.748904C16.164888 12.56724 16.713768 11.23356 16.9104 9.732C16.959576000000002 9.356424 16.979208 8.500608 16.947648 8.107368000000001C16.858344000000002 6.994536000000001 16.585008000000002 6.001584 16.102488 5.037336000000001C14.87796 2.590272 12.533904 0.90744 9.84 0.541416C9.585216 0.506784 8.762784 0.451296 8.652000000000001 0.46123200000000003C8.6256 0.463608 8.523 0.46850400000000003 8.424 0.47212800000000005M8.158968 1.991976C7.07964 2.089632 6.011184 2.447208 5.124 3.0076799999999997C4.516776 3.391272 3.7454880000000004 4.10112 3.333 4.656C2.612496 5.625264 2.192112 6.658488 2.024568 7.872C1.9728 8.246903999999999 1.966512 9.115488000000001 2.0129520000000003 9.48C2.196168 10.918656 2.7660240000000003 12.181296 3.703296 13.225416C4.758144 14.400456 6.150072 15.146736 7.752 15.396168C8.089464 15.448704000000001 8.956176 15.469920000000002 9.324 15.434664C10.192848 15.351336 10.915632 15.146184 11.701584 14.759832000000001C12.385032 14.42388 12.85596 14.090592 13.412808 13.548792C13.990752 12.986424 14.395704 12.435696 14.742384 11.740536C15.084552 11.054400000000001 15.279623999999998 10.441104 15.400319999999999 9.672C15.462096 9.278304 15.462288 8.171712 15.400632 7.776C15.236616000000001 6.723264 14.869079999999999 5.767896 14.309616000000002 4.9400640000000005C14.087832000000002 4.611888 13.798728 4.266624 13.478040000000002 3.946968C12.922272 3.3930000000000002 12.415728 3.0294719999999997 11.724 2.688144C10.977744 2.319912 10.372176 2.132712 9.58704 2.027568C9.246264 1.98192 8.480903999999999 1.96284 8.158968 1.991976M5.1685680000000005 8.017848C5.000856 8.082504 4.84032 8.229840000000001 4.7610719999999995 8.391816C4.668816 8.580384 4.666584 8.834472 4.755504 9.024000000000001C4.834056 9.191448 4.9676160000000005 9.325296 5.136 9.405288L5.268 9.468 8.604000000000001 9.474744000000001C10.863936 9.479304 11.993184000000001 9.47328 12.104856000000002 9.456072C12.838536 9.343032000000001 12.985008 8.364647999999999 12.317496000000002 8.035896000000001L12.204 7.98 8.748 7.975128000000001C5.353104 7.970327999999999 5.289816 7.971096 5.1685680000000005 8.017848`,stroke:`none`,fill:`currentColor`,fillRule:`evenodd`})}),ng=(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,children:(0,x.jsx)(`path`,{d:`M5.22 3.758688C5.1936 3.7640640000000003 5.1126000000000005 3.780096 5.04 3.79428C4.9674 3.8084880000000005 4.8216 3.8616240000000004 4.716 3.9123599999999996C4.359096 4.083888 4.083096 4.360056 3.9127680000000002 4.716C3.7496400000000003 5.056968 3.7560000000000002 4.953168 3.7560000000000002 7.272C3.7560000000000002 9.366384 3.756144 9.372288000000001 3.8072880000000002 9.482928000000001C3.877704 9.635208 4.01736 9.783312 4.162488000000001 9.859632C4.267944 9.91512 4.31256 9.923568000000001 4.5 9.923615999999999C4.679016 9.92364 4.73364 9.914256 4.81908 9.8688C4.977768 9.784320000000001 5.10396 9.657168 5.17728 9.507864L5.244 9.372 5.256 7.362840000000001C5.26728 5.475504 5.270592000000001 5.351088 5.31084 5.31084C5.351088 5.270592000000001 5.475024 5.26728 7.350840000000001 5.256L9.348 5.244 9.47448 5.186832C9.633312 5.115048000000001 9.820992 4.914528 9.873456000000001 4.760568C9.922776 4.615848 9.922776 4.384152 9.873456000000001 4.239432C9.820992 4.085472 9.633312 3.8849519999999997 9.47448 3.813168L9.348 3.7560000000000002 7.308 3.7524480000000002C6.186 3.750504 5.2464 3.753312 5.22 3.758688M14.657616 3.769656C14.42928 3.824592 14.198136000000002 4.02936 14.126208 4.240416C14.0772 4.3842479999999995 14.077344000000002 4.6161840000000005 14.126544 4.760568C14.179008000000001 4.914528 14.366688 5.115048000000001 14.52552 5.186832L14.652000000000001 5.244 16.649160000000002 5.256C18.524976000000002 5.26728 18.648912 5.270592000000001 18.68916 5.31084C18.729408000000003 5.351088 18.73272 5.475504 18.744 7.362840000000001C18.75588 9.351768 18.756528000000003 9.373128000000001 18.807288 9.482928000000001C18.877704 9.635208 19.01736 9.783312 19.162488 9.859632C19.267944 9.91512 19.31256 9.923568000000001 19.5 9.923615999999999C19.679016 9.92364 19.73364 9.914256 19.81908 9.8688C19.977768 9.784320000000001 20.10396 9.657168 20.17728 9.507864L20.244 9.372 20.244 7.272C20.244 4.953168 20.25036 5.056968 20.087232 4.716C19.922088 4.3708800000000005 19.646016 4.089576 19.308 3.922008C18.958752 3.7488960000000002 19.102176 3.758592 16.812 3.753C15.64188 3.75012 14.708856 3.7573440000000002 14.657616 3.769656M4.296 14.085023999999999C4.080744 14.155800000000001 3.9007680000000002 14.31492 3.8072880000000002 14.517072C3.756144 14.627712000000002 3.7560000000000002 14.633616000000002 3.7560000000000002 16.728C3.7560000000000002 19.046832000000002 3.7496400000000003 18.943032000000002 3.9127680000000002 19.284C4.08324 19.640256 4.359744 19.91676 4.716 20.087232C5.056872 20.250312 4.954368 20.244 7.26 20.244L9.348 20.244 9.47448 20.186832000000003C9.633312 20.115047999999998 9.820992 19.914528 9.873456000000001 19.760568C9.922776 19.615848 9.922776 19.384152 9.873456000000001 19.239432C9.820992 19.085472 9.633312 18.884952000000002 9.47448 18.813167999999997L9.348 18.756 7.350840000000001 18.744C5.475024 18.73272 5.351088 18.729408000000003 5.31084 18.68916C5.270592000000001 18.648912 5.26728 18.524496000000003 5.256 16.63716C5.24412 14.648232 5.243472000000001 14.626872 5.192712 14.517072C5.0662080000000005 14.24352 4.831824 14.084904 4.5360000000000005 14.072712000000001C4.437 14.068655999999999 4.329 14.074176 4.296 14.085023999999999M19.296 14.085023999999999C19.080744 14.155800000000001 18.900768000000003 14.31492 18.807288 14.517072C18.756528000000003 14.626872 18.75588 14.648232 18.744 16.63716C18.73272 18.524496000000003 18.729408000000003 18.648912 18.68916 18.68916C18.648912 18.729408000000003 18.524976000000002 18.73272 16.649160000000002 18.744L14.652000000000001 18.756 14.52552 18.813167999999997C14.366688 18.884952000000002 14.179008000000001 19.085472 14.126544 19.239432C14.077224000000001 19.384152 14.077224000000001 19.615848 14.126544 19.760568C14.179008000000001 19.914528 14.366688 20.115047999999998 14.52552 20.186832000000003L14.652000000000001 20.244 16.740000000000002 20.244C19.045632 20.244 18.943128 20.250312 19.284 20.087232C19.640256 19.91676 19.91676 19.640256 20.087232 19.284C20.25036 18.943032000000002 20.244 19.046832000000002 20.244 16.728C20.244 14.633616000000002 20.243856 14.627712000000002 20.192712 14.517072C20.066208 14.24352 19.831824 14.084904 19.536 14.072712000000001C19.437 14.068655999999999 19.329 14.074176 19.296 14.085023999999999`,stroke:`none`,fill:`currentColor`,fillRule:`evenodd`})}),rg=(0,x.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,style:{fill:`none`},stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,x.jsx)(`rect`,{x:`3`,y:`3`,width:`7`,height:`7`,rx:`1`}),(0,x.jsx)(`rect`,{x:`14`,y:`3`,width:`7`,height:`5`,rx:`1`}),(0,x.jsx)(`rect`,{x:`14`,y:`12`,width:`7`,height:`9`,rx:`1`}),(0,x.jsx)(`rect`,{x:`3`,y:`14`,width:`7`,height:`7`,rx:`1`})]}),ig=(0,x.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,style:{fill:`none`},stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,x.jsx)(`path`,{d:`m7 15 5 5 5-5`}),(0,x.jsx)(`path`,{d:`m7 9 5-5 5 5`})]}),ag=(0,x.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,style:{fill:`none`},stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,x.jsx)(`path`,{d:`m7 20 5-5 5 5`}),(0,x.jsx)(`path`,{d:`m7 4 5 5 5-5`})]}),og=(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,style:{fill:`none`},stroke:`currentColor`,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,x.jsx)(`path`,{d:`M3.5 4.5h17l-6.5 7.8v6.9l-4 2.3v-9.2z`})}),sg=(0,x.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,style:{fill:`none`},stroke:`currentColor`,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,x.jsx)(`rect`,{x:`2.75`,y:`2.75`,width:`18.5`,height:`18.5`,rx:`2.5`}),(0,x.jsx)(`rect`,{x:`6.75`,y:`6.75`,width:`6`,height:`5`,rx:`1`}),(0,x.jsx)(`rect`,{x:`6.75`,y:`14`,width:`10.5`,height:`3.25`,rx:`1`})]}),cg=(0,x.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,style:{fill:`none`},stroke:`currentColor`,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,x.jsx)(`rect`,{x:`3.25`,y:`3.75`,width:`17.5`,height:`16.5`,rx:`2`}),(0,x.jsx)(`path`,{d:`M3.25 9h17.5M3.25 14.5h17.5M9.5 9v11.25`})]}),lg=(0,x.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`none`,style:{fill:`none`},stroke:`currentColor`,strokeWidth:`1.7`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,x.jsx)(`path`,{d:`M9 3.75H3.75V9M15 3.75h5.25V9M15 20.25h5.25V15M9 20.25H3.75V15`})}),ug=1;function dg(e){try{let t=localStorage.getItem(e);if(!t)return null;let n=JSON.parse(t);return n?.v===ug?n:null}catch{return null}}function fg(e,t){try{localStorage.setItem(e,JSON.stringify({v:ug,...t}))}catch{}}function pg(e){return e?`semviz:v${ug}:${e}`:null}function mg(e){if(!e)return null;let t=dg(e);return t?{positions:t.positions||{},toggles:t.toggles||null}:null}function hg(e,t,n){if(!e)return;let r=dg(e)||{},i={...r.positions||{}};i[t]=Object.fromEntries(n.map(e=>[e.id,{x:e.position.x,y:e.position.y}])),fg(e,{...r,positions:i})}function gg(e,t){if(!e)return;let n=dg(e);if(!n?.positions)return;let r={...n.positions};delete r[t],fg(e,{...n,positions:r})}function _g(e,t){e&&fg(e,{...dg(e)||{},toggles:t})}var vg={entity:Sm,metric:Sm,property:Sm,shared_property:Sm,group:Xm,collapsed_group:Xm},yg={entity:Om,metric:Om,property:Sm,shared_property:Sm,group:Xm,collapsed_group:Xm},bg={floating:eh};function xg(e){let t={};e.edges.forEach(e=>{t[e.source]=(t[e.source]||0)+1,t[e.target]=(t[e.target]||0)+1});let n=e.nodes.map(e=>({id:e.id,type:e.type||`entity`,parentId:e.parentId||void 0,position:{x:0,y:0},data:{...e.data,connections:t[e.id]||0}})),r={};e.edges.forEach(e=>{let t=[e.source,e.target].sort().join(`::`);r[t]=(r[t]||0)+1});let i={},a={};return e.edges.forEach(e=>{let t=[e.source,e.target].sort().join(`::`);i[t]||(i[t]=0),a[e.id]={index:i[t]++,total:r[t]}}),{nodes:n,edges:e.edges.map(e=>{let t=_m[e.diff],n=t?t.color:`#94a3b8`;return{id:e.id,source:e.source,target:e.target,label:e.label,type:`floating`,data:{label:e.label,parallel:a[e.id],diff:e.diff,diffDetail:e.diffDetail},style:{stroke:n,strokeWidth:t?2.5:1.5,...e.diff===`remove`?{strokeDasharray:`6 4`}:{}},markerEnd:{type:Da.ArrowClosed,color:n,width:14,height:14},labelStyle:t?{fontSize:11,fill:n,fontWeight:700}:{fontSize:10,fill:`#64748b`,fontWeight:500},labelBgStyle:{fill:`#fff`,fillOpacity:.9},labelBgPadding:[4,2],zIndex:t?5:0}})}}function Sg(e){return e?e*.6180339887*Math.PI*2:0}function Cg(e){let t=(e|0)*1664525+1013904223>>>0||1;return()=>(t=t*1664525+1013904223>>>0,t/4294967296)}function wg(e,t,n,r,i){let a=e.length;if(a===1)return{[e[0].id]:{x:0,y:0}};let o=a>50,s=n?-3e3:o?-1200:-500,c=n?450:o?250:200,l=n?200:o?80:90,u=e=>{let t=r&&r[e];return t?Math.max(l,Math.hypot(t.width,t.height)/2+20):l},d=Math.max(a*5,300),f=Sg(i),p=e.map((e,t)=>({id:e.id,x:Math.cos(2*Math.PI*t/a+f)*d,y:Math.sin(2*Math.PI*t/a+f)*d})),m=t.map(e=>({source:e.source,target:e.target})),h=mm().strength(s);o&&h.theta(1.2);let g=o?.08:.05,_=pm(p).randomSource(Cg(i+a)).force(`link`,im(m).id(e=>e.id).distance(c).strength(o?.3:1)).force(`charge`,h).force(`center`,Op(0,0)).force(`x`,hm(0).strength(g)).force(`y`,gm(0).strength(g)).force(`collide`,tm(e=>u(e.id))).alphaDecay(o?.04:.0228).stop(),v=o?250:300;for(let e=0;e{y[e.id]={x:isFinite(e.x)?e.x:t*100,y:isFinite(e.y)?e.y:t*100}}),y}function Tg(e,t,{entityMode:n=!1,nodeSizes:r=null,seed:i=0}={}){let a={};e.forEach(e=>{a[e.id]=[]}),t.forEach(e=>{a[e.source].push(e.target),a[e.target].push(e.source)});let o=new Set,s=[];e.forEach(e=>{if(o.has(e.id))return;let t=[],n=[e.id];for(;n.length;){let e=n.pop();o.has(e)||(o.add(e),t.push(e),a[e].forEach(e=>{o.has(e)||n.push(e)}))}s.push(t)}),s.sort((e,t)=>t.length-e.length);let c={};e.forEach(e=>{c[e.id]=e});let l=s.map(e=>{let a=new Set(e),o=wg(e.map(e=>c[e]),t.filter(e=>a.has(e.source)&&a.has(e.target)),n,r,i),s=e=>r&&r[e]?r[e].width/2:0,l=e=>r&&r[e]?r[e].height/2:0,u=1/0,d=1/0,f=-1/0,p=-1/0;return e.forEach(e=>{u=Math.min(u,o[e].x-s(e)),d=Math.min(d,o[e].y-l(e)),f=Math.max(f,o[e].x+s(e)),p=Math.max(p,o[e].y+l(e))}),e.forEach(e=>{o[e].x-=u,o[e].y-=d}),{ids:e,posById:o,width:f-u,height:p-d}}),u=n?300:150,d={};if(l.length===1){let e=l[0];e.ids.forEach(t=>{d[t]=e.posById[t]})}else{let e=l[0];e.ids.forEach(t=>{d[t]=e.posById[t]});let t=e.width+u*2,n=0,r=0;for(let i=1;i0&&n+a.height>e.height&&(t+=r+u*2,n=0,r=0),a.ids.forEach(e=>{d[e]={x:t+a.posById[e].x,y:n+a.posById[e].y}}),r=Math.max(r,a.width),n+=a.height+u}}return{nodes:e.map(e=>({...e,position:d[e.id]})),edges:t}}var Eg=78,Dg=180,Og=56,kg=320,Ag=110,jg=240,Mg=40,Ng=27,Pg=8;function Fg(e,t){if(t&&(e.type===`entity`||e.type===`metric`)){let t=e.data?.properties?.length||0;return{width:jg,height:Mg+(t===0?1:Math.min(t,Pg))*Ng}}return{width:Dg,height:Og}}function Ig(e,t,{entityMode:n=!1,seed:r=0}={}){let i={},a={};e.forEach(e=>{a[e.id]=e}),e.forEach(e=>{let t=e.parentId||`__root__`;i[t]||(i[t]=[]),i[t].push(e)});let o=e=>{let t=a[e];return t&&t.parentId?t.parentId:null},s=(e,t)=>{let n=e;for(;n;){if((o(n)||`__root__`)===t)return n;n=o(n)}return null},c={},l={};function u(e){let a=i[e]||[];if(a.length===0)return;a.forEach(e=>{e.type===`group`&&u(e.id)});let o=a.map(e=>e.id),d=new Set(o),f=new Set,p=[];t.forEach(t=>{let n=d.has(t.source)?t.source:s(t.source,e),r=d.has(t.target)?t.target:s(t.target,e);if(!n||!r||n===r)return;let i=n{e.type===`group`?m[e.id]=l[e.id]||{width:200,height:120}:e.type===`collapsed_group`?m[e.id]={width:kg,height:Ag}:m[e.id]=Fg(e,n)});let{nodes:h}=Tg(a,p,{nodeSizes:m,entityMode:n,seed:r}),g=e===`__root__`?0:106,_=e===`__root__`?0:Eg,v=0,y=0;h.forEach(e=>{let t=m[e.id],n=e.position.x-t.width/2+_,r=e.position.y-t.height/2+g;c[e.id]={x:n,y:r},v=Math.max(v,n+t.width),y=Math.max(y,r+t.height)}),e!==`__root__`&&(l[e]={width:v+Eg,height:y+Eg})}u(`__root__`);let d=e=>{let t=0,n=o(e);for(;n;)t++,n=o(n);return t},f=e.map(e=>({n:e,d:d(e.id)}));return f.sort((e,t)=>e.d-t.d),{nodes:f.map(({n:e})=>{let t=c[e.id]||{x:0,y:0},n={...e,position:t};if(e.type===`group`||e.type===`collapsed_group`){let t=e.type===`collapsed_group`?{width:kg,height:Ag}:l[e.id]||{width:200,height:120};n.style={width:t.width,height:t.height,background:`transparent`,border:`none`,boxShadow:`none`,padding:0,borderRadius:0}}return e.parentId&&(n.parentId=e.parentId,n.extent=`parent`),n}),edges:t}}function Lg(e,t){let n={},r={};t.forEach(e=>{n[e.target]||(n[e.target]=[]),n[e.target].push(e.source),r[e.source]=e.target});let i=e.filter(e=>!r[e.id]).map(e=>e.id);i.length===0&&e.length>0&&i.push(e[0].id);let a={},o=[],s=new Set,c=i.map(e=>({id:e,level:0}));for(i.forEach(e=>s.add(e));c.length>0;){let{id:e,level:t}=c.shift();a[e]=t,o.push(e),(n[e]||[]).forEach(e=>{s.has(e)||(s.add(e),c.push({id:e,level:t+1}))})}e.forEach(e=>{s.has(e.id)||(a[e.id]=0,o.push(e.id))});let l={};o.forEach(e=>{let t=a[e];l[t]||(l[t]=[]),l[t].push(e)});let u={};return Object.entries(l).forEach(([e,t])=>{let n=(t.length-1)*250;t.forEach((t,r)=>{u[t]={x:-n/2+r*250,y:parseInt(e)*120}})}),{nodes:e.map(e=>({...e,position:u[e.id]||{x:0,y:0}})),edges:t}}function Rg(e){let t={},n={};return e.forEach(e=>{t[e.source]||(t[e.source]=new Set),t[e.target]||(t[e.target]=new Set),t[e.source].add(e.target),t[e.target].add(e.source),n[e.source]||(n[e.source]=new Set),n[e.target]||(n[e.target]=new Set),n[e.source].add(e.id),n[e.target].add(e.id)}),{neighborNodes:t,neighborEdges:n}}function zg({nodes:e,edges:t},n){if(n.size===0)return{nodes:e,edges:t};let r=new Map(e.map(e=>[e.id,e])),i=e=>r.get(e)?.parentId,a=new Map,o=new Map;e.forEach(e=>{let t=null,r=e.id;for(;r;)n.has(r)&&(t=r),r=i(r);a.set(e.id,t||e.id),t&&t!==e.id&&e.type!==`group`&&o.set(t,(o.get(t)||0)+1)});let s=e.filter(e=>a.get(e.id)===e.id).map(e=>{if(!n.has(e.id))return e;let{parentId:t,extent:r,...i}=e;return{...i,type:`collapsed_group`,data:{...e.data,collapsed:!0,memberCount:o.get(e.id)||0}}}),c=new Map;t.forEach(e=>{let t=a.get(e.source)||e.source,n=a.get(e.target)||e.target;if(t===n)return;let r=`${t}::${n}`,i=c.get(r);i||(i={source:t,target:n,originals:[]},c.set(r,i)),i.originals.push(e)});let l=[];return c.forEach(({source:e,target:t,originals:n})=>{if(n.length===1&&n[0].source===e&&n[0].target===t){l.push(n[0]);return}let r=n[0],i=n.length;l.push({...r,id:`col-${e}-${t}`,source:e,target:t,label:`× ${i}`})}),{nodes:s,edges:l}}var Bg=e=>({width:32,height:32,borderRadius:6,background:e?`#eef2ff`:`#fff`,padding:0,color:e?`#4f46e5`:`#4b5563`,boxShadow:`0 1px 2px 0 rgba(0,0,0,0.05)`,border:`1px solid ${e?`#a5b4fc`:`#d1d5db`}`,cursor:`pointer`,display:`inline-flex`,alignItems:`center`,justifyContent:`center`}),Vg={width:17,height:17,display:`block`};function Hg({customHeight:e,containerRef:t}){let{t:n}=Ep(),{fitView:r}=vl(),[i,a]=(0,y.useState)(!1);return(0,x.jsx)(`button`,{onClick:(0,y.useCallback)(()=>{let n=t.current?.closest(`.semantic-visualizer`);n&&(i?(n.style.height=e,a(!1)):(n.style.height=`100vh`,a(!0)),setTimeout(()=>{r(),n.scrollIntoView(!0)},0))},[i,e,r,t]),style:Bg(i),title:n(i?`controls.shrink`:`controls.enlarge`),"aria-label":n(i?`controls.shrink`:`controls.enlarge`),"aria-pressed":i,onMouseOver:e=>{i||(e.currentTarget.style.background=`#f9fafb`)},onMouseOut:e=>{i||(e.currentTarget.style.background=`#fff`)},children:(0,x.jsx)(`span`,{style:Vg,"aria-hidden":`true`,children:lg})})}function Ug({graphData:e,changes:t,targetName:n,onDecide:r,customHeight:i,layout:a,storageKey:o,showMiniMap:s}){let{t:c}=Ep(),{fitView:l,getNodes:u,zoomIn:d,zoomOut:f,setCenter:p,getViewport:m,getNodesBounds:h}=vl(),g=bc(),_=(0,y.useRef)(null),v=(0,y.useRef)(null),b=K(e=>e.width),[S,C]=(0,y.useState)(null),w=t||e.changes||[],[T,E]=(0,y.useState)(()=>new Set),[D,O]=(0,y.useState)(null),k=(0,y.useMemo)(()=>{let e=new Map;return w.forEach(t=>{e.set(t.externalId,t),(t.properties||[]).forEach(n=>e.set(n.externalId,t))}),e},[w]),A=(0,y.useMemo)(()=>{let e=new Map;return w.forEach(t=>(t.properties||[]).forEach(t=>e.set(t.externalId,t))),e},[w]),j=(0,y.useMemo)(()=>{let e=new Map;return w.forEach(t=>(t.relationships||[]).forEach(t=>e.set(t.externalId,t))),e},[w]),M=e=>k.get(e?.data?.externalId)?.externalId,N=(0,y.useMemo)(()=>w.length?{...e,edges:(e.edges||[]).map(e=>{let t=j.get(e.externalId);return t?{...e,diff:t.op,data:{...e.data,diff:t.op}}:e}),nodes:e.nodes.map(e=>{let t=k.get(e.data?.externalId),n=(e.data?.properties||[]).map(e=>{let t=A.get(e.externalId);return t?{...e,diff:t.op,diffDetail:{fields:t.fields||[]}}:e}),r=new Set(n.map(e=>e.externalId)),i=(t?.properties||[]).filter(e=>e.op===`remove`&&!r.has(e.externalId)).map(e=>({externalId:e.externalId,name:e.name||e.externalId,description:null,shared:!1,inherited:!1,diff:`remove`,diffDetail:{fields:e.fields||[]}})),a=[...n,...i],o=t&&t.externalId===e.data?.externalId?t:null;return!o&&a===e.data?.properties?e:{...e,data:{...e.data,properties:a,...o?{diff:o.op,diffDetail:{op:o.op,impact:o.impact?.toLowerCase(),fields:o.fields||[]},evidence:o.evidence||[],evidenceMissing:!o.evidence||o.evidence.length===0}:{}}}})}:e,[e,w,k,A,j]),[P,ee]=(0,y.useState)(null),F=(0,y.useMemo)(()=>N.nodes.some(e=>(e.data?.properties||[]).some(e=>e.highlight)),[N]),I=(0,y.useMemo)(()=>mg(o),[o])?.toggles,[L,te]=(0,y.useState)(I?.showProperties??F),R=(0,y.useMemo)(()=>N.nodes.some(e=>e.type===`group`),[N]),[z,B]=(0,y.useState)(I?.showGroups??!1),[V,ne]=(0,y.useState)(!0),[re,ie]=(0,y.useState)(()=>new Set(I?.collapsedGroups||[])),[ae,oe]=(0,y.useState)(0),se=a===`tree`,ce=R&&z&&!se,le=(0,y.useMemo)(()=>N.nodes.some(e=>e.data?.diff||e.data?.changedPropertyCount>0)||N.edges.some(e=>e.diff),[N]),ue=L&&!se?yg:vg,de=(0,y.useCallback)(e=>{ie(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),fe=(0,y.useCallback)(e=>{let t=N.nodes.find(t=>t.id===e);if(!t)return;let n=t.parentId||null,r=N.nodes.filter(t=>t.type===`group`&&t.id!==e&&(t.parentId||null)===n);ie(t=>{let n=new Set(t);return r.forEach(e=>n.add(e.id)),n.delete(e),n})},[N]),pe=(0,y.useCallback)(()=>{ie(new Set)},[]),me=(0,y.useCallback)(()=>{let e=N.nodes.filter(e=>e.type===`group`).map(e=>e.id);ie(new Set(e))},[N]),he=(0,y.useMemo)(()=>{let e=N.nodes.filter(e=>e.type===`group`).map(e=>e.id);return R&&e.every(e=>re.has(e))},[N,re,R]),ge=(0,y.useCallback)(()=>{he?pe():me()},[he,pe,me]),_e=`${se?`tree`:ce?`groups`:`flat`}:${L?`erd`:`simple`}`,ve=(0,y.useCallback)(e=>{let t=mg(o)?.positions?.[_e];return t?e.map(e=>t[e.id]?{...e,position:t[e.id]}:e):e},[o,_e]),ye=(0,y.useMemo)(()=>N.nodes.some(e=>e.data?.searchMatch===!1),[N]);(0,y.useEffect)(()=>{_g(o,{showProperties:L,showGroups:z,collapsedGroups:Array.from(re)})},[o,L,z,re]);let be=(0,y.useCallback)(()=>{ye||hg(o,_e,u())},[o,_e,u,ye]),xe=(0,y.useCallback)(()=>{gg(o,_e),oe(e=>e+1)},[o,_e]),Se=(0,y.useMemo)(()=>({toggleCollapse:de,collapsedSet:re}),[de,re]),Ce=(0,y.useMemo)(()=>{let e=N;if(V&&le){let t=new Set(e.nodes.filter(e=>e.data?.diff||e.data?.changedPropertyCount>0).map(e=>e.id));e.edges.forEach(e=>{e.diff&&(t.add(e.source),t.add(e.target))});let n=new Set;e.edges.forEach(e=>{t.has(e.source)&&n.add(e.target),t.has(e.target)&&n.add(e.source)});let r=e.nodes.filter(e=>t.has(e.id)||n.has(e.id)||e.type===`group`).map(e=>t.has(e.id)||e.type===`group`?e:{...e,data:{...e.data,dimmed:!0}}),i=new Set(r.map(e=>e.id));e={nodes:r,edges:e.edges.filter(e=>i.has(e.source)&&i.has(e.target))}}if(L&&!se){let t=e.nodes.filter(e=>e.type!==`shared_property`),n=new Set(t.map(e=>e.id));e={nodes:t,edges:e.edges.filter(e=>n.has(e.source)&&n.has(e.target))}}if(ce)re.size>0&&(e=zg(e,re));else{let t=e.nodes.filter(e=>e.type!==`group`).map(({parentId:e,...t})=>t),n=new Set(t.map(e=>e.id));e={nodes:t,edges:e.edges.filter(e=>n.has(e.source)&&n.has(e.target))}}let{nodes:t,edges:n}=xg(e);return se?Lg(t,n):ce?Ig(t,n,{entityMode:L,seed:ae}):Tg(t,n,{entityMode:L,seed:ae})},[N,L,se,ce,re,ae,V,le]),we=(0,y.useMemo)(()=>Rg(Ce.edges),[Ce.edges]),Te=(0,y.useMemo)(()=>{if(P){let e=new Set([P.source,P.target]);return Ce.nodes.map(t=>({...t,data:{...t.data,dimmed:!e.has(t.id),selected:!1}}))}if(S){let e=new Set([S.id]);return(we.neighborNodes[S.id]||new Set).forEach(t=>e.add(t)),Ce.nodes.map(t=>({...t,data:{...t.data,dimmed:!e.has(t.id),selected:t.id===S.id}}))}return Ce.nodes.some(e=>e.data?.searchMatch===!1)?Ce.nodes.map(e=>{let t=e.type===`group`||e.type===`collapsed_group`||e.data?.searchMatch===!1;return{...e,data:{...e.data,dimmed:t}}}):Ce.nodes},[Ce.nodes,S,P,we]),Ee=(0,y.useMemo)(()=>{if(P)return Ce.edges.map(e=>e.id===P.id?{...e,style:{...e.style,strokeWidth:3.5},zIndex:10}:{...e,style:{...e.style,stroke:`#e2e8f0`,strokeWidth:1},markerEnd:{type:Da.ArrowClosed,color:`#e2e8f0`,width:14,height:14},data:{...e.data,dimmed:!0},labelStyle:{fontSize:10,fill:`#e2e8f0`,fontWeight:500},labelBgStyle:{fill:`#fff`,fillOpacity:.5},zIndex:0});if(S){let e=we.neighborEdges[S.id]||new Set;return Ce.edges.map(t=>{let n=e.has(t.id),r=_m[t.data?.diff],i=r?r.color:`#6366f1`;return{...t,style:{...t.style,stroke:n?i:`#e2e8f0`,strokeWidth:n?2.5:1},markerEnd:{type:Da.ArrowClosed,color:n?i:`#e2e8f0`,width:14,height:14},data:{...t.data,dimmed:!n},labelStyle:n?{fontSize:11,fill:r?i:`#4338ca`,fontWeight:r?700:600}:{fontSize:10,fill:`#e2e8f0`,fontWeight:500},labelBgStyle:n?{fill:`#eef2ff`,fillOpacity:1}:{fill:`#fff`,fillOpacity:.5},zIndex:n?10:0}})}let e=new Set(Ce.nodes.filter(e=>e.data?.searchMatch!==!1).map(e=>e.id));return e.sizee.has(t.source)&&e.has(t.target)?t:{...t,style:{stroke:`#e2e8f0`,strokeWidth:1},markerEnd:{type:Da.ArrowClosed,color:`#e2e8f0`,width:14,height:14},data:{...t.data,dimmed:!0},labelStyle:{fontSize:10,fill:`#e2e8f0`,fontWeight:500},labelBgStyle:{fill:`#fff`,fillOpacity:.5}}):Ce.edges},[Ce.edges,S,P,we,Ce.nodes]),[De,Oe,ke]=xd(ye?Te:ve(Te)),[Ae,je,Me]=Sd(Ee),[Ne,Pe]=(0,y.useState)(Ce),[Fe,Ie]=(0,y.useState)(Ee),[Le,Re]=(0,y.useState)(N);if(Ce!==Ne){Pe(Ce);let e=N!==Le;e&&Re(N),e&&ye?(Oe(Te),setTimeout(()=>l({padding:.1,maxZoom:1.5}),0)):Oe(ve(Te)),je(Ee),Ie(Ee)}else Ee!==Fe&&(Ie(Ee),Oe(e=>e.map(e=>{let t=Te.find(t=>t.id===e.id);return t?{...e,data:t.data}:e})),je(Ee));let ze=(0,y.useCallback)(e=>{if(!e)return;let t=h([e],{nodeLookup:g.getState().nodeLookup});!t||!t.width||p(t.x+t.width/2,t.y+t.height/2,{zoom:m().zoom,duration:400})},[h,m,p,g]);(0,y.useEffect)(()=>{S&&ze(S)},[S,b,ze]);let Be=(0,y.useCallback)((e,t)=>{ee(null);let n=S?.id===t.id;C(n?null:t);let r=M(t);if(r===void 0)return;O(n?null:r);let i=e.metaKey||e.ctrlKey||e.shiftKey;E(e=>{let t=new Set(i?e:[]);return i&&e.has(r)?t.delete(r):n&&!i||t.add(r),t})},[S,M]),Ve=(0,y.useCallback)((e,t)=>{C(null),ee(e=>e?.id===t.id?null:t)},[]),He=(0,y.useCallback)(()=>{C(null),ee(null)},[]),Ue=(0,x.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:6},children:[le&&(0,x.jsx)(`button`,{onClick:()=>{ne(e=>!e),setTimeout(()=>l({padding:.1,maxZoom:1.5}),0)},style:Bg(V),onMouseOver:e=>{V||(e.currentTarget.style.background=`#f9fafb`)},onMouseOut:e=>{V||(e.currentTarget.style.background=`#fff`)},title:c(`toolbar.changesOnly.title`),"aria-label":c(`toolbar.changesOnly.label`),"aria-pressed":V,children:(0,x.jsx)(`span`,{style:Vg,"aria-hidden":`true`,children:og})}),!se&&R&&(0,x.jsx)(`button`,{onClick:()=>{B(e=>!e),setTimeout(()=>l({padding:.1,maxZoom:1.5}),0)},style:Bg(z),onMouseOver:e=>{z||(e.currentTarget.style.background=`#f9fafb`)},onMouseOut:e=>{z||(e.currentTarget.style.background=`#fff`)},title:c(`toolbar.showGroups.title`),"aria-label":c(`toolbar.showGroups.label`),"aria-pressed":z,children:(0,x.jsx)(`span`,{style:Vg,"aria-hidden":`true`,children:sg})}),!se&&(0,x.jsx)(`button`,{onClick:()=>{te(e=>!e),setTimeout(()=>l({padding:.1,maxZoom:1.5}),0)},style:Bg(L),onMouseOver:e=>{L||(e.currentTarget.style.background=`#f9fafb`)},onMouseOut:e=>{L||(e.currentTarget.style.background=`#fff`)},title:c(`toolbar.erd.title`),"aria-label":c(`toolbar.erd.label`),"aria-pressed":L,children:(0,x.jsx)(`span`,{style:Vg,"aria-hidden":`true`,children:cg})}),(0,x.jsx)(Hg,{customHeight:i||`400px`,containerRef:_})]});return(0,x.jsx)(km.Provider,{value:Se,children:(0,x.jsxs)(`div`,{ref:_,style:{width:`100%`,height:`100%`,display:`flex`,minWidth:0},children:[(0,x.jsx)($h,{changes:w,targetName:n,selectedIds:T,onSelectionChange:E,onFocus:e=>{O(e);let t=u().find(t=>M(t)===e);C(t||null),t&&ee(null)},onDecide:r?(e,t)=>r({decision:e,externalIds:t}):void 0}),(0,x.jsx)(`div`,{ref:v,style:{flex:1,minWidth:0,position:`relative`},children:(0,x.jsxs)(yd,{nodes:De,edges:Ae,onNodesChange:ke,onEdgesChange:Me,nodeTypes:ue,edgeTypes:bg,fitView:!0,fitViewOptions:{padding:.1,maxZoom:1.5},nodesDraggable:!0,nodesConnectable:!1,elementsSelectable:!0,panOnDrag:!0,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!0,preventScrolling:!1,minZoom:.1,maxZoom:2,onNodeClick:Be,onEdgeClick:Ve,onPaneClick:He,onNodeDragStop:be,children:[(0,x.jsx)(Ad,{color:`#e2e8f0`,gap:20}),(0,x.jsxs)(zd,{position:`bottom-left`,showZoom:!1,showFitView:!1,showInteractive:!1,children:[!se&&R&&(0,x.jsx)(Id,{onClick:()=>{ge(),setTimeout(()=>l({padding:.1,maxZoom:1.5}),50)},title:c(he?`controls.expandAll`:`controls.collapseAll`),"aria-label":c(he?`controls.expandAll`:`controls.collapseAll`),children:he?ig:ag}),(0,x.jsx)(Id,{onClick:()=>{xe(),setTimeout(()=>l({padding:.1,maxZoom:1.5}),50)},title:c(`controls.autoLayout.title`),"aria-label":c(`controls.autoLayout.label`),children:rg}),(0,x.jsx)(Id,{onClick:()=>d(),title:c(`controls.zoomIn`),"aria-label":c(`controls.zoomIn`),children:eg}),(0,x.jsx)(Id,{onClick:()=>f(),title:c(`controls.zoomOut`),"aria-label":c(`controls.zoomOut`),children:tg}),(0,x.jsx)(Id,{onClick:()=>l({padding:.3,maxZoom:1}),title:c(`controls.fitView`),"aria-label":c(`controls.fitView`),children:ng})]}),s&&(0,x.jsx)(nf,{zoomable:!0,pannable:!0}),(0,x.jsx)(Ac,{position:`top-right`,children:Ue})]})}),(0,x.jsx)(hh,{selection:T.size>1?w.filter(e=>T.has(e.externalId)).map(e=>({key:e.externalId,change:e,node:u().find(t=>M(t)===e.externalId)||null})):void 0,node:S,change:w.find(e=>e.externalId===D)||null,changesOnly:V,edge:P,graphData:N,isCollapsed:S?re.has(S.id):!1,onToggleCollapse:de,onCollapseOthers:fe,onExpandAll:pe,onClose:()=>{C(null),ee(null),O(null)}})]})})}var{slice:Wg,forEach:Gg}=[];function Kg(e){return Gg.call(Wg.call(arguments,1),t=>{if(t)for(let n in t)e[n]===void 0&&(e[n]=t[n])}),e}function qg(e){return typeof e==`string`&&[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(t=>t.test(e))}var Jg=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,Yg=function(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:`/`},r=`${e}=${encodeURIComponent(t)}`;if(n.maxAge>0){let e=n.maxAge-0;if(Number.isNaN(e))throw Error(`maxAge should be a Number`);r+=`; Max-Age=${Math.floor(e)}`}if(n.domain){if(!Jg.test(n.domain))throw TypeError(`option domain is invalid`);r+=`; Domain=${n.domain}`}if(n.path){if(!Jg.test(n.path))throw TypeError(`option path is invalid`);r+=`; Path=${n.path}`}if(n.expires){if(typeof n.expires.toUTCString!=`function`)throw TypeError(`option expires is invalid`);r+=`; Expires=${n.expires.toUTCString()}`}if(n.httpOnly&&(r+=`; HttpOnly`),n.secure&&(r+=`; Secure`),n.sameSite)switch(typeof n.sameSite==`string`?n.sameSite.toLowerCase():n.sameSite){case!0:r+=`; SameSite=Strict`;break;case`lax`:r+=`; SameSite=Lax`;break;case`strict`:r+=`; SameSite=Strict`;break;case`none`:r+=`; SameSite=None`;break;default:throw TypeError(`option sameSite is invalid`)}return n.partitioned&&(r+=`; Partitioned`),r},Xg={create(e,t,n,r){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:`/`,sameSite:`strict`};n&&(i.expires=new Date,i.expires.setTime(i.expires.getTime()+n*60*1e3)),r&&(i.domain=r),document.cookie=Yg(e,t,i)},read(e){let t=`${e}=`,n=document.cookie.split(`;`);for(let e=0;e-1&&(e=window.location.hash.substring(window.location.hash.indexOf(`?`)));let r=e.substring(1).split(`&`);for(let e=0;e0&&r[e].substring(0,i)===t&&(n=r[e].substring(i+1))}}return n}},$g={name:`hash`,lookup(e){let{lookupHash:t,lookupFromHashIndex:n}=e,r;if(typeof window<`u`){let{hash:e}=window.location;if(e&&e.length>2){let i=e.substring(1);if(t){let e=i.split(`&`);for(let n=0;n0&&e[n].substring(0,i)===t&&(r=e[n].substring(i+1))}}if(r)return r;if(!r&&n>-1){let t=e.match(/\/([a-zA-Z-]*)/g);return Array.isArray(t)?t[typeof n==`number`?n:0]?.replace(`/`,``):void 0}}}return r}},e_=null,t_=()=>{if(e_!==null)return e_;try{if(e_=typeof window<`u`&&window.localStorage!==null,!e_)return!1;let e=`i18next.translate.boo`;window.localStorage.setItem(e,`foo`),window.localStorage.removeItem(e)}catch{e_=!1}return e_},n_={name:`localStorage`,lookup(e){let{lookupLocalStorage:t}=e;if(t&&t_())return window.localStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupLocalStorage:n}=t;n&&t_()&&window.localStorage.setItem(n,e)}},r_=null,i_=()=>{if(r_!==null)return r_;try{if(r_=typeof window<`u`&&window.sessionStorage!==null,!r_)return!1;let e=`i18next.translate.boo`;window.sessionStorage.setItem(e,`foo`),window.sessionStorage.removeItem(e)}catch{r_=!1}return r_},a_={name:`sessionStorage`,lookup(e){let{lookupSessionStorage:t}=e;if(t&&i_())return window.sessionStorage.getItem(t)||void 0},cacheUserLanguage(e,t){let{lookupSessionStorage:n}=t;n&&i_()&&window.sessionStorage.setItem(n,e)}},o_={name:`navigator`,lookup(e){let t=[];if(typeof navigator<`u`){let{languages:e,userLanguage:n,language:r}=navigator;if(e)for(let n=0;n0?t:void 0}},s_={name:`htmlTag`,lookup(e){let{htmlTag:t}=e,n,r=t||(typeof document<`u`?document.documentElement:null);return r&&typeof r.getAttribute==`function`&&(n=r.getAttribute(`lang`)),n}},c_={name:`path`,lookup(e){let{lookupFromPathIndex:t}=e;if(typeof window>`u`)return;let n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);if(Array.isArray(n))return n[typeof t==`number`?t:0]?.replace(`/`,``)}},l_={name:`subdomain`,lookup(e){let{lookupFromSubdomainIndex:t}=e,n=typeof t==`number`?t+1:1,r=typeof window<`u`&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(r)return r[n]}},u_=!1;try{document.cookie,u_=!0}catch{}var d_=[`querystring`,`cookie`,`localStorage`,`sessionStorage`,`navigator`,`htmlTag`];u_||d_.splice(1,1);var f_=()=>({order:d_,lookupQuerystring:`lng`,lookupCookie:`i18next`,lookupLocalStorage:`i18nextLng`,lookupSessionStorage:`i18nextLng`,caches:[`localStorage`],excludeCacheFor:[`cimode`],convertDetectedLanguage:e=>e}),p_=class{constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type=`languageDetector`,this.detectors={},this.init(e,t)}init(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=e,this.options=Kg(t,this.options||{},f_()),typeof this.options.convertDetectedLanguage==`string`&&this.options.convertDetectedLanguage.indexOf(`15897`)>-1&&(this.options.convertDetectedLanguage=e=>e.replace(`-`,`_`)),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=n,this.addDetector(Zg),this.addDetector(Qg),this.addDetector(n_),this.addDetector(a_),this.addDetector(o_),this.addDetector(s_),this.addDetector(c_),this.addDetector(l_),this.addDetector($g)}addDetector(e){return this.detectors[e.name]=e,this}detect(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,t=[];return e.forEach(e=>{if(this.detectors[e]){let n=this.detectors[e].lookup(this.options);n&&typeof n==`string`&&(n=[n]),n&&(t=t.concat(n))}}),t=t.filter(e=>e!=null&&!qg(e)).map(e=>this.options.convertDetectedLanguage(e)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?t:t.length>0?t[0]:null}cacheUserLanguage(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;t&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||t.forEach(t=>{this.detectors[t]&&this.detectors[t].cacheUserLanguage(e,this.options)}))}};p_.type=`languageDetector`;var m_={controls:{expandAll:`Expand all groups`,collapseAll:`Collapse all groups`,autoLayout:{title:`Auto layout: rearrange the diagram`,label:`Auto layout`},zoomIn:`Zoom in`,zoomOut:`Zoom out`,fitView:`Fit view`,enlarge:`enlarge`,shrink:`shrink`},toolbar:{showGroups:{label:`Show groups`,title:`Render groups as containers around the concepts and properties that belong to them`},erd:{label:`Show as Entity-Relationship-Diagram`,title:`Show as Entity-Relationship Diagram — render properties inside concept and metric nodes`},changesOnly:{label:`Changes only`,title:`Show only the concepts and relationships this change request touches`}},detail:{close:`Close`,openDetails:`Open details →`,properties:`Properties`,inherited:`Inherited`,noProperties:`No properties`,noMembers:`No members`,members:`Members ({{count}})`,membersTotal:`, {{total}} total`,type:{entity:`Entity`,property:`Property`,metric:`Metric`,group:`Group`,relationship:`Relationship`},expandThisGroup:`Expand this group`,collapseThisGroup:`Collapse this group`,diff:{heading:`Proposed change`,op:{add:`Added`,modify:`Changed`,remove:`Removed`},impact:{structural:`Structural`,descriptive:`Descriptive`,cosmetic:`Cosmetic`},impactHint:{structural:`Changes what the model means.`,descriptive:`Changes how the model reads, not what it means.`,cosmetic:`Wording only.`},summary:{add:`Does not exist yet. Approving this request creates it.`,remove:`Approving this request deletes it.`,modify:`Approving this request applies the following.`},before:`Now`,after:`Proposed`,unset:`not set`,related:`Changed relationships`},consumers:{heading:`Breaks on removal`,description:`These depend on this concept and do not decide this change. Removing it leaves their references broken.`,relationship:`relationships in other namespaces`,dataProduct:`data products`,dataContract:`data contracts`},overlap:{heading:`Also being changed`,description:`Another pending change request edits this element too. Approving this one reshapes the other onto the new state, which usually merges cleanly.`,view:`View the other change request`},externalNamespace:`Lives in namespace {{namespace}}`,unresolved:`This concept does not exist. A relationship in this change request points at it, so the request cannot be applied as it stands.`,unresolvedRemovedBy:`See the change request that removed it`,evidence:{heading:`Evidence`,none:`This change cites nothing. It cannot be checked against a source.`,unresolvable:`Cannot be checked again — no repository, path and commit`},propertiesChanged:`, {{count}} changed`,relationshipChanges:`Relationships`,op:{add:`adds`,remove:`removes`,modify:`changes`}},node:{noProperties:`No properties`,group:`Group`,expandGroup:`Expand group`,collapseGroup:`Collapse group`,propertiesChanged_one:`{{count}} property changed`,propertiesChanged_other:`{{count}} properties changed`},diff:{base:`Was`},review:{frozenByConflict:`conflict must be resolved first`,conflict:{target:`the namespace`,by:`by`,bothChanged:`Also changed in {{target}}`,changedHereRemovedThere:`Removed from {{target}}`,removedHereChangedThere:`Changed in {{target}} after this proposal removed it`,bothAdded:`Also added in {{target}}, with different content`},decision:{accepted:`Accepted`,rejected:`Rejected`},summary:{accepted:`{{count}} accepted`,rejected:`{{count}} rejected`},willChange:`{{count}} already decided`,impact:{structural:`Structural`,descriptive:`Descriptive`,cosmetic:`Cosmetic`}}},h_={controls:{expandAll:`Alle Gruppen aufklappen`,collapseAll:`Alle Gruppen einklappen`,autoLayout:{title:`Auto-Layout: Diagramm neu anordnen`,label:`Auto-Layout`},zoomIn:`Hineinzoomen`,zoomOut:`Herauszoomen`,fitView:`Ansicht einpassen`,enlarge:`Vergrößern`,shrink:`Verkleinern`},toolbar:{showGroups:{label:`Gruppen anzeigen`,title:`Gruppen als Container um die zugehörigen Konzepte und Eigenschaften herum darstellen`},erd:{label:`Als Entity-Relationship-Diagramm anzeigen`,title:`Als Entity-Relationship-Diagramm anzeigen — Eigenschaften innerhalb der Konzept- und Metrik-Knoten darstellen`},changesOnly:{label:`Nur Änderungen`,title:`Nur die Konzepte und Beziehungen anzeigen, die dieser Change Request betrifft`}},detail:{close:`Schließen`,openDetails:`Details öffnen →`,properties:`Eigenschaften`,inherited:`Geerbt`,noProperties:`Keine Eigenschaften`,noMembers:`Keine Mitglieder`,members:`Mitglieder ({{count}})`,membersTotal:`, {{total}} gesamt`,type:{entity:`Entität`,property:`Eigenschaft`,metric:`Metrik`,group:`Gruppe`,relationship:`Beziehung`},expandThisGroup:`Diese Gruppe aufklappen`,collapseThisGroup:`Diese Gruppe einklappen`,diff:{heading:`Vorgeschlagene Änderung`,op:{add:`Hinzugefügt`,modify:`Geändert`,remove:`Entfernt`},impact:{structural:`Strukturell`,descriptive:`Beschreibend`,cosmetic:`Kosmetisch`},impactHint:{structural:`Ändert die Bedeutung des Modells.`,descriptive:`Ändert die Lesart des Modells, nicht seine Bedeutung.`,cosmetic:`Nur die Formulierung.`},summary:{add:`Existiert noch nicht. Mit der Freigabe dieses Requests wird es angelegt.`,remove:`Mit der Freigabe dieses Requests wird es gelöscht.`,modify:`Mit der Freigabe dieses Requests wird Folgendes übernommen.`},before:`Aktuell`,after:`Vorgeschlagen`,unset:`nicht gesetzt`,related:`Geänderte Beziehungen`},consumers:{heading:`Bricht beim Entfernen`,description:`Diese hängen von diesem Konzept ab und entscheiden diese Änderung nicht. Beim Entfernen bleiben ihre Referenzen kaputt.`,relationship:`Beziehungen in anderen Namespaces`,dataProduct:`Data Products`,dataContract:`Data Contracts`},overlap:{heading:`Wird ebenfalls geändert`,description:`Ein anderer offener Change Request bearbeitet dieses Element ebenfalls. Mit der Freigabe wird der andere auf den neuen Stand übertragen, was meist sauber zusammengeführt wird.`,view:`Anderen Change Request ansehen`},externalNamespace:`Liegt im Namespace {{namespace}}`,unresolved:`Dieses Konzept existiert nicht. Eine Beziehung in diesem Change Request zeigt darauf, deshalb kann er so nicht angewendet werden.`,unresolvedRemovedBy:`Change Request ansehen, der es entfernt hat`,evidence:{heading:`Belege`,none:`Diese Änderung zitiert nichts. Sie lässt sich gegen keine Quelle prüfen.`,unresolvable:`Nicht erneut prüfbar — kein Repository, Pfad und Commit`},propertiesChanged:`, {{count}} geändert`,relationshipChanges:`Beziehungen`,op:{add:`fügt hinzu`,remove:`entfernt`,modify:`ändert`}},node:{noProperties:`Keine Eigenschaften`,group:`Gruppe`,expandGroup:`Gruppe aufklappen`,collapseGroup:`Gruppe einklappen`,propertiesChanged_one:`{{count}} Eigenschaft geändert`,propertiesChanged_other:`{{count}} Eigenschaften geändert`},diff:{base:`Vorher`},review:{frozenByConflict:`Konflikt muss zuerst gelöst werden`,conflict:{target:`dem Namespace`,by:`durch`,bothChanged:`Ebenfalls in {{target}} geändert`,changedHereRemovedThere:`In {{target}} entfernt`,removedHereChangedThere:`In {{target}} geändert, nachdem dieses Proposal es entfernt hat`,bothAdded:`Ebenfalls in {{target}} hinzugefügt, mit anderem Inhalt`},decision:{accepted:`Angenommen`,rejected:`Abgelehnt`},summary:{accepted:`{{count}} angenommen`,rejected:`{{count}} abgelehnt`},willChange:`{{count}} bereits entschieden`,impact:{structural:`Strukturell`,descriptive:`Beschreibend`,cosmetic:`Kosmetisch`}}},g_=tp.createInstance();g_.use(p_).use(bp).init({resources:{en:{translation:m_},de:{translation:h_}},fallbackLng:`en`,supportedLngs:[`en`,`de`],load:`languageOnly`,detection:{order:[`querystring`,`localStorage`,`navigator`],caches:[`localStorage`],lookupQuerystring:`lang`,lookupLocalStorage:`sv-locale`},interpolation:{escapeValue:!1},react:{useSuspense:!1}});function __(e){if(e.dataset.svInit)return;if(e.offsetParent===null){let t=new MutationObserver(()=>{e.offsetParent!==null&&(t.disconnect(),__(e))});t.observe(document.body,{attributes:!0,subtree:!0,attributeFilter:[`style`,`class`]});return}let t=e.dataset.jsonUrl,n=e.dataset.height||`400px`,r=e.dataset.layout||`force`,i=e.dataset.showMinimap===`true`;t&&(e.dataset.svInit=`true`,fetch(t,{credentials:`same-origin`}).then(e=>e.json()).then(a=>{if(!a.nodes||a.nodes.length===0){delete e.dataset.svInit;return}e.style.height=n,e.dataset.locale&&g_.changeLanguage(e.dataset.locale),(0,b.createRoot)(e).render((0,x.jsx)(Dp,{i18n:g_,children:(0,x.jsx)(hd,{children:(0,x.jsx)(Ug,{graphData:a,customHeight:n,layout:r,storageKey:pg(t),showMiniMap:i})})}))}).catch(t=>{delete e.dataset.svInit,console.error(`Semantic visualizer fetch error:`,t)}))}function v_(){document.querySelectorAll(`.semantic-visualizer`).forEach(__)}document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,v_):v_(),document.addEventListener(`htmx:load`,v_);function y_(e){let t=typeof e.container==`string`?document.querySelector(e.container):e.container;if(!t)return null;let n=e.height||`600px`;t.style.height=n,t.classList.add(`semantic-visualizer`),t.dataset.svInit=`true`,e.locale&&g_.changeLanguage(e.locale);let r=(0,b.createRoot)(t),i=t=>r.render((0,x.jsx)(Dp,{i18n:g_,children:(0,x.jsx)(hd,{children:(0,x.jsx)(Ug,{graphData:e.graphData,changes:t,targetName:e.targetName,onDecide:e.onDecide,customHeight:n,layout:e.layout||`force`,storageKey:e.storageKey||pg(e.container),showMiniMap:e.showMiniMap===!0})})}));return i(e.changes||[]),{update:e=>i(e)}}export{y_ as init}; \ No newline at end of file From 040c9102786fc321a28243e1c21a0e9e43336d51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Deuerling?= Date: Thu, 3 Sep 2026 15:13:09 +0200 Subject: [PATCH 3/4] Document the graph contract --- README.md | 161 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..74ca794 --- /dev/null +++ b/README.md @@ -0,0 +1,161 @@ +# Semantic Visualizer + +A React + Vite bundle that draws a semantic model (concepts, properties, metrics, groups and the +relationships between them) with React Flow. Built into a single `dist/assets/index.js` and +`dist/assets/index.css` for embedding. + +```bash +npm ci +npm run dev # http://localhost:5173 renders public/sample.json + # http://localhost:5173/?sample=review renders public/sample-review.json with the diff UI +npm run build # dist/assets/index.{js,css} +``` + +## Mounting + +### Auto-mount (container attributes) + +Every `.semantic-visualizer` element with a `data-json-url` is mounted on `DOMContentLoaded` and on +each `htmx:load`. + +| Attribute | Default | Meaning | +|---|---|---| +| `data-json-url` | required | URL returning the graph JSON below (fetched with `credentials: same-origin`) | +| `data-height` | `400px` | CSS height applied to the container | +| `data-layout` | `force` | `force` (d3-force) or `tree` (hierarchy, groups off) | +| `data-show-minimap` | `false` | `true` shows the React Flow minimap | +| `data-locale` | detected | `en` or `de`; otherwise resolved from `?lang`, localStorage, navigator | +| `data-changes-only` | `false` | `true` opens on the elements that carry a diff (no effect when nothing does) | + +### `init(options)` + +For a host that has more to supply than a URL. Exported from the bundle: + +```js +import { init } from '/assets/semantic-visualizer/index.js'; + +const handle = init({ + container: '#graph', // selector or element + graphData, // { nodes, edges } — see the contract below + height: '340px', + locale: 'en', + layout: 'force', // or 'tree' + changesOnly: true, // open on what carries a diff + focus: 'customer', // externalId to centre and select on mount + onSelect: (externalId, node) => true, // return true to claim the click (see below) + storageKey: 'my-key', // optional; localStorage key for positions and toggles + showMiniMap: false, +}); + +handle.update({ graphData: nextGraph, focus: 'order', changesOnly: false }); +``` + +`onSelect` lets the host own what a click means. Returning `true` claims the click and withholds +the built-in detail panel for that element (the host is showing it itself); any other return hands +the click back and the panel opens. The element passed as `focus` is treated as claimed on mount. + +`update(next)` merges `graphData`, `focus`, `changesOnly` and `onSelect` into the stored options and +re-renders. `container`, `height`, `locale`, `layout`, `storageKey` and `showMiniMap` are fixed at +mount. `init` returns `null` when the container is not found. + +## Graph JSON contract + +```json +{ "nodes": [ ... ], "edges": [ ... ] } +``` + +### Node + +| Key | Type | Meaning | +|---|---|---| +| `id` | string | Unique within the graph; edges reference it | +| `type` | string | `entity`, `metric`, `property`, `shared_property`, `group` | +| `parentId` | string? | `id` of the enclosing group | +| `data` | object | See below | + +`data`: + +| Key | Type | Meaning | +|---|---|---| +| `label` | string | Display name | +| `externalId` | string? | Stable id; what `focus`, `onSelect` and the review correlate on | +| `link` | string? | Href for the label and the "open details" link in the panel | +| `description` | string? | Shown in the detail panel | +| `foreignNamespace` | string? | Set when the concept lives in another namespace; badged, and hidden past a threshold | +| `highlight` | boolean? | Search hit; also switches on the entity-relationship view when a property matches | +| `searchMatch` | boolean? | `false` marks a 1-hop neighbour included only as context | +| `properties` | Property[] | Rendered as rows in the entity-relationship view and the panel | +| `diff` | `add` \| `modify` \| `remove`? | What a pending change request does to this element; ring and badge on the node | +| `diffDetail` | DiffDetail? | What changed, for the panel | +| `changedPropertyCount` | number? | How many of its properties carry a diff when the concept itself does not; keeps it in the changes-only view | +| `evidence` | Evidence[]? | What the change cites | +| `evidenceMissing` | boolean? | Changed but cites nothing; marked on the node and in the panel | +| `overlaps` | Overlap[]? | Other pending change requests editing this element | +| `consumers` | Consumers? | What breaks if a removal goes ahead | +| `unresolved` | boolean? | Named by a relationship but present nowhere; drawn dashed and red | +| `removedBy` | `{ link }`? | With `unresolved`: the change request that removed it | +| `dimmed` | boolean? | Rendered faded. Set by the visualizer for context nodes; accepted as input too | + +### Property (`data.properties[]`) + +| Key | Type | Meaning | +|---|---|---| +| `name` | string | | +| `externalId` | string? | Stable id | +| `type` | string? | Data type, shown beside the name | +| `description` | string? | | +| `primaryKey` | boolean? | Key icon | +| `inherited` | boolean? | Listed separately, italic | +| `shared` | boolean? | Carried by several concepts; badged in the panel | +| `highlight` | boolean? | Search hit; the row is accented and auto-expanded | +| `diff` | `add` \| `modify` \| `remove`? | Rail, badge and strike-through on the row | +| `diffDetail` | DiffDetail? | Its `fields` render on the row in the panel | + +### Edge + +| Key | Type | Meaning | +|---|---|---| +| `id` | string | | +| `source`, `target` | string | Node ids | +| `label` | string | Drawn on the edge | +| `type` | string | Relationship type, e.g. `hasProperty`, `relatedTo`, `isA` | +| `externalId` | string? | Stable id | +| `diff` | `add` \| `modify` \| `remove`? | Coloured stroke; `remove` is dashed. Both ends count as changed for the changes-only view | +| `diffDetail` | DiffDetail? | Shown when the edge is clicked | +| `evidence`, `evidenceMissing` | | As on nodes | + +### DiffDetail + +```json +{ + "op": "add | modify | remove", + "impact": "structural | descriptive | cosmetic", + "fields": [ + { "field": "description", "before": "…", "after": "…", "base": "…", "impact": "descriptive" } + ] +} +``` + +`before`/`after` are rendered by shape: a boolean, a value from a small vocabulary (`status`, `kind`, +`element_type`, `better_when`) or a code-like field (`pattern`, `formula`, `iri`, `data_type`, +`extends`, `unit`) as a chip transition; a list as a set difference; a map (e.g. translations keyed +by locale) key by key; anything else as side-by-side prose. `base` is optional and, when present, +adds a third column showing the value the author wrote against (a conflict). Any value may arrive +decorated as `{ "display": "badge", "label", "color", "icon", "href" }` and is drawn as a badge; +`color` is a palette token (`red`, `orange`, `amber`, `yellow`, `green`, `teal`, `blue`, `indigo`, +`purple`, `pink`, `gray`), `icon` inline SVG, `href` a link back to the thing named. + +### Evidence, Overlap, Consumers + +```json +"evidence": [ { "quote": "…", "label": "docs/glossary.md", "resolvable": true } ], +"overlaps": [ { "changeRequestExternalId": "cr-17", "link": "/…", "teamName": "Fulfillment" } ], +"consumers": { + "total": 2, + "relationships": [ { "label": "reports", "namespace": "reporting", "link": "/…" } ], + "dataProducts": [ { "label": "Finance KPIs", "link": "/…" } ], + "dataContracts": [ { "label": "…", "link": "/…" } ] +} +``` + +`public/sample-review.json` exercises every key above. From b56dee92f4cdeb26aae4c3fe948bbb401396292d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Deuerling?= Date: Fri, 4 Sep 2026 11:21:08 +0200 Subject: [PATCH 4/4] Pill nodes: nothing before the name The evidence chip is gone from the node (the detail panel still says when a change cites nothing), and the remaining warnings sit after the name with the diff word. --- src/EntityNode.jsx | 2 +- src/KnowledgeNode.jsx | 78 ++++++++++++++++------------------------ src/diffStyles.js | 4 +-- src/i18n/locales/de.json | 9 +++-- src/i18n/locales/en.json | 9 +++-- 5 files changed, 47 insertions(+), 55 deletions(-) diff --git a/src/EntityNode.jsx b/src/EntityNode.jsx index cde2cfa..273c31e 100644 --- a/src/EntityNode.jsx +++ b/src/EntityNode.jsx @@ -71,7 +71,7 @@ export default function EntityNode({ data, type }) { // graph, where rows are unreadable until you zoom in. const changedProperties = data.changedPropertyCount || 0; const ring = diff || (changedProperties > 0 ? DIFF_STYLES.modify : null); - const ringLabel = diff ? diff.label : t('node.propertiesChanged', { count: changedProperties }); + const ringLabel = diff ? t(`node.diff.${data.diff}`) : t('node.propertiesChanged', { count: changedProperties }); return (
- {diff && ( - {diff.symbol} + {icon} + + {data.label} + + + {/* What a change request does to this concept, as a word after the name in the diff colour. + A concept untouched itself but with edited properties reads as edited too: without that + the node looks untouched and the request reads as empty. */} + {(diff || data.changedPropertyCount > 0) && ( + + {t(`node.diff.${diff ? data.diff : 'modify'}`)} + )} + {/* Warnings after the name, on the right with the diff word, so the left of a pill is always + its icon and its name. */} {/* Named by a relationship but present nowhere. Marked rather than hidden: a change request pointing at a concept that does not exist cannot be applied, and silently dropping the edge would show the reviewer an empty diff. */} @@ -106,36 +129,6 @@ export default function KnowledgeNode({ data, type }) { missing )} - - {/* Only its properties changed, so the concept itself carries no diff mark. Without this the - node looks untouched and the change request reads as empty. */} - {!diff && data.changedPropertyCount > 0 && ( - - {data.changedPropertyCount} - - )} - {/* Changed, but citing nothing. Marked on the node because a reviewer scanning a large - proposal needs to see which parts are unsupported without opening each one. */} - {data.evidenceMissing && ( - - ? - - )} {/* Another pending request edits this same element. Indigo rather than the diff or impact colours: it is not a property of this change, it is a warning about a different one. */} {data.overlaps?.length > 0 && ( @@ -170,17 +163,6 @@ export default function KnowledgeNode({ data, type }) { {data.consumers.total} )} - {icon} - - {data.label} - -
); } diff --git a/src/diffStyles.js b/src/diffStyles.js index 089d455..f7d721f 100644 --- a/src/diffStyles.js +++ b/src/diffStyles.js @@ -2,10 +2,10 @@ // components because edges carry the same three states and must match them. // // Deliberately not a recolour of the element itself: colour already encodes -// concept type (entity/property/...), so diff state is a ring and a badge on +// concept type (entity/property/...), so diff state is a ring and a word on // nodes, and stroke colour on edges — which have no type colour of their own. export const DIFF_STYLES = { add: { color: '#16a34a', label: 'added', symbol: '+' }, // green-600 - modify: { color: '#d97706', label: 'changed', symbol: '~' }, // amber-600 + modify: { color: '#d97706', label: 'edited', symbol: '~' }, // amber-600 remove: { color: '#dc2626', label: 'removed', symbol: '−' }, // red-600 }; diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index 3fbd1b1..f6e56ef 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json @@ -54,7 +54,7 @@ "diff": { "op": { "add": "Hinzugefügt", - "modify": "Geändert", + "modify": "Bearbeitet", "remove": "Entfernt" }, "impact": { @@ -106,6 +106,11 @@ "collapseGroup": "Gruppe einklappen", "propertiesChanged_one": "{{count}} Eigenschaft geändert", "propertiesChanged_other": "{{count}} Eigenschaften geändert", - "foreignNamespace": "Aus dem Namespace \"{{namespace}}\"" + "foreignNamespace": "Aus dem Namespace \"{{namespace}}\"", + "diff": { + "add": "hinzugefügt", + "modify": "bearbeitet", + "remove": "entfernt" + } } } diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index b813bf9..ed813db 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -54,7 +54,7 @@ "diff": { "op": { "add": "Added", - "modify": "Changed", + "modify": "Edited", "remove": "Removed" }, "impact": { @@ -106,6 +106,11 @@ "collapseGroup": "Collapse group", "propertiesChanged_one": "{{count}} property changed", "propertiesChanged_other": "{{count}} properties changed", - "foreignNamespace": "From the \"{{namespace}}\" namespace" + "foreignNamespace": "From the \"{{namespace}}\" namespace", + "diff": { + "add": "added", + "modify": "edited", + "remove": "removed" + } } }