diff --git a/docs/screenshots/architecture.png b/docs/screenshots/architecture.png index 8060ac1..dc07d57 100644 Binary files a/docs/screenshots/architecture.png and b/docs/screenshots/architecture.png differ diff --git a/docs/screenshots/graph.png b/docs/screenshots/graph.png index ebba12b..cf776d0 100644 Binary files a/docs/screenshots/graph.png and b/docs/screenshots/graph.png differ diff --git a/docs/screenshots/pull-requests.png b/docs/screenshots/pull-requests.png index e1cd9b0..d3df1d4 100644 Binary files a/docs/screenshots/pull-requests.png and b/docs/screenshots/pull-requests.png differ diff --git a/docs/screenshots/review.png b/docs/screenshots/review.png index d1d31d7..8aec122 100644 Binary files a/docs/screenshots/review.png and b/docs/screenshots/review.png differ diff --git a/docs/screenshots/settings.png b/docs/screenshots/settings.png index 8c28e07..310ceb2 100644 Binary files a/docs/screenshots/settings.png and b/docs/screenshots/settings.png differ diff --git a/src/loadpath/static/assets/index-YwQandBA.css b/src/loadpath/static/assets/index-DA_Qg5fM.css similarity index 78% rename from src/loadpath/static/assets/index-YwQandBA.css rename to src/loadpath/static/assets/index-DA_Qg5fM.css index 79a6ed6..e948f49 100644 --- a/src/loadpath/static/assets/index-YwQandBA.css +++ b/src/loadpath/static/assets/index-DA_Qg5fM.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: #555;--xy-background-pattern-lines-color-default: #333;--xy-background-pattern-cross-color-default: #333;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .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;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .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))}:root,[data-theme=obsidian]{--bg: #070b10;--bg-2: #0d141c;--surface: #121a24;--line: #1e2c3c;--ink: #e7eef6;--muted: #8b9bb0;--high: #2a9d8f;--medium: #e9c46a;--low: #e76f51;--critical: #e85d04;--accent: #4cc9f0;--rail-from: #0b1219;--rail-to: #070b10;--rail-active: #15202c;--btn: #173044;--btn-line: #24506c;--btn-primary: #134e4a;--btn-primary-line: #2a9d8f;--node-bg: #101822;--node-line: #2a3d52;--graph-bg: #070b10;--graph-grid: rgba(42, 80, 120, .09);--edge-cheap: #4a5568;--edge-expensive: #f4a261;--edge-critical: #e85d04;--shadow: rgba(76, 201, 240, .08)}[data-theme=nord]{--bg: #2e3440;--bg-2: #3b4252;--surface: #434c5e;--line: #4c566a;--ink: #eceff4;--muted: #d8dee9;--high: #a3be8c;--medium: #ebcb8b;--low: #bf616a;--critical: #d08770;--accent: #88c0d0;--rail-from: #3b4252;--rail-to: #2e3440;--rail-active: #4c566a;--btn: #434c5e;--btn-line: #81a1c1;--btn-primary: #5e81ac;--btn-primary-line: #88c0d0;--node-bg: #3b4252;--node-line: #81a1c1;--graph-bg: #2e3440;--graph-grid: rgba(136, 192, 208, .12);--edge-cheap: #4c566a;--edge-expensive: #d08770;--edge-critical: #bf616a;--shadow: rgba(136, 192, 208, .12)}[data-theme=solarized-dark]{--bg: #002b36;--bg-2: #073642;--surface: #0a3944;--line: #16444f;--ink: #eee8d5;--muted: #93a1a1;--high: #859900;--medium: #b58900;--low: #dc322f;--critical: #cb4b16;--accent: #2aa198;--rail-from: #073642;--rail-to: #002b36;--rail-active: #16444f;--btn: #073642;--btn-line: #268bd2;--btn-primary: #0a4a42;--btn-primary-line: #2aa198;--node-bg: #073642;--node-line: #268bd2;--graph-bg: #002b36;--graph-grid: rgba(42, 161, 152, .12);--edge-cheap: #586e75;--edge-expensive: #cb4b16;--edge-critical: #dc322f;--shadow: rgba(42, 161, 152, .12)}[data-theme=forest]{--bg: #0e1510;--bg-2: #152019;--surface: #1b2a20;--line: #2c4334;--ink: #e4f0e6;--muted: #8eaa96;--high: #6ab04c;--medium: #c8a951;--low: #e17055;--critical: #d35400;--accent: #7bed9f;--rail-from: #152019;--rail-to: #0e1510;--rail-active: #1f3326;--btn: #1f3326;--btn-line: #3d6b4f;--btn-primary: #1e4d32;--btn-primary-line: #6ab04c;--node-bg: #16241b;--node-line: #3d6b4f;--graph-bg: #0e1510;--graph-grid: rgba(123, 237, 159, .1);--edge-cheap: #3d6b4f;--edge-expensive: #c8a951;--edge-critical: #d35400;--shadow: rgba(123, 237, 159, .1)}[data-theme=rose]{--bg: #191724;--bg-2: #1f1d2e;--surface: #26233a;--line: #403d52;--ink: #e0def4;--muted: #908caa;--high: #9ccfd8;--medium: #f6c177;--low: #eb6f92;--critical: #eb6f92;--accent: #c4a7e7;--rail-from: #1f1d2e;--rail-to: #191724;--rail-active: #26233a;--btn: #26233a;--btn-line: #c4a7e7;--btn-primary: #3a2f4d;--btn-primary-line: #c4a7e7;--node-bg: #1f1d2e;--node-line: #524f67;--graph-bg: #191724;--graph-grid: rgba(196, 167, 231, .12);--edge-cheap: #524f67;--edge-expensive: #f6c177;--edge-critical: #eb6f92;--shadow: rgba(196, 167, 231, .12)}[data-theme=amber]{--bg: #120e0a;--bg-2: #1c1610;--surface: #261e16;--line: #3d2f22;--ink: #f4e6d0;--muted: #b59a78;--high: #c4d6a0;--medium: #e9b44c;--low: #d8572a;--critical: #c0392b;--accent: #f0a05a;--rail-from: #1c1610;--rail-to: #120e0a;--rail-active: #2b2218;--btn: #2b2218;--btn-line: #8a5a2b;--btn-primary: #4a3418;--btn-primary-line: #f0a05a;--node-bg: #1c1610;--node-line: #8a5a2b;--graph-bg: #120e0a;--graph-grid: rgba(240, 160, 90, .12);--edge-cheap: #5c4a38;--edge-expensive: #e9b44c;--edge-critical: #d8572a;--shadow: rgba(240, 160, 90, .12)}[data-theme=volcano]{--bg: #14090a;--bg-2: #1e0e10;--surface: #2a1416;--line: #4a2226;--ink: #fde8e4;--muted: #c48b86;--high: #7bed9f;--medium: #f6c90e;--low: #ff6b6b;--critical: #ff3b3b;--accent: #ff7b54;--rail-from: #1e0e10;--rail-to: #14090a;--rail-active: #32181b;--btn: #32181b;--btn-line: #ff7b54;--btn-primary: #5a1f18;--btn-primary-line: #ff7b54;--node-bg: #1e0e10;--node-line: #7a3330;--graph-bg: #14090a;--graph-grid: rgba(255, 123, 84, .12);--edge-cheap: #5a3330;--edge-expensive: #ff7b54;--edge-critical: #ff3b3b;--shadow: rgba(255, 123, 84, .14)}[data-theme=lavender]{--bg: #12101c;--bg-2: #1a1730;--surface: #221e3c;--line: #3b3560;--ink: #efeaff;--muted: #b3a7d6;--high: #80ffdb;--medium: #ffd166;--low: #ff6b9d;--critical: #ff4d6d;--accent: #c77dff;--rail-from: #1a1730;--rail-to: #12101c;--rail-active: #2a2550;--btn: #2a2550;--btn-line: #c77dff;--btn-primary: #3d2a66;--btn-primary-line: #c77dff;--node-bg: #1a1730;--node-line: #5a4d8a;--graph-bg: #12101c;--graph-grid: rgba(199, 125, 255, .12);--edge-cheap: #5a4d8a;--edge-expensive: #ffd166;--edge-critical: #ff4d6d;--shadow: rgba(199, 125, 255, .14)}[data-theme=paper]{--bg: #f6f1e8;--bg-2: #efe6d6;--surface: #fffaf2;--line: #d9cbb6;--ink: #2b241c;--muted: #6f6456;--high: #2a7a4b;--medium: #b5811a;--low: #c0392b;--critical: #a93226;--accent: #1d6a7a;--rail-from: #efe6d6;--rail-to: #e7dcc8;--rail-active: #e2d3bb;--btn: #fffaf2;--btn-line: #c9b79a;--btn-primary: #d7eee0;--btn-primary-line: #2a7a4b;--node-bg: #fffaf2;--node-line: #c9b79a;--graph-bg: #f6f1e8;--graph-grid: rgba(29, 106, 122, .1);--edge-cheap: #b7a48c;--edge-expensive: #c0392b;--edge-critical: #a93226;--shadow: rgba(43, 36, 28, .08)}[data-theme=solarized-light]{--bg: #fdf6e3;--bg-2: #eee8d5;--surface: #f5efdc;--line: #d6cba9;--ink: #657b83;--muted: #93a1a1;--high: #859900;--medium: #b58900;--low: #dc322f;--critical: #cb4b16;--accent: #268bd2;--rail-from: #eee8d5;--rail-to: #e6dfc8;--rail-active: #e0d9c0;--btn: #fdf6e3;--btn-line: #93a1a1;--btn-primary: #e8efc8;--btn-primary-line: #859900;--node-bg: #fdf6e3;--node-line: #93a1a1;--graph-bg: #fdf6e3;--graph-grid: rgba(38, 139, 210, .12);--edge-cheap: #93a1a1;--edge-expensive: #cb4b16;--edge-critical: #dc322f;--shadow: rgba(101, 123, 131, .1)}[data-theme=seafoam]{--bg: #eef7f4;--bg-2: #dff0ea;--surface: #ffffff;--line: #b7d5cc;--ink: #17332c;--muted: #4d7268;--high: #1b8a5a;--medium: #c48a14;--low: #c44536;--critical: #9b2d22;--accent: #1d9a8a;--rail-from: #dff0ea;--rail-to: #cfe6de;--rail-active: #c4ddd4;--btn: #ffffff;--btn-line: #8fbfb2;--btn-primary: #d4f0e4;--btn-primary-line: #1b8a5a;--node-bg: #ffffff;--node-line: #8fbfb2;--graph-bg: #eef7f4;--graph-grid: rgba(29, 154, 138, .12);--edge-cheap: #8fbfb2;--edge-expensive: #c48a14;--edge-critical: #c44536;--shadow: rgba(23, 51, 44, .08)}[data-theme=high-contrast]{--bg: #ffffff;--bg-2: #f2f2f2;--surface: #ffffff;--line: #111111;--ink: #000000;--muted: #222222;--high: #007a33;--medium: #8a5a00;--low: #b00000;--critical: #9b0000;--accent: #0033cc;--rail-from: #f2f2f2;--rail-to: #e6e6e6;--rail-active: #d9d9d9;--btn: #ffffff;--btn-line: #000000;--btn-primary: #d9f2e3;--btn-primary-line: #007a33;--node-bg: #ffffff;--node-line: #000000;--graph-bg: #ffffff;--graph-grid: rgba(0, 0, 0, .12);--edge-cheap: #444444;--edge-expensive: #8a5a00;--edge-critical: #b00000;--shadow: rgba(0, 0, 0, .12)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}:root{--radius: 6px;--radius-lg: 10px;--control-h: 32px;--font: "IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--focus-ring: 0 0 0 2px var(--bg), 0 0 0 4px var(--accent);--space: 8px}body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:13px;line-height:1.45;-webkit-font-smoothing:antialiased}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible,summary:focus-visible{outline:none;box-shadow:var(--focus-ring)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.skip{position:absolute;left:12px;top:-40px;z-index:50;background:var(--surface);color:var(--ink);border:1px solid var(--accent);border-radius:var(--radius);padding:8px 12px}.skip:focus{top:12px}.app{display:grid;grid-template-columns:232px 1fr;height:100%}.rail{border-right:1px solid var(--line);background:linear-gradient(180deg,var(--rail-from),var(--rail-to));padding:16px 12px;display:flex;flex-direction:column;gap:2px;min-width:0}.brand{display:flex;flex-direction:column;gap:2px;padding:4px 8px 16px}.brand-mark{font-family:var(--mono);letter-spacing:.16em;font-size:11px;text-transform:uppercase;color:var(--accent);font-weight:600}.brand-sub{font-size:11px;color:var(--muted)}.nav-item{display:flex;align-items:center;gap:10px;background:transparent;border:0;text-align:left;padding:8px 10px;border-radius:var(--radius);color:var(--muted);cursor:pointer;width:100%}.nav-item:hover{background:color-mix(in srgb,var(--rail-active) 70%,transparent);color:var(--ink)}.nav-item.active{background:var(--rail-active);color:var(--ink);font-weight:500}.nav-item svg{flex-shrink:0}.theme-pick{margin-top:14px;display:grid;gap:4px;padding:0 2px}.theme-pick label{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:500}.theme-pick select,.field select,.field input,.topbar input,.topbar select,.settings input,.settings select{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:0 10px;height:var(--control-h);width:100%}.rail-foot{margin-top:auto;padding:12px 8px 4px;border-top:1px solid var(--line);display:grid;gap:6px}.kbd-hint{font-size:11px;color:var(--muted)}kbd{font-family:var(--mono);font-size:10px;border:1px solid var(--line);border-radius:4px;padding:0 4px;background:var(--surface)}.main{display:flex;flex-direction:column;min-width:0;min-height:0;position:relative;background:var(--bg)}.progress{position:absolute;top:0;left:0;right:0;height:2px;overflow:hidden;z-index:30;background:color-mix(in srgb,var(--accent) 20%,transparent)}.progress i{display:block;height:100%;width:32%;background:var(--accent);animation:indeterminate 1.1s ease-in-out infinite}@keyframes indeterminate{0%{transform:translate(-120%)}to{transform:translate(400%)}}.topbar{display:flex;gap:10px;align-items:flex-end;padding:10px 16px;border-bottom:1px solid var(--line);background:var(--bg-2);flex-wrap:wrap}.field{display:grid;gap:4px;min-width:0}.field>span{font-size:11px;color:var(--muted);font-weight:500}.field.path{flex:1;min-width:180px}.field.ref{width:132px;flex:0 0 132px}.field.workspace{width:180px;flex:0 0 180px}.topbar input,.topbar select{min-width:0}.topbar-actions{display:flex;gap:8px;margin-left:auto;align-items:center;padding-bottom:0}.btn,.topbar button{background:var(--btn);border:1px solid var(--btn-line);border-radius:var(--radius);height:var(--control-h);padding:0 12px;cursor:pointer;font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap}.btn:hover,.topbar button:hover{filter:brightness(1.08)}.btn:disabled,.topbar button:disabled{opacity:.55;cursor:not-allowed;filter:none}.btn.primary{background:var(--btn-primary);border-color:var(--btn-primary-line)}.btn.ghost{background:transparent}.alerts{display:grid;gap:8px;padding:10px 16px 0}.alerts:empty{display:none;padding:0}.stage{flex:1;min-height:0;display:flex;flex-direction:column}.content{flex:1;min-height:0;display:grid;grid-template-columns:minmax(340px,420px) 1fr}.brief{overflow:auto;border-right:1px solid var(--line);padding:16px 18px 24px;background:radial-gradient(circle at 0 0,color-mix(in srgb,var(--accent) 8%,transparent),transparent 42%),var(--bg)}.graph-wrap{position:relative;min-height:0;display:flex;flex-direction:column}.graph-wrap .react-flow{background-color:var(--graph-bg);background-image:linear-gradient(var(--graph-grid) 1px,transparent 1px),linear-gradient(90deg,var(--graph-grid) 1px,transparent 1px);background-size:24px 24px}.react-flow__minimap{background:var(--surface)!important}.react-flow__controls{box-shadow:none!important}.react-flow__controls-button{background:var(--surface)!important;border-bottom:1px solid var(--line)!important;fill:var(--ink)!important}h1{font-size:18px;margin:0 0 6px;font-weight:600}h2{font-size:13px;margin:0;font-weight:600}.merge-box{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-lg);padding:12px 14px;margin-bottom:12px}.merge-box.high{border-color:color-mix(in srgb,var(--high) 55%,var(--line))}.merge-box.medium{border-color:color-mix(in srgb,var(--medium) 55%,var(--line))}.merge-box.low{border-color:color-mix(in srgb,var(--low) 55%,var(--line))}.level{font-family:var(--mono);font-weight:600;font-size:14px}.level.high{color:var(--high)}.level.medium{color:var(--medium)}.level.low{color:var(--low)}.merge-title{margin-top:4px;font-size:13px;color:var(--ink)}.reasons{margin:10px 0 0;padding:0 0 0 18px;color:var(--muted)}.reasons li{margin:0 0 4px}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 14px}.metric{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:8px 10px}.metric .n{font-family:var(--mono);font-size:16px;font-weight:600;font-variant-numeric:tabular-nums}.metric .l{font-size:11px;color:var(--muted);margin-top:2px}.section{border-top:1px solid var(--line);padding:8px 0 4px}.section>summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.07em;font-weight:600;padding:6px 0}.section>summary::-webkit-details-marker{display:none}.section>summary .count{font-family:var(--mono);letter-spacing:0;text-transform:none;border:1px solid var(--line);border-radius:999px;padding:0 7px;height:18px;display:inline-flex;align-items:center;font-size:11px}.kicker{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em;margin:16px 0 6px;font-weight:600}.chip{display:inline-flex;align-items:center;font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--line);margin:0 6px 6px 0;color:var(--muted);background:var(--surface)}.chip.blocker{color:var(--low);border-color:var(--low)}.chip.warning{color:var(--medium);border-color:var(--medium)}.chip.open{color:var(--high);border-color:color-mix(in srgb,var(--high) 50%,var(--line))}.file{font-family:var(--mono);font-size:12px;color:var(--accent)}.read-item,.finding,.residual{padding:8px 0;border-bottom:1px solid color-mix(in srgb,var(--line) 70%,transparent)}.read-item:last-child,.finding:last-child{border-bottom:0}.read-item .why{color:var(--muted);font-size:12px;margin-top:2px}.muted{color:var(--muted);font-size:13px;line-height:1.45}.error{color:var(--low);padding:8px 12px;border:1px solid var(--low);background:color-mix(in srgb,var(--low) 10%,var(--surface));border-radius:var(--radius);display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.banner{padding:8px 12px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);font-size:13px;line-height:1.45;display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.banner.warn{border-color:var(--medium);color:var(--medium)}.banner.stale{border-color:var(--low);color:var(--low)}.banner .dismiss{background:transparent;border:0;color:inherit;cursor:pointer;height:auto;padding:0 2px;opacity:.7}.empty{padding:24px 8px;color:var(--muted);font-size:13px;line-height:1.55}.empty h2{font-size:16px;color:var(--ink);margin-bottom:8px}.empty ol{margin:12px 0 0 18px;padding:0}.empty code,code{font-family:var(--mono);font-size:12px;color:var(--accent)}.btn-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.pr-list{padding:16px;overflow:auto}.pr-toolbar{display:flex;gap:8px;align-items:flex-end;margin-bottom:14px}.pr-toolbar .field{flex:1}.pr-toolbar .field.provider{flex:0 0 140px}.pr{border:1px solid var(--line);background:var(--surface);padding:12px 14px;border-radius:var(--radius-lg);margin-bottom:10px}.pr h3{margin:0 0 4px;font-size:14px;font-weight:600}.pr-meta{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin:6px 0 10px}.pr-actions{display:flex;gap:8px;align-items:center}.settings{padding:24px;max-width:760px;overflow:auto;display:grid;gap:16px}.settings-card{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-lg);padding:16px;display:grid;gap:8px}.settings-card h2{font-size:14px;margin-bottom:2px}.settings label{font-size:12px;color:var(--muted);font-weight:500}.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.theme-swatch{border:1px solid var(--line);background:var(--bg);border-radius:var(--radius);padding:10px;text-align:left;cursor:pointer;height:auto}.theme-swatch.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.theme-swatch .name{font-size:13px;font-weight:600}.theme-swatch .group{font-size:11px;color:var(--muted)}.headline{white-space:pre-wrap;font-family:var(--mono);font-size:12px;color:var(--muted);margin:8px 0 0}.graph-modes{display:flex;gap:8px;align-items:center;padding:8px 14px;border-bottom:1px solid var(--line);background:var(--bg-2)}.seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:2px;background:var(--surface)}.seg button,.graph-modes button{background:transparent;border:0;border-radius:999px;padding:4px 12px;color:var(--muted);cursor:pointer;height:26px}.seg button.active,.graph-modes button.active{background:var(--rail-active);color:var(--ink)}.legend{margin-left:auto;display:flex;gap:12px;color:var(--muted);font-size:11px}.legend i{display:inline-block;width:14px;height:2px;margin-right:6px;vertical-align:middle;background:var(--edge-cheap)}.legend i.exp{background:var(--edge-expensive)}.legend i.crit{background:var(--edge-critical);height:3px}.legend i.dash{border-top:2px dashed var(--muted);background:none;height:0}.inspector{position:absolute;top:12px;right:12px;z-index:5;width:260px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:10px 12px;box-shadow:0 8px 24px var(--shadow)}.inspector .t{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.inspector .n{font-weight:600;margin:4px 0}.lp-node{padding:8px 10px;border-radius:var(--radius);border:1px solid var(--node-line);background:var(--node-bg);min-width:168px;box-shadow:0 0 0 1px var(--shadow)}.lp-node .t{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.lp-node .n{font-size:13px;font-weight:600}.lp-node.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.type-table{width:100%;border-collapse:collapse;font-size:12px}.type-table td{padding:3px 0}.type-table td:last-child{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--muted)}@media(prefers-reduced-motion:reduce){.progress i{animation:none;width:100%}*{scroll-behavior:auto!important}}@media(max-width:960px){.app{grid-template-columns:56px 1fr}.brand-sub,.nav-item span,.theme-pick,.kbd-hint,.rail-foot .muted{display:none}.nav-item{justify-content:center;padding:10px}.content{grid-template-columns:1fr}.brief{border-right:0;border-bottom:1px solid var(--line);max-height:42vh}} +.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: #555;--xy-background-pattern-lines-color-default: #333;--xy-background-pattern-cross-color-default: #333;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .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;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .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))}:root,[data-theme=obsidian]{--bg: #070b10;--bg-2: #0d141c;--surface: #121a24;--line: #1e2c3c;--ink: #e7eef6;--muted: #8b9bb0;--high: #2a9d8f;--medium: #e9c46a;--low: #e76f51;--critical: #e85d04;--accent: #4cc9f0;--rail-from: #0b1219;--rail-to: #070b10;--rail-active: #15202c;--btn: #173044;--btn-line: #24506c;--btn-primary: #134e4a;--btn-primary-line: #2a9d8f;--node-bg: #101822;--node-line: #2a3d52;--graph-bg: #070b10;--graph-grid: rgba(42, 80, 120, .09);--edge-cheap: #4a5568;--edge-expensive: #f4a261;--edge-critical: #e85d04;--shadow: rgba(76, 201, 240, .08)}[data-theme=nord]{--bg: #2e3440;--bg-2: #3b4252;--surface: #434c5e;--line: #4c566a;--ink: #eceff4;--muted: #d8dee9;--high: #a3be8c;--medium: #ebcb8b;--low: #bf616a;--critical: #d08770;--accent: #88c0d0;--rail-from: #3b4252;--rail-to: #2e3440;--rail-active: #4c566a;--btn: #434c5e;--btn-line: #81a1c1;--btn-primary: #5e81ac;--btn-primary-line: #88c0d0;--node-bg: #3b4252;--node-line: #81a1c1;--graph-bg: #2e3440;--graph-grid: rgba(136, 192, 208, .12);--edge-cheap: #4c566a;--edge-expensive: #d08770;--edge-critical: #bf616a;--shadow: rgba(136, 192, 208, .12)}[data-theme=solarized-dark]{--bg: #002b36;--bg-2: #073642;--surface: #0a3944;--line: #16444f;--ink: #eee8d5;--muted: #93a1a1;--high: #859900;--medium: #b58900;--low: #dc322f;--critical: #cb4b16;--accent: #2aa198;--rail-from: #073642;--rail-to: #002b36;--rail-active: #16444f;--btn: #073642;--btn-line: #268bd2;--btn-primary: #0a4a42;--btn-primary-line: #2aa198;--node-bg: #073642;--node-line: #268bd2;--graph-bg: #002b36;--graph-grid: rgba(42, 161, 152, .12);--edge-cheap: #586e75;--edge-expensive: #cb4b16;--edge-critical: #dc322f;--shadow: rgba(42, 161, 152, .12)}[data-theme=forest]{--bg: #0e1510;--bg-2: #152019;--surface: #1b2a20;--line: #2c4334;--ink: #e4f0e6;--muted: #8eaa96;--high: #6ab04c;--medium: #c8a951;--low: #e17055;--critical: #d35400;--accent: #7bed9f;--rail-from: #152019;--rail-to: #0e1510;--rail-active: #1f3326;--btn: #1f3326;--btn-line: #3d6b4f;--btn-primary: #1e4d32;--btn-primary-line: #6ab04c;--node-bg: #16241b;--node-line: #3d6b4f;--graph-bg: #0e1510;--graph-grid: rgba(123, 237, 159, .1);--edge-cheap: #3d6b4f;--edge-expensive: #c8a951;--edge-critical: #d35400;--shadow: rgba(123, 237, 159, .1)}[data-theme=rose]{--bg: #191724;--bg-2: #1f1d2e;--surface: #26233a;--line: #403d52;--ink: #e0def4;--muted: #908caa;--high: #9ccfd8;--medium: #f6c177;--low: #eb6f92;--critical: #eb6f92;--accent: #c4a7e7;--rail-from: #1f1d2e;--rail-to: #191724;--rail-active: #26233a;--btn: #26233a;--btn-line: #c4a7e7;--btn-primary: #3a2f4d;--btn-primary-line: #c4a7e7;--node-bg: #1f1d2e;--node-line: #524f67;--graph-bg: #191724;--graph-grid: rgba(196, 167, 231, .12);--edge-cheap: #524f67;--edge-expensive: #f6c177;--edge-critical: #eb6f92;--shadow: rgba(196, 167, 231, .12)}[data-theme=amber]{--bg: #120e0a;--bg-2: #1c1610;--surface: #261e16;--line: #3d2f22;--ink: #f4e6d0;--muted: #b59a78;--high: #c4d6a0;--medium: #e9b44c;--low: #d8572a;--critical: #c0392b;--accent: #f0a05a;--rail-from: #1c1610;--rail-to: #120e0a;--rail-active: #2b2218;--btn: #2b2218;--btn-line: #8a5a2b;--btn-primary: #4a3418;--btn-primary-line: #f0a05a;--node-bg: #1c1610;--node-line: #8a5a2b;--graph-bg: #120e0a;--graph-grid: rgba(240, 160, 90, .12);--edge-cheap: #5c4a38;--edge-expensive: #e9b44c;--edge-critical: #d8572a;--shadow: rgba(240, 160, 90, .12)}[data-theme=volcano]{--bg: #14090a;--bg-2: #1e0e10;--surface: #2a1416;--line: #4a2226;--ink: #fde8e4;--muted: #c48b86;--high: #7bed9f;--medium: #f6c90e;--low: #ff6b6b;--critical: #ff3b3b;--accent: #ff7b54;--rail-from: #1e0e10;--rail-to: #14090a;--rail-active: #32181b;--btn: #32181b;--btn-line: #ff7b54;--btn-primary: #5a1f18;--btn-primary-line: #ff7b54;--node-bg: #1e0e10;--node-line: #7a3330;--graph-bg: #14090a;--graph-grid: rgba(255, 123, 84, .12);--edge-cheap: #5a3330;--edge-expensive: #ff7b54;--edge-critical: #ff3b3b;--shadow: rgba(255, 123, 84, .14)}[data-theme=lavender]{--bg: #12101c;--bg-2: #1a1730;--surface: #221e3c;--line: #3b3560;--ink: #efeaff;--muted: #b3a7d6;--high: #80ffdb;--medium: #ffd166;--low: #ff6b9d;--critical: #ff4d6d;--accent: #c77dff;--rail-from: #1a1730;--rail-to: #12101c;--rail-active: #2a2550;--btn: #2a2550;--btn-line: #c77dff;--btn-primary: #3d2a66;--btn-primary-line: #c77dff;--node-bg: #1a1730;--node-line: #5a4d8a;--graph-bg: #12101c;--graph-grid: rgba(199, 125, 255, .12);--edge-cheap: #5a4d8a;--edge-expensive: #ffd166;--edge-critical: #ff4d6d;--shadow: rgba(199, 125, 255, .14)}[data-theme=paper]{--bg: #f6f1e8;--bg-2: #efe6d6;--surface: #fffaf2;--line: #d9cbb6;--ink: #2b241c;--muted: #6f6456;--high: #2a7a4b;--medium: #b5811a;--low: #c0392b;--critical: #a93226;--accent: #1d6a7a;--rail-from: #efe6d6;--rail-to: #e7dcc8;--rail-active: #e2d3bb;--btn: #fffaf2;--btn-line: #c9b79a;--btn-primary: #d7eee0;--btn-primary-line: #2a7a4b;--node-bg: #fffaf2;--node-line: #c9b79a;--graph-bg: #f6f1e8;--graph-grid: rgba(29, 106, 122, .1);--edge-cheap: #b7a48c;--edge-expensive: #c0392b;--edge-critical: #a93226;--shadow: rgba(43, 36, 28, .08)}[data-theme=solarized-light]{--bg: #fdf6e3;--bg-2: #eee8d5;--surface: #f5efdc;--line: #d6cba9;--ink: #657b83;--muted: #93a1a1;--high: #859900;--medium: #b58900;--low: #dc322f;--critical: #cb4b16;--accent: #268bd2;--rail-from: #eee8d5;--rail-to: #e6dfc8;--rail-active: #e0d9c0;--btn: #fdf6e3;--btn-line: #93a1a1;--btn-primary: #e8efc8;--btn-primary-line: #859900;--node-bg: #fdf6e3;--node-line: #93a1a1;--graph-bg: #fdf6e3;--graph-grid: rgba(38, 139, 210, .12);--edge-cheap: #93a1a1;--edge-expensive: #cb4b16;--edge-critical: #dc322f;--shadow: rgba(101, 123, 131, .1)}[data-theme=seafoam]{--bg: #eef7f4;--bg-2: #dff0ea;--surface: #ffffff;--line: #b7d5cc;--ink: #17332c;--muted: #4d7268;--high: #1b8a5a;--medium: #c48a14;--low: #c44536;--critical: #9b2d22;--accent: #1d9a8a;--rail-from: #dff0ea;--rail-to: #cfe6de;--rail-active: #c4ddd4;--btn: #ffffff;--btn-line: #8fbfb2;--btn-primary: #d4f0e4;--btn-primary-line: #1b8a5a;--node-bg: #ffffff;--node-line: #8fbfb2;--graph-bg: #eef7f4;--graph-grid: rgba(29, 154, 138, .12);--edge-cheap: #8fbfb2;--edge-expensive: #c48a14;--edge-critical: #c44536;--shadow: rgba(23, 51, 44, .08)}[data-theme=high-contrast]{--bg: #ffffff;--bg-2: #f2f2f2;--surface: #ffffff;--line: #111111;--ink: #000000;--muted: #222222;--high: #007a33;--medium: #8a5a00;--low: #b00000;--critical: #9b0000;--accent: #0033cc;--rail-from: #f2f2f2;--rail-to: #e6e6e6;--rail-active: #d9d9d9;--btn: #ffffff;--btn-line: #000000;--btn-primary: #d9f2e3;--btn-primary-line: #007a33;--node-bg: #ffffff;--node-line: #000000;--graph-bg: #ffffff;--graph-grid: rgba(0, 0, 0, .12);--edge-cheap: #444444;--edge-expensive: #8a5a00;--edge-critical: #b00000;--shadow: rgba(0, 0, 0, .12)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}:root{--radius: 6px;--radius-lg: 10px;--control-h: 32px;--font: "IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--focus-ring: 0 0 0 2px var(--bg), 0 0 0 4px var(--accent);--space: 8px}body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:13px;line-height:1.45;-webkit-font-smoothing:antialiased}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible,summary:focus-visible{outline:none;box-shadow:var(--focus-ring)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.skip{position:absolute;left:12px;top:-40px;z-index:50;background:var(--surface);color:var(--ink);border:1px solid var(--accent);border-radius:var(--radius);padding:8px 12px}.skip:focus{top:12px}.app{display:grid;grid-template-columns:232px 1fr;height:100%}.rail{border-right:1px solid var(--line);background:linear-gradient(180deg,var(--rail-from),var(--rail-to));padding:16px 12px;display:flex;flex-direction:column;gap:2px;min-width:0}.brand{display:flex;flex-direction:column;gap:2px;padding:4px 8px 16px}.brand-mark{font-family:var(--mono);letter-spacing:.16em;font-size:11px;text-transform:uppercase;color:var(--accent);font-weight:600}.brand-sub{font-size:11px;color:var(--muted)}.nav-item{display:flex;align-items:center;gap:10px;background:transparent;border:0;text-align:left;padding:8px 10px;border-radius:var(--radius);color:var(--muted);cursor:pointer;width:100%}.nav-item:hover{background:color-mix(in srgb,var(--rail-active) 70%,transparent);color:var(--ink)}.nav-item.active{background:var(--rail-active);color:var(--ink);font-weight:500}.nav-item svg{flex-shrink:0}.theme-pick{margin-top:14px;display:grid;gap:4px;padding:0 2px}.theme-pick label{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:500}.theme-pick select,.field select,.field input,.topbar input,.topbar select,.settings input,.settings select{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:0 10px;height:var(--control-h);width:100%}.rail-foot{margin-top:auto;padding:12px 8px 4px;border-top:1px solid var(--line);display:grid;gap:6px}.kbd-hint{font-size:11px;color:var(--muted)}kbd{font-family:var(--mono);font-size:10px;border:1px solid var(--line);border-radius:4px;padding:0 4px;background:var(--surface)}.main{display:flex;flex-direction:column;min-width:0;min-height:0;position:relative;background:var(--bg)}.progress{position:absolute;top:0;left:0;right:0;height:2px;overflow:hidden;z-index:30;background:color-mix(in srgb,var(--accent) 20%,transparent)}.progress i{display:block;height:100%;width:32%;background:var(--accent);animation:indeterminate 1.1s ease-in-out infinite}@keyframes indeterminate{0%{transform:translate(-120%)}to{transform:translate(400%)}}.topbar{display:flex;gap:10px;align-items:flex-end;padding:10px 16px;border-bottom:1px solid var(--line);background:var(--bg-2);flex-wrap:wrap}.field{display:grid;gap:4px;min-width:0}.field>span{font-size:11px;color:var(--muted);font-weight:500}.field.path{flex:1;min-width:180px}.field.ref{width:132px;flex:0 0 132px}.field.workspace{width:180px;flex:0 0 180px}.topbar input,.topbar select{min-width:0}.topbar-actions{display:flex;gap:8px;margin-left:auto;align-items:center;padding-bottom:0}.btn,.topbar button{background:var(--btn);border:1px solid var(--btn-line);border-radius:var(--radius);height:var(--control-h);padding:0 12px;cursor:pointer;font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap}.btn:hover,.topbar button:hover{filter:brightness(1.08)}.btn:disabled,.topbar button:disabled{opacity:.55;cursor:not-allowed;filter:none}.btn.primary{background:var(--btn-primary);border-color:var(--btn-primary-line)}.btn.ghost{background:transparent}.alerts{display:grid;gap:8px;padding:10px 16px 0}.alerts:empty{display:none;padding:0}.stage{flex:1;min-height:0;display:flex;flex-direction:column}.content{flex:1;min-height:0;display:grid;grid-template-columns:minmax(340px,420px) 1fr}.brief{overflow:auto;border-right:1px solid var(--line);padding:16px 18px 24px;background:radial-gradient(circle at 0 0,color-mix(in srgb,var(--accent) 8%,transparent),transparent 42%),var(--bg)}.graph-wrap{position:relative;min-height:0;display:flex;flex-direction:column}.graph-wrap .react-flow{background-color:var(--graph-bg);background-image:linear-gradient(var(--graph-grid) 1px,transparent 1px),linear-gradient(90deg,var(--graph-grid) 1px,transparent 1px);background-size:24px 24px}.react-flow__minimap{background:var(--graph-bg)!important;border:1px solid var(--line)!important;border-radius:var(--radius);overflow:hidden;box-shadow:0 8px 24px var(--shadow)}.react-flow__minimap-node{fill:var(--muted);stroke:none}.react-flow__minimap-node.selected{fill:var(--accent)}.react-flow__minimap-mask{fill:#00000073!important;stroke:var(--accent)!important}.react-flow__controls{box-shadow:none!important}.react-flow__controls-button{background:var(--surface)!important;border-bottom:1px solid var(--line)!important;fill:var(--ink)!important}h1{font-size:18px;margin:0 0 6px;font-weight:600}h2{font-size:13px;margin:0;font-weight:600}.merge-box{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-lg);padding:12px 14px;margin-bottom:12px}.merge-box.high{border-color:color-mix(in srgb,var(--high) 55%,var(--line))}.merge-box.medium{border-color:color-mix(in srgb,var(--medium) 55%,var(--line))}.merge-box.low{border-color:color-mix(in srgb,var(--low) 55%,var(--line))}.level{font-family:var(--mono);font-weight:600;font-size:14px}.level.high{color:var(--high)}.level.medium{color:var(--medium)}.level.low{color:var(--low)}.merge-title{margin-top:4px;font-size:13px;color:var(--ink)}.reasons{margin:10px 0 0;padding:0 0 0 18px;color:var(--muted)}.reasons li{margin:0 0 4px}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 14px}.metric{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:8px 10px}.metric .n{font-family:var(--mono);font-size:16px;font-weight:600;font-variant-numeric:tabular-nums}.metric .l{font-size:11px;color:var(--muted);margin-top:2px}.section{border-top:1px solid var(--line);padding:8px 0 4px}.section>summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.07em;font-weight:600;padding:6px 0}.section>summary::-webkit-details-marker{display:none}.section>summary .count{font-family:var(--mono);letter-spacing:0;text-transform:none;border:1px solid var(--line);border-radius:999px;padding:0 7px;height:18px;display:inline-flex;align-items:center;font-size:11px}.kicker{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em;margin:16px 0 6px;font-weight:600}.chip{display:inline-flex;align-items:center;font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--line);margin:0 6px 6px 0;color:var(--muted);background:var(--surface)}.chip.blocker{color:var(--low);border-color:var(--low)}.chip.warning{color:var(--medium);border-color:var(--medium)}.chip.open{color:var(--high);border-color:color-mix(in srgb,var(--high) 50%,var(--line))}.file{font-family:var(--mono);font-size:12px;color:var(--accent)}.read-item,.finding,.residual{padding:8px 0;border-bottom:1px solid color-mix(in srgb,var(--line) 70%,transparent)}.read-item:last-child,.finding:last-child{border-bottom:0}.read-item .why{color:var(--muted);font-size:12px;margin-top:2px}.muted{color:var(--muted);font-size:13px;line-height:1.45}.error{color:var(--low);padding:8px 12px;border:1px solid var(--low);background:color-mix(in srgb,var(--low) 10%,var(--surface));border-radius:var(--radius);display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.banner{padding:8px 12px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);font-size:13px;line-height:1.45;display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.banner.warn{border-color:var(--medium);color:var(--medium)}.banner.stale{border-color:var(--low);color:var(--low)}.banner .dismiss{background:transparent;border:0;color:inherit;cursor:pointer;height:auto;padding:0 2px;opacity:.7}.empty{padding:24px 8px;color:var(--muted);font-size:13px;line-height:1.55}.empty h2{font-size:16px;color:var(--ink);margin-bottom:8px}.empty ol{margin:12px 0 0 18px;padding:0}.empty code,code{font-family:var(--mono);font-size:12px;color:var(--accent)}.btn-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.pr-list{padding:16px;overflow:auto}.pr-toolbar{display:flex;gap:8px;align-items:flex-end;margin-bottom:14px}.pr-toolbar .field{flex:1}.pr-toolbar .field.provider{flex:0 0 140px}.pr{border:1px solid var(--line);background:var(--surface);padding:12px 14px;border-radius:var(--radius-lg);margin-bottom:10px}.pr h3{margin:0 0 4px;font-size:14px;font-weight:600}.pr-meta{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin:6px 0 10px}.pr-actions{display:flex;gap:8px;align-items:center}.settings{padding:24px;max-width:760px;overflow:auto;display:grid;gap:16px}.settings-card{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-lg);padding:16px;display:grid;gap:8px}.settings-card h2{font-size:14px;margin-bottom:2px}.settings label{font-size:12px;color:var(--muted);font-weight:500}.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.theme-swatch{border:1px solid var(--line);background:var(--bg);border-radius:var(--radius);padding:10px;text-align:left;cursor:pointer;height:auto}.theme-swatch.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.theme-swatch .name{font-size:13px;font-weight:600}.theme-swatch .group{font-size:11px;color:var(--muted)}.headline{white-space:pre-wrap;font-family:var(--mono);font-size:12px;color:var(--muted);margin:8px 0 0}.graph-modes{display:flex;gap:8px;align-items:center;padding:8px 14px;border-bottom:1px solid var(--line);background:var(--bg-2)}.seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:2px;background:var(--surface)}.seg button,.graph-modes button{background:transparent;border:0;border-radius:999px;padding:4px 12px;color:var(--muted);cursor:pointer;height:26px}.seg button.active,.graph-modes button.active{background:var(--rail-active);color:var(--ink)}.legend{margin-left:auto;display:flex;gap:12px;color:var(--muted);font-size:11px}.legend i{display:inline-block;width:14px;height:2px;margin-right:6px;vertical-align:middle;background:var(--edge-cheap)}.legend i.exp{background:var(--edge-expensive)}.legend i.crit{background:var(--edge-critical);height:3px}.legend i.dash{border-top:2px dashed var(--muted);background:none;height:0}.inspector{position:absolute;top:12px;right:12px;z-index:5;width:260px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:10px 12px;box-shadow:0 8px 24px var(--shadow)}.inspector .t{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.inspector .n{font-weight:600;margin:4px 0}.lp-node{padding:8px 10px;border-radius:var(--radius);border:1px solid var(--node-line);background:var(--node-bg);width:180px;height:56px;box-sizing:border-box;box-shadow:0 0 0 1px var(--shadow);overflow:hidden}.lp-node .t{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.lp-node .n{font-size:13px;font-weight:600}.lp-node.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.type-table{width:100%;border-collapse:collapse;font-size:12px}.type-table td{padding:3px 0}.type-table td:last-child{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--muted)}@media(prefers-reduced-motion:reduce){.progress i{animation:none;width:100%}*{scroll-behavior:auto!important}}@media(max-width:960px){.app{grid-template-columns:56px 1fr}.brand-sub,.nav-item span,.theme-pick,.kbd-hint,.rail-foot .muted{display:none}.nav-item{justify-content:center;padding:10px}.content{grid-template-columns:1fr}.brief{border-right:0;border-bottom:1px solid var(--line);max-height:42vh}} diff --git a/src/loadpath/static/assets/index-5LvtBaA5.js b/src/loadpath/static/assets/index-gOpwxVBZ.js similarity index 77% rename from src/loadpath/static/assets/index-5LvtBaA5.js rename to src/loadpath/static/assets/index-gOpwxVBZ.js index d210ee7..35cae19 100644 --- a/src/loadpath/static/assets/index-5LvtBaA5.js +++ b/src/loadpath/static/assets/index-gOpwxVBZ.js @@ -1,4 +1,4 @@ -(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))l(a);new MutationObserver(a=>{for(const c of a)if(c.type==="childList")for(const d of c.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&l(d)}).observe(document,{childList:!0,subtree:!0});function o(a){const c={};return a.integrity&&(c.integrity=a.integrity),a.referrerPolicy&&(c.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?c.credentials="include":a.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function l(a){if(a.ep)return;a.ep=!0;const c=o(a);fetch(a.href,c)}})();function np(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var gu={exports:{}},Ki={},mu={exports:{}},je={};/** +(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))l(a);new MutationObserver(a=>{for(const c of a)if(c.type==="childList")for(const d of c.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&l(d)}).observe(document,{childList:!0,subtree:!0});function o(a){const c={};return a.integrity&&(c.integrity=a.integrity),a.referrerPolicy&&(c.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?c.credentials="include":a.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function l(a){if(a.ep)return;a.ep=!0;const c=o(a);fetch(a.href,c)}})();function ip(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var gu={exports:{}},Ki={},mu={exports:{}},je={};/** * @license React * react.production.min.js * @@ -6,7 +6,7 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Df;function j0(){if(Df)return je;Df=1;var t=Symbol.for("react.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),l=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),c=Symbol.for("react.provider"),d=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),y=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),v=Symbol.iterator;function g(j){return j===null||typeof j!="object"?null:(j=v&&j[v]||j["@@iterator"],typeof j=="function"?j:null)}var S={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,M={};function k(j,T,ee){this.props=j,this.context=T,this.refs=M,this.updater=ee||S}k.prototype.isReactComponent={},k.prototype.setState=function(j,T){if(typeof j!="object"&&typeof j!="function"&&j!=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,j,T,"setState")},k.prototype.forceUpdate=function(j){this.updater.enqueueForceUpdate(this,j,"forceUpdate")};function E(){}E.prototype=k.prototype;function z(j,T,ee){this.props=j,this.context=T,this.refs=M,this.updater=ee||S}var N=z.prototype=new E;N.constructor=z,_(N,k.prototype),N.isPureReactComponent=!0;var P=Array.isArray,b=Object.prototype.hasOwnProperty,$={current:null},H={key:!0,ref:!0,__self:!0,__source:!0};function X(j,T,ee){var re,ue={},de=null,ce=null;if(T!=null)for(re in T.ref!==void 0&&(ce=T.ref),T.key!==void 0&&(de=""+T.key),T)b.call(T,re)&&!H.hasOwnProperty(re)&&(ue[re]=T[re]);var Q=arguments.length-2;if(Q===1)ue.children=ee;else if(1>>1,T=A[j];if(0>>1;ja(ue,O))dea(ce,ue)?(A[j]=ce,A[de]=O,j=de):(A[j]=ue,A[re]=O,j=re);else if(dea(ce,O))A[j]=ce,A[de]=O,j=de;else break e}}return L}function a(A,L){var O=A.sortIndex-L.sortIndex;return O!==0?O:A.id-L.id}if(typeof performance=="object"&&typeof performance.now=="function"){var c=performance;t.unstable_now=function(){return c.now()}}else{var d=Date,h=d.now();t.unstable_now=function(){return d.now()-h}}var p=[],y=[],m=1,v=null,g=3,S=!1,_=!1,M=!1,k=typeof setTimeout=="function"?setTimeout:null,E=typeof clearTimeout=="function"?clearTimeout:null,z=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(A){for(var L=o(y);L!==null;){if(L.callback===null)l(y);else if(L.startTime<=A)l(y),L.sortIndex=L.expirationTime,r(p,L);else break;L=o(y)}}function P(A){if(M=!1,N(A),!_)if(o(p)!==null)_=!0,F(b);else{var L=o(y);L!==null&&V(P,L.startTime-A)}}function b(A,L){_=!1,M&&(M=!1,E(X),X=-1),S=!0;var O=g;try{for(N(L),v=o(p);v!==null&&(!(v.expirationTime>L)||A&&!Z());){var j=v.callback;if(typeof j=="function"){v.callback=null,g=v.priorityLevel;var T=j(v.expirationTime<=L);L=t.unstable_now(),typeof T=="function"?v.callback=T:v===o(p)&&l(p),N(L)}else l(p);v=o(p)}if(v!==null)var ee=!0;else{var re=o(y);re!==null&&V(P,re.startTime-L),ee=!1}return ee}finally{v=null,g=O,S=!1}}var $=!1,H=null,X=-1,K=5,ne=-1;function Z(){return!(t.unstable_now()-neA||125j?(A.sortIndex=O,r(y,A),o(p)===null&&A===o(y)&&(M?(E(X),X=-1):M=!0,V(P,O-j))):(A.sortIndex=T,r(p,A),_||S||(_=!0,F(b))),A},t.unstable_shouldYield=Z,t.unstable_wrapCallback=function(A){var L=g;return function(){var O=g;g=L;try{return A.apply(this,arguments)}finally{g=O}}}})(xu)),xu}var Vf;function z0(){return Vf||(Vf=1,vu.exports=T0()),vu.exports}/** + */var Hf;function R0(){return Hf||(Hf=1,(function(t){function r(A,L){var O=A.length;A.push(L);e:for(;0>>1,T=A[j];if(0>>1;ja(ue,O))dea(ce,ue)?(A[j]=ce,A[de]=O,j=de):(A[j]=ue,A[re]=O,j=re);else if(dea(ce,O))A[j]=ce,A[de]=O,j=de;else break e}}return L}function a(A,L){var O=A.sortIndex-L.sortIndex;return O!==0?O:A.id-L.id}if(typeof performance=="object"&&typeof performance.now=="function"){var c=performance;t.unstable_now=function(){return c.now()}}else{var d=Date,h=d.now();t.unstable_now=function(){return d.now()-h}}var p=[],y=[],m=1,v=null,g=3,S=!1,_=!1,M=!1,k=typeof setTimeout=="function"?setTimeout:null,E=typeof clearTimeout=="function"?clearTimeout:null,z=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(A){for(var L=o(y);L!==null;){if(L.callback===null)l(y);else if(L.startTime<=A)l(y),L.sortIndex=L.expirationTime,r(p,L);else break;L=o(y)}}function P(A){if(M=!1,N(A),!_)if(o(p)!==null)_=!0,F(b);else{var L=o(y);L!==null&&V(P,L.startTime-A)}}function b(A,L){_=!1,M&&(M=!1,E(X),X=-1),S=!0;var O=g;try{for(N(L),v=o(p);v!==null&&(!(v.expirationTime>L)||A&&!Z());){var j=v.callback;if(typeof j=="function"){v.callback=null,g=v.priorityLevel;var T=j(v.expirationTime<=L);L=t.unstable_now(),typeof T=="function"?v.callback=T:v===o(p)&&l(p),N(L)}else l(p);v=o(p)}if(v!==null)var ee=!0;else{var re=o(y);re!==null&&V(P,re.startTime-L),ee=!1}return ee}finally{v=null,g=O,S=!1}}var $=!1,H=null,X=-1,K=5,ne=-1;function Z(){return!(t.unstable_now()-neA||125j?(A.sortIndex=O,r(y,A),o(p)===null&&A===o(y)&&(M?(E(X),X=-1):M=!0,V(P,O-j))):(A.sortIndex=T,r(p,A),_||S||(_=!0,F(b))),A},t.unstable_shouldYield=Z,t.unstable_wrapCallback=function(A){var L=g;return function(){var O=g;g=L;try{return A.apply(this,arguments)}finally{g=O}}}})(xu)),xu}var Vf;function L0(){return Vf||(Vf=1,vu.exports=R0()),vu.exports}/** * @license React * react-dom.production.min.js * @@ -30,14 +30,14 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Bf;function R0(){if(Bf)return wt;Bf=1;var t=fo(),r=z0();function o(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,i=1;i"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),p=Object.prototype.hasOwnProperty,y=/^[: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]*$/,m={},v={};function g(e){return p.call(v,e)?!0:p.call(m,e)?!1:y.test(e)?v[e]=!0:(m[e]=!0,!1)}function S(e,n,i,s){if(i!==null&&i.type===0)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return s?!1:i!==null?!i.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function _(e,n,i,s){if(n===null||typeof n>"u"||S(e,n,i,s))return!0;if(s)return!1;if(i!==null)switch(i.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 M(e,n,i,s,u,f,w){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=s,this.attributeNamespace=u,this.mustUseProperty=i,this.propertyName=e,this.type=n,this.sanitizeURL=f,this.removeEmptyString=w}var k={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){k[e]=new M(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];k[n]=new M(n,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){k[e]=new M(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){k[e]=new M(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){k[e]=new M(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){k[e]=new M(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){k[e]=new M(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){k[e]=new M(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){k[e]=new M(e,5,!1,e.toLowerCase(),null,!1,!1)});var E=/[\-:]([a-z])/g;function z(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(E,z);k[n]=new M(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(E,z);k[n]=new M(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(E,z);k[n]=new M(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){k[e]=new M(e,1,!1,e.toLowerCase(),null,!1,!1)}),k.xlinkHref=new M("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){k[e]=new M(e,1,!1,e.toLowerCase(),null,!0,!0)});function N(e,n,i,s){var u=k.hasOwnProperty(n)?k[n]:null;(u!==null?u.type!==0:s||!(2"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),p=Object.prototype.hasOwnProperty,y=/^[: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]*$/,m={},v={};function g(e){return p.call(v,e)?!0:p.call(m,e)?!1:y.test(e)?v[e]=!0:(m[e]=!0,!1)}function S(e,n,i,s){if(i!==null&&i.type===0)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":return s?!1:i!==null?!i.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function _(e,n,i,s){if(n===null||typeof n>"u"||S(e,n,i,s))return!0;if(s)return!1;if(i!==null)switch(i.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 M(e,n,i,s,u,f,w){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=s,this.attributeNamespace=u,this.mustUseProperty=i,this.propertyName=e,this.type=n,this.sanitizeURL=f,this.removeEmptyString=w}var k={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){k[e]=new M(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];k[n]=new M(n,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){k[e]=new M(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){k[e]=new M(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){k[e]=new M(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){k[e]=new M(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){k[e]=new M(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){k[e]=new M(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){k[e]=new M(e,5,!1,e.toLowerCase(),null,!1,!1)});var E=/[\-:]([a-z])/g;function z(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(E,z);k[n]=new M(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(E,z);k[n]=new M(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(E,z);k[n]=new M(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){k[e]=new M(e,1,!1,e.toLowerCase(),null,!1,!1)}),k.xlinkHref=new M("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){k[e]=new M(e,1,!1,e.toLowerCase(),null,!0,!0)});function N(e,n,i,s){var u=k.hasOwnProperty(n)?k[n]:null;(u!==null?u.type!==0:s||!(2I||u[w]!==f[I]){var R=` -`+u[w].replace(" at new "," at ");return e.displayName&&R.includes("")&&(R=R.replace("",e.displayName)),R}while(1<=w&&0<=I);break}}}finally{ee=!1,Error.prepareStackTrace=i}return(e=e?e.displayName||e.name:"")?T(e):""}function ue(e){switch(e.tag){case 5:return T(e.type);case 16:return T("Lazy");case 13:return T("Suspense");case 19:return T("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 de(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 $:return"Portal";case K:return"Profiler";case X:return"StrictMode";case J:return"Suspense";case C:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Z:return(e.displayName||"Context")+".Consumer";case ne:return(e._context.displayName||"Context")+".Provider";case te: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:de(e.type)||"Memo";case F:n=e._payload,e=e._init;try{return de(e(n))}catch{}}return null}function ce(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 de(n);case 8:return n===X?"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 Q(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function se(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function pe(e){var n=se(e)?"checked":"value",i=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),s=""+e[n];if(!e.hasOwnProperty(n)&&typeof i<"u"&&typeof i.get=="function"&&typeof i.set=="function"){var u=i.get,f=i.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return u.call(this)},set:function(w){s=""+w,f.call(this,w)}}),Object.defineProperty(e,n,{enumerable:i.enumerable}),{getValue:function(){return s},setValue:function(w){s=""+w},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function Se(e){e._valueTracker||(e._valueTracker=pe(e))}function ve(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var i=n.getValue(),s="";return e&&(s=se(e)?e.checked?"true":"false":e.value),e=s,e!==i?(n.setValue(e),!0):!1}function me(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 i=n.checked;return O({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:i??e._wrapperState.initialChecked})}function Me(e,n){var i=n.defaultValue==null?"":n.defaultValue,s=n.checked!=null?n.checked:n.defaultChecked;i=Q(n.value!=null?n.value:i),e._wrapperState={initialChecked:s,initialValue:i,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function Pe(e,n){n=n.checked,n!=null&&N(e,"checked",n,!1)}function ze(e,n){Pe(e,n);var i=Q(n.value),s=n.type;if(i!=null)s==="number"?(i===0&&e.value===""||e.value!=i)&&(e.value=""+i):e.value!==""+i&&(e.value=""+i);else if(s==="submit"||s==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?lt(e,n.type,i):n.hasOwnProperty("defaultValue")&<(e,n.type,Q(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function Ze(e,n,i){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var s=n.type;if(!(s!=="submit"&&s!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,i||n===e.value||(e.value=n),e.defaultValue=n}i=e.name,i!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,i!==""&&(e.name=i)}function lt(e,n,i){(n!=="number"||me(e.ownerDocument)!==e)&&(i==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+i&&(e.defaultValue=""+i))}var Je=Array.isArray;function et(e,n,i,s){if(e=e.options,n){n={};for(var u=0;u"+n.valueOf().toString()+"",n=we.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function Ke(e,n){if(n){var i=e.firstChild;if(i&&i===e.lastChild&&i.nodeType===3){i.nodeValue=n;return}}e.textContent=n}var un={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},kl=["Webkit","ms","Moz","O"];Object.keys(un).forEach(function(e){kl.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),un[n]=un[e]})});function wo(e,n,i){return n==null||typeof n=="boolean"||n===""?"":i||typeof n!="number"||n===0||un.hasOwnProperty(e)&&un[e]?(""+n).trim():n+"px"}function So(e,n){e=e.style;for(var i in n)if(n.hasOwnProperty(i)){var s=i.indexOf("--")===0,u=wo(i,n[i],s);i==="float"&&(i="cssFloat"),s?e.setProperty(i,u):e[i]=u}}var El=O({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 si(e,n){if(n){if(El[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(o(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(o(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(o(61))}if(n.style!=null&&typeof n.style!="object")throw Error(o(62))}}function li(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 ai=null;function ui(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ci=null,_n=null,kn=null;function _o(e){if(e=Li(e)){if(typeof ci!="function")throw Error(o(280));var n=e.stateNode;n&&(n=Zo(n),ci(e.stateNode,e.type,n))}}function ko(e){_n?kn?kn.push(e):kn=[e]:_n=e}function Eo(){if(_n){var e=_n,n=kn;if(kn=_n=null,_o(e),n)for(e=0;e>>=0,e===0?32:31-(Ll(e)/Al|0)|0}var Nr=64,Cr=4194304;function qn(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 cn(e,n){var i=e.pendingLanes;if(i===0)return 0;var s=0,u=e.suspendedLanes,f=e.pingedLanes,w=i&268435455;if(w!==0){var I=w&~u;I!==0?s=qn(I):(f&=w,f!==0&&(s=qn(f)))}else w=i&~u,w!==0?s=qn(w):f!==0&&(s=qn(f));if(s===0)return 0;if(n!==0&&n!==s&&(n&u)===0&&(u=s&-s,f=n&-n,u>=f||u===16&&(f&4194240)!==0))return n;if((s&4)!==0&&(s|=i&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=s;0i;i++)n.push(e);return n}function Jn(e,n,i){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-Ct(n),e[n]=i}function Ol(e,n){var i=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 s=e.eventTimes;for(e=e.expirationTimes;0=Ni),Pc=" ",Ic=!1;function Tc(e,n){switch(e){case"keyup":return _m.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function zc(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ir=!1;function Em(e,n){switch(e){case"compositionend":return zc(n);case"keypress":return n.which!==32?null:(Ic=!0,Pc);case"textInput":return e=n.data,e===Pc&&Ic?null:e;default:return null}}function Nm(e,n){if(Ir)return e==="compositionend"||!Kl&&Tc(e,n)?(e=kc(),Ho=Bl=Mn=null,Ir=!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:i,offset:n-e};e=s}e:{for(;i;){if(i.nextSibling){i=i.nextSibling;break e}i=i.parentNode}i=void 0}i=bc(i)}}function Hc(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?Hc(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function Vc(){for(var e=window,n=me();n instanceof e.HTMLIFrameElement;){try{var i=typeof n.contentWindow.location.href=="string"}catch{i=!1}if(i)e=n.contentWindow;else break;n=me(e.document)}return n}function Zl(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 Lm(e){var n=Vc(),i=e.focusedElem,s=e.selectionRange;if(n!==i&&i&&i.ownerDocument&&Hc(i.ownerDocument.documentElement,i)){if(s!==null&&Zl(i)){if(n=s.start,e=s.end,e===void 0&&(e=n),"selectionStart"in i)i.selectionStart=n,i.selectionEnd=Math.min(e,i.value.length);else if(e=(n=i.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var u=i.textContent.length,f=Math.min(s.start,u);s=s.end===void 0?f:Math.min(s.end,u),!e.extend&&f>s&&(u=s,s=f,f=u),u=Fc(i,f);var w=Fc(i,s);u&&w&&(e.rangeCount!==1||e.anchorNode!==u.node||e.anchorOffset!==u.offset||e.focusNode!==w.node||e.focusOffset!==w.offset)&&(n=n.createRange(),n.setStart(u.node,u.offset),e.removeAllRanges(),f>s?(e.addRange(n),e.extend(w.node,w.offset)):(n.setEnd(w.node,w.offset),e.addRange(n)))}}for(n=[],e=i;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof i.focus=="function"&&i.focus(),i=0;i=document.documentMode,Tr=null,Jl=null,Pi=null,ea=!1;function Bc(e,n,i){var s=i.window===i?i.document:i.nodeType===9?i:i.ownerDocument;ea||Tr==null||Tr!==me(s)||(s=Tr,"selectionStart"in s&&Zl(s)?s={start:s.selectionStart,end:s.selectionEnd}:(s=(s.ownerDocument&&s.ownerDocument.defaultView||window).getSelection(),s={anchorNode:s.anchorNode,anchorOffset:s.anchorOffset,focusNode:s.focusNode,focusOffset:s.focusOffset}),Pi&&Mi(Pi,s)||(Pi=s,s=Ko(Jl,"onSelect"),0$r||(e.current=fa[$r],fa[$r]=null,$r--)}function $e(e,n){$r++,fa[$r]=e.current,e.current=n}var zn={},at=Tn(zn),gt=Tn(!1),tr=zn;function Dr(e,n){var i=e.type.contextTypes;if(!i)return zn;var s=e.stateNode;if(s&&s.__reactInternalMemoizedUnmaskedChildContext===n)return s.__reactInternalMemoizedMaskedChildContext;var u={},f;for(f in i)u[f]=n[f];return s&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=u),u}function mt(e){return e=e.childContextTypes,e!=null}function Jo(){Oe(gt),Oe(at)}function id(e,n,i){if(at.current!==zn)throw Error(o(168));$e(at,n),$e(gt,i)}function od(e,n,i){var s=e.stateNode;if(n=n.childContextTypes,typeof s.getChildContext!="function")return i;s=s.getChildContext();for(var u in s)if(!(u in n))throw Error(o(108,ce(e)||"Unknown",u));return O({},i,s)}function es(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||zn,tr=at.current,$e(at,e),$e(gt,gt.current),!0}function sd(e,n,i){var s=e.stateNode;if(!s)throw Error(o(169));i?(e=od(e,n,tr),s.__reactInternalMemoizedMergedChildContext=e,Oe(gt),Oe(at),$e(at,e)):Oe(gt),$e(gt,i)}var fn=null,ts=!1,ha=!1;function ld(e){fn===null?fn=[e]:fn.push(e)}function Ym(e){ts=!0,ld(e)}function Rn(){if(!ha&&fn!==null){ha=!0;var e=0,n=Le;try{var i=fn;for(Le=1;e>=w,u-=w,hn=1<<32-Ct(n)+u|i<Ne?(rt=Ee,Ee=null):rt=Ee.sibling;var Re=ie(U,Ee,Y[Ne],ae);if(Re===null){Ee===null&&(Ee=rt);break}e&&Ee&&Re.alternate===null&&n(U,Ee),D=f(Re,D,Ne),ke===null?xe=Re:ke.sibling=Re,ke=Re,Ee=rt}if(Ne===Y.length)return i(U,Ee),Fe&&rr(U,Ne),xe;if(Ee===null){for(;NeNe?(rt=Ee,Ee=null):rt=Ee.sibling;var Vn=ie(U,Ee,Re.value,ae);if(Vn===null){Ee===null&&(Ee=rt);break}e&&Ee&&Vn.alternate===null&&n(U,Ee),D=f(Vn,D,Ne),ke===null?xe=Vn:ke.sibling=Vn,ke=Vn,Ee=rt}if(Re.done)return i(U,Ee),Fe&&rr(U,Ne),xe;if(Ee===null){for(;!Re.done;Ne++,Re=Y.next())Re=le(U,Re.value,ae),Re!==null&&(D=f(Re,D,Ne),ke===null?xe=Re:ke.sibling=Re,ke=Re);return Fe&&rr(U,Ne),xe}for(Ee=s(U,Ee);!Re.done;Ne++,Re=Y.next())Re=fe(Ee,U,Ne,Re.value,ae),Re!==null&&(e&&Re.alternate!==null&&Ee.delete(Re.key===null?Ne:Re.key),D=f(Re,D,Ne),ke===null?xe=Re:ke.sibling=Re,ke=Re);return e&&Ee.forEach(function(C0){return n(U,C0)}),Fe&&rr(U,Ne),xe}function Ye(U,D,Y,ae){if(typeof Y=="object"&&Y!==null&&Y.type===H&&Y.key===null&&(Y=Y.props.children),typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case b:e:{for(var xe=Y.key,ke=D;ke!==null;){if(ke.key===xe){if(xe=Y.type,xe===H){if(ke.tag===7){i(U,ke.sibling),D=u(ke,Y.props.children),D.return=U,U=D;break e}}else if(ke.elementType===xe||typeof xe=="object"&&xe!==null&&xe.$$typeof===F&&hd(xe)===ke.type){i(U,ke.sibling),D=u(ke,Y.props),D.ref=Ai(U,ke,Y),D.return=U,U=D;break e}i(U,ke);break}else n(U,ke);ke=ke.sibling}Y.type===H?(D=dr(Y.props.children,U.mode,ae,Y.key),D.return=U,U=D):(ae=Ps(Y.type,Y.key,Y.props,null,U.mode,ae),ae.ref=Ai(U,D,Y),ae.return=U,U=ae)}return w(U);case $:e:{for(ke=Y.key;D!==null;){if(D.key===ke)if(D.tag===4&&D.stateNode.containerInfo===Y.containerInfo&&D.stateNode.implementation===Y.implementation){i(U,D.sibling),D=u(D,Y.children||[]),D.return=U,U=D;break e}else{i(U,D);break}else n(U,D);D=D.sibling}D=cu(Y,U.mode,ae),D.return=U,U=D}return w(U);case F:return ke=Y._init,Ye(U,D,ke(Y._payload),ae)}if(Je(Y))return ge(U,D,Y,ae);if(L(Y))return ye(U,D,Y,ae);os(U,Y)}return typeof Y=="string"&&Y!==""||typeof Y=="number"?(Y=""+Y,D!==null&&D.tag===6?(i(U,D.sibling),D=u(D,Y),D.return=U,U=D):(i(U,D),D=uu(Y,U.mode,ae),D.return=U,U=D),w(U)):i(U,D)}return Ye}var Hr=pd(!0),gd=pd(!1),ss=Tn(null),ls=null,Vr=null,xa=null;function wa(){xa=Vr=ls=null}function Sa(e){var n=ss.current;Oe(ss),e._currentValue=n}function _a(e,n,i){for(;e!==null;){var s=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,s!==null&&(s.childLanes|=n)):s!==null&&(s.childLanes&n)!==n&&(s.childLanes|=n),e===i)break;e=e.return}}function Br(e,n){ls=e,xa=Vr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&n)!==0&&(yt=!0),e.firstContext=null)}function Dt(e){var n=e._currentValue;if(xa!==e)if(e={context:e,memoizedValue:n,next:null},Vr===null){if(ls===null)throw Error(o(308));Vr=e,ls.dependencies={lanes:0,firstContext:e}}else Vr=Vr.next=e;return n}var ir=null;function ka(e){ir===null?ir=[e]:ir.push(e)}function md(e,n,i,s){var u=n.interleaved;return u===null?(i.next=i,ka(n)):(i.next=u.next,u.next=i),n.interleaved=i,gn(e,s)}function gn(e,n){e.lanes|=n;var i=e.alternate;for(i!==null&&(i.lanes|=n),i=e,e=e.return;e!==null;)e.childLanes|=n,i=e.alternate,i!==null&&(i.childLanes|=n),i=e,e=e.return;return i.tag===3?i.stateNode:null}var Ln=!1;function Ea(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function yd(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 mn(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function An(e,n,i){var s=e.updateQueue;if(s===null)return null;if(s=s.shared,(Ie&2)!==0){var u=s.pending;return u===null?n.next=n:(n.next=u.next,u.next=n),s.pending=n,gn(e,i)}return u=s.interleaved,u===null?(n.next=n,ka(s)):(n.next=u.next,u.next=n),s.interleaved=n,gn(e,i)}function as(e,n,i){if(n=n.updateQueue,n!==null&&(n=n.shared,(i&4194240)!==0)){var s=n.lanes;s&=e.pendingLanes,i|=s,n.lanes=i,jr(e,i)}}function vd(e,n){var i=e.updateQueue,s=e.alternate;if(s!==null&&(s=s.updateQueue,i===s)){var u=null,f=null;if(i=i.firstBaseUpdate,i!==null){do{var w={eventTime:i.eventTime,lane:i.lane,tag:i.tag,payload:i.payload,callback:i.callback,next:null};f===null?u=f=w:f=f.next=w,i=i.next}while(i!==null);f===null?u=f=n:f=f.next=n}else u=f=n;i={baseState:s.baseState,firstBaseUpdate:u,lastBaseUpdate:f,shared:s.shared,effects:s.effects},e.updateQueue=i;return}e=i.lastBaseUpdate,e===null?i.firstBaseUpdate=n:e.next=n,i.lastBaseUpdate=n}function us(e,n,i,s){var u=e.updateQueue;Ln=!1;var f=u.firstBaseUpdate,w=u.lastBaseUpdate,I=u.shared.pending;if(I!==null){u.shared.pending=null;var R=I,G=R.next;R.next=null,w===null?f=G:w.next=G,w=R;var oe=e.alternate;oe!==null&&(oe=oe.updateQueue,I=oe.lastBaseUpdate,I!==w&&(I===null?oe.firstBaseUpdate=G:I.next=G,oe.lastBaseUpdate=R))}if(f!==null){var le=u.baseState;w=0,oe=G=R=null,I=f;do{var ie=I.lane,fe=I.eventTime;if((s&ie)===ie){oe!==null&&(oe=oe.next={eventTime:fe,lane:0,tag:I.tag,payload:I.payload,callback:I.callback,next:null});e:{var ge=e,ye=I;switch(ie=n,fe=i,ye.tag){case 1:if(ge=ye.payload,typeof ge=="function"){le=ge.call(fe,le,ie);break e}le=ge;break e;case 3:ge.flags=ge.flags&-65537|128;case 0:if(ge=ye.payload,ie=typeof ge=="function"?ge.call(fe,le,ie):ge,ie==null)break e;le=O({},le,ie);break e;case 2:Ln=!0}}I.callback!==null&&I.lane!==0&&(e.flags|=64,ie=u.effects,ie===null?u.effects=[I]:ie.push(I))}else fe={eventTime:fe,lane:ie,tag:I.tag,payload:I.payload,callback:I.callback,next:null},oe===null?(G=oe=fe,R=le):oe=oe.next=fe,w|=ie;if(I=I.next,I===null){if(I=u.shared.pending,I===null)break;ie=I,I=ie.next,ie.next=null,u.lastBaseUpdate=ie,u.shared.pending=null}}while(!0);if(oe===null&&(R=le),u.baseState=R,u.firstBaseUpdate=G,u.lastBaseUpdate=oe,n=u.shared.interleaved,n!==null){u=n;do w|=u.lane,u=u.next;while(u!==n)}else f===null&&(u.shared.lanes=0);lr|=w,e.lanes=w,e.memoizedState=le}}function xd(e,n,i){if(e=n.effects,n.effects=null,e!==null)for(n=0;ni?i:4,e(!0);var s=Pa.transition;Pa.transition={};try{e(!1),n()}finally{Le=i,Pa.transition=s}}function Od(){return Ot().memoizedState}function Gm(e,n,i){var s=bn(e);if(i={lane:s,action:i,hasEagerState:!1,eagerState:null,next:null},bd(e))Fd(n,i);else if(i=md(e,n,i,s),i!==null){var u=pt();Yt(i,e,s,u),Hd(i,n,s)}}function qm(e,n,i){var s=bn(e),u={lane:s,action:i,hasEagerState:!1,eagerState:null,next:null};if(bd(e))Fd(n,u);else{var f=e.alternate;if(e.lanes===0&&(f===null||f.lanes===0)&&(f=n.lastRenderedReducer,f!==null))try{var w=n.lastRenderedState,I=f(w,i);if(u.hasEagerState=!0,u.eagerState=I,Ht(I,w)){var R=n.interleaved;R===null?(u.next=u,ka(n)):(u.next=R.next,R.next=u),n.interleaved=u;return}}catch{}finally{}i=md(e,n,u,s),i!==null&&(u=pt(),Yt(i,e,s,u),Hd(i,n,s))}}function bd(e){var n=e.alternate;return e===Be||n!==null&&n===Be}function Fd(e,n){bi=fs=!0;var i=e.pending;i===null?n.next=n:(n.next=i.next,i.next=n),e.pending=n}function Hd(e,n,i){if((i&4194240)!==0){var s=n.lanes;s&=e.pendingLanes,i|=s,n.lanes=i,jr(e,i)}}var gs={readContext:Dt,useCallback:ut,useContext:ut,useEffect:ut,useImperativeHandle:ut,useInsertionEffect:ut,useLayoutEffect:ut,useMemo:ut,useReducer:ut,useRef:ut,useState:ut,useDebugValue:ut,useDeferredValue:ut,useTransition:ut,useMutableSource:ut,useSyncExternalStore:ut,useId:ut,unstable_isNewReconciler:!1},Zm={readContext:Dt,useCallback:function(e,n){return rn().memoizedState=[e,n===void 0?null:n],e},useContext:Dt,useEffect:Id,useImperativeHandle:function(e,n,i){return i=i!=null?i.concat([e]):null,hs(4194308,4,Rd.bind(null,n,e),i)},useLayoutEffect:function(e,n){return hs(4194308,4,e,n)},useInsertionEffect:function(e,n){return hs(4,2,e,n)},useMemo:function(e,n){var i=rn();return n=n===void 0?null:n,e=e(),i.memoizedState=[e,n],e},useReducer:function(e,n,i){var s=rn();return n=i!==void 0?i(n):n,s.memoizedState=s.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},s.queue=e,e=e.dispatch=Gm.bind(null,Be,e),[s.memoizedState,e]},useRef:function(e){var n=rn();return e={current:e},n.memoizedState=e},useState:Md,useDebugValue:$a,useDeferredValue:function(e){return rn().memoizedState=e},useTransition:function(){var e=Md(!1),n=e[0];return e=Km.bind(null,e[1]),rn().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,i){var s=Be,u=rn();if(Fe){if(i===void 0)throw Error(o(407));i=i()}else{if(i=n(),nt===null)throw Error(o(349));(sr&30)!==0||kd(s,n,i)}u.memoizedState=i;var f={value:i,getSnapshot:n};return u.queue=f,Id(Nd.bind(null,s,f,e),[e]),s.flags|=2048,Vi(9,Ed.bind(null,s,f,i,n),void 0,null),i},useId:function(){var e=rn(),n=nt.identifierPrefix;if(Fe){var i=pn,s=hn;i=(s&~(1<<32-Ct(s)-1)).toString(32)+i,n=":"+n+"R"+i,i=Fi++,0")&&(R=R.replace("",e.displayName)),R}while(1<=w&&0<=I);break}}}finally{ee=!1,Error.prepareStackTrace=i}return(e=e?e.displayName||e.name:"")?T(e):""}function ue(e){switch(e.tag){case 5:return T(e.type);case 16:return T("Lazy");case 13:return T("Suspense");case 19:return T("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 de(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 $:return"Portal";case K:return"Profiler";case X:return"StrictMode";case J:return"Suspense";case C:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Z:return(e.displayName||"Context")+".Consumer";case ne:return(e._context.displayName||"Context")+".Provider";case te: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:de(e.type)||"Memo";case F:n=e._payload,e=e._init;try{return de(e(n))}catch{}}return null}function ce(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 de(n);case 8:return n===X?"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 Q(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function se(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function pe(e){var n=se(e)?"checked":"value",i=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),s=""+e[n];if(!e.hasOwnProperty(n)&&typeof i<"u"&&typeof i.get=="function"&&typeof i.set=="function"){var u=i.get,f=i.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return u.call(this)},set:function(w){s=""+w,f.call(this,w)}}),Object.defineProperty(e,n,{enumerable:i.enumerable}),{getValue:function(){return s},setValue:function(w){s=""+w},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function Se(e){e._valueTracker||(e._valueTracker=pe(e))}function ve(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var i=n.getValue(),s="";return e&&(s=se(e)?e.checked?"true":"false":e.value),e=s,e!==i?(n.setValue(e),!0):!1}function me(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 i=n.checked;return O({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:i??e._wrapperState.initialChecked})}function Me(e,n){var i=n.defaultValue==null?"":n.defaultValue,s=n.checked!=null?n.checked:n.defaultChecked;i=Q(n.value!=null?n.value:i),e._wrapperState={initialChecked:s,initialValue:i,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function Pe(e,n){n=n.checked,n!=null&&N(e,"checked",n,!1)}function ze(e,n){Pe(e,n);var i=Q(n.value),s=n.type;if(i!=null)s==="number"?(i===0&&e.value===""||e.value!=i)&&(e.value=""+i):e.value!==""+i&&(e.value=""+i);else if(s==="submit"||s==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?lt(e,n.type,i):n.hasOwnProperty("defaultValue")&<(e,n.type,Q(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function Ze(e,n,i){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var s=n.type;if(!(s!=="submit"&&s!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,i||n===e.value||(e.value=n),e.defaultValue=n}i=e.name,i!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,i!==""&&(e.name=i)}function lt(e,n,i){(n!=="number"||me(e.ownerDocument)!==e)&&(i==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+i&&(e.defaultValue=""+i))}var Je=Array.isArray;function et(e,n,i,s){if(e=e.options,n){n={};for(var u=0;u"+n.valueOf().toString()+"",n=we.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function Ke(e,n){if(n){var i=e.firstChild;if(i&&i===e.lastChild&&i.nodeType===3){i.nodeValue=n;return}}e.textContent=n}var un={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},kl=["Webkit","ms","Moz","O"];Object.keys(un).forEach(function(e){kl.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),un[n]=un[e]})});function wo(e,n,i){return n==null||typeof n=="boolean"||n===""?"":i||typeof n!="number"||n===0||un.hasOwnProperty(e)&&un[e]?(""+n).trim():n+"px"}function So(e,n){e=e.style;for(var i in n)if(n.hasOwnProperty(i)){var s=i.indexOf("--")===0,u=wo(i,n[i],s);i==="float"&&(i="cssFloat"),s?e.setProperty(i,u):e[i]=u}}var El=O({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 si(e,n){if(n){if(El[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(o(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(o(60));if(typeof n.dangerouslySetInnerHTML!="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(o(61))}if(n.style!=null&&typeof n.style!="object")throw Error(o(62))}}function li(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 ai=null;function ui(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ci=null,_n=null,kn=null;function _o(e){if(e=Li(e)){if(typeof ci!="function")throw Error(o(280));var n=e.stateNode;n&&(n=Zo(n),ci(e.stateNode,e.type,n))}}function ko(e){_n?kn?kn.push(e):kn=[e]:_n=e}function Eo(){if(_n){var e=_n,n=kn;if(kn=_n=null,_o(e),n)for(e=0;e>>=0,e===0?32:31-(Ll(e)/Al|0)|0}var Nr=64,Cr=4194304;function qn(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 cn(e,n){var i=e.pendingLanes;if(i===0)return 0;var s=0,u=e.suspendedLanes,f=e.pingedLanes,w=i&268435455;if(w!==0){var I=w&~u;I!==0?s=qn(I):(f&=w,f!==0&&(s=qn(f)))}else w=i&~u,w!==0?s=qn(w):f!==0&&(s=qn(f));if(s===0)return 0;if(n!==0&&n!==s&&(n&u)===0&&(u=s&-s,f=n&-n,u>=f||u===16&&(f&4194240)!==0))return n;if((s&4)!==0&&(s|=i&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=s;0i;i++)n.push(e);return n}function Jn(e,n,i){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-Ct(n),e[n]=i}function Ol(e,n){var i=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 s=e.eventTimes;for(e=e.expirationTimes;0=Ni),Pc=" ",Ic=!1;function Tc(e,n){switch(e){case"keyup":return Em.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function zc(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ir=!1;function Cm(e,n){switch(e){case"compositionend":return zc(n);case"keypress":return n.which!==32?null:(Ic=!0,Pc);case"textInput":return e=n.data,e===Pc&&Ic?null:e;default:return null}}function jm(e,n){if(Ir)return e==="compositionend"||!Kl&&Tc(e,n)?(e=kc(),Ho=Bl=Mn=null,Ir=!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:i,offset:n-e};e=s}e:{for(;i;){if(i.nextSibling){i=i.nextSibling;break e}i=i.parentNode}i=void 0}i=bc(i)}}function Hc(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?Hc(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function Vc(){for(var e=window,n=me();n instanceof e.HTMLIFrameElement;){try{var i=typeof n.contentWindow.location.href=="string"}catch{i=!1}if(i)e=n.contentWindow;else break;n=me(e.document)}return n}function Zl(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 $m(e){var n=Vc(),i=e.focusedElem,s=e.selectionRange;if(n!==i&&i&&i.ownerDocument&&Hc(i.ownerDocument.documentElement,i)){if(s!==null&&Zl(i)){if(n=s.start,e=s.end,e===void 0&&(e=n),"selectionStart"in i)i.selectionStart=n,i.selectionEnd=Math.min(e,i.value.length);else if(e=(n=i.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var u=i.textContent.length,f=Math.min(s.start,u);s=s.end===void 0?f:Math.min(s.end,u),!e.extend&&f>s&&(u=s,s=f,f=u),u=Fc(i,f);var w=Fc(i,s);u&&w&&(e.rangeCount!==1||e.anchorNode!==u.node||e.anchorOffset!==u.offset||e.focusNode!==w.node||e.focusOffset!==w.offset)&&(n=n.createRange(),n.setStart(u.node,u.offset),e.removeAllRanges(),f>s?(e.addRange(n),e.extend(w.node,w.offset)):(n.setEnd(w.node,w.offset),e.addRange(n)))}}for(n=[],e=i;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof i.focus=="function"&&i.focus(),i=0;i=document.documentMode,Tr=null,Jl=null,Pi=null,ea=!1;function Bc(e,n,i){var s=i.window===i?i.document:i.nodeType===9?i:i.ownerDocument;ea||Tr==null||Tr!==me(s)||(s=Tr,"selectionStart"in s&&Zl(s)?s={start:s.selectionStart,end:s.selectionEnd}:(s=(s.ownerDocument&&s.ownerDocument.defaultView||window).getSelection(),s={anchorNode:s.anchorNode,anchorOffset:s.anchorOffset,focusNode:s.focusNode,focusOffset:s.focusOffset}),Pi&&Mi(Pi,s)||(Pi=s,s=Ko(Jl,"onSelect"),0$r||(e.current=fa[$r],fa[$r]=null,$r--)}function $e(e,n){$r++,fa[$r]=e.current,e.current=n}var zn={},at=Tn(zn),gt=Tn(!1),tr=zn;function Dr(e,n){var i=e.type.contextTypes;if(!i)return zn;var s=e.stateNode;if(s&&s.__reactInternalMemoizedUnmaskedChildContext===n)return s.__reactInternalMemoizedMaskedChildContext;var u={},f;for(f in i)u[f]=n[f];return s&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=u),u}function mt(e){return e=e.childContextTypes,e!=null}function Jo(){Oe(gt),Oe(at)}function id(e,n,i){if(at.current!==zn)throw Error(o(168));$e(at,n),$e(gt,i)}function od(e,n,i){var s=e.stateNode;if(n=n.childContextTypes,typeof s.getChildContext!="function")return i;s=s.getChildContext();for(var u in s)if(!(u in n))throw Error(o(108,ce(e)||"Unknown",u));return O({},i,s)}function es(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||zn,tr=at.current,$e(at,e),$e(gt,gt.current),!0}function sd(e,n,i){var s=e.stateNode;if(!s)throw Error(o(169));i?(e=od(e,n,tr),s.__reactInternalMemoizedMergedChildContext=e,Oe(gt),Oe(at),$e(at,e)):Oe(gt),$e(gt,i)}var fn=null,ts=!1,ha=!1;function ld(e){fn===null?fn=[e]:fn.push(e)}function Qm(e){ts=!0,ld(e)}function Rn(){if(!ha&&fn!==null){ha=!0;var e=0,n=Le;try{var i=fn;for(Le=1;e>=w,u-=w,hn=1<<32-Ct(n)+u|i<Ne?(rt=Ee,Ee=null):rt=Ee.sibling;var Re=ie(U,Ee,Y[Ne],ae);if(Re===null){Ee===null&&(Ee=rt);break}e&&Ee&&Re.alternate===null&&n(U,Ee),D=f(Re,D,Ne),ke===null?xe=Re:ke.sibling=Re,ke=Re,Ee=rt}if(Ne===Y.length)return i(U,Ee),Fe&&rr(U,Ne),xe;if(Ee===null){for(;NeNe?(rt=Ee,Ee=null):rt=Ee.sibling;var Vn=ie(U,Ee,Re.value,ae);if(Vn===null){Ee===null&&(Ee=rt);break}e&&Ee&&Vn.alternate===null&&n(U,Ee),D=f(Vn,D,Ne),ke===null?xe=Vn:ke.sibling=Vn,ke=Vn,Ee=rt}if(Re.done)return i(U,Ee),Fe&&rr(U,Ne),xe;if(Ee===null){for(;!Re.done;Ne++,Re=Y.next())Re=le(U,Re.value,ae),Re!==null&&(D=f(Re,D,Ne),ke===null?xe=Re:ke.sibling=Re,ke=Re);return Fe&&rr(U,Ne),xe}for(Ee=s(U,Ee);!Re.done;Ne++,Re=Y.next())Re=fe(Ee,U,Ne,Re.value,ae),Re!==null&&(e&&Re.alternate!==null&&Ee.delete(Re.key===null?Ne:Re.key),D=f(Re,D,Ne),ke===null?xe=Re:ke.sibling=Re,ke=Re);return e&&Ee.forEach(function(M0){return n(U,M0)}),Fe&&rr(U,Ne),xe}function Ye(U,D,Y,ae){if(typeof Y=="object"&&Y!==null&&Y.type===H&&Y.key===null&&(Y=Y.props.children),typeof Y=="object"&&Y!==null){switch(Y.$$typeof){case b:e:{for(var xe=Y.key,ke=D;ke!==null;){if(ke.key===xe){if(xe=Y.type,xe===H){if(ke.tag===7){i(U,ke.sibling),D=u(ke,Y.props.children),D.return=U,U=D;break e}}else if(ke.elementType===xe||typeof xe=="object"&&xe!==null&&xe.$$typeof===F&&hd(xe)===ke.type){i(U,ke.sibling),D=u(ke,Y.props),D.ref=Ai(U,ke,Y),D.return=U,U=D;break e}i(U,ke);break}else n(U,ke);ke=ke.sibling}Y.type===H?(D=dr(Y.props.children,U.mode,ae,Y.key),D.return=U,U=D):(ae=Ps(Y.type,Y.key,Y.props,null,U.mode,ae),ae.ref=Ai(U,D,Y),ae.return=U,U=ae)}return w(U);case $:e:{for(ke=Y.key;D!==null;){if(D.key===ke)if(D.tag===4&&D.stateNode.containerInfo===Y.containerInfo&&D.stateNode.implementation===Y.implementation){i(U,D.sibling),D=u(D,Y.children||[]),D.return=U,U=D;break e}else{i(U,D);break}else n(U,D);D=D.sibling}D=cu(Y,U.mode,ae),D.return=U,U=D}return w(U);case F:return ke=Y._init,Ye(U,D,ke(Y._payload),ae)}if(Je(Y))return ge(U,D,Y,ae);if(L(Y))return ye(U,D,Y,ae);os(U,Y)}return typeof Y=="string"&&Y!==""||typeof Y=="number"?(Y=""+Y,D!==null&&D.tag===6?(i(U,D.sibling),D=u(D,Y),D.return=U,U=D):(i(U,D),D=uu(Y,U.mode,ae),D.return=U,U=D),w(U)):i(U,D)}return Ye}var Hr=pd(!0),gd=pd(!1),ss=Tn(null),ls=null,Vr=null,xa=null;function wa(){xa=Vr=ls=null}function Sa(e){var n=ss.current;Oe(ss),e._currentValue=n}function _a(e,n,i){for(;e!==null;){var s=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,s!==null&&(s.childLanes|=n)):s!==null&&(s.childLanes&n)!==n&&(s.childLanes|=n),e===i)break;e=e.return}}function Br(e,n){ls=e,xa=Vr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&n)!==0&&(yt=!0),e.firstContext=null)}function Dt(e){var n=e._currentValue;if(xa!==e)if(e={context:e,memoizedValue:n,next:null},Vr===null){if(ls===null)throw Error(o(308));Vr=e,ls.dependencies={lanes:0,firstContext:e}}else Vr=Vr.next=e;return n}var ir=null;function ka(e){ir===null?ir=[e]:ir.push(e)}function md(e,n,i,s){var u=n.interleaved;return u===null?(i.next=i,ka(n)):(i.next=u.next,u.next=i),n.interleaved=i,gn(e,s)}function gn(e,n){e.lanes|=n;var i=e.alternate;for(i!==null&&(i.lanes|=n),i=e,e=e.return;e!==null;)e.childLanes|=n,i=e.alternate,i!==null&&(i.childLanes|=n),i=e,e=e.return;return i.tag===3?i.stateNode:null}var Ln=!1;function Ea(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function yd(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 mn(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function An(e,n,i){var s=e.updateQueue;if(s===null)return null;if(s=s.shared,(Ie&2)!==0){var u=s.pending;return u===null?n.next=n:(n.next=u.next,u.next=n),s.pending=n,gn(e,i)}return u=s.interleaved,u===null?(n.next=n,ka(s)):(n.next=u.next,u.next=n),s.interleaved=n,gn(e,i)}function as(e,n,i){if(n=n.updateQueue,n!==null&&(n=n.shared,(i&4194240)!==0)){var s=n.lanes;s&=e.pendingLanes,i|=s,n.lanes=i,jr(e,i)}}function vd(e,n){var i=e.updateQueue,s=e.alternate;if(s!==null&&(s=s.updateQueue,i===s)){var u=null,f=null;if(i=i.firstBaseUpdate,i!==null){do{var w={eventTime:i.eventTime,lane:i.lane,tag:i.tag,payload:i.payload,callback:i.callback,next:null};f===null?u=f=w:f=f.next=w,i=i.next}while(i!==null);f===null?u=f=n:f=f.next=n}else u=f=n;i={baseState:s.baseState,firstBaseUpdate:u,lastBaseUpdate:f,shared:s.shared,effects:s.effects},e.updateQueue=i;return}e=i.lastBaseUpdate,e===null?i.firstBaseUpdate=n:e.next=n,i.lastBaseUpdate=n}function us(e,n,i,s){var u=e.updateQueue;Ln=!1;var f=u.firstBaseUpdate,w=u.lastBaseUpdate,I=u.shared.pending;if(I!==null){u.shared.pending=null;var R=I,G=R.next;R.next=null,w===null?f=G:w.next=G,w=R;var oe=e.alternate;oe!==null&&(oe=oe.updateQueue,I=oe.lastBaseUpdate,I!==w&&(I===null?oe.firstBaseUpdate=G:I.next=G,oe.lastBaseUpdate=R))}if(f!==null){var le=u.baseState;w=0,oe=G=R=null,I=f;do{var ie=I.lane,fe=I.eventTime;if((s&ie)===ie){oe!==null&&(oe=oe.next={eventTime:fe,lane:0,tag:I.tag,payload:I.payload,callback:I.callback,next:null});e:{var ge=e,ye=I;switch(ie=n,fe=i,ye.tag){case 1:if(ge=ye.payload,typeof ge=="function"){le=ge.call(fe,le,ie);break e}le=ge;break e;case 3:ge.flags=ge.flags&-65537|128;case 0:if(ge=ye.payload,ie=typeof ge=="function"?ge.call(fe,le,ie):ge,ie==null)break e;le=O({},le,ie);break e;case 2:Ln=!0}}I.callback!==null&&I.lane!==0&&(e.flags|=64,ie=u.effects,ie===null?u.effects=[I]:ie.push(I))}else fe={eventTime:fe,lane:ie,tag:I.tag,payload:I.payload,callback:I.callback,next:null},oe===null?(G=oe=fe,R=le):oe=oe.next=fe,w|=ie;if(I=I.next,I===null){if(I=u.shared.pending,I===null)break;ie=I,I=ie.next,ie.next=null,u.lastBaseUpdate=ie,u.shared.pending=null}}while(!0);if(oe===null&&(R=le),u.baseState=R,u.firstBaseUpdate=G,u.lastBaseUpdate=oe,n=u.shared.interleaved,n!==null){u=n;do w|=u.lane,u=u.next;while(u!==n)}else f===null&&(u.shared.lanes=0);lr|=w,e.lanes=w,e.memoizedState=le}}function xd(e,n,i){if(e=n.effects,n.effects=null,e!==null)for(n=0;ni?i:4,e(!0);var s=Pa.transition;Pa.transition={};try{e(!1),n()}finally{Le=i,Pa.transition=s}}function Od(){return Ot().memoizedState}function Zm(e,n,i){var s=bn(e);if(i={lane:s,action:i,hasEagerState:!1,eagerState:null,next:null},bd(e))Fd(n,i);else if(i=md(e,n,i,s),i!==null){var u=pt();Yt(i,e,s,u),Hd(i,n,s)}}function Jm(e,n,i){var s=bn(e),u={lane:s,action:i,hasEagerState:!1,eagerState:null,next:null};if(bd(e))Fd(n,u);else{var f=e.alternate;if(e.lanes===0&&(f===null||f.lanes===0)&&(f=n.lastRenderedReducer,f!==null))try{var w=n.lastRenderedState,I=f(w,i);if(u.hasEagerState=!0,u.eagerState=I,Ht(I,w)){var R=n.interleaved;R===null?(u.next=u,ka(n)):(u.next=R.next,R.next=u),n.interleaved=u;return}}catch{}finally{}i=md(e,n,u,s),i!==null&&(u=pt(),Yt(i,e,s,u),Hd(i,n,s))}}function bd(e){var n=e.alternate;return e===Be||n!==null&&n===Be}function Fd(e,n){bi=fs=!0;var i=e.pending;i===null?n.next=n:(n.next=i.next,i.next=n),e.pending=n}function Hd(e,n,i){if((i&4194240)!==0){var s=n.lanes;s&=e.pendingLanes,i|=s,n.lanes=i,jr(e,i)}}var gs={readContext:Dt,useCallback:ut,useContext:ut,useEffect:ut,useImperativeHandle:ut,useInsertionEffect:ut,useLayoutEffect:ut,useMemo:ut,useReducer:ut,useRef:ut,useState:ut,useDebugValue:ut,useDeferredValue:ut,useTransition:ut,useMutableSource:ut,useSyncExternalStore:ut,useId:ut,unstable_isNewReconciler:!1},e0={readContext:Dt,useCallback:function(e,n){return rn().memoizedState=[e,n===void 0?null:n],e},useContext:Dt,useEffect:Id,useImperativeHandle:function(e,n,i){return i=i!=null?i.concat([e]):null,hs(4194308,4,Rd.bind(null,n,e),i)},useLayoutEffect:function(e,n){return hs(4194308,4,e,n)},useInsertionEffect:function(e,n){return hs(4,2,e,n)},useMemo:function(e,n){var i=rn();return n=n===void 0?null:n,e=e(),i.memoizedState=[e,n],e},useReducer:function(e,n,i){var s=rn();return n=i!==void 0?i(n):n,s.memoizedState=s.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},s.queue=e,e=e.dispatch=Zm.bind(null,Be,e),[s.memoizedState,e]},useRef:function(e){var n=rn();return e={current:e},n.memoizedState=e},useState:Md,useDebugValue:$a,useDeferredValue:function(e){return rn().memoizedState=e},useTransition:function(){var e=Md(!1),n=e[0];return e=qm.bind(null,e[1]),rn().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,i){var s=Be,u=rn();if(Fe){if(i===void 0)throw Error(o(407));i=i()}else{if(i=n(),nt===null)throw Error(o(349));(sr&30)!==0||kd(s,n,i)}u.memoizedState=i;var f={value:i,getSnapshot:n};return u.queue=f,Id(Nd.bind(null,s,f,e),[e]),s.flags|=2048,Vi(9,Ed.bind(null,s,f,i,n),void 0,null),i},useId:function(){var e=rn(),n=nt.identifierPrefix;if(Fe){var i=pn,s=hn;i=(s&~(1<<32-Ct(s)-1)).toString(32)+i,n=":"+n+"R"+i,i=Fi++,0<\/script>",e=e.removeChild(e.firstChild)):typeof s.is=="string"?e=w.createElement(i,{is:s.is}):(e=w.createElement(i),i==="select"&&(w=e,s.multiple?w.multiple=!0:s.size&&(w.size=s.size))):e=w.createElementNS(e,i),e[tn]=n,e[Ri]=s,af(e,n,!1,!1),n.stateNode=e;e:{switch(w=li(i,s),i){case"dialog":De("cancel",e),De("close",e),u=s;break;case"iframe":case"object":case"embed":De("load",e),u=s;break;case"video":case"audio":for(u=0;uQr&&(n.flags|=128,s=!0,Bi(f,!1),n.lanes=4194304)}else{if(!s)if(e=cs(w),e!==null){if(n.flags|=128,s=!0,i=e.updateQueue,i!==null&&(n.updateQueue=i,n.flags|=4),Bi(f,!0),f.tail===null&&f.tailMode==="hidden"&&!w.alternate&&!Fe)return ct(n),null}else 2*He()-f.renderingStartTime>Qr&&i!==1073741824&&(n.flags|=128,s=!0,Bi(f,!1),n.lanes=4194304);f.isBackwards?(w.sibling=n.child,n.child=w):(i=f.last,i!==null?i.sibling=w:n.child=w,f.last=w)}return f.tail!==null?(n=f.tail,f.rendering=n,f.tail=n.sibling,f.renderingStartTime=He(),n.sibling=null,i=Ve.current,$e(Ve,s?i&1|2:i&1),n):(ct(n),null);case 22:case 23:return su(),s=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==s&&(n.flags|=8192),s&&(n.mode&1)!==0?(It&1073741824)!==0&&(ct(n),n.subtreeFlags&6&&(n.flags|=8192)):ct(n),null;case 24:return null;case 25:return null}throw Error(o(156,n.tag))}function s0(e,n){switch(ga(n),n.tag){case 1:return mt(n.type)&&Jo(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return Ur(),Oe(gt),Oe(at),Ma(),e=n.flags,(e&65536)!==0&&(e&128)===0?(n.flags=e&-65537|128,n):null;case 5:return Ca(n),null;case 13:if(Oe(Ve),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(o(340));Fr()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return Oe(Ve),null;case 4:return Ur(),null;case 10:return Sa(n.type._context),null;case 22:case 23:return su(),null;case 24:return null;default:return null}}var xs=!1,dt=!1,l0=typeof WeakSet=="function"?WeakSet:Set,he=null;function Yr(e,n){var i=e.ref;if(i!==null)if(typeof i=="function")try{i(null)}catch(s){We(e,n,s)}else i.current=null}function Qa(e,n,i){try{i()}catch(s){We(e,n,s)}}var df=!1;function a0(e,n){if(sa=bo,e=Vc(),Zl(e)){if("selectionStart"in e)var i={start:e.selectionStart,end:e.selectionEnd};else e:{i=(i=e.ownerDocument)&&i.defaultView||window;var s=i.getSelection&&i.getSelection();if(s&&s.rangeCount!==0){i=s.anchorNode;var u=s.anchorOffset,f=s.focusNode;s=s.focusOffset;try{i.nodeType,f.nodeType}catch{i=null;break e}var w=0,I=-1,R=-1,G=0,oe=0,le=e,ie=null;t:for(;;){for(var fe;le!==i||u!==0&&le.nodeType!==3||(I=w+u),le!==f||s!==0&&le.nodeType!==3||(R=w+s),le.nodeType===3&&(w+=le.nodeValue.length),(fe=le.firstChild)!==null;)ie=le,le=fe;for(;;){if(le===e)break t;if(ie===i&&++G===u&&(I=w),ie===f&&++oe===s&&(R=w),(fe=le.nextSibling)!==null)break;le=ie,ie=le.parentNode}le=fe}i=I===-1||R===-1?null:{start:I,end:R}}else i=null}i=i||{start:0,end:0}}else i=null;for(la={focusedElem:e,selectionRange:i},bo=!1,he=n;he!==null;)if(n=he,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,he=e;else for(;he!==null;){n=he;try{var ge=n.alternate;if((n.flags&1024)!==0)switch(n.tag){case 0:case 11:case 15:break;case 1:if(ge!==null){var ye=ge.memoizedProps,Ye=ge.memoizedState,U=n.stateNode,D=U.getSnapshotBeforeUpdate(n.elementType===n.type?ye:Bt(n.type,ye),Ye);U.__reactInternalSnapshotBeforeUpdate=D}break;case 3:var Y=n.stateNode.containerInfo;Y.nodeType===1?Y.textContent="":Y.nodeType===9&&Y.documentElement&&Y.removeChild(Y.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(o(163))}}catch(ae){We(n,n.return,ae)}if(e=n.sibling,e!==null){e.return=n.return,he=e;break}he=n.return}return ge=df,df=!1,ge}function Ui(e,n,i){var s=n.updateQueue;if(s=s!==null?s.lastEffect:null,s!==null){var u=s=s.next;do{if((u.tag&e)===e){var f=u.destroy;u.destroy=void 0,f!==void 0&&Qa(n,i,f)}u=u.next}while(u!==s)}}function ws(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var i=n=n.next;do{if((i.tag&e)===e){var s=i.create;i.destroy=s()}i=i.next}while(i!==n)}}function Ka(e){var n=e.ref;if(n!==null){var i=e.stateNode;switch(e.tag){case 5:e=i;break;default:e=i}typeof n=="function"?n(e):n.current=e}}function ff(e){var n=e.alternate;n!==null&&(e.alternate=null,ff(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[tn],delete n[Ri],delete n[da],delete n[Um],delete n[Wm])),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 hf(e){return e.tag===5||e.tag===3||e.tag===4}function pf(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||hf(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 Ga(e,n,i){var s=e.tag;if(s===5||s===6)e=e.stateNode,n?i.nodeType===8?i.parentNode.insertBefore(e,n):i.insertBefore(e,n):(i.nodeType===8?(n=i.parentNode,n.insertBefore(e,i)):(n=i,n.appendChild(e)),i=i._reactRootContainer,i!=null||n.onclick!==null||(n.onclick=qo));else if(s!==4&&(e=e.child,e!==null))for(Ga(e,n,i),e=e.sibling;e!==null;)Ga(e,n,i),e=e.sibling}function qa(e,n,i){var s=e.tag;if(s===5||s===6)e=e.stateNode,n?i.insertBefore(e,n):i.appendChild(e);else if(s!==4&&(e=e.child,e!==null))for(qa(e,n,i),e=e.sibling;e!==null;)qa(e,n,i),e=e.sibling}var ot=null,Ut=!1;function $n(e,n,i){for(i=i.child;i!==null;)gf(e,n,i),i=i.sibling}function gf(e,n,i){if(Nt&&typeof Nt.onCommitFiberUnmount=="function")try{Nt.onCommitFiberUnmount(Er,i)}catch{}switch(i.tag){case 5:dt||Yr(i,n);case 6:var s=ot,u=Ut;ot=null,$n(e,n,i),ot=s,Ut=u,ot!==null&&(Ut?(e=ot,i=i.stateNode,e.nodeType===8?e.parentNode.removeChild(i):e.removeChild(i)):ot.removeChild(i.stateNode));break;case 18:ot!==null&&(Ut?(e=ot,i=i.stateNode,e.nodeType===8?ca(e.parentNode,i):e.nodeType===1&&ca(e,i),_i(e)):ca(ot,i.stateNode));break;case 4:s=ot,u=Ut,ot=i.stateNode.containerInfo,Ut=!0,$n(e,n,i),ot=s,Ut=u;break;case 0:case 11:case 14:case 15:if(!dt&&(s=i.updateQueue,s!==null&&(s=s.lastEffect,s!==null))){u=s=s.next;do{var f=u,w=f.destroy;f=f.tag,w!==void 0&&((f&2)!==0||(f&4)!==0)&&Qa(i,n,w),u=u.next}while(u!==s)}$n(e,n,i);break;case 1:if(!dt&&(Yr(i,n),s=i.stateNode,typeof s.componentWillUnmount=="function"))try{s.props=i.memoizedProps,s.state=i.memoizedState,s.componentWillUnmount()}catch(I){We(i,n,I)}$n(e,n,i);break;case 21:$n(e,n,i);break;case 22:i.mode&1?(dt=(s=dt)||i.memoizedState!==null,$n(e,n,i),dt=s):$n(e,n,i);break;default:$n(e,n,i)}}function mf(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var i=e.stateNode;i===null&&(i=e.stateNode=new l0),n.forEach(function(s){var u=y0.bind(null,e,s);i.has(s)||(i.add(s),s.then(u,u))})}}function Wt(e,n){var i=n.deletions;if(i!==null)for(var s=0;su&&(u=w),s&=~f}if(s=u,s=He()-s,s=(120>s?120:480>s?480:1080>s?1080:1920>s?1920:3e3>s?3e3:4320>s?4320:1960*c0(s/1960))-s,10e?16:e,On===null)var s=!1;else{if(e=On,On=null,Ns=0,(Ie&6)!==0)throw Error(o(331));var u=Ie;for(Ie|=4,he=e.current;he!==null;){var f=he,w=f.child;if((he.flags&16)!==0){var I=f.deletions;if(I!==null){for(var R=0;RHe()-eu?ur(e,0):Ja|=i),xt(e,n)}function Pf(e,n){n===0&&((e.mode&1)===0?n=1:(n=Cr,Cr<<=1,(Cr&130023424)===0&&(Cr=4194304)));var i=pt();e=gn(e,n),e!==null&&(Jn(e,n,i),xt(e,i))}function m0(e){var n=e.memoizedState,i=0;n!==null&&(i=n.retryLane),Pf(e,i)}function y0(e,n){var i=0;switch(e.tag){case 13:var s=e.stateNode,u=e.memoizedState;u!==null&&(i=u.retryLane);break;case 19:s=e.stateNode;break;default:throw Error(o(314))}s!==null&&s.delete(n),Pf(e,i)}var If;If=function(e,n,i){if(e!==null)if(e.memoizedProps!==n.pendingProps||gt.current)yt=!0;else{if((e.lanes&i)===0&&(n.flags&128)===0)return yt=!1,i0(e,n,i);yt=(e.flags&131072)!==0}else yt=!1,Fe&&(n.flags&1048576)!==0&&ad(n,rs,n.index);switch(n.lanes=0,n.tag){case 2:var s=n.type;vs(e,n),e=n.pendingProps;var u=Dr(n,at.current);Br(n,i),u=Ta(null,n,s,e,u,i);var f=za();return n.flags|=1,typeof u=="object"&&u!==null&&typeof u.render=="function"&&u.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,mt(s)?(f=!0,es(n)):f=!1,n.memoizedState=u.state!==null&&u.state!==void 0?u.state:null,Ea(n),u.updater=ms,n.stateNode=u,u._reactInternals=n,Oa(n,s,e,i),n=Va(null,n,s,!0,f,i)):(n.tag=0,Fe&&f&&pa(n),ht(null,n,u,i),n=n.child),n;case 16:s=n.elementType;e:{switch(vs(e,n),e=n.pendingProps,u=s._init,s=u(s._payload),n.type=s,u=n.tag=x0(s),e=Bt(s,e),u){case 0:n=Ha(null,n,s,e,i);break e;case 1:n=tf(null,n,s,e,i);break e;case 11:n=Gd(null,n,s,e,i);break e;case 14:n=qd(null,n,s,Bt(s.type,e),i);break e}throw Error(o(306,s,""))}return n;case 0:return s=n.type,u=n.pendingProps,u=n.elementType===s?u:Bt(s,u),Ha(e,n,s,u,i);case 1:return s=n.type,u=n.pendingProps,u=n.elementType===s?u:Bt(s,u),tf(e,n,s,u,i);case 3:e:{if(nf(n),e===null)throw Error(o(387));s=n.pendingProps,f=n.memoizedState,u=f.element,yd(e,n),us(n,s,null,i);var w=n.memoizedState;if(s=w.element,f.isDehydrated)if(f={element:s,isDehydrated:!1,cache:w.cache,pendingSuspenseBoundaries:w.pendingSuspenseBoundaries,transitions:w.transitions},n.updateQueue.baseState=f,n.memoizedState=f,n.flags&256){u=Wr(Error(o(423)),n),n=rf(e,n,s,i,u);break e}else if(s!==u){u=Wr(Error(o(424)),n),n=rf(e,n,s,i,u);break e}else for(Pt=In(n.stateNode.containerInfo.firstChild),Mt=n,Fe=!0,Vt=null,i=gd(n,null,s,i),n.child=i;i;)i.flags=i.flags&-3|4096,i=i.sibling;else{if(Fr(),s===u){n=yn(e,n,i);break e}ht(e,n,s,i)}n=n.child}return n;case 5:return wd(n),e===null&&ya(n),s=n.type,u=n.pendingProps,f=e!==null?e.memoizedProps:null,w=u.children,aa(s,u)?w=null:f!==null&&aa(s,f)&&(n.flags|=32),ef(e,n),ht(e,n,w,i),n.child;case 6:return e===null&&ya(n),null;case 13:return of(e,n,i);case 4:return Na(n,n.stateNode.containerInfo),s=n.pendingProps,e===null?n.child=Hr(n,null,s,i):ht(e,n,s,i),n.child;case 11:return s=n.type,u=n.pendingProps,u=n.elementType===s?u:Bt(s,u),Gd(e,n,s,u,i);case 7:return ht(e,n,n.pendingProps,i),n.child;case 8:return ht(e,n,n.pendingProps.children,i),n.child;case 12:return ht(e,n,n.pendingProps.children,i),n.child;case 10:e:{if(s=n.type._context,u=n.pendingProps,f=n.memoizedProps,w=u.value,$e(ss,s._currentValue),s._currentValue=w,f!==null)if(Ht(f.value,w)){if(f.children===u.children&&!gt.current){n=yn(e,n,i);break e}}else for(f=n.child,f!==null&&(f.return=n);f!==null;){var I=f.dependencies;if(I!==null){w=f.child;for(var R=I.firstContext;R!==null;){if(R.context===s){if(f.tag===1){R=mn(-1,i&-i),R.tag=2;var G=f.updateQueue;if(G!==null){G=G.shared;var oe=G.pending;oe===null?R.next=R:(R.next=oe.next,oe.next=R),G.pending=R}}f.lanes|=i,R=f.alternate,R!==null&&(R.lanes|=i),_a(f.return,i,n),I.lanes|=i;break}R=R.next}}else if(f.tag===10)w=f.type===n.type?null:f.child;else if(f.tag===18){if(w=f.return,w===null)throw Error(o(341));w.lanes|=i,I=w.alternate,I!==null&&(I.lanes|=i),_a(w,i,n),w=f.sibling}else w=f.child;if(w!==null)w.return=f;else for(w=f;w!==null;){if(w===n){w=null;break}if(f=w.sibling,f!==null){f.return=w.return,w=f;break}w=w.return}f=w}ht(e,n,u.children,i),n=n.child}return n;case 9:return u=n.type,s=n.pendingProps.children,Br(n,i),u=Dt(u),s=s(u),n.flags|=1,ht(e,n,s,i),n.child;case 14:return s=n.type,u=Bt(s,n.pendingProps),u=Bt(s.type,u),qd(e,n,s,u,i);case 15:return Zd(e,n,n.type,n.pendingProps,i);case 17:return s=n.type,u=n.pendingProps,u=n.elementType===s?u:Bt(s,u),vs(e,n),n.tag=1,mt(s)?(e=!0,es(n)):e=!1,Br(n,i),Bd(n,s,u),Oa(n,s,u,i),Va(null,n,s,!0,e,i);case 19:return lf(e,n,i);case 22:return Jd(e,n,i)}throw Error(o(156,n.tag))};function Tf(e,n){return Io(e,n)}function v0(e,n,i,s){this.tag=e,this.key=i,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=s,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ft(e,n,i,s){return new v0(e,n,i,s)}function au(e){return e=e.prototype,!(!e||!e.isReactComponent)}function x0(e){if(typeof e=="function")return au(e)?1:0;if(e!=null){if(e=e.$$typeof,e===te)return 11;if(e===B)return 14}return 2}function Hn(e,n){var i=e.alternate;return i===null?(i=Ft(e.tag,n,e.key,e.mode),i.elementType=e.elementType,i.type=e.type,i.stateNode=e.stateNode,i.alternate=e,e.alternate=i):(i.pendingProps=n,i.type=e.type,i.flags=0,i.subtreeFlags=0,i.deletions=null),i.flags=e.flags&14680064,i.childLanes=e.childLanes,i.lanes=e.lanes,i.child=e.child,i.memoizedProps=e.memoizedProps,i.memoizedState=e.memoizedState,i.updateQueue=e.updateQueue,n=e.dependencies,i.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},i.sibling=e.sibling,i.index=e.index,i.ref=e.ref,i}function Ps(e,n,i,s,u,f){var w=2;if(s=e,typeof e=="function")au(e)&&(w=1);else if(typeof e=="string")w=5;else e:switch(e){case H:return dr(i.children,u,f,n);case X:w=8,u|=8;break;case K:return e=Ft(12,i,n,u|2),e.elementType=K,e.lanes=f,e;case J:return e=Ft(13,i,n,u),e.elementType=J,e.lanes=f,e;case C:return e=Ft(19,i,n,u),e.elementType=C,e.lanes=f,e;case V:return Is(i,u,f,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ne:w=10;break e;case Z:w=9;break e;case te:w=11;break e;case B:w=14;break e;case F:w=16,s=null;break e}throw Error(o(130,e==null?e:typeof e,""))}return n=Ft(w,i,n,u),n.elementType=e,n.type=s,n.lanes=f,n}function dr(e,n,i,s){return e=Ft(7,e,s,n),e.lanes=i,e}function Is(e,n,i,s){return e=Ft(22,e,s,n),e.elementType=V,e.lanes=i,e.stateNode={isHidden:!1},e}function uu(e,n,i){return e=Ft(6,e,null,n),e.lanes=i,e}function cu(e,n,i){return n=Ft(4,e.children!==null?e.children:[],e.key,n),n.lanes=i,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function w0(e,n,i,s,u){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=Zn(0),this.expirationTimes=Zn(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Zn(0),this.identifierPrefix=s,this.onRecoverableError=u,this.mutableSourceEagerHydrationData=null}function du(e,n,i,s,u,f,w,I,R){return e=new w0(e,n,i,I,R),n===1?(n=1,f===!0&&(n|=8)):n=0,f=Ft(3,null,null,n),e.current=f,f.stateNode=e,f.memoizedState={element:s,isDehydrated:i,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ea(f),e}function S0(e,n,i){var s=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(r){console.error(r)}}return t(),yu.exports=R0(),yu.exports}var Wf;function L0(){if(Wf)return Ds;Wf=1;var t=rp();return Ds.createRoot=t.createRoot,Ds.hydrateRoot=t.hydrateRoot,Ds}var A0=L0();async function Tt(t,r){const o=await fetch(t,{...r,headers:{"Content-Type":"application/json",...(r==null?void 0:r.headers)||{}}});if(!o.ok){const l=await o.text();throw new Error(l||o.statusText)}return o.json()}const St={health:()=>Tt("/api/health"),settings:()=>Tt("/api/settings"),saveSettings:t=>Tt("/api/settings",{method:"PUT",body:JSON.stringify(t)}),repos:()=>Tt("/api/repos"),index:(t,r=!0)=>Tt("/api/index",{method:"POST",body:JSON.stringify({repo_path:t,incremental:r})}),indexStatus:t=>Tt(`/api/index?repo_path=${encodeURIComponent(t)}`),architecture:t=>Tt(`/api/architecture?repo_path=${encodeURIComponent(t)}`),review:(t,r,o,l=!0)=>Tt("/api/review",{method:"POST",body:JSON.stringify({repo_path:t,base:r,head:o||null,reindex:l,incremental:!0,three_dot:!0})}),init:(t,r=!1)=>Tt("/api/init",{method:"POST",body:JSON.stringify({repo_path:t,overwrite:r})}),postComment:(t,r,o,l)=>Tt("/api/prs/comment",{method:"POST",body:JSON.stringify({provider:t,repo:r,number:o,markdown:l})}),graph:(t,r="full")=>Tt(`/api/graph?repo_path=${encodeURIComponent(t)}&scope=${r}`),prs:(t,r,o="open")=>Tt("/api/prs",{method:"POST",body:JSON.stringify({provider:t,repo:r,state:o})}),residual:t=>Tt("/api/ai/residual",{method:"POST",body:JSON.stringify({review:t})})};function $0(t){return t.replaceAll("_"," ")}function Qu(t){return t.split(".").pop()||t}function D0(t){if(!t)return"";const r=new Date(t);return Number.isNaN(r.getTime())?t:r.toLocaleString()}function O0(t){return t.split(/[\\/]/).filter(Boolean).pop()||t}function ho({className:t,children:r}){return x.jsx("svg",{className:t,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:r})}function b0({className:t}){return x.jsxs(ho,{className:t,children:[x.jsx("path",{d:"M3 3.5h6.5L13 7v5.5H3z"}),x.jsx("path",{d:"M9.5 3.5V7H13"}),x.jsx("path",{d:"M5.5 9.5h5M5.5 11.5h3.5"})]})}function F0({className:t}){return x.jsxs(ho,{className:t,children:[x.jsx("rect",{x:"2.5",y:"2.5",width:"4.5",height:"4.5",rx:"0.8"}),x.jsx("rect",{x:"9",y:"2.5",width:"4.5",height:"4.5",rx:"0.8"}),x.jsx("rect",{x:"2.5",y:"9",width:"4.5",height:"4.5",rx:"0.8"}),x.jsx("rect",{x:"9",y:"9",width:"4.5",height:"4.5",rx:"0.8"})]})}function H0({className:t}){return x.jsxs(ho,{className:t,children:[x.jsx("circle",{cx:"4",cy:"8",r:"1.6"}),x.jsx("circle",{cx:"12",cy:"4",r:"1.6"}),x.jsx("circle",{cx:"12",cy:"12",r:"1.6"}),x.jsx("path",{d:"M5.5 7.2 10.4 4.8M5.5 8.8 10.4 11.2"})]})}function V0({className:t}){return x.jsxs(ho,{className:t,children:[x.jsx("circle",{cx:"4.5",cy:"4",r:"1.4"}),x.jsx("circle",{cx:"4.5",cy:"12",r:"1.4"}),x.jsx("circle",{cx:"11.5",cy:"12",r:"1.4"}),x.jsx("path",{d:"M4.5 5.5v5M4.5 8h4.2a3 3 0 0 1 3 3"})]})}function B0({className:t}){return x.jsxs(ho,{className:t,children:[x.jsx("circle",{cx:"8",cy:"8",r:"2.1"}),x.jsx("path",{d:"M8 2.5v1.6M8 11.9v1.6M2.5 8h1.6M11.9 8h1.6M4.1 4.1l1.1 1.1M10.8 10.8l1.1 1.1M11.9 4.1l-1.1 1.1M5.2 10.8l-1.1 1.1"})]})}function Qe(t){if(typeof t=="string"||typeof t=="number")return""+t;let r="";if(Array.isArray(t))for(let o=0,l;o{}};function dl(){for(var t=0,r=arguments.length,o={},l;t=0&&(l=o.slice(a+1),o=o.slice(0,a)),o&&!r.hasOwnProperty(o))throw new Error("unknown type: "+o);return{type:o,name:l}})}Xs.prototype=dl.prototype={constructor:Xs,on:function(t,r){var o=this._,l=W0(t+"",o),a,c=-1,d=l.length;if(arguments.length<2){for(;++c0)for(var o=new Array(a),l=0,a,c;l=0&&(r=t.slice(0,o))!=="xmlns"&&(t=t.slice(o+1)),Xf.hasOwnProperty(r)?{space:Xf[r],local:t}:t}function X0(t){return function(){var r=this.ownerDocument,o=this.namespaceURI;return o===Lu&&r.documentElement.namespaceURI===Lu?r.createElement(t):r.createElementNS(o,t)}}function Q0(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function ip(t){var r=fl(t);return(r.local?Q0:X0)(r)}function K0(){}function Ku(t){return t==null?K0:function(){return this.querySelector(t)}}function G0(t){typeof t!="function"&&(t=Ku(t));for(var r=this._groups,o=r.length,l=new Array(o),a=0;a=N&&(N=z+1);!(b=k[N])&&++N<_;);P._next=b||null}}return d=new Rt(d,l),d._enter=h,d._exit=p,d}function my(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function yy(){return new Rt(this._exit||this._groups.map(ap),this._parents)}function vy(t,r,o){var l=this.enter(),a=this,c=this.exit();return typeof t=="function"?(l=t(l),l&&(l=l.selection())):l=l.append(t+""),r!=null&&(a=r(a),a&&(a=a.selection())),o==null?c.remove():o(c),l&&a?l.merge(a).order():a}function xy(t){for(var r=t.selection?t.selection():t,o=this._groups,l=r._groups,a=o.length,c=l.length,d=Math.min(a,c),h=new Array(a),p=0;p=0;)(d=l[a])&&(c&&d.compareDocumentPosition(c)^4&&c.parentNode.insertBefore(d,c),c=d);return this}function Sy(t){t||(t=_y);function r(v,g){return v&&g?t(v.__data__,g.__data__):!v-!g}for(var o=this._groups,l=o.length,a=new Array(l),c=0;cr?1:t>=r?0:NaN}function ky(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Ey(){return Array.from(this)}function Ny(){for(var t=this._groups,r=0,o=t.length;r1?this.each((r==null?$y:typeof r=="function"?Oy:Dy)(t,r,o??"")):ei(this.node(),t)}function ei(t,r){return t.style.getPropertyValue(r)||up(t).getComputedStyle(t,null).getPropertyValue(r)}function Fy(t){return function(){delete this[t]}}function Hy(t,r){return function(){this[t]=r}}function Vy(t,r){return function(){var o=r.apply(this,arguments);o==null?delete this[t]:this[t]=o}}function By(t,r){return arguments.length>1?this.each((r==null?Fy:typeof r=="function"?Vy:Hy)(t,r)):this.node()[t]}function cp(t){return t.trim().split(/^|\s+/)}function Gu(t){return t.classList||new dp(t)}function dp(t){this._node=t,this._names=cp(t.getAttribute("class")||"")}dp.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 fp(t,r){for(var o=Gu(t),l=-1,a=r.length;++l=0&&(o=r.slice(l+1),r=r.slice(0,l)),{type:r,name:o}})}function yv(t){return function(){var r=this.__on;if(r){for(var o=0,l=-1,a=r.length,c;o()=>t;function Au(t,{sourceEvent:r,subject:o,target:l,identifier:a,active:c,x:d,y:h,dx:p,dy:y,dispatch:m}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:r,enumerable:!0,configurable:!0},subject:{value:o,enumerable:!0,configurable:!0},target:{value:l,enumerable:!0,configurable:!0},identifier:{value:a,enumerable:!0,configurable:!0},active:{value:c,enumerable:!0,configurable:!0},x:{value:d,enumerable:!0,configurable:!0},y:{value:h,enumerable:!0,configurable:!0},dx:{value:p,enumerable:!0,configurable:!0},dy:{value:y,enumerable:!0,configurable:!0},_:{value:m}})}Au.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function jv(t){return!t.ctrlKey&&!t.button}function Mv(){return this.parentNode}function Pv(t,r){return r??{x:t.x,y:t.y}}function Iv(){return navigator.maxTouchPoints||"ontouchstart"in this}function vp(){var t=jv,r=Mv,o=Pv,l=Iv,a={},c=dl("start","drag","end"),d=0,h,p,y,m,v=0;function g(P){P.on("mousedown.drag",S).filter(l).on("touchstart.drag",k).on("touchmove.drag",E,Cv).on("touchend.drag touchcancel.drag",z).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function S(P,b){if(!(m||!t.call(this,P,b))){var $=N(this,r.call(this,P,b),P,b,"mouse");$&&(zt(P.view).on("mousemove.drag",_,no).on("mouseup.drag",M,no),mp(P.view),wu(P),y=!1,h=P.clientX,p=P.clientY,$("start",P))}}function _(P){if(Zr(P),!y){var b=P.clientX-h,$=P.clientY-p;y=b*b+$*$>v}a.mouse("drag",P)}function M(P){zt(P.view).on("mousemove.drag mouseup.drag",null),yp(P.view,y),Zr(P),a.mouse("end",P)}function k(P,b){if(t.call(this,P,b)){var $=P.changedTouches,H=r.call(this,P,b),X=$.length,K,ne;for(K=0;K>8&15|r>>4&240,r>>4&15|r&240,(r&15)<<4|r&15,1):o===8?bs(r>>24&255,r>>16&255,r>>8&255,(r&255)/255):o===4?bs(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=zv.exec(t))?new _t(r[1],r[2],r[3],1):(r=Rv.exec(t))?new _t(r[1]*255/100,r[2]*255/100,r[3]*255/100,1):(r=Lv.exec(t))?bs(r[1],r[2],r[3],r[4]):(r=Av.exec(t))?bs(r[1]*255/100,r[2]*255/100,r[3]*255/100,r[4]):(r=$v.exec(t))?eh(r[1],r[2]/100,r[3]/100,1):(r=Dv.exec(t))?eh(r[1],r[2]/100,r[3]/100,r[4]):Qf.hasOwnProperty(t)?qf(Qf[t]):t==="transparent"?new _t(NaN,NaN,NaN,0):null}function qf(t){return new _t(t>>16&255,t>>8&255,t&255,1)}function bs(t,r,o,l){return l<=0&&(t=r=o=NaN),new _t(t,r,o,l)}function Fv(t){return t instanceof go||(t=mr(t)),t?(t=t.rgb(),new _t(t.r,t.g,t.b,t.opacity)):new _t}function $u(t,r,o,l){return arguments.length===1?Fv(t):new _t(t,r,o,l??1)}function _t(t,r,o,l){this.r=+t,this.g=+r,this.b=+o,this.opacity=+l}qu(_t,$u,xp(go,{brighter(t){return t=t==null?Js:Math.pow(Js,t),new _t(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?ro:Math.pow(ro,t),new _t(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new _t(pr(this.r),pr(this.g),pr(this.b),el(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:Zf,formatHex:Zf,formatHex8:Hv,formatRgb:Jf,toString:Jf}));function Zf(){return`#${hr(this.r)}${hr(this.g)}${hr(this.b)}`}function Hv(){return`#${hr(this.r)}${hr(this.g)}${hr(this.b)}${hr((isNaN(this.opacity)?1:this.opacity)*255)}`}function Jf(){const t=el(this.opacity);return`${t===1?"rgb(":"rgba("}${pr(this.r)}, ${pr(this.g)}, ${pr(this.b)}${t===1?")":`, ${t})`}`}function el(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function pr(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function hr(t){return t=pr(t),(t<16?"0":"")+t.toString(16)}function eh(t,r,o,l){return l<=0?t=r=o=NaN:o<=0||o>=1?t=r=NaN:r<=0&&(t=NaN),new Qt(t,r,o,l)}function wp(t){if(t instanceof Qt)return new Qt(t.h,t.s,t.l,t.opacity);if(t instanceof go||(t=mr(t)),!t)return new Qt;if(t instanceof Qt)return t;t=t.rgb();var r=t.r/255,o=t.g/255,l=t.b/255,a=Math.min(r,o,l),c=Math.max(r,o,l),d=NaN,h=c-a,p=(c+a)/2;return h?(r===c?d=(o-l)/h+(o0&&p<1?0:d,new Qt(d,h,p,t.opacity)}function Vv(t,r,o,l){return arguments.length===1?wp(t):new Qt(t,r,o,l??1)}function Qt(t,r,o,l){this.h=+t,this.s=+r,this.l=+o,this.opacity=+l}qu(Qt,Vv,xp(go,{brighter(t){return t=t==null?Js:Math.pow(Js,t),new Qt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?ro:Math.pow(ro,t),new Qt(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,o=this.l,l=o+(o<.5?o:1-o)*r,a=2*o-l;return new _t(Su(t>=240?t-240:t+120,a,l),Su(t,a,l),Su(t<120?t+240:t-120,a,l),this.opacity)},clamp(){return new Qt(th(this.h),Fs(this.s),Fs(this.l),el(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=el(this.opacity);return`${t===1?"hsl(":"hsla("}${th(this.h)}, ${Fs(this.s)*100}%, ${Fs(this.l)*100}%${t===1?")":`, ${t})`}`}}));function th(t){return t=(t||0)%360,t<0?t+360:t}function Fs(t){return Math.max(0,Math.min(1,t||0))}function Su(t,r,o){return(t<60?r+(o-r)*t/60:t<180?o:t<240?r+(o-r)*(240-t)/60:r)*255}const Zu=t=>()=>t;function Bv(t,r){return function(o){return t+o*r}}function Uv(t,r,o){return t=Math.pow(t,o),r=Math.pow(r,o)-t,o=1/o,function(l){return Math.pow(t+l*r,o)}}function Wv(t){return(t=+t)==1?Sp:function(r,o){return o-r?Uv(r,o,t):Zu(isNaN(r)?o:r)}}function Sp(t,r){var o=r-t;return o?Bv(t,o):Zu(isNaN(t)?r:t)}const tl=(function t(r){var o=Wv(r);function l(a,c){var d=o((a=$u(a)).r,(c=$u(c)).r),h=o(a.g,c.g),p=o(a.b,c.b),y=Sp(a.opacity,c.opacity);return function(m){return a.r=d(m),a.g=h(m),a.b=p(m),a.opacity=y(m),a+""}}return l.gamma=t,l})(1);function Yv(t,r){r||(r=[]);var o=t?Math.min(r.length,t.length):0,l=r.slice(),a;return function(c){for(a=0;ao&&(c=r.slice(o,c),h[d]?h[d]+=c:h[++d]=c),(l=l[0])===(a=a[0])?h[d]?h[d]+=a:h[++d]=a:(h[++d]=null,p.push({i:d,x:sn(l,a)})),o=_u.lastIndex;return o180?m+=360:m-y>180&&(y+=360),g.push({i:v.push(a(v)+"rotate(",null,l)-2,x:sn(y,m)})):m&&v.push(a(v)+"rotate("+m+l)}function h(y,m,v,g){y!==m?g.push({i:v.push(a(v)+"skewX(",null,l)-2,x:sn(y,m)}):m&&v.push(a(v)+"skewX("+m+l)}function p(y,m,v,g,S,_){if(y!==v||m!==g){var M=S.push(a(S)+"scale(",null,",",null,")");_.push({i:M-4,x:sn(y,v)},{i:M-2,x:sn(m,g)})}else(v!==1||g!==1)&&S.push(a(S)+"scale("+v+","+g+")")}return function(y,m){var v=[],g=[];return y=t(y),m=t(m),c(y.translateX,y.translateY,m.translateX,m.translateY,v,g),d(y.rotate,m.rotate,v,g),h(y.skewX,m.skewX,v,g),p(y.scaleX,y.scaleY,m.scaleX,m.scaleY,v,g),y=m=null,function(S){for(var _=-1,M=g.length,k;++_=0&&t._call.call(void 0,r),t=t._next;--ti}function ih(){yr=(rl=oo.now())+hl,ti=Zi=0;try{lx()}finally{ti=0,ux(),yr=0}}function ax(){var t=oo.now(),r=t-rl;r>Np&&(hl-=r,rl=t)}function ux(){for(var t,r=nl,o,l=1/0;r;)r._call?(l>r._time&&(l=r._time),t=r,r=r._next):(o=r._next,r._next=null,r=t?t._next=o:nl=o);Ji=t,bu(l)}function bu(t){if(!ti){Zi&&(Zi=clearTimeout(Zi));var r=t-yr;r>24?(t<1/0&&(Zi=setTimeout(ih,t-oo.now()-hl)),Gi&&(Gi=clearInterval(Gi))):(Gi||(rl=oo.now(),Gi=setInterval(ax,Np)),ti=1,Cp(ih))}}function oh(t,r,o){var l=new il;return r=r==null?0:+r,l.restart(a=>{l.stop(),t(a+r)},r,o),l}var cx=dl("start","end","cancel","interrupt"),dx=[],Mp=0,sh=1,Fu=2,Ks=3,lh=4,Hu=5,Gs=6;function pl(t,r,o,l,a,c){var d=t.__transition;if(!d)t.__transition={};else if(o in d)return;fx(t,o,{name:r,index:l,group:a,on:cx,tween:dx,time:c.time,delay:c.delay,duration:c.duration,ease:c.ease,timer:null,state:Mp})}function ec(t,r){var o=Zt(t,r);if(o.state>Mp)throw new Error("too late; already scheduled");return o}function an(t,r){var o=Zt(t,r);if(o.state>Ks)throw new Error("too late; already running");return o}function Zt(t,r){var o=t.__transition;if(!o||!(o=o[r]))throw new Error("transition not found");return o}function fx(t,r,o){var l=t.__transition,a;l[r]=o,o.timer=jp(c,0,o.time);function c(y){o.state=sh,o.timer.restart(d,o.delay,o.time),o.delay<=y&&d(y-o.delay)}function d(y){var m,v,g,S;if(o.state!==sh)return p();for(m in l)if(S=l[m],S.name===o.name){if(S.state===Ks)return oh(d);S.state===lh?(S.state=Gs,S.timer.stop(),S.on.call("interrupt",t,t.__data__,S.index,S.group),delete l[m]):+mFu&&l.state=0&&(r=r.slice(0,o)),!r||r==="start"})}function Vx(t,r,o){var l,a,c=Hx(r)?ec:an;return function(){var d=c(this,t),h=d.on;h!==l&&(a=(l=h).copy()).on(r,o),d.on=a}}function Bx(t,r){var o=this._id;return arguments.length<2?Zt(this.node(),o).on.on(t):this.each(Vx(o,t,r))}function Ux(t){return function(){var r=this.parentNode;for(var o in this.__transition)if(+o!==t)return;r&&r.removeChild(this)}}function Wx(){return this.on("end.remove",Ux(this._id))}function Yx(t){var r=this._name,o=this._id;typeof t!="function"&&(t=Ku(t));for(var l=this._groups,a=l.length,c=new Array(a),d=0;d()=>t;function yw(t,{sourceEvent:r,target:o,transform:l,dispatch:a}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:r,enumerable:!0,configurable:!0},target:{value:o,enumerable:!0,configurable:!0},transform:{value:l,enumerable:!0,configurable:!0},_:{value:a}})}function wn(t,r,o){this.k=t,this.x=r,this.y=o}wn.prototype={constructor:wn,scale:function(t){return t===1?this:new wn(this.k*t,this.x,this.y)},translate:function(t,r){return t===0&r===0?this:new wn(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 gl=new wn(1,0,0);zp.prototype=wn.prototype;function zp(t){for(;!t.__zoom;)if(!(t=t.parentNode))return gl;return t.__zoom}function ku(t){t.stopImmediatePropagation()}function qi(t){t.preventDefault(),t.stopImmediatePropagation()}function vw(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function xw(){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 ah(){return this.__zoom||gl}function ww(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function Sw(){return navigator.maxTouchPoints||"ontouchstart"in this}function _w(t,r,o){var l=t.invertX(r[0][0])-o[0][0],a=t.invertX(r[1][0])-o[1][0],c=t.invertY(r[0][1])-o[0][1],d=t.invertY(r[1][1])-o[1][1];return t.translate(a>l?(l+a)/2:Math.min(0,l)||Math.max(0,a),d>c?(c+d)/2:Math.min(0,c)||Math.max(0,d))}function Rp(){var t=vw,r=xw,o=_w,l=ww,a=Sw,c=[0,1/0],d=[[-1/0,-1/0],[1/0,1/0]],h=250,p=Qs,y=dl("start","zoom","end"),m,v,g,S=500,_=150,M=0,k=10;function E(C){C.property("__zoom",ah).on("wheel.zoom",X,{passive:!1}).on("mousedown.zoom",K).on("dblclick.zoom",ne).filter(a).on("touchstart.zoom",Z).on("touchmove.zoom",te).on("touchend.zoom touchcancel.zoom",J).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}E.transform=function(C,B,F,V){var A=C.selection?C.selection():C;A.property("__zoom",ah),C!==A?b(C,B,F,V):A.interrupt().each(function(){$(this,arguments).event(V).start().zoom(null,typeof B=="function"?B.apply(this,arguments):B).end()})},E.scaleBy=function(C,B,F,V){E.scaleTo(C,function(){var A=this.__zoom.k,L=typeof B=="function"?B.apply(this,arguments):B;return A*L},F,V)},E.scaleTo=function(C,B,F,V){E.transform(C,function(){var A=r.apply(this,arguments),L=this.__zoom,O=F==null?P(A):typeof F=="function"?F.apply(this,arguments):F,j=L.invert(O),T=typeof B=="function"?B.apply(this,arguments):B;return o(N(z(L,T),O,j),A,d)},F,V)},E.translateBy=function(C,B,F,V){E.transform(C,function(){return o(this.__zoom.translate(typeof B=="function"?B.apply(this,arguments):B,typeof F=="function"?F.apply(this,arguments):F),r.apply(this,arguments),d)},null,V)},E.translateTo=function(C,B,F,V,A){E.transform(C,function(){var L=r.apply(this,arguments),O=this.__zoom,j=V==null?P(L):typeof V=="function"?V.apply(this,arguments):V;return o(gl.translate(j[0],j[1]).scale(O.k).translate(typeof B=="function"?-B.apply(this,arguments):-B,typeof F=="function"?-F.apply(this,arguments):-F),L,d)},V,A)};function z(C,B){return B=Math.max(c[0],Math.min(c[1],B)),B===C.k?C:new wn(B,C.x,C.y)}function N(C,B,F){var V=B[0]-F[0]*C.k,A=B[1]-F[1]*C.k;return V===C.x&&A===C.y?C:new wn(C.k,V,A)}function P(C){return[(+C[0][0]+ +C[1][0])/2,(+C[0][1]+ +C[1][1])/2]}function b(C,B,F,V){C.on("start.zoom",function(){$(this,arguments).event(V).start()}).on("interrupt.zoom end.zoom",function(){$(this,arguments).event(V).end()}).tween("zoom",function(){var A=this,L=arguments,O=$(A,L).event(V),j=r.apply(A,L),T=F==null?P(j):typeof F=="function"?F.apply(A,L):F,ee=Math.max(j[1][0]-j[0][0],j[1][1]-j[0][1]),re=A.__zoom,ue=typeof B=="function"?B.apply(A,L):B,de=p(re.invert(T).concat(ee/re.k),ue.invert(T).concat(ee/ue.k));return function(ce){if(ce===1)ce=ue;else{var Q=de(ce),se=ee/Q[2];ce=new wn(se,T[0]-Q[0]*se,T[1]-Q[1]*se)}O.zoom(null,ce)}})}function $(C,B,F){return!F&&C.__zooming||new H(C,B)}function H(C,B){this.that=C,this.args=B,this.active=0,this.sourceEvent=null,this.extent=r.apply(C,B),this.taps=0}H.prototype={event:function(C){return C&&(this.sourceEvent=C),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(C,B){return this.mouse&&C!=="mouse"&&(this.mouse[1]=B.invert(this.mouse[0])),this.touch0&&C!=="touch"&&(this.touch0[1]=B.invert(this.touch0[0])),this.touch1&&C!=="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(C){var B=zt(this.that).datum();y.call(C,this.that,new yw(C,{sourceEvent:this.sourceEvent,target:E,transform:this.that.__zoom,dispatch:y}),B)}};function X(C,...B){if(!t.apply(this,arguments))return;var F=$(this,B).event(C),V=this.__zoom,A=Math.max(c[0],Math.min(c[1],V.k*Math.pow(2,l.apply(this,arguments)))),L=Xt(C);if(F.wheel)(F.mouse[0][0]!==L[0]||F.mouse[0][1]!==L[1])&&(F.mouse[1]=V.invert(F.mouse[0]=L)),clearTimeout(F.wheel);else{if(V.k===A)return;F.mouse=[L,V.invert(L)],qs(this),F.start()}qi(C),F.wheel=setTimeout(O,_),F.zoom("mouse",o(N(z(V,A),F.mouse[0],F.mouse[1]),F.extent,d));function O(){F.wheel=null,F.end()}}function K(C,...B){if(g||!t.apply(this,arguments))return;var F=C.currentTarget,V=$(this,B,!0).event(C),A=zt(C.view).on("mousemove.zoom",T,!0).on("mouseup.zoom",ee,!0),L=Xt(C,F),O=C.clientX,j=C.clientY;mp(C.view),ku(C),V.mouse=[L,this.__zoom.invert(L)],qs(this),V.start();function T(re){if(qi(re),!V.moved){var ue=re.clientX-O,de=re.clientY-j;V.moved=ue*ue+de*de>M}V.event(re).zoom("mouse",o(N(V.that.__zoom,V.mouse[0]=Xt(re,F),V.mouse[1]),V.extent,d))}function ee(re){A.on("mousemove.zoom mouseup.zoom",null),yp(re.view,V.moved),qi(re),V.event(re).end()}}function ne(C,...B){if(t.apply(this,arguments)){var F=this.__zoom,V=Xt(C.changedTouches?C.changedTouches[0]:C,this),A=F.invert(V),L=F.k*(C.shiftKey?.5:2),O=o(N(z(F,L),V,A),r.apply(this,B),d);qi(C),h>0?zt(this).transition().duration(h).call(b,O,V,C):zt(this).call(E.transform,O,V,C)}}function Z(C,...B){if(t.apply(this,arguments)){var F=C.touches,V=F.length,A=$(this,B,C.changedTouches.length===V).event(C),L,O,j,T;for(ku(C),O=0;O`Seems like you have not used ${t==="svelte"?"SvelteFlowProvider":"ReactFlowProvider"} as an ancestor. Help: https://${t}flow.dev/error#001`,error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:t=>`Node type "${t}" not found. Using fallback type "default".`,error004:()=>"The parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:t=>`The old edge with id=${t} does not exist.`,error009:t=>`Marker type "${t}" doesn't exist.`,error008:(t,{id:r,sourceHandle:o,targetHandle:l})=>`Couldn't create edge for ${t} handle id: "${t==="source"?o:l}", 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.",error016:t=>`Edge with id "${t}" does not exist, it may have been removed. This can happen when an edge is deleted before the "onEdgeClick" handler is called.`},so=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Lp=["Enter"," ","Escape"],Ap={"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:o})=>`Moved selected node ${t}. New position, x: ${r}, y: ${o}`,"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 ni;(function(t){t.Strict="strict",t.Loose="loose"})(ni||(ni={}));var gr;(function(t){t.Free="free",t.Vertical="vertical",t.Horizontal="horizontal"})(gr||(gr={}));var lo;(function(t){t.Partial="partial",t.Full="full"})(lo||(lo={}));const $p={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null};var Yn;(function(t){t.Bezier="default",t.Straight="straight",t.Step="step",t.SmoothStep="smoothstep",t.SimpleBezier="simplebezier"})(Yn||(Yn={}));var ol;(function(t){t.Arrow="arrow",t.ArrowClosed="arrowclosed"})(ol||(ol={}));var _e;(function(t){t.Left="left",t.Top="top",t.Right="right",t.Bottom="bottom"})(_e||(_e={}));const uh={[_e.Left]:_e.Right,[_e.Right]:_e.Left,[_e.Top]:_e.Bottom,[_e.Bottom]:_e.Top};function Dp(t){return t===null?null:t?"valid":"invalid"}const Op=t=>!!t&&typeof t=="object"&&"id"in t&&"source"in t&&"target"in t,kw=t=>!!t&&typeof t=="object"&&"id"in t&&"position"in t&&!("source"in t)&&!("target"in t),nc=t=>!!t&&typeof t=="object"&&"id"in t&&"internals"in t&&!("source"in t)&&!("target"in t),mo=(t,r=[0,0])=>{const{width:o,height:l}=Jt(t),a=t.origin??r,c=o*a[0],d=l*a[1];return{x:t.position.x-c,y:t.position.y-d}},Ew=(t,r={nodeOrigin:[0,0]})=>{if(t.length===0)return{x:0,y:0,width:0,height:0};let o=!1;const l=t.reduce((a,c)=>{const d=typeof c=="string";let h=!r.nodeLookup&&!d?c:void 0;return r.nodeLookup&&(h=d?r.nodeLookup.get(c):nc(c)?c:r.nodeLookup.get(c.id)),h?(o=!0,ml(a,sl(h,r.nodeOrigin))):a},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return o?yl(l):{x:0,y:0,width:0,height:0}},yo=(t,r={})=>{let o={x:1/0,y:1/0,x2:-1/0,y2:-1/0},l=!1;return t.forEach(a=>{(r.filter===void 0||r.filter(a))&&(o=ml(o,sl(a)),l=!0)}),l?yl(o):{x:0,y:0,width:0,height:0}},rc=(t,r,[o,l,a]=[0,0,1],c=!1,d=!1)=>{const h=(r.x-o)/a,p=(r.y-l)/a,y=r.width/a,m=r.height/a,v=[];for(const g of t.values()){const{measured:S,selectable:_=!0,hidden:M=!1}=g;if(d&&!_||M)continue;const k=S.width??g.width??g.initialWidth??0,E=S.height??g.height??g.initialHeight??0,{x:z,y:N}=g.internals.positionAbsolute,P=Vp(h,p,y,m,z,N,k,E),b=k*E,$=c&&P>0;(!g.internals.handleBounds||$||P>=b||g.dragging)&&v.push(g)}return v},Nw=(t,r)=>{const o=new Set;return t.forEach(l=>{o.add(l.id)}),r.filter(l=>o.has(l.source)||o.has(l.target))};function Cw(t,r){const o=new Map,l=r!=null&&r.nodes?new Set(r.nodes.map(a=>a.id)):null;return t.forEach(a=>{let c;if(r!=null&&r.includeHiddenNodes){const{width:d,height:h}=Jt(a);c=d>0&&h>0}else c=!!(a.measured.width&&a.measured.height&&!a.hidden);c&&(!l||l.has(a.id))&&o.set(a.id,a)}),o}async function jw({nodes:t,width:r,height:o,panZoom:l,minZoom:a,maxZoom:c},d){if(t.size===0)return!0;const h=Cw(t,d),p=yo(h),y=oc(p,r,o,(d==null?void 0:d.minZoom)??a,(d==null?void 0:d.maxZoom)??c,(d==null?void 0:d.padding)??.1);return await l.setViewport(y,{duration:d==null?void 0:d.duration,ease:d==null?void 0:d.ease,interpolate:d==null?void 0:d.interpolate}),!0}function bp({nodeId:t,nextPosition:r,nodeLookup:o,nodeOrigin:l=[0,0],nodeExtent:a,onError:c}){const d=o.get(t),h=d.parentId?o.get(d.parentId):void 0,{x:p,y}=h?h.internals.positionAbsolute:{x:0,y:0},m=d.origin??l;let v=d.extent||a;if(d.extent==="parent"&&!d.expandParent)if(!h)c==null||c("005",qt.error005());else{const{width:S,height:_}=Jt(h);S&&_&&(v=[[p,y],[p+S,y+_]])}else h&&xr(d.extent)&&(v=[[d.extent[0][0]+p,d.extent[0][1]+y],[d.extent[1][0]+p,d.extent[1][1]+y]]);const g=xr(v)?vr(r,v,d.measured):r;return(d.measured.width===void 0||d.measured.height===void 0)&&(c==null||c("015",qt.error015())),{position:{x:g.x-p+(d.measured.width??0)*m[0],y:g.y-y+(d.measured.height??0)*m[1]},positionAbsolute:g}}async function Mw({nodesToRemove:t=[],edgesToRemove:r=[],nodes:o,edges:l,onBeforeDelete:a}){const c=new Set(t.map(g=>g.id)),d=[];for(const g of o){if(g.deletable===!1)continue;const S=c.has(g.id),_=!S&&g.parentId&&d.find(M=>M.id===g.parentId);(S||_)&&d.push(g)}const h=new Set(r.map(g=>g.id)),p=l.filter(g=>g.deletable!==!1),m=Nw(d,p);for(const g of p)h.has(g.id)&&!m.find(_=>_.id===g.id)&&m.push(g);if(!a)return{edges:m,nodes:d};const v=await a({nodes:d,edges:m});return typeof v=="boolean"?v?{edges:m,nodes:d}:{edges:[],nodes:[]}:v}const ri=(t,r=0,o=1)=>Math.min(Math.max(t,r),o),vr=(t={x:0,y:0},r,o)=>({x:ri(t.x,r[0][0],r[1][0]-((o==null?void 0:o.width)??0)),y:ri(t.y,r[0][1],r[1][1]-((o==null?void 0:o.height)??0))});function Fp(t,r,o){const{width:l,height:a}=Jt(o),{x:c,y:d}=o.internals.positionAbsolute;return vr(t,[[c,d],[c+l,d+a]],r)}const ch=(t,r,o)=>to?-ri(Math.abs(t-o),1,r)/r:0,ic=(t,r,o=15,l=40)=>{const a=ch(t.x,l,r.width-l)*o,c=ch(t.y,l,r.height-l)*o;return[a,c]},ml=(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)}),Vu=({x:t,y:r,width:o,height:l})=>({x:t,y:r,x2:t+o,y2:r+l}),yl=({x:t,y:r,x2:o,y2:l})=>({x:t,y:r,width:o-t,height:l-r}),ao=(t,r=[0,0])=>{var a,c;const{x:o,y:l}=nc(t)?t.internals.positionAbsolute:mo(t,r);return{x:o,y:l,width:((a=t.measured)==null?void 0:a.width)??t.width??t.initialWidth??0,height:((c=t.measured)==null?void 0:c.height)??t.height??t.initialHeight??0}},sl=(t,r=[0,0])=>{var a,c;const{x:o,y:l}=nc(t)?t.internals.positionAbsolute:mo(t,r);return{x:o,y:l,x2:o+(((a=t.measured)==null?void 0:a.width)??t.width??t.initialWidth??0),y2:l+(((c=t.measured)==null?void 0:c.height)??t.height??t.initialHeight??0)}},Hp=(t,r)=>yl(ml(Vu(t),Vu(r))),Vp=(t,r,o,l,a,c,d,h)=>{const p=Math.max(0,Math.min(t+o,a+d)-Math.max(t,a)),y=Math.max(0,Math.min(r+l,c+h)-Math.max(r,c));return Math.ceil(p*y)},ll=(t,r)=>Vp(t.x,t.y,t.width,t.height,r.x,r.y,r.width,r.height),dh=t=>Kt(t.width)&&Kt(t.height)&&Kt(t.x)&&Kt(t.y),Kt=t=>!isNaN(t)&&isFinite(t),Bp=(t,r)=>(o,l)=>{},vo=(t,r=[1,1])=>({x:r[0]*Math.round(t.x/r[0]),y:r[1]*Math.round(t.y/r[1])}),xo=({x:t,y:r},[o,l,a],c=!1,d=[1,1])=>{const h={x:(t-o)/a,y:(r-l)/a};return c?vo(h,d):h},ii=({x:t,y:r},[o,l,a])=>({x:t*a+o,y:r*a+l});function Gr(t,r){if(typeof t=="number")return Math.floor((r-r/(1+t))*.5);if(typeof t=="string"&&t.endsWith("px")){const o=parseFloat(t);if(!Number.isNaN(o))return Math.floor(o)}if(typeof t=="string"&&t.endsWith("%")){const o=parseFloat(t);if(!Number.isNaN(o))return Math.floor(r*o*.01)}return console.error(`The padding value "${t}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function Pw(t,r,o){if(typeof t=="string"||typeof t=="number"){const l=Gr(t,o),a=Gr(t,r);return{top:l,right:a,bottom:l,left:a,x:a*2,y:l*2}}if(typeof t=="object"){const l=Gr(t.top??t.y??0,o),a=Gr(t.bottom??t.y??0,o),c=Gr(t.left??t.x??0,r),d=Gr(t.right??t.x??0,r);return{top:l,right:d,bottom:a,left:c,x:c+d,y:l+a}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function Iw(t,r,o,l,a,c){const{x:d,y:h}=ii(t,[r,o,l]),{x:p,y}=ii({x:t.x+t.width,y:t.y+t.height},[r,o,l]),m=a-p,v=c-y;return{left:Math.floor(d),top:Math.floor(h),right:Math.floor(m),bottom:Math.floor(v)}}const oc=(t,r,o,l,a,c)=>{const d=Pw(c,r,o),h=(r-d.x)/t.width,p=(o-d.y)/t.height,y=Math.min(h,p),m=ri(y,l,a),v=t.x+t.width/2,g=t.y+t.height/2,S=r/2-v*m,_=o/2-g*m,M=Iw(t,S,_,m,r,o),k={left:Math.min(M.left-d.left,0),top:Math.min(M.top-d.top,0),right:Math.min(M.right-d.right,0),bottom:Math.min(M.bottom-d.bottom,0)};return{x:S-k.left+k.right,y:_-k.top+k.bottom,zoom:m}},uo=()=>{var t;return typeof navigator<"u"&&((t=navigator==null?void 0:navigator.userAgent)==null?void 0:t.indexOf("Mac"))>=0};function xr(t){return t!=null&&t!=="parent"}function Jt(t){var r,o;return{width:((r=t.measured)==null?void 0:r.width)??t.width??t.initialWidth??0,height:((o=t.measured)==null?void 0:o.height)??t.height??t.initialHeight??0}}function Up(t){var r,o;return(((r=t.measured)==null?void 0:r.width)??t.width??t.initialWidth)!==void 0&&(((o=t.measured)==null?void 0:o.height)??t.height??t.initialHeight)!==void 0}function Wp(t,r={width:0,height:0},o,l,a){const c={...t},d=l.get(o);if(d){const h=d.origin||a;c.x+=d.internals.positionAbsolute.x-(r.width??0)*h[0],c.y+=d.internals.positionAbsolute.y-(r.height??0)*h[1]}return c}function fh(t,r){if(t.size!==r.size)return!1;for(const o of t)if(!r.has(o))return!1;return!0}function Tw(){let t,r;return{promise:new Promise((l,a)=>{t=l,r=a}),resolve:t,reject:r}}function zw(t){return{...Ap,...t||{}}}function to(t,{snapGrid:r=[0,0],snapToGrid:o=!1,transform:l,containerBounds:a}){const{x:c,y:d}=Gt(t),h=xo({x:c-((a==null?void 0:a.left)??0),y:d-((a==null?void 0:a.top)??0)},l),{x:p,y}=o?vo(h,r):h;return{xSnapped:p,ySnapped:y,...h}}const sc=t=>({width:t.offsetWidth,height:t.offsetHeight}),Yp=t=>{var r;return((r=t==null?void 0:t.getRootNode)==null?void 0:r.call(t))||(window==null?void 0:window.document)},Rw=["INPUT","SELECT","TEXTAREA"];function Xp(t){var l,a;const r=((a=(l=t.composedPath)==null?void 0:l.call(t))==null?void 0:a[0])||t.target;return(r==null?void 0:r.nodeType)!==1?!1:Rw.includes(r.nodeName)||r.hasAttribute("contenteditable")||!!r.closest(".nokey")}const Qp=t=>"clientX"in t,Gt=(t,r)=>{var c,d;const o=Qp(t),l=o?t.clientX:(c=t.touches)==null?void 0:c[0].clientX,a=o?t.clientY:(d=t.touches)==null?void 0:d[0].clientY;return{x:l-((r==null?void 0:r.left)??0),y:a-((r==null?void 0:r.top)??0)}},hh=(t,r,o,l,a)=>{const c=r.querySelectorAll(`.${t}`);return!c||!c.length?null:Array.from(c).map(d=>{const h=d.getBoundingClientRect();return{id:d.getAttribute("data-handleid"),type:t,nodeId:a,position:d.getAttribute("data-handlepos"),x:(h.left-o.left)/l,y:(h.top-o.top)/l,...sc(d)}})};function Kp({sourceX:t,sourceY:r,targetX:o,targetY:l,sourceControlX:a,sourceControlY:c,targetControlX:d,targetControlY:h}){const p=t*.125+a*.375+d*.375+o*.125,y=r*.125+c*.375+h*.375+l*.125,m=Math.abs(p-t),v=Math.abs(y-r);return[p,y,m,v]}function Bs(t,r){return t>=0?.5*t:r*25*Math.sqrt(-t)}function ph({pos:t,x1:r,y1:o,x2:l,y2:a,c}){switch(t){case _e.Left:return[r-Bs(r-l,c),o];case _e.Right:return[r+Bs(l-r,c),o];case _e.Top:return[r,o-Bs(o-a,c)];case _e.Bottom:return[r,o+Bs(a-o,c)]}}function Gp({sourceX:t,sourceY:r,sourcePosition:o=_e.Bottom,targetX:l,targetY:a,targetPosition:c=_e.Top,curvature:d=.25}){const[h,p]=ph({pos:o,x1:t,y1:r,x2:l,y2:a,c:d}),[y,m]=ph({pos:c,x1:l,y1:a,x2:t,y2:r,c:d}),[v,g,S,_]=Kp({sourceX:t,sourceY:r,targetX:l,targetY:a,sourceControlX:h,sourceControlY:p,targetControlX:y,targetControlY:m});return[`M${t},${r} C${h},${p} ${y},${m} ${l},${a}`,v,g,S,_]}function qp({sourceX:t,sourceY:r,targetX:o,targetY:l}){const a=Math.abs(o-t)/2,c=o0}const $w=({source:t,sourceHandle:r,target:o,targetHandle:l})=>`xy-edge__${t}${r||""}-${o}${l||""}`,Dw=(t,r)=>r.some(o=>o.source===t.source&&o.target===t.target&&(o.sourceHandle===t.sourceHandle||!o.sourceHandle&&!t.sourceHandle)&&(o.targetHandle===t.targetHandle||!o.targetHandle&&!t.targetHandle)),Ow=(t,r,o={})=>{var c;if(!t.source||!t.target)return(c=o.onError)==null||c.call(o,"006",qt.error006()),r;const l=o.getEdgeId||$w;let a;return Op(t)?a={...t}:a={...t,id:l(t)},Dw(a,r)?r:(a.sourceHandle===null&&delete a.sourceHandle,a.targetHandle===null&&delete a.targetHandle,r.concat(a))};function Zp({sourceX:t,sourceY:r,targetX:o,targetY:l}){const[a,c,d,h]=qp({sourceX:t,sourceY:r,targetX:o,targetY:l});return[`M ${t},${r}L ${o},${l}`,a,c,d,h]}const gh={[_e.Left]:{x:-1,y:0},[_e.Right]:{x:1,y:0},[_e.Top]:{x:0,y:-1},[_e.Bottom]:{x:0,y:1}},bw=({source:t,sourcePosition:r=_e.Bottom,target:o})=>r===_e.Left||r===_e.Right?t.xMath.sqrt(Math.pow(r.x-t.x,2)+Math.pow(r.y-t.y,2));function Fw({source:t,sourcePosition:r=_e.Bottom,target:o,targetPosition:l=_e.Top,center:a,offset:c,stepPosition:d}){const h=gh[r],p=gh[l],y={x:t.x+h.x*c,y:t.y+h.y*c},m={x:o.x+p.x*c,y:o.y+p.y*c},v=bw({source:y,sourcePosition:r,target:m}),g=v.x!==0?"x":"y",S=v[g];let _=[],M,k;const E={x:0,y:0},z={x:0,y:0},[,,N,P]=qp({sourceX:t.x,sourceY:t.y,targetX:o.x,targetY:o.y});if(h[g]*p[g]===-1){g==="x"?(M=a.x??y.x+(m.x-y.x)*d,k=a.y??(y.y+m.y)/2):(M=a.x??(y.x+m.x)/2,k=a.y??y.y+(m.y-y.y)*d);const X=[{x:M,y:y.y},{x:M,y:m.y}],K=[{x:y.x,y:k},{x:m.x,y:k}];h[g]===S?_=g==="x"?X:K:_=g==="x"?K:X}else{const X=[{x:y.x,y:m.y}],K=[{x:m.x,y:y.y}];if(g==="x"?_=h.x===S?K:X:_=h.y===S?X:K,r===l){const C=Math.abs(t[g]-o[g]);if(C<=c){const B=Math.min(c-1,c-C);h[g]===S?E[g]=(y[g]>t[g]?-1:1)*B:z[g]=(m[g]>o[g]?-1:1)*B}}if(r!==l){const C=g==="x"?"y":"x",B=h[g]===p[C],F=y[C]>m[C],V=y[C]=J?(M=(ne.x+Z.x)/2,k=_[0].y):(M=_[0].x,k=(ne.y+Z.y)/2)}const b={x:y.x+E.x,y:y.y+E.y},$={x:m.x+z.x,y:m.y+z.y};return[[t,...b.x!==_[0].x||b.y!==_[0].y?[b]:[],..._,...$.x!==_[_.length-1].x||$.y!==_[_.length-1].y?[$]:[],o],M,k,N,P]}function Hw(t,r,o,l){const a=Math.min(mh(t,r)/2,mh(r,o)/2,l),{x:c,y:d}=r;if(t.x===c&&c===o.x||t.y===d&&d===o.y)return`L${c} ${d}`;if(t.y===d){const y=t.xo.id===r):t[0])||null}function Uu(t,r){return t?typeof t=="string"?t:`${r?`${r}__`:""}${Object.keys(t).sort().map(l=>`${l}=${t[l]}`).join("&")}`:""}function Bw(t,{id:r,defaultColor:o,defaultMarkerStart:l,defaultMarkerEnd:a}){const c=new Set;return t.reduce((d,h)=>([h.markerStart||l,h.markerEnd||a].forEach(p=>{if(p&&typeof p=="object"){const y=Uu(p,r);c.has(y)||(d.push({id:y,color:p.color||o,...p}),c.add(y))}}),d),[]).sort((d,h)=>d.id.localeCompare(h.id))}const Jp=1e3,Uw=10,lc={nodeOrigin:[0,0],nodeExtent:so,elevateNodesOnSelect:!0,zIndexMode:"basic",defaults:{}},Ww={...lc,checkEquality:!0};function ac(t,r){const o={...t};for(const l in r)r[l]!==void 0&&(o[l]=r[l]);return o}function Yw(t,r,o){const l=ac(lc,o);for(const a of t.values())if(a.parentId)cc(a,t,r,l);else{const c=mo(a,l.nodeOrigin),d=xr(a.extent)?a.extent:l.nodeExtent,h=vr(c,d,Jt(a));a.internals.positionAbsolute=h}}function Xw(t,r){if(!t.handles)return t.measured?r==null?void 0:r.internals.handleBounds:void 0;const o=[],l=[];for(const a of t.handles){const c={id:a.id,width:a.width??1,height:a.height??1,nodeId:t.id,x:a.x,y:a.y,position:a.position,type:a.type};a.type==="source"?o.push(c):a.type==="target"&&l.push(c)}return{source:o,target:l}}function uc(t){return t==="manual"}function Wu(t,r,o,l={}){var m,v;const a=ac(Ww,l),c={i:0},d=new Map(r),h=a!=null&&a.elevateNodesOnSelect&&!uc(a.zIndexMode)?Jp:0;let p=t.length>0,y=!1;r.clear(),o.clear();for(const g of t){let S=d.get(g.id);if(a.checkEquality&&g===(S==null?void 0:S.internals.userNode))r.set(g.id,S);else{const _=mo(g,a.nodeOrigin),M=xr(g.extent)?g.extent:a.nodeExtent,k=vr(_,M,Jt(g));S={...a.defaults,...g,measured:{width:(m=g.measured)==null?void 0:m.width,height:(v=g.measured)==null?void 0:v.height},internals:{positionAbsolute:k,handleBounds:Xw(g,S),z:eg(g,h,a.zIndexMode),userNode:g}},r.set(g.id,S)}(S.measured===void 0||S.measured.width===void 0||S.measured.height===void 0)&&!S.hidden&&(p=!1),g.parentId&&cc(S,r,o,l,c),y||(y=g.selected??!1)}return{nodesInitialized:p,hasSelectedNodes:y}}function Qw(t,r){if(!t.parentId)return;const o=r.get(t.parentId);o?o.set(t.id,t):r.set(t.parentId,new Map([[t.id,t]]))}function cc(t,r,o,l,a){const{elevateNodesOnSelect:c,nodeOrigin:d,nodeExtent:h,zIndexMode:p}=ac(lc,l),y=t.parentId,m=r.get(y);if(!m){console.warn(`Parent node ${y} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}Qw(t,o),a&&!m.parentId&&m.internals.rootParentIndex===void 0&&p==="auto"&&(m.internals.rootParentIndex=++a.i,m.internals.z=m.internals.z+a.i*Uw),a&&m.internals.rootParentIndex!==void 0&&(a.i=m.internals.rootParentIndex);const v=c&&!uc(p)?Jp:0,{x:g,y:S,z:_}=Kw(t,m,d,h,v,p),{positionAbsolute:M}=t.internals,k=g!==M.x||S!==M.y;(k||_!==t.internals.z)&&r.set(t.id,{...t,internals:{...t.internals,positionAbsolute:k?{x:g,y:S}:M,z:_}})}function eg(t,r,o){const l=Kt(t.zIndex)?t.zIndex:0;return uc(o)?l:l+(t.selected?r:0)}function Kw(t,r,o,l,a,c){const{x:d,y:h}=r.internals.positionAbsolute,p=Jt(t),y=mo(t,o),m=xr(t.extent)?vr(y,t.extent,p):y;let v=vr({x:d+m.x,y:h+m.y},l,p);t.extent==="parent"&&(v=Fp(v,p,r));const g=eg(t,a,c),S=r.internals.z??0;return{x:v.x,y:v.y,z:S>=g?S+1:g}}function dc(t,r,o,l=[0,0]){var d;const a=[],c=new Map;for(const h of t){const p=r.get(h.parentId);if(!p)continue;const y=((d=c.get(h.parentId))==null?void 0:d.expandedRect)??ao(p),m=Hp(y,h.rect);c.set(h.parentId,{expandedRect:m,parent:p})}return c.size>0&&c.forEach(({expandedRect:h,parent:p},y)=>{var N;const m=p.internals.positionAbsolute,v=Jt(p),g=p.origin??l,S=h.x0||_>0||E||z)&&(a.push({id:y,type:"position",position:{x:p.position.x-S+E,y:p.position.y-_+z}}),(N=o.get(y))==null||N.forEach(P=>{t.some(b=>b.id===P.id)||a.push({id:P.id,type:"position",position:{x:P.position.x+S,y:P.position.y+_}})})),(v.width0){const S=dc(g,r,o,a);y.push(...S)}return{changes:y,updatedInternals:p}}async function qw({delta:t,panZoom:r,transform:o,translateExtent:l,width:a,height:c}){if(!r||!t.x&&!t.y)return!1;const d=await r.setViewportConstrained({x:o[0]+t.x,y:o[1]+t.y,zoom:o[2]},[[0,0],[a,c]],l);return!!d&&(d.x!==o[0]||d.y!==o[1]||d.k!==o[2])}function wh(t,r,o,l,a,c){let d=a;const h=l.get(d)||new Map;l.set(d,h.set(o,r)),d=`${a}-${t}`;const p=l.get(d)||new Map;if(l.set(d,p.set(o,r)),c){d=`${a}-${t}-${c}`;const y=l.get(d)||new Map;l.set(d,y.set(o,r))}}function tg(t,r,o){t.clear(),r.clear();for(const l of o){const{source:a,target:c,sourceHandle:d=null,targetHandle:h=null}=l,p={edgeId:l.id,source:a,target:c,sourceHandle:d,targetHandle:h},y=`${a}-${d}--${c}-${h}`,m=`${c}-${h}--${a}-${d}`;wh("source",p,m,t,a,d),wh("target",p,y,t,c,h),r.set(l.id,l)}}function ng(t,r){if(!t.parentId)return!1;const o=r.get(t.parentId);return o?o.selected?!0:ng(o,r):!1}function Sh(t,r,o){var a;let l=t;do{if((a=l==null?void 0:l.matches)!=null&&a.call(l,r))return!0;if(l===o)return!1;l=l==null?void 0:l.parentElement}while(l);return!1}function Zw(t,r,o,l){const a=new Map;for(const[c,d]of t)if((d.selected||d.id===l)&&(!d.parentId||!ng(d,t))&&(d.draggable||r&&typeof d.draggable>"u")){const h=t.get(c);h&&a.set(c,{id:c,position:h.position||{x:0,y:0},distance:{x:o.x-h.internals.positionAbsolute.x,y:o.y-h.internals.positionAbsolute.y},extent:h.extent,parentId:h.parentId,origin:h.origin,expandParent:h.expandParent,internals:{positionAbsolute:h.internals.positionAbsolute||{x:0,y:0}},measured:{width:h.measured.width??0,height:h.measured.height??0}})}return a}function Eu({nodeId:t,dragItems:r,nodeLookup:o,dragging:l=!0}){var d,h,p;const a=[];for(const[y,m]of r){const v=(d=o.get(y))==null?void 0:d.internals.userNode;v&&a.push({...v,position:m.position,dragging:l})}if(!t)return[a[0],a];const c=(h=o.get(t))==null?void 0:h.internals.userNode;return[c?{...c,position:((p=r.get(t))==null?void 0:p.position)||c.position,dragging:l}:a[0],a]}function Jw({dragItems:t,snapGrid:r,x:o,y:l}){const a=t.values().next().value;if(!a)return null;const c={x:o-a.distance.x,y:l-a.distance.y},d=vo(c,r);return{x:d.x-c.x,y:d.y-c.y}}function e1({onNodeMouseDown:t,getStoreItems:r,onDragStart:o,onDrag:l,onDragStop:a}){let c={x:null,y:null},d=0,h=new Map,p=!1,y={x:0,y:0},m=null,v=!1,g=null,S=!1,_=!1,M=null;function k({noDragClassName:z,handleSelector:N,domNode:P,isSelectable:b,nodeId:$,nodeClickDistance:H=0}){g=zt(P);function X({x:te,y:J}){const{nodeLookup:C,nodeExtent:B,snapGrid:F,snapToGrid:V,nodeOrigin:A,onNodeDrag:L,onSelectionDrag:O,onError:j,updateNodePositions:T}=r();c={x:te,y:J};let ee=!1;const re=h.size>1,ue=re&&B?Vu(yo(h)):null,de=re&&V?Jw({dragItems:h,snapGrid:F,x:te,y:J}):null;for(const[ce,Q]of h){if(!C.has(ce))continue;let se={x:te-Q.distance.x,y:J-Q.distance.y};V&&(se=de?{x:Math.round(se.x+de.x),y:Math.round(se.y+de.y)}:vo(se,F));let pe=null;if(re&&B&&!Q.extent&&ue){const{positionAbsolute:me}=Q.internals,Ce=me.x-ue.x+B[0][0],Me=me.x+Q.measured.width-ue.x2+B[1][0],Pe=me.y-ue.y+B[0][1],ze=me.y+Q.measured.height-ue.y2+B[1][1];pe=[[Ce,Pe],[Me,ze]]}const{position:Se,positionAbsolute:ve}=bp({nodeId:ce,nextPosition:se,nodeLookup:C,nodeExtent:pe||B,nodeOrigin:A,onError:j});ee=ee||Q.position.x!==Se.x||Q.position.y!==Se.y,Q.position=Se,Q.internals.positionAbsolute=ve}if(_=_||ee,!!ee&&(T(h,!0),M&&(l||L||!$&&O))){const[ce,Q]=Eu({nodeId:$,dragItems:h,nodeLookup:C});l==null||l(M,h,ce,Q),L==null||L(M,ce,Q),$||O==null||O(M,Q)}}async function K(){if(!m)return;const{transform:te,panBy:J,autoPanSpeed:C,autoPanOnNodeDrag:B}=r();if(!B){p=!1,cancelAnimationFrame(d);return}const[F,V]=ic(y,m,C);(F!==0||V!==0)&&(c.x=(c.x??0)-F/te[2],c.y=(c.y??0)-V/te[2],await J({x:F,y:V})&&X(c)),d=requestAnimationFrame(K)}function ne(te){var re;const{nodeLookup:J,multiSelectionActive:C,nodesDraggable:B,transform:F,snapGrid:V,snapToGrid:A,selectNodesOnDrag:L,onNodeDragStart:O,onSelectionDragStart:j,unselectNodesAndEdges:T}=r();v=!0,(!L||!b)&&!C&&$&&((re=J.get($))!=null&&re.selected||T()),b&&L&&$&&(t==null||t($));const ee=to(te.sourceEvent,{transform:F,snapGrid:V,snapToGrid:A,containerBounds:m});if(c=ee,h=Zw(J,B,ee,$),h.size>0&&(o||O||!$&&j)){const[ue,de]=Eu({nodeId:$,dragItems:h,nodeLookup:J});o==null||o(te.sourceEvent,h,ue,de),O==null||O(te.sourceEvent,ue,de),$||j==null||j(te.sourceEvent,de)}}const Z=vp().clickDistance(H).on("start",te=>{const{domNode:J,nodeDragThreshold:C,transform:B,snapGrid:F,snapToGrid:V}=r();m=(J==null?void 0:J.getBoundingClientRect())||null,S=!1,_=!1,M=te.sourceEvent,C===0&&ne(te),c=to(te.sourceEvent,{transform:B,snapGrid:F,snapToGrid:V,containerBounds:m}),y=Gt(te.sourceEvent,m)}).on("drag",te=>{const{autoPanOnNodeDrag:J,transform:C,snapGrid:B,snapToGrid:F,nodeDragThreshold:V,nodeLookup:A}=r(),L=to(te.sourceEvent,{transform:C,snapGrid:B,snapToGrid:F,containerBounds:m});if(M=te.sourceEvent,(te.sourceEvent.type==="touchmove"&&te.sourceEvent.touches.length>1||$&&!A.has($))&&(S=!0),!S){if(!p&&J&&v&&(p=!0,K()),!v){const O=Gt(te.sourceEvent,m),j=O.x-y.x,T=O.y-y.y;Math.sqrt(j*j+T*T)>V&&ne(te)}(c.x!==L.xSnapped||c.y!==L.ySnapped)&&h&&v&&(y=Gt(te.sourceEvent,m),X(L))}}).on("end",te=>{if(!v||S){S&&h.size>0&&r().updateNodePositions(h,!1);return}if(p=!1,v=!1,cancelAnimationFrame(d),h.size>0){const{nodeLookup:J,updateNodePositions:C,onNodeDragStop:B,onSelectionDragStop:F}=r();if(_&&(C(h,!1),_=!1),a||B||!$&&F){const[V,A]=Eu({nodeId:$,dragItems:h,nodeLookup:J,dragging:!1});a==null||a(te.sourceEvent,h,V,A),B==null||B(te.sourceEvent,V,A),$||F==null||F(te.sourceEvent,A)}}}).filter(te=>{const J=te.target;return!te.button&&(!z||!Sh(J,`.${z}`,P))&&(!N||Sh(J,N,P))});g.call(Z)}function E(){g==null||g.on(".drag",null)}return{update:k,destroy:E}}function t1(t,r,o){const l=[],a={x:t.x-o,y:t.y-o,width:o*2,height:o*2};for(const c of r.values())ll(a,ao(c))>0&&l.push(c);return l}const n1=250;function r1(t,r,o,l){var h,p;let a=[],c=1/0;const d=t1(t,o,r+n1);for(const y of d){const m=[...((h=y.internals.handleBounds)==null?void 0:h.source)??[],...((p=y.internals.handleBounds)==null?void 0:p.target)??[]];for(const v of m){if(l.nodeId===v.nodeId&&l.type===v.type&&l.id===v.id)continue;const{x:g,y:S}=wr(y,v,v.position,!0),_=Math.sqrt(Math.pow(g-t.x,2)+Math.pow(S-t.y,2));_>r||(_1){const y=l.type==="source"?"target":"source";return a.find(m=>m.type===y)??a[0]}return a[0]}function rg(t,r,o,l,a,c=!1){var y,m,v;const d=l.get(t);if(!d)return null;const h=a==="strict"?(y=d.internals.handleBounds)==null?void 0:y[r]:[...((m=d.internals.handleBounds)==null?void 0:m.source)??[],...((v=d.internals.handleBounds)==null?void 0:v.target)??[]],p=(o?h==null?void 0:h.find(g=>g.id===o):h==null?void 0:h[0])??null;return p&&c?{...p,...wr(d,p,p.position,!0)}:p}function ig(t,r){return t||(r!=null&&r.classList.contains("target")?"target":r!=null&&r.classList.contains("source")?"source":null)}function i1(t,r){let o=null;return r?o=!0:t&&!r&&(o=!1),o}const og=()=>!0;function o1(t,{connectionMode:r,connectionRadius:o,handleId:l,nodeId:a,edgeUpdaterType:c,isTarget:d,domNode:h,nodeLookup:p,lib:y,autoPanOnConnect:m,flowId:v,panBy:g,cancelConnection:S,onConnectStart:_,onConnect:M,onConnectEnd:k,isValidConnection:E=og,onReconnectEnd:z,updateConnection:N,getTransform:P,getFromHandle:b,autoPanSpeed:$,dragThreshold:H=1,handleDomNode:X}){const K=Yp(t.target);let ne=0,Z;const{x:te,y:J}=Gt(t),C=ig(c,X),B=h==null?void 0:h.getBoundingClientRect();let F=!1;if(!B||!C)return;const V=rg(a,C,l,p,r);if(!V)return;let A=Gt(t,B),L=!1,O=null,j=!1,T=null;function ee(){if(!m||!B)return;const[Se,ve]=ic(A,B,$);g({x:Se,y:ve}),ne=requestAnimationFrame(ee)}const re={...V,nodeId:a,type:C,position:V.position},ue=p.get(a);let ce={inProgress:!0,isValid:null,from:wr(ue,re,_e.Left,!0),fromHandle:re,fromPosition:re.position,fromNode:ue,to:A,toHandle:null,toPosition:uh[re.position],toNode:null,pointer:A};function Q(){F=!0,N(ce),_==null||_(t,{nodeId:a,handleId:l,handleType:C})}H===0&&Q();function se(Se){if(!F){const{x:ze,y:Ze}=Gt(Se),lt=ze-te,Je=Ze-J;if(!(lt*lt+Je*Je>H*H))return;Q()}if(!b()||!re){pe(Se);return}const ve=P();A=Gt(Se,B),Z=r1(xo(A,ve,!1,[1,1]),o,p,re),L||(ee(),L=!0);const me=sg(Se,{handle:Z,connectionMode:r,fromNodeId:a,fromHandleId:l,fromType:d?"target":"source",isValidConnection:E,doc:K,lib:y,flowId:v,nodeLookup:p});T=me.handleDomNode,O=me.connection,j=i1(!!Z,me.isValid);const Ce=p.get(a),Me=Ce?wr(Ce,re,_e.Left,!0):ce.from,Pe={...ce,from:Me,isValid:j,to:me.toHandle&&j?ii({x:me.toHandle.x,y:me.toHandle.y},ve):A,toHandle:me.toHandle,toPosition:j&&me.toHandle?me.toHandle.position:uh[re.position],toNode:me.toHandle?p.get(me.toHandle.nodeId):null,pointer:A};N(Pe),ce=Pe}function pe(Se){if(!("touches"in Se&&Se.touches.length>0)){if(F){(Z||T)&&O&&j&&(M==null||M(O));const{inProgress:ve,...me}=ce,Ce={...me,toPosition:ce.toHandle?ce.toPosition:null};k==null||k(Se,Ce),c&&(z==null||z(Se,Ce))}S(),cancelAnimationFrame(ne),L=!1,j=!1,O=null,T=null,K.removeEventListener("mousemove",se),K.removeEventListener("mouseup",pe),K.removeEventListener("touchmove",se),K.removeEventListener("touchend",pe)}}K.addEventListener("mousemove",se),K.addEventListener("mouseup",pe),K.addEventListener("touchmove",se),K.addEventListener("touchend",pe)}function sg(t,{handle:r,connectionMode:o,fromNodeId:l,fromHandleId:a,fromType:c,doc:d,lib:h,flowId:p,isValidConnection:y=og,nodeLookup:m}){const v=c==="target",g=r?d.querySelector(`.${h}-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:S,y:_}=Gt(t),M=d.elementFromPoint(S,_),k=M!=null&&M.classList.contains(`${h}-flow__handle`)?M:g,E={handleDomNode:k,isValid:!1,connection:null,toHandle:null};if(k){const z=ig(void 0,k),N=k.getAttribute("data-nodeid"),P=k.getAttribute("data-handleid"),b=k.classList.contains("connectable"),$=k.classList.contains("connectableend");if(!N||!z)return E;const H={source:v?N:l,sourceHandle:v?P:a,target:v?l:N,targetHandle:v?a:P};E.connection=H;const K=b&&$&&(o===ni.Strict?v&&z==="source"||!v&&z==="target":N!==l||P!==a);E.isValid=K&&y(H),E.toHandle=rg(N,z,P,m,o,!0)}return E}const Yu={onPointerDown:o1,isValid:sg};function s1({domNode:t,panZoom:r,getTransform:o,getViewScale:l}){const a=zt(t);function c({translateExtent:h,width:p,height:y,zoomStep:m=1,pannable:v=!0,zoomable:g=!0,inversePan:S=!1}){const _=N=>{if(N.sourceEvent.type!=="wheel"||!r)return;const P=o(),b=N.sourceEvent.ctrlKey&&uo()?10:1,$=-N.sourceEvent.deltaY*(N.sourceEvent.deltaMode===1?.05:N.sourceEvent.deltaMode?1:.002)*m,H=P[2]*Math.pow(2,$*b);r.scaleTo(H)};let M=[0,0];const k=N=>{(N.sourceEvent.type==="mousedown"||N.sourceEvent.type==="touchstart")&&(M=[N.sourceEvent.clientX??N.sourceEvent.touches[0].clientX,N.sourceEvent.clientY??N.sourceEvent.touches[0].clientY])},E=N=>{const P=o();if(N.sourceEvent.type!=="mousemove"&&N.sourceEvent.type!=="touchmove"||!r)return;const b=[N.sourceEvent.clientX??N.sourceEvent.touches[0].clientX,N.sourceEvent.clientY??N.sourceEvent.touches[0].clientY],$=[b[0]-M[0],b[1]-M[1]];M=b;const H=l()*Math.max(P[2],Math.log(P[2]))*(S?-1:1),X={x:P[0]-$[0]*H,y:P[1]-$[1]*H},K=[[0,0],[p,y]];r.setViewportConstrained({x:X.x,y:X.y,zoom:P[2]},K,h)},z=Rp().on("start",k).on("zoom",v?E:null).on("zoom.wheel",g?_:null);a.call(z,{})}function d(){a.on("zoom",null)}return{update:c,destroy:d,pointer:Xt}}const vl=t=>({x:t.x,y:t.y,zoom:t.k}),Nu=({x:t,y:r,zoom:o})=>gl.translate(t,r).scale(o),Wn=(t,r)=>t.target.closest(`.${r}`),lg=(t,r)=>r===2&&Array.isArray(t)&&t.includes(2),l1=t=>((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2,Cu=(t,r=0,o=l1,l=()=>{})=>{const a=typeof r=="number"&&r>0;return a||l(),a?t.transition().duration(r).ease(o).on("end",l):t},ag=t=>{const r=t.ctrlKey&&uo()?10:1;return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*r};function a1({zoomPanValues:t,noWheelClassName:r,d3Selection:o,d3Zoom:l,panOnScrollMode:a,panOnScrollSpeed:c,zoomOnPinch:d,onPanZoomStart:h,onPanZoom:p,onPanZoomEnd:y}){return m=>{if(Wn(m,r))return m.ctrlKey&&m.preventDefault(),!1;m.preventDefault(),m.stopImmediatePropagation();const v=o.property("__zoom").k||1;if(m.ctrlKey&&d){const k=Xt(m),E=ag(m),z=v*Math.pow(2,E);l.scaleTo(o,z,k,m);return}const g=m.deltaMode===1?20:1;let S=a===gr.Vertical?0:m.deltaX*g,_=a===gr.Horizontal?0:m.deltaY*g;!uo()&&m.shiftKey&&a!==gr.Vertical&&(S=m.deltaY*g,_=0),l.translateBy(o,-(S/v)*c,-(_/v)*c,{internal:!0});const M=vl(o.property("__zoom"));clearTimeout(t.panScrollTimeout),t.isPanScrolling?p==null||p(m,M):(t.isPanScrolling=!0,h==null||h(m,M)),t.panScrollTimeout=setTimeout(()=>{y==null||y(m,M),t.isPanScrolling=!1},150)}}function u1({noWheelClassName:t,preventScrolling:r,d3ZoomHandler:o}){return function(l,a){const c=l.type==="wheel",d=!r&&c&&!l.ctrlKey,h=Wn(l,t);if(l.ctrlKey&&c&&h&&l.preventDefault(),d||h)return null;l.preventDefault(),o.call(this,l,a)}}function c1({zoomPanValues:t,onDraggingChange:r,onPanZoomStart:o}){return l=>{var c,d,h;if((c=l.sourceEvent)!=null&&c.internal)return;const a=vl(l.transform);t.mouseButton=((d=l.sourceEvent)==null?void 0:d.button)||0,t.isZoomingOrPanning=!0,t.prevViewport=a,((h=l.sourceEvent)==null?void 0:h.type)==="mousedown"&&r(!0),o&&(o==null||o(l.sourceEvent,a))}}function d1({zoomPanValues:t,panOnDrag:r,onPaneContextMenu:o,onTransformChange:l,onPanZoom:a}){return c=>{var d,h;t.usedRightMouseButton=!!(o&&lg(r,t.mouseButton??0)),(d=c.sourceEvent)!=null&&d.sync||l([c.transform.x,c.transform.y,c.transform.k]),a&&!((h=c.sourceEvent)!=null&&h.internal)&&(a==null||a(c.sourceEvent,vl(c.transform)))}}function f1({zoomPanValues:t,panOnDrag:r,panOnScroll:o,onDraggingChange:l,onPanZoomEnd:a,onPaneContextMenu:c}){return d=>{var h;if(!((h=d.sourceEvent)!=null&&h.internal)&&(t.isZoomingOrPanning=!1,c&&lg(r,t.mouseButton??0)&&!t.usedRightMouseButton&&d.sourceEvent&&c(d.sourceEvent),t.usedRightMouseButton=!1,l(!1),a)){const p=vl(d.transform);t.prevViewport=p,clearTimeout(t.timerId),t.timerId=setTimeout(()=>{a==null||a(d.sourceEvent,p)},o?150:0)}}}function h1({panActivationKeyPressed:t,zoomActivationKeyPressed:r,zoomOnScroll:o,zoomOnPinch:l,panOnDrag:a,panOnScroll:c,zoomOnDoubleClick:d,userSelectionActive:h,noWheelClassName:p,noPanClassName:y,lib:m,connectionInProgress:v}){return g=>{var E;const S=r||o,_=l&&g.ctrlKey,M=g.type==="wheel";if(g.button===1&&g.type==="mousedown"&&(Wn(g,`${m}-flow__node`)||Wn(g,`${m}-flow__edge`)||Wn(g,`${m}-flow__selection`)||Wn(g,`${m}-flow__nodesselection`)))return!0;if(!a&&!S&&!c&&!d&&!l||h||v&&!M||Wn(g,p)&&M||Wn(g,y)&&(!M||c&&M&&!r)||!l&&g.ctrlKey&&M)return!1;if(!l&&g.type==="touchstart"&&((E=g.touches)==null?void 0:E.length)>1)return g.preventDefault(),!1;if(!S&&!c&&!_&&M||!a&&(g.type==="mousedown"||g.type==="touchstart")||Array.isArray(a)&&!a.includes(g.button)&&g.type==="mousedown")return!1;const k=Array.isArray(a)&&a.includes(g.button)||!g.button||g.button<=1;return(!g.ctrlKey||M||t)&&k}}function p1({domNode:t,minZoom:r,maxZoom:o,translateExtent:l,viewport:a,onPanZoom:c,onPanZoomStart:d,onPanZoomEnd:h,onDraggingChange:p}){const y={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},m=t.getBoundingClientRect();let v=[[0,0],[m.width,m.height]];const g=typeof ResizeObserver<"u"?new ResizeObserver(J=>{const C=J[0];C&&(v=[[0,0],[C.contentRect.width,C.contentRect.height]])}):null;g==null||g.observe(t);const S=Rp().extent(()=>v).scaleExtent([r,o]).translateExtent(l),_=zt(t).call(S);P({x:a.x,y:a.y,zoom:ri(a.zoom,r,o)},[[0,0],[m.width,m.height]],l);const M=_.on("wheel.zoom"),k=_.on("dblclick.zoom");S.wheelDelta(ag);async function E(J,C){return _?new Promise(B=>{S==null||S.interpolate((C==null?void 0:C.interpolate)==="linear"?eo:Qs).transform(Cu(_,C==null?void 0:C.duration,C==null?void 0:C.ease,()=>B(!0)),J)}):!1}function z({noWheelClassName:J,noPanClassName:C,onPaneContextMenu:B,userSelectionActive:F,panOnScroll:V,panOnDrag:A,panOnScrollMode:L,panOnScrollSpeed:O,preventScrolling:j,zoomOnPinch:T,zoomOnScroll:ee,zoomOnDoubleClick:re,panActivationKeyPressed:ue=!1,zoomActivationKeyPressed:de,lib:ce,onTransformChange:Q,connectionInProgress:se,paneClickDistance:pe,selectionOnDrag:Se}){F&&!y.isZoomingOrPanning&&N();const ve=V&&!de&&!F;S.clickDistance(Se?1/0:!Kt(pe)||pe<0?0:pe);const me=ve?a1({zoomPanValues:y,noWheelClassName:J,d3Selection:_,d3Zoom:S,panOnScrollMode:L,panOnScrollSpeed:O,zoomOnPinch:T,onPanZoomStart:d,onPanZoom:c,onPanZoomEnd:h}):u1({noWheelClassName:J,preventScrolling:j,d3ZoomHandler:M});_.on("wheel.zoom",me,{passive:!1});const Ce=c1({zoomPanValues:y,onDraggingChange:p,onPanZoomStart:d});S.on("start",Ce);const Me=d1({zoomPanValues:y,panOnDrag:A,onPaneContextMenu:!!B,onPanZoom:c,onTransformChange:Q});S.on("zoom",Me);const Pe=f1({zoomPanValues:y,panOnDrag:A,panOnScroll:V,onPaneContextMenu:B,onPanZoomEnd:h,onDraggingChange:p});S.on("end",Pe);const ze=h1({panActivationKeyPressed:ue,zoomActivationKeyPressed:de,panOnDrag:A,zoomOnScroll:ee,panOnScroll:V,zoomOnDoubleClick:re,zoomOnPinch:T,userSelectionActive:F,noPanClassName:C,noWheelClassName:J,lib:ce,connectionInProgress:se});S.filter(ze),re?_.on("dblclick.zoom",k):_.on("dblclick.zoom",null)}function N(){S.on("zoom",null)}async function P(J,C,B){const F=Nu(J),V=S==null?void 0:S.constrain()(F,C,B);return V&&await E(V),V}async function b(J,C){const B=Nu(J);return await E(B,C),B}function $(J){if(_){const C=Nu(J),B=_.property("__zoom");(B.k!==J.zoom||B.x!==J.x||B.y!==J.y)&&(S==null||S.transform(_,C,null,{sync:!0}))}}function H(){const J=_?zp(_.node()):{x:0,y:0,k:1};return{x:J.x,y:J.y,zoom:J.k}}async function X(J,C){return _?new Promise(B=>{S==null||S.interpolate((C==null?void 0:C.interpolate)==="linear"?eo:Qs).scaleTo(Cu(_,C==null?void 0:C.duration,C==null?void 0:C.ease,()=>B(!0)),J)}):!1}async function K(J,C){return _?new Promise(B=>{S==null||S.interpolate((C==null?void 0:C.interpolate)==="linear"?eo:Qs).scaleBy(Cu(_,C==null?void 0:C.duration,C==null?void 0:C.ease,()=>B(!0)),J)}):!1}function ne(J){S==null||S.scaleExtent(J)}function Z(J){S==null||S.translateExtent(J)}function te(J){const C=!Kt(J)||J<0?0:J;S==null||S.clickDistance(C)}return{update:z,destroy:N,setViewport:b,setViewportConstrained:P,getViewport:H,scaleTo:X,scaleBy:K,setScaleExtent:ne,setTranslateExtent:Z,syncViewport:$,setClickDistance:te}}var oi;(function(t){t.Line="line",t.Handle="handle"})(oi||(oi={}));function g1({width:t,prevWidth:r,height:o,prevHeight:l,affectsX:a,affectsY:c}){const d=t-r,h=o-l,p=[d>0?1:d<0?-1:0,h>0?1:h<0?-1:0];return d&&a&&(p[0]=p[0]*-1),h&&c&&(p[1]=p[1]*-1),p}function _h(t){const r=t.includes("right")||t.includes("left"),o=t.includes("bottom")||t.includes("top"),l=t.includes("left"),a=t.includes("top");return{isHorizontal:r,isVertical:o,affectsX:l,affectsY:a}}function Bn(t,r){return Math.max(0,r-t)}function Un(t,r){return Math.max(0,t-r)}function Us(t,r,o){return Math.max(0,r-t,t-o)}function kh(t,r){return t?!r:r}function m1(t,r,o,l,a,c,d,h){let{affectsX:p,affectsY:y}=r;const{isHorizontal:m,isVertical:v}=r,g=m&&v,{xSnapped:S,ySnapped:_}=o,{minWidth:M,maxWidth:k,minHeight:E,maxHeight:z}=l,{x:N,y:P,width:b,height:$,aspectRatio:H}=t;let X=Math.floor(m?S-t.pointerX:0),K=Math.floor(v?_-t.pointerY:0);const ne=b+(p?-X:X),Z=$+(y?-K:K),te=-c[0]*b,J=-c[1]*$;let C=Us(ne,M,k),B=Us(Z,E,z);if(d){let A=0,L=0;p&&X<0?A=Bn(N+X+te,d[0][0]):!p&&X>0&&(A=Un(N+ne+te,d[1][0])),y&&K<0?L=Bn(P+K+J,d[0][1]):!y&&K>0&&(L=Un(P+Z+J,d[1][1])),C=Math.max(C,A),B=Math.max(B,L)}if(h){let A=0,L=0;p&&X>0?A=Un(N+X,h[0][0]):!p&&X<0&&(A=Bn(N+ne,h[1][0])),y&&K>0?L=Un(P+K,h[0][1]):!y&&K<0&&(L=Bn(P+Z,h[1][1])),C=Math.max(C,A),B=Math.max(B,L)}if(a){if(m){const A=Us(ne/H,E,z)*H;if(C=Math.max(C,A),d){let L=0;!p&&!y||p&&!y&&g?L=Un(P+J+ne/H,d[1][1])*H:L=Bn(P+J+(p?X:-X)/H,d[0][1])*H,C=Math.max(C,L)}if(h){let L=0;!p&&!y||p&&!y&&g?L=Bn(P+ne/H,h[1][1])*H:L=Un(P+(p?X:-X)/H,h[0][1])*H,C=Math.max(C,L)}}if(v){const A=Us(Z*H,M,k)/H;if(B=Math.max(B,A),d){let L=0;!p&&!y||y&&!p&&g?L=Un(N+Z*H+te,d[1][0])/H:L=Bn(N+(y?K:-K)*H+te,d[0][0])/H,B=Math.max(B,L)}if(h){let L=0;!p&&!y||y&&!p&&g?L=Bn(N+Z*H,h[1][0])/H:L=Un(N+(y?K:-K)*H,h[0][0])/H,B=Math.max(B,L)}}}K=K+(K<0?B:-B),X=X+(X<0?C:-C),a&&(g?ne>Z*H?K=(kh(p,y)?-X:X)/H:X=(kh(p,y)?-K:K)*H:m?(K=X/H,y=p):(X=K*H,p=y));const F=p?N+X:N,V=y?P+K:P;return{width:b+(p?-X:X),height:$+(y?-K:K),x:c[0]*X*(p?-1:1)+F,y:c[1]*K*(y?-1:1)+V}}const ug={width:0,height:0,x:0,y:0},y1={...ug,pointerX:0,pointerY:0,aspectRatio:1};function v1(t,r,o){const l=r.position.x+t.position.x,a=r.position.y+t.position.y,c=t.measured.width??0,d=t.measured.height??0,h=o[0]*c,p=o[1]*d;return[[l-h,a-p],[l+c-h,a+d-p]]}function x1({domNode:t,nodeId:r,getStoreItems:o,onChange:l,onEnd:a}){const c=zt(t);let d={controlDirection:_h("bottom-right"),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function h({controlPosition:y,boundaries:m,keepAspectRatio:v,resizeDirection:g,onResizeStart:S,onResize:_,onResizeEnd:M,shouldResize:k}){let E={...ug},z={...y1};d={boundaries:m,resizeDirection:g,keepAspectRatio:v,controlDirection:_h(y)};let N,P=null,b=[],$,H,X,K=!1;const ne=vp().on("start",Z=>{const{nodeLookup:te,transform:J,snapGrid:C,snapToGrid:B,nodeOrigin:F,paneDomNode:V}=o();if(N=te.get(r),!N)return;P=(V==null?void 0:V.getBoundingClientRect())??null;const{xSnapped:A,ySnapped:L}=to(Z.sourceEvent,{transform:J,snapGrid:C,snapToGrid:B,containerBounds:P});E={width:N.measured.width??0,height:N.measured.height??0,x:N.position.x??0,y:N.position.y??0},z={...E,pointerX:A,pointerY:L,aspectRatio:E.width/E.height},$=void 0,H=xr(N.extent)?N.extent:void 0,N.parentId&&(N.extent==="parent"||N.expandParent)&&($=te.get(N.parentId)),$&&N.extent==="parent"&&(H=[[0,0],[$.measured.width,$.measured.height]]),b=[],X=void 0;for(const[O,j]of te)if(j.parentId===r&&(b.push({id:O,position:{...j.position},extent:j.extent}),j.extent==="parent"||j.expandParent)){const T=v1(j,N,j.origin??F);X?X=[[Math.min(T[0][0],X[0][0]),Math.min(T[0][1],X[0][1])],[Math.max(T[1][0],X[1][0]),Math.max(T[1][1],X[1][1])]]:X=T}S==null||S(Z,{...E})}).on("drag",Z=>{const{transform:te,snapGrid:J,snapToGrid:C,nodeOrigin:B}=o(),F=to(Z.sourceEvent,{transform:te,snapGrid:J,snapToGrid:C,containerBounds:P}),V=[];if(!N)return;const{x:A,y:L,width:O,height:j}=E,T={},ee=N.origin??B,{width:re,height:ue,x:de,y:ce}=m1(z,d.controlDirection,F,d.boundaries,d.keepAspectRatio,ee,H,X),Q=re!==O,se=ue!==j,pe=de!==A&&Q,Se=ce!==L&&se;if(!pe&&!Se&&!Q&&!se)return;if((pe||Se||ee[0]===1||ee[1]===1)&&(T.x=pe?de:E.x,T.y=Se?ce:E.y,E.x=T.x,E.y=T.y,b.length>0)){const Me=de-A,Pe=ce-L;for(const ze of b)ze.position={x:ze.position.x-Me+ee[0]*(re-O),y:ze.position.y-Pe+ee[1]*(ue-j)},V.push(ze)}if((Q||se)&&(T.width=Q&&(!d.resizeDirection||d.resizeDirection==="horizontal")?re:E.width,T.height=se&&(!d.resizeDirection||d.resizeDirection==="vertical")?ue:E.height,E.width=T.width,E.height=T.height),$&&N.expandParent){const Me=ee[0]*(T.width??0);T.x&&T.x{K&&(M==null||M(Z,{...E}),a==null||a({...E}),K=!1)});c.call(ne)}function p(){c.on(".drag",null)}return{update:h,destroy:p}}var ju={exports:{}},Mu={},Pu={exports:{}},Iu={};/** +`+f.stack}return{value:e,source:n,stack:u,digest:null}}function ba(e,n,i){return{value:e,source:null,stack:i??null,digest:n??null}}function Fa(e,n){try{console.error(n.value)}catch(i){setTimeout(function(){throw i})}}var r0=typeof WeakMap=="function"?WeakMap:Map;function Wd(e,n,i){i=mn(-1,i),i.tag=3,i.payload={element:null};var s=n.value;return i.callback=function(){ks||(ks=!0,tu=s),Fa(e,n)},i}function Yd(e,n,i){i=mn(-1,i),i.tag=3;var s=e.type.getDerivedStateFromError;if(typeof s=="function"){var u=n.value;i.payload=function(){return s(u)},i.callback=function(){Fa(e,n)}}var f=e.stateNode;return f!==null&&typeof f.componentDidCatch=="function"&&(i.callback=function(){Fa(e,n),typeof s!="function"&&(Dn===null?Dn=new Set([this]):Dn.add(this));var w=n.stack;this.componentDidCatch(n.value,{componentStack:w!==null?w:""})}),i}function Xd(e,n,i){var s=e.pingCache;if(s===null){s=e.pingCache=new r0;var u=new Set;s.set(n,u)}else u=s.get(n),u===void 0&&(u=new Set,s.set(n,u));u.has(i)||(u.add(i),e=y0.bind(null,e,n,i),n.then(e,e))}function Qd(e){do{var n;if((n=e.tag===13)&&(n=e.memoizedState,n=n!==null?n.dehydrated!==null:!0),n)return e;e=e.return}while(e!==null);return null}function Kd(e,n,i,s,u){return(e.mode&1)===0?(e===n?e.flags|=65536:(e.flags|=128,i.flags|=131072,i.flags&=-52805,i.tag===1&&(i.alternate===null?i.tag=17:(n=mn(-1,1),n.tag=2,An(i,n,1))),i.lanes|=1),e):(e.flags|=65536,e.lanes=u,e)}var i0=P.ReactCurrentOwner,yt=!1;function ht(e,n,i,s){n.child=e===null?gd(n,null,i,s):Hr(n,e.child,i,s)}function Gd(e,n,i,s,u){i=i.render;var f=n.ref;return Br(n,u),s=Ta(e,n,i,s,f,u),i=za(),e!==null&&!yt?(n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~u,yn(e,n,u)):(Fe&&i&&pa(n),n.flags|=1,ht(e,n,s,u),n.child)}function qd(e,n,i,s,u){if(e===null){var f=i.type;return typeof f=="function"&&!au(f)&&f.defaultProps===void 0&&i.compare===null&&i.defaultProps===void 0?(n.tag=15,n.type=f,Zd(e,n,f,s,u)):(e=Ps(i.type,null,s,n,n.mode,u),e.ref=n.ref,e.return=n,n.child=e)}if(f=e.child,(e.lanes&u)===0){var w=f.memoizedProps;if(i=i.compare,i=i!==null?i:Mi,i(w,s)&&e.ref===n.ref)return yn(e,n,u)}return n.flags|=1,e=Hn(f,s),e.ref=n.ref,e.return=n,n.child=e}function Zd(e,n,i,s,u){if(e!==null){var f=e.memoizedProps;if(Mi(f,s)&&e.ref===n.ref)if(yt=!1,n.pendingProps=s=f,(e.lanes&u)!==0)(e.flags&131072)!==0&&(yt=!0);else return n.lanes=e.lanes,yn(e,n,u)}return Ha(e,n,i,s,u)}function Jd(e,n,i){var s=n.pendingProps,u=s.children,f=e!==null?e.memoizedState:null;if(s.mode==="hidden")if((n.mode&1)===0)n.memoizedState={baseLanes:0,cachePool:null,transitions:null},$e(Xr,It),It|=i;else{if((i&1073741824)===0)return e=f!==null?f.baseLanes|i:i,n.lanes=n.childLanes=1073741824,n.memoizedState={baseLanes:e,cachePool:null,transitions:null},n.updateQueue=null,$e(Xr,It),It|=e,null;n.memoizedState={baseLanes:0,cachePool:null,transitions:null},s=f!==null?f.baseLanes:i,$e(Xr,It),It|=s}else f!==null?(s=f.baseLanes|i,n.memoizedState=null):s=i,$e(Xr,It),It|=s;return ht(e,n,u,i),n.child}function ef(e,n){var i=n.ref;(e===null&&i!==null||e!==null&&e.ref!==i)&&(n.flags|=512,n.flags|=2097152)}function Ha(e,n,i,s,u){var f=mt(i)?tr:at.current;return f=Dr(n,f),Br(n,u),i=Ta(e,n,i,s,f,u),s=za(),e!==null&&!yt?(n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~u,yn(e,n,u)):(Fe&&s&&pa(n),n.flags|=1,ht(e,n,i,u),n.child)}function tf(e,n,i,s,u){if(mt(i)){var f=!0;es(n)}else f=!1;if(Br(n,u),n.stateNode===null)vs(e,n),Bd(n,i,s),Oa(n,i,s,u),s=!0;else if(e===null){var w=n.stateNode,I=n.memoizedProps;w.props=I;var R=w.context,G=i.contextType;typeof G=="object"&&G!==null?G=Dt(G):(G=mt(i)?tr:at.current,G=Dr(n,G));var oe=i.getDerivedStateFromProps,le=typeof oe=="function"||typeof w.getSnapshotBeforeUpdate=="function";le||typeof w.UNSAFE_componentWillReceiveProps!="function"&&typeof w.componentWillReceiveProps!="function"||(I!==s||R!==G)&&Ud(n,w,s,G),Ln=!1;var ie=n.memoizedState;w.state=ie,us(n,s,w,u),R=n.memoizedState,I!==s||ie!==R||gt.current||Ln?(typeof oe=="function"&&(Da(n,i,oe,s),R=n.memoizedState),(I=Ln||Vd(n,i,I,s,ie,R,G))?(le||typeof w.UNSAFE_componentWillMount!="function"&&typeof w.componentWillMount!="function"||(typeof w.componentWillMount=="function"&&w.componentWillMount(),typeof w.UNSAFE_componentWillMount=="function"&&w.UNSAFE_componentWillMount()),typeof w.componentDidMount=="function"&&(n.flags|=4194308)):(typeof w.componentDidMount=="function"&&(n.flags|=4194308),n.memoizedProps=s,n.memoizedState=R),w.props=s,w.state=R,w.context=G,s=I):(typeof w.componentDidMount=="function"&&(n.flags|=4194308),s=!1)}else{w=n.stateNode,yd(e,n),I=n.memoizedProps,G=n.type===n.elementType?I:Bt(n.type,I),w.props=G,le=n.pendingProps,ie=w.context,R=i.contextType,typeof R=="object"&&R!==null?R=Dt(R):(R=mt(i)?tr:at.current,R=Dr(n,R));var fe=i.getDerivedStateFromProps;(oe=typeof fe=="function"||typeof w.getSnapshotBeforeUpdate=="function")||typeof w.UNSAFE_componentWillReceiveProps!="function"&&typeof w.componentWillReceiveProps!="function"||(I!==le||ie!==R)&&Ud(n,w,s,R),Ln=!1,ie=n.memoizedState,w.state=ie,us(n,s,w,u);var ge=n.memoizedState;I!==le||ie!==ge||gt.current||Ln?(typeof fe=="function"&&(Da(n,i,fe,s),ge=n.memoizedState),(G=Ln||Vd(n,i,G,s,ie,ge,R)||!1)?(oe||typeof w.UNSAFE_componentWillUpdate!="function"&&typeof w.componentWillUpdate!="function"||(typeof w.componentWillUpdate=="function"&&w.componentWillUpdate(s,ge,R),typeof w.UNSAFE_componentWillUpdate=="function"&&w.UNSAFE_componentWillUpdate(s,ge,R)),typeof w.componentDidUpdate=="function"&&(n.flags|=4),typeof w.getSnapshotBeforeUpdate=="function"&&(n.flags|=1024)):(typeof w.componentDidUpdate!="function"||I===e.memoizedProps&&ie===e.memoizedState||(n.flags|=4),typeof w.getSnapshotBeforeUpdate!="function"||I===e.memoizedProps&&ie===e.memoizedState||(n.flags|=1024),n.memoizedProps=s,n.memoizedState=ge),w.props=s,w.state=ge,w.context=R,s=G):(typeof w.componentDidUpdate!="function"||I===e.memoizedProps&&ie===e.memoizedState||(n.flags|=4),typeof w.getSnapshotBeforeUpdate!="function"||I===e.memoizedProps&&ie===e.memoizedState||(n.flags|=1024),s=!1)}return Va(e,n,i,s,f,u)}function Va(e,n,i,s,u,f){ef(e,n);var w=(n.flags&128)!==0;if(!s&&!w)return u&&sd(n,i,!1),yn(e,n,f);s=n.stateNode,i0.current=n;var I=w&&typeof i.getDerivedStateFromError!="function"?null:s.render();return n.flags|=1,e!==null&&w?(n.child=Hr(n,e.child,null,f),n.child=Hr(n,null,I,f)):ht(e,n,I,f),n.memoizedState=s.state,u&&sd(n,i,!0),n.child}function nf(e){var n=e.stateNode;n.pendingContext?id(e,n.pendingContext,n.pendingContext!==n.context):n.context&&id(e,n.context,!1),Na(e,n.containerInfo)}function rf(e,n,i,s,u){return Fr(),va(u),n.flags|=256,ht(e,n,i,s),n.child}var Ba={dehydrated:null,treeContext:null,retryLane:0};function Ua(e){return{baseLanes:e,cachePool:null,transitions:null}}function of(e,n,i){var s=n.pendingProps,u=Ve.current,f=!1,w=(n.flags&128)!==0,I;if((I=w)||(I=e!==null&&e.memoizedState===null?!1:(u&2)!==0),I?(f=!0,n.flags&=-129):(e===null||e.memoizedState!==null)&&(u|=1),$e(Ve,u&1),e===null)return ya(n),e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?((n.mode&1)===0?n.lanes=1:e.data==="$!"?n.lanes=8:n.lanes=1073741824,null):(w=s.children,e=s.fallback,f?(s=n.mode,f=n.child,w={mode:"hidden",children:w},(s&1)===0&&f!==null?(f.childLanes=0,f.pendingProps=w):f=Is(w,s,0,null),e=dr(e,s,i,null),f.return=n,e.return=n,f.sibling=e,n.child=f,n.child.memoizedState=Ua(i),n.memoizedState=Ba,e):Wa(n,w));if(u=e.memoizedState,u!==null&&(I=u.dehydrated,I!==null))return o0(e,n,w,s,I,u,i);if(f){f=s.fallback,w=n.mode,u=e.child,I=u.sibling;var R={mode:"hidden",children:s.children};return(w&1)===0&&n.child!==u?(s=n.child,s.childLanes=0,s.pendingProps=R,n.deletions=null):(s=Hn(u,R),s.subtreeFlags=u.subtreeFlags&14680064),I!==null?f=Hn(I,f):(f=dr(f,w,i,null),f.flags|=2),f.return=n,s.return=n,s.sibling=f,n.child=s,s=f,f=n.child,w=e.child.memoizedState,w=w===null?Ua(i):{baseLanes:w.baseLanes|i,cachePool:null,transitions:w.transitions},f.memoizedState=w,f.childLanes=e.childLanes&~i,n.memoizedState=Ba,s}return f=e.child,e=f.sibling,s=Hn(f,{mode:"visible",children:s.children}),(n.mode&1)===0&&(s.lanes=i),s.return=n,s.sibling=null,e!==null&&(i=n.deletions,i===null?(n.deletions=[e],n.flags|=16):i.push(e)),n.child=s,n.memoizedState=null,s}function Wa(e,n){return n=Is({mode:"visible",children:n},e.mode,0,null),n.return=e,e.child=n}function ys(e,n,i,s){return s!==null&&va(s),Hr(n,e.child,null,i),e=Wa(n,n.pendingProps.children),e.flags|=2,n.memoizedState=null,e}function o0(e,n,i,s,u,f,w){if(i)return n.flags&256?(n.flags&=-257,s=ba(Error(o(422))),ys(e,n,w,s)):n.memoizedState!==null?(n.child=e.child,n.flags|=128,null):(f=s.fallback,u=n.mode,s=Is({mode:"visible",children:s.children},u,0,null),f=dr(f,u,w,null),f.flags|=2,s.return=n,f.return=n,s.sibling=f,n.child=s,(n.mode&1)!==0&&Hr(n,e.child,null,w),n.child.memoizedState=Ua(w),n.memoizedState=Ba,f);if((n.mode&1)===0)return ys(e,n,w,null);if(u.data==="$!"){if(s=u.nextSibling&&u.nextSibling.dataset,s)var I=s.dgst;return s=I,f=Error(o(419)),s=ba(f,s,void 0),ys(e,n,w,s)}if(I=(w&e.childLanes)!==0,yt||I){if(s=nt,s!==null){switch(w&-w){case 4:u=2;break;case 16:u=8;break;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:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:u=32;break;case 536870912:u=268435456;break;default:u=0}u=(u&(s.suspendedLanes|w))!==0?0:u,u!==0&&u!==f.retryLane&&(f.retryLane=u,gn(e,u),Yt(s,e,u,-1))}return lu(),s=ba(Error(o(421))),ys(e,n,w,s)}return u.data==="$?"?(n.flags|=128,n.child=e.child,n=v0.bind(null,e),u._reactRetry=n,null):(e=f.treeContext,Pt=In(u.nextSibling),Mt=n,Fe=!0,Vt=null,e!==null&&(At[$t++]=hn,At[$t++]=pn,At[$t++]=nr,hn=e.id,pn=e.overflow,nr=n),n=Wa(n,s.children),n.flags|=4096,n)}function sf(e,n,i){e.lanes|=n;var s=e.alternate;s!==null&&(s.lanes|=n),_a(e.return,n,i)}function Ya(e,n,i,s,u){var f=e.memoizedState;f===null?e.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:s,tail:i,tailMode:u}:(f.isBackwards=n,f.rendering=null,f.renderingStartTime=0,f.last=s,f.tail=i,f.tailMode=u)}function lf(e,n,i){var s=n.pendingProps,u=s.revealOrder,f=s.tail;if(ht(e,n,s.children,i),s=Ve.current,(s&2)!==0)s=s&1|2,n.flags|=128;else{if(e!==null&&(e.flags&128)!==0)e:for(e=n.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&sf(e,i,n);else if(e.tag===19)sf(e,i,n);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===n)break e;for(;e.sibling===null;){if(e.return===null||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}s&=1}if($e(Ve,s),(n.mode&1)===0)n.memoizedState=null;else switch(u){case"forwards":for(i=n.child,u=null;i!==null;)e=i.alternate,e!==null&&cs(e)===null&&(u=i),i=i.sibling;i=u,i===null?(u=n.child,n.child=null):(u=i.sibling,i.sibling=null),Ya(n,!1,u,i,f);break;case"backwards":for(i=null,u=n.child,n.child=null;u!==null;){if(e=u.alternate,e!==null&&cs(e)===null){n.child=u;break}e=u.sibling,u.sibling=i,i=u,u=e}Ya(n,!0,i,null,f);break;case"together":Ya(n,!1,null,null,void 0);break;default:n.memoizedState=null}return n.child}function vs(e,n){(n.mode&1)===0&&e!==null&&(e.alternate=null,n.alternate=null,n.flags|=2)}function yn(e,n,i){if(e!==null&&(n.dependencies=e.dependencies),lr|=n.lanes,(i&n.childLanes)===0)return null;if(e!==null&&n.child!==e.child)throw Error(o(153));if(n.child!==null){for(e=n.child,i=Hn(e,e.pendingProps),n.child=i,i.return=n;e.sibling!==null;)e=e.sibling,i=i.sibling=Hn(e,e.pendingProps),i.return=n;i.sibling=null}return n.child}function s0(e,n,i){switch(n.tag){case 3:nf(n),Fr();break;case 5:wd(n);break;case 1:mt(n.type)&&es(n);break;case 4:Na(n,n.stateNode.containerInfo);break;case 10:var s=n.type._context,u=n.memoizedProps.value;$e(ss,s._currentValue),s._currentValue=u;break;case 13:if(s=n.memoizedState,s!==null)return s.dehydrated!==null?($e(Ve,Ve.current&1),n.flags|=128,null):(i&n.child.childLanes)!==0?of(e,n,i):($e(Ve,Ve.current&1),e=yn(e,n,i),e!==null?e.sibling:null);$e(Ve,Ve.current&1);break;case 19:if(s=(i&n.childLanes)!==0,(e.flags&128)!==0){if(s)return lf(e,n,i);n.flags|=128}if(u=n.memoizedState,u!==null&&(u.rendering=null,u.tail=null,u.lastEffect=null),$e(Ve,Ve.current),s)break;return null;case 22:case 23:return n.lanes=0,Jd(e,n,i)}return yn(e,n,i)}var af,Xa,uf,cf;af=function(e,n){for(var i=n.child;i!==null;){if(i.tag===5||i.tag===6)e.appendChild(i.stateNode);else if(i.tag!==4&&i.child!==null){i.child.return=i,i=i.child;continue}if(i===n)break;for(;i.sibling===null;){if(i.return===null||i.return===n)return;i=i.return}i.sibling.return=i.return,i=i.sibling}},Xa=function(){},uf=function(e,n,i,s){var u=e.memoizedProps;if(u!==s){e=n.stateNode,or(nn.current);var f=null;switch(i){case"input":u=Ce(e,u),s=Ce(e,s),f=[];break;case"select":u=O({},u,{value:void 0}),s=O({},s,{value:void 0}),f=[];break;case"textarea":u=Lt(e,u),s=Lt(e,s),f=[];break;default:typeof u.onClick!="function"&&typeof s.onClick=="function"&&(e.onclick=qo)}si(i,s);var w;i=null;for(G in u)if(!s.hasOwnProperty(G)&&u.hasOwnProperty(G)&&u[G]!=null)if(G==="style"){var I=u[G];for(w in I)I.hasOwnProperty(w)&&(i||(i={}),i[w]="")}else G!=="dangerouslySetInnerHTML"&&G!=="children"&&G!=="suppressContentEditableWarning"&&G!=="suppressHydrationWarning"&&G!=="autoFocus"&&(a.hasOwnProperty(G)?f||(f=[]):(f=f||[]).push(G,null));for(G in s){var R=s[G];if(I=u!=null?u[G]:void 0,s.hasOwnProperty(G)&&R!==I&&(R!=null||I!=null))if(G==="style")if(I){for(w in I)!I.hasOwnProperty(w)||R&&R.hasOwnProperty(w)||(i||(i={}),i[w]="");for(w in R)R.hasOwnProperty(w)&&I[w]!==R[w]&&(i||(i={}),i[w]=R[w])}else i||(f||(f=[]),f.push(G,i)),i=R;else G==="dangerouslySetInnerHTML"?(R=R?R.__html:void 0,I=I?I.__html:void 0,R!=null&&I!==R&&(f=f||[]).push(G,R)):G==="children"?typeof R!="string"&&typeof R!="number"||(f=f||[]).push(G,""+R):G!=="suppressContentEditableWarning"&&G!=="suppressHydrationWarning"&&(a.hasOwnProperty(G)?(R!=null&&G==="onScroll"&&De("scroll",e),f||I===R||(f=[])):(f=f||[]).push(G,R))}i&&(f=f||[]).push("style",i);var G=f;(n.updateQueue=G)&&(n.flags|=4)}},cf=function(e,n,i,s){i!==s&&(n.flags|=4)};function Bi(e,n){if(!Fe)switch(e.tailMode){case"hidden":n=e.tail;for(var i=null;n!==null;)n.alternate!==null&&(i=n),n=n.sibling;i===null?e.tail=null:i.sibling=null;break;case"collapsed":i=e.tail;for(var s=null;i!==null;)i.alternate!==null&&(s=i),i=i.sibling;s===null?n||e.tail===null?e.tail=null:e.tail.sibling=null:s.sibling=null}}function ct(e){var n=e.alternate!==null&&e.alternate.child===e.child,i=0,s=0;if(n)for(var u=e.child;u!==null;)i|=u.lanes|u.childLanes,s|=u.subtreeFlags&14680064,s|=u.flags&14680064,u.return=e,u=u.sibling;else for(u=e.child;u!==null;)i|=u.lanes|u.childLanes,s|=u.subtreeFlags,s|=u.flags,u.return=e,u=u.sibling;return e.subtreeFlags|=s,e.childLanes=i,n}function l0(e,n,i){var s=n.pendingProps;switch(ga(n),n.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ct(n),null;case 1:return mt(n.type)&&Jo(),ct(n),null;case 3:return s=n.stateNode,Ur(),Oe(gt),Oe(at),Ma(),s.pendingContext&&(s.context=s.pendingContext,s.pendingContext=null),(e===null||e.child===null)&&(is(n)?n.flags|=4:e===null||e.memoizedState.isDehydrated&&(n.flags&256)===0||(n.flags|=1024,Vt!==null&&(iu(Vt),Vt=null))),Xa(e,n),ct(n),null;case 5:Ca(n);var u=or(Oi.current);if(i=n.type,e!==null&&n.stateNode!=null)uf(e,n,i,s,u),e.ref!==n.ref&&(n.flags|=512,n.flags|=2097152);else{if(!s){if(n.stateNode===null)throw Error(o(166));return ct(n),null}if(e=or(nn.current),is(n)){s=n.stateNode,i=n.type;var f=n.memoizedProps;switch(s[tn]=n,s[Ri]=f,e=(n.mode&1)!==0,i){case"dialog":De("cancel",s),De("close",s);break;case"iframe":case"object":case"embed":De("load",s);break;case"video":case"audio":for(u=0;u<\/script>",e=e.removeChild(e.firstChild)):typeof s.is=="string"?e=w.createElement(i,{is:s.is}):(e=w.createElement(i),i==="select"&&(w=e,s.multiple?w.multiple=!0:s.size&&(w.size=s.size))):e=w.createElementNS(e,i),e[tn]=n,e[Ri]=s,af(e,n,!1,!1),n.stateNode=e;e:{switch(w=li(i,s),i){case"dialog":De("cancel",e),De("close",e),u=s;break;case"iframe":case"object":case"embed":De("load",e),u=s;break;case"video":case"audio":for(u=0;uQr&&(n.flags|=128,s=!0,Bi(f,!1),n.lanes=4194304)}else{if(!s)if(e=cs(w),e!==null){if(n.flags|=128,s=!0,i=e.updateQueue,i!==null&&(n.updateQueue=i,n.flags|=4),Bi(f,!0),f.tail===null&&f.tailMode==="hidden"&&!w.alternate&&!Fe)return ct(n),null}else 2*He()-f.renderingStartTime>Qr&&i!==1073741824&&(n.flags|=128,s=!0,Bi(f,!1),n.lanes=4194304);f.isBackwards?(w.sibling=n.child,n.child=w):(i=f.last,i!==null?i.sibling=w:n.child=w,f.last=w)}return f.tail!==null?(n=f.tail,f.rendering=n,f.tail=n.sibling,f.renderingStartTime=He(),n.sibling=null,i=Ve.current,$e(Ve,s?i&1|2:i&1),n):(ct(n),null);case 22:case 23:return su(),s=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==s&&(n.flags|=8192),s&&(n.mode&1)!==0?(It&1073741824)!==0&&(ct(n),n.subtreeFlags&6&&(n.flags|=8192)):ct(n),null;case 24:return null;case 25:return null}throw Error(o(156,n.tag))}function a0(e,n){switch(ga(n),n.tag){case 1:return mt(n.type)&&Jo(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return Ur(),Oe(gt),Oe(at),Ma(),e=n.flags,(e&65536)!==0&&(e&128)===0?(n.flags=e&-65537|128,n):null;case 5:return Ca(n),null;case 13:if(Oe(Ve),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(o(340));Fr()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return Oe(Ve),null;case 4:return Ur(),null;case 10:return Sa(n.type._context),null;case 22:case 23:return su(),null;case 24:return null;default:return null}}var xs=!1,dt=!1,u0=typeof WeakSet=="function"?WeakSet:Set,he=null;function Yr(e,n){var i=e.ref;if(i!==null)if(typeof i=="function")try{i(null)}catch(s){We(e,n,s)}else i.current=null}function Qa(e,n,i){try{i()}catch(s){We(e,n,s)}}var df=!1;function c0(e,n){if(sa=bo,e=Vc(),Zl(e)){if("selectionStart"in e)var i={start:e.selectionStart,end:e.selectionEnd};else e:{i=(i=e.ownerDocument)&&i.defaultView||window;var s=i.getSelection&&i.getSelection();if(s&&s.rangeCount!==0){i=s.anchorNode;var u=s.anchorOffset,f=s.focusNode;s=s.focusOffset;try{i.nodeType,f.nodeType}catch{i=null;break e}var w=0,I=-1,R=-1,G=0,oe=0,le=e,ie=null;t:for(;;){for(var fe;le!==i||u!==0&&le.nodeType!==3||(I=w+u),le!==f||s!==0&&le.nodeType!==3||(R=w+s),le.nodeType===3&&(w+=le.nodeValue.length),(fe=le.firstChild)!==null;)ie=le,le=fe;for(;;){if(le===e)break t;if(ie===i&&++G===u&&(I=w),ie===f&&++oe===s&&(R=w),(fe=le.nextSibling)!==null)break;le=ie,ie=le.parentNode}le=fe}i=I===-1||R===-1?null:{start:I,end:R}}else i=null}i=i||{start:0,end:0}}else i=null;for(la={focusedElem:e,selectionRange:i},bo=!1,he=n;he!==null;)if(n=he,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,he=e;else for(;he!==null;){n=he;try{var ge=n.alternate;if((n.flags&1024)!==0)switch(n.tag){case 0:case 11:case 15:break;case 1:if(ge!==null){var ye=ge.memoizedProps,Ye=ge.memoizedState,U=n.stateNode,D=U.getSnapshotBeforeUpdate(n.elementType===n.type?ye:Bt(n.type,ye),Ye);U.__reactInternalSnapshotBeforeUpdate=D}break;case 3:var Y=n.stateNode.containerInfo;Y.nodeType===1?Y.textContent="":Y.nodeType===9&&Y.documentElement&&Y.removeChild(Y.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(o(163))}}catch(ae){We(n,n.return,ae)}if(e=n.sibling,e!==null){e.return=n.return,he=e;break}he=n.return}return ge=df,df=!1,ge}function Ui(e,n,i){var s=n.updateQueue;if(s=s!==null?s.lastEffect:null,s!==null){var u=s=s.next;do{if((u.tag&e)===e){var f=u.destroy;u.destroy=void 0,f!==void 0&&Qa(n,i,f)}u=u.next}while(u!==s)}}function ws(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var i=n=n.next;do{if((i.tag&e)===e){var s=i.create;i.destroy=s()}i=i.next}while(i!==n)}}function Ka(e){var n=e.ref;if(n!==null){var i=e.stateNode;switch(e.tag){case 5:e=i;break;default:e=i}typeof n=="function"?n(e):n.current=e}}function ff(e){var n=e.alternate;n!==null&&(e.alternate=null,ff(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[tn],delete n[Ri],delete n[da],delete n[Ym],delete n[Xm])),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 hf(e){return e.tag===5||e.tag===3||e.tag===4}function pf(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||hf(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 Ga(e,n,i){var s=e.tag;if(s===5||s===6)e=e.stateNode,n?i.nodeType===8?i.parentNode.insertBefore(e,n):i.insertBefore(e,n):(i.nodeType===8?(n=i.parentNode,n.insertBefore(e,i)):(n=i,n.appendChild(e)),i=i._reactRootContainer,i!=null||n.onclick!==null||(n.onclick=qo));else if(s!==4&&(e=e.child,e!==null))for(Ga(e,n,i),e=e.sibling;e!==null;)Ga(e,n,i),e=e.sibling}function qa(e,n,i){var s=e.tag;if(s===5||s===6)e=e.stateNode,n?i.insertBefore(e,n):i.appendChild(e);else if(s!==4&&(e=e.child,e!==null))for(qa(e,n,i),e=e.sibling;e!==null;)qa(e,n,i),e=e.sibling}var ot=null,Ut=!1;function $n(e,n,i){for(i=i.child;i!==null;)gf(e,n,i),i=i.sibling}function gf(e,n,i){if(Nt&&typeof Nt.onCommitFiberUnmount=="function")try{Nt.onCommitFiberUnmount(Er,i)}catch{}switch(i.tag){case 5:dt||Yr(i,n);case 6:var s=ot,u=Ut;ot=null,$n(e,n,i),ot=s,Ut=u,ot!==null&&(Ut?(e=ot,i=i.stateNode,e.nodeType===8?e.parentNode.removeChild(i):e.removeChild(i)):ot.removeChild(i.stateNode));break;case 18:ot!==null&&(Ut?(e=ot,i=i.stateNode,e.nodeType===8?ca(e.parentNode,i):e.nodeType===1&&ca(e,i),_i(e)):ca(ot,i.stateNode));break;case 4:s=ot,u=Ut,ot=i.stateNode.containerInfo,Ut=!0,$n(e,n,i),ot=s,Ut=u;break;case 0:case 11:case 14:case 15:if(!dt&&(s=i.updateQueue,s!==null&&(s=s.lastEffect,s!==null))){u=s=s.next;do{var f=u,w=f.destroy;f=f.tag,w!==void 0&&((f&2)!==0||(f&4)!==0)&&Qa(i,n,w),u=u.next}while(u!==s)}$n(e,n,i);break;case 1:if(!dt&&(Yr(i,n),s=i.stateNode,typeof s.componentWillUnmount=="function"))try{s.props=i.memoizedProps,s.state=i.memoizedState,s.componentWillUnmount()}catch(I){We(i,n,I)}$n(e,n,i);break;case 21:$n(e,n,i);break;case 22:i.mode&1?(dt=(s=dt)||i.memoizedState!==null,$n(e,n,i),dt=s):$n(e,n,i);break;default:$n(e,n,i)}}function mf(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var i=e.stateNode;i===null&&(i=e.stateNode=new u0),n.forEach(function(s){var u=x0.bind(null,e,s);i.has(s)||(i.add(s),s.then(u,u))})}}function Wt(e,n){var i=n.deletions;if(i!==null)for(var s=0;su&&(u=w),s&=~f}if(s=u,s=He()-s,s=(120>s?120:480>s?480:1080>s?1080:1920>s?1920:3e3>s?3e3:4320>s?4320:1960*f0(s/1960))-s,10e?16:e,On===null)var s=!1;else{if(e=On,On=null,Ns=0,(Ie&6)!==0)throw Error(o(331));var u=Ie;for(Ie|=4,he=e.current;he!==null;){var f=he,w=f.child;if((he.flags&16)!==0){var I=f.deletions;if(I!==null){for(var R=0;RHe()-eu?ur(e,0):Ja|=i),xt(e,n)}function Pf(e,n){n===0&&((e.mode&1)===0?n=1:(n=Cr,Cr<<=1,(Cr&130023424)===0&&(Cr=4194304)));var i=pt();e=gn(e,n),e!==null&&(Jn(e,n,i),xt(e,i))}function v0(e){var n=e.memoizedState,i=0;n!==null&&(i=n.retryLane),Pf(e,i)}function x0(e,n){var i=0;switch(e.tag){case 13:var s=e.stateNode,u=e.memoizedState;u!==null&&(i=u.retryLane);break;case 19:s=e.stateNode;break;default:throw Error(o(314))}s!==null&&s.delete(n),Pf(e,i)}var If;If=function(e,n,i){if(e!==null)if(e.memoizedProps!==n.pendingProps||gt.current)yt=!0;else{if((e.lanes&i)===0&&(n.flags&128)===0)return yt=!1,s0(e,n,i);yt=(e.flags&131072)!==0}else yt=!1,Fe&&(n.flags&1048576)!==0&&ad(n,rs,n.index);switch(n.lanes=0,n.tag){case 2:var s=n.type;vs(e,n),e=n.pendingProps;var u=Dr(n,at.current);Br(n,i),u=Ta(null,n,s,e,u,i);var f=za();return n.flags|=1,typeof u=="object"&&u!==null&&typeof u.render=="function"&&u.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,mt(s)?(f=!0,es(n)):f=!1,n.memoizedState=u.state!==null&&u.state!==void 0?u.state:null,Ea(n),u.updater=ms,n.stateNode=u,u._reactInternals=n,Oa(n,s,e,i),n=Va(null,n,s,!0,f,i)):(n.tag=0,Fe&&f&&pa(n),ht(null,n,u,i),n=n.child),n;case 16:s=n.elementType;e:{switch(vs(e,n),e=n.pendingProps,u=s._init,s=u(s._payload),n.type=s,u=n.tag=S0(s),e=Bt(s,e),u){case 0:n=Ha(null,n,s,e,i);break e;case 1:n=tf(null,n,s,e,i);break e;case 11:n=Gd(null,n,s,e,i);break e;case 14:n=qd(null,n,s,Bt(s.type,e),i);break e}throw Error(o(306,s,""))}return n;case 0:return s=n.type,u=n.pendingProps,u=n.elementType===s?u:Bt(s,u),Ha(e,n,s,u,i);case 1:return s=n.type,u=n.pendingProps,u=n.elementType===s?u:Bt(s,u),tf(e,n,s,u,i);case 3:e:{if(nf(n),e===null)throw Error(o(387));s=n.pendingProps,f=n.memoizedState,u=f.element,yd(e,n),us(n,s,null,i);var w=n.memoizedState;if(s=w.element,f.isDehydrated)if(f={element:s,isDehydrated:!1,cache:w.cache,pendingSuspenseBoundaries:w.pendingSuspenseBoundaries,transitions:w.transitions},n.updateQueue.baseState=f,n.memoizedState=f,n.flags&256){u=Wr(Error(o(423)),n),n=rf(e,n,s,i,u);break e}else if(s!==u){u=Wr(Error(o(424)),n),n=rf(e,n,s,i,u);break e}else for(Pt=In(n.stateNode.containerInfo.firstChild),Mt=n,Fe=!0,Vt=null,i=gd(n,null,s,i),n.child=i;i;)i.flags=i.flags&-3|4096,i=i.sibling;else{if(Fr(),s===u){n=yn(e,n,i);break e}ht(e,n,s,i)}n=n.child}return n;case 5:return wd(n),e===null&&ya(n),s=n.type,u=n.pendingProps,f=e!==null?e.memoizedProps:null,w=u.children,aa(s,u)?w=null:f!==null&&aa(s,f)&&(n.flags|=32),ef(e,n),ht(e,n,w,i),n.child;case 6:return e===null&&ya(n),null;case 13:return of(e,n,i);case 4:return Na(n,n.stateNode.containerInfo),s=n.pendingProps,e===null?n.child=Hr(n,null,s,i):ht(e,n,s,i),n.child;case 11:return s=n.type,u=n.pendingProps,u=n.elementType===s?u:Bt(s,u),Gd(e,n,s,u,i);case 7:return ht(e,n,n.pendingProps,i),n.child;case 8:return ht(e,n,n.pendingProps.children,i),n.child;case 12:return ht(e,n,n.pendingProps.children,i),n.child;case 10:e:{if(s=n.type._context,u=n.pendingProps,f=n.memoizedProps,w=u.value,$e(ss,s._currentValue),s._currentValue=w,f!==null)if(Ht(f.value,w)){if(f.children===u.children&&!gt.current){n=yn(e,n,i);break e}}else for(f=n.child,f!==null&&(f.return=n);f!==null;){var I=f.dependencies;if(I!==null){w=f.child;for(var R=I.firstContext;R!==null;){if(R.context===s){if(f.tag===1){R=mn(-1,i&-i),R.tag=2;var G=f.updateQueue;if(G!==null){G=G.shared;var oe=G.pending;oe===null?R.next=R:(R.next=oe.next,oe.next=R),G.pending=R}}f.lanes|=i,R=f.alternate,R!==null&&(R.lanes|=i),_a(f.return,i,n),I.lanes|=i;break}R=R.next}}else if(f.tag===10)w=f.type===n.type?null:f.child;else if(f.tag===18){if(w=f.return,w===null)throw Error(o(341));w.lanes|=i,I=w.alternate,I!==null&&(I.lanes|=i),_a(w,i,n),w=f.sibling}else w=f.child;if(w!==null)w.return=f;else for(w=f;w!==null;){if(w===n){w=null;break}if(f=w.sibling,f!==null){f.return=w.return,w=f;break}w=w.return}f=w}ht(e,n,u.children,i),n=n.child}return n;case 9:return u=n.type,s=n.pendingProps.children,Br(n,i),u=Dt(u),s=s(u),n.flags|=1,ht(e,n,s,i),n.child;case 14:return s=n.type,u=Bt(s,n.pendingProps),u=Bt(s.type,u),qd(e,n,s,u,i);case 15:return Zd(e,n,n.type,n.pendingProps,i);case 17:return s=n.type,u=n.pendingProps,u=n.elementType===s?u:Bt(s,u),vs(e,n),n.tag=1,mt(s)?(e=!0,es(n)):e=!1,Br(n,i),Bd(n,s,u),Oa(n,s,u,i),Va(null,n,s,!0,e,i);case 19:return lf(e,n,i);case 22:return Jd(e,n,i)}throw Error(o(156,n.tag))};function Tf(e,n){return Io(e,n)}function w0(e,n,i,s){this.tag=e,this.key=i,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=s,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ft(e,n,i,s){return new w0(e,n,i,s)}function au(e){return e=e.prototype,!(!e||!e.isReactComponent)}function S0(e){if(typeof e=="function")return au(e)?1:0;if(e!=null){if(e=e.$$typeof,e===te)return 11;if(e===B)return 14}return 2}function Hn(e,n){var i=e.alternate;return i===null?(i=Ft(e.tag,n,e.key,e.mode),i.elementType=e.elementType,i.type=e.type,i.stateNode=e.stateNode,i.alternate=e,e.alternate=i):(i.pendingProps=n,i.type=e.type,i.flags=0,i.subtreeFlags=0,i.deletions=null),i.flags=e.flags&14680064,i.childLanes=e.childLanes,i.lanes=e.lanes,i.child=e.child,i.memoizedProps=e.memoizedProps,i.memoizedState=e.memoizedState,i.updateQueue=e.updateQueue,n=e.dependencies,i.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},i.sibling=e.sibling,i.index=e.index,i.ref=e.ref,i}function Ps(e,n,i,s,u,f){var w=2;if(s=e,typeof e=="function")au(e)&&(w=1);else if(typeof e=="string")w=5;else e:switch(e){case H:return dr(i.children,u,f,n);case X:w=8,u|=8;break;case K:return e=Ft(12,i,n,u|2),e.elementType=K,e.lanes=f,e;case J:return e=Ft(13,i,n,u),e.elementType=J,e.lanes=f,e;case C:return e=Ft(19,i,n,u),e.elementType=C,e.lanes=f,e;case V:return Is(i,u,f,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ne:w=10;break e;case Z:w=9;break e;case te:w=11;break e;case B:w=14;break e;case F:w=16,s=null;break e}throw Error(o(130,e==null?e:typeof e,""))}return n=Ft(w,i,n,u),n.elementType=e,n.type=s,n.lanes=f,n}function dr(e,n,i,s){return e=Ft(7,e,s,n),e.lanes=i,e}function Is(e,n,i,s){return e=Ft(22,e,s,n),e.elementType=V,e.lanes=i,e.stateNode={isHidden:!1},e}function uu(e,n,i){return e=Ft(6,e,null,n),e.lanes=i,e}function cu(e,n,i){return n=Ft(4,e.children!==null?e.children:[],e.key,n),n.lanes=i,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function _0(e,n,i,s,u){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=Zn(0),this.expirationTimes=Zn(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Zn(0),this.identifierPrefix=s,this.onRecoverableError=u,this.mutableSourceEagerHydrationData=null}function du(e,n,i,s,u,f,w,I,R){return e=new _0(e,n,i,I,R),n===1?(n=1,f===!0&&(n|=8)):n=0,f=Ft(3,null,null,n),e.current=f,f.stateNode=e,f.memoizedState={element:s,isDehydrated:i,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ea(f),e}function k0(e,n,i){var s=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(r){console.error(r)}}return t(),yu.exports=A0(),yu.exports}var Wf;function $0(){if(Wf)return Ds;Wf=1;var t=op();return Ds.createRoot=t.createRoot,Ds.hydrateRoot=t.hydrateRoot,Ds}var D0=$0();async function Tt(t,r){const o=await fetch(t,{...r,headers:{"Content-Type":"application/json",...(r==null?void 0:r.headers)||{}}});if(!o.ok){const l=await o.text();throw new Error(l||o.statusText)}return o.json()}const St={health:()=>Tt("/api/health"),settings:()=>Tt("/api/settings"),saveSettings:t=>Tt("/api/settings",{method:"PUT",body:JSON.stringify(t)}),repos:()=>Tt("/api/repos"),index:(t,r=!0)=>Tt("/api/index",{method:"POST",body:JSON.stringify({repo_path:t,incremental:r})}),indexStatus:t=>Tt(`/api/index?repo_path=${encodeURIComponent(t)}`),architecture:t=>Tt(`/api/architecture?repo_path=${encodeURIComponent(t)}`),review:(t,r,o,l=!0)=>Tt("/api/review",{method:"POST",body:JSON.stringify({repo_path:t,base:r,head:o||null,reindex:l,incremental:!0,three_dot:!0})}),init:(t,r=!1)=>Tt("/api/init",{method:"POST",body:JSON.stringify({repo_path:t,overwrite:r})}),postComment:(t,r,o,l)=>Tt("/api/prs/comment",{method:"POST",body:JSON.stringify({provider:t,repo:r,number:o,markdown:l})}),graph:(t,r="full")=>Tt(`/api/graph?repo_path=${encodeURIComponent(t)}&scope=${r}`),prs:(t,r,o="open")=>Tt("/api/prs",{method:"POST",body:JSON.stringify({provider:t,repo:r,state:o})}),residual:t=>Tt("/api/ai/residual",{method:"POST",body:JSON.stringify({review:t})})};function O0(t){return t.replaceAll("_"," ")}function Qu(t){return t.split(".").pop()||t}function b0(t){if(!t)return"";const r=new Date(t);return Number.isNaN(r.getTime())?t:r.toLocaleString()}function F0(t){return t.split(/[\\/]/).filter(Boolean).pop()||t}function ho({className:t,children:r}){return x.jsx("svg",{className:t,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:r})}function H0({className:t}){return x.jsxs(ho,{className:t,children:[x.jsx("path",{d:"M3 3.5h6.5L13 7v5.5H3z"}),x.jsx("path",{d:"M9.5 3.5V7H13"}),x.jsx("path",{d:"M5.5 9.5h5M5.5 11.5h3.5"})]})}function V0({className:t}){return x.jsxs(ho,{className:t,children:[x.jsx("rect",{x:"2.5",y:"2.5",width:"4.5",height:"4.5",rx:"0.8"}),x.jsx("rect",{x:"9",y:"2.5",width:"4.5",height:"4.5",rx:"0.8"}),x.jsx("rect",{x:"2.5",y:"9",width:"4.5",height:"4.5",rx:"0.8"}),x.jsx("rect",{x:"9",y:"9",width:"4.5",height:"4.5",rx:"0.8"})]})}function B0({className:t}){return x.jsxs(ho,{className:t,children:[x.jsx("circle",{cx:"4",cy:"8",r:"1.6"}),x.jsx("circle",{cx:"12",cy:"4",r:"1.6"}),x.jsx("circle",{cx:"12",cy:"12",r:"1.6"}),x.jsx("path",{d:"M5.5 7.2 10.4 4.8M5.5 8.8 10.4 11.2"})]})}function U0({className:t}){return x.jsxs(ho,{className:t,children:[x.jsx("circle",{cx:"4.5",cy:"4",r:"1.4"}),x.jsx("circle",{cx:"4.5",cy:"12",r:"1.4"}),x.jsx("circle",{cx:"11.5",cy:"12",r:"1.4"}),x.jsx("path",{d:"M4.5 5.5v5M4.5 8h4.2a3 3 0 0 1 3 3"})]})}function W0({className:t}){return x.jsxs(ho,{className:t,children:[x.jsx("circle",{cx:"8",cy:"8",r:"2.1"}),x.jsx("path",{d:"M8 2.5v1.6M8 11.9v1.6M2.5 8h1.6M11.9 8h1.6M4.1 4.1l1.1 1.1M10.8 10.8l1.1 1.1M11.9 4.1l-1.1 1.1M5.2 10.8l-1.1 1.1"})]})}function Qe(t){if(typeof t=="string"||typeof t=="number")return""+t;let r="";if(Array.isArray(t))for(let o=0,l;o{}};function dl(){for(var t=0,r=arguments.length,o={},l;t=0&&(l=o.slice(a+1),o=o.slice(0,a)),o&&!r.hasOwnProperty(o))throw new Error("unknown type: "+o);return{type:o,name:l}})}Xs.prototype=dl.prototype={constructor:Xs,on:function(t,r){var o=this._,l=X0(t+"",o),a,c=-1,d=l.length;if(arguments.length<2){for(;++c0)for(var o=new Array(a),l=0,a,c;l=0&&(r=t.slice(0,o))!=="xmlns"&&(t=t.slice(o+1)),Xf.hasOwnProperty(r)?{space:Xf[r],local:t}:t}function K0(t){return function(){var r=this.ownerDocument,o=this.namespaceURI;return o===Lu&&r.documentElement.namespaceURI===Lu?r.createElement(t):r.createElementNS(o,t)}}function G0(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function sp(t){var r=fl(t);return(r.local?G0:K0)(r)}function q0(){}function Ku(t){return t==null?q0:function(){return this.querySelector(t)}}function Z0(t){typeof t!="function"&&(t=Ku(t));for(var r=this._groups,o=r.length,l=new Array(o),a=0;a=N&&(N=z+1);!(b=k[N])&&++N<_;);P._next=b||null}}return d=new Rt(d,l),d._enter=h,d._exit=p,d}function vy(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function xy(){return new Rt(this._exit||this._groups.map(cp),this._parents)}function wy(t,r,o){var l=this.enter(),a=this,c=this.exit();return typeof t=="function"?(l=t(l),l&&(l=l.selection())):l=l.append(t+""),r!=null&&(a=r(a),a&&(a=a.selection())),o==null?c.remove():o(c),l&&a?l.merge(a).order():a}function Sy(t){for(var r=t.selection?t.selection():t,o=this._groups,l=r._groups,a=o.length,c=l.length,d=Math.min(a,c),h=new Array(a),p=0;p=0;)(d=l[a])&&(c&&d.compareDocumentPosition(c)^4&&c.parentNode.insertBefore(d,c),c=d);return this}function ky(t){t||(t=Ey);function r(v,g){return v&&g?t(v.__data__,g.__data__):!v-!g}for(var o=this._groups,l=o.length,a=new Array(l),c=0;cr?1:t>=r?0:NaN}function Ny(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Cy(){return Array.from(this)}function jy(){for(var t=this._groups,r=0,o=t.length;r1?this.each((r==null?Oy:typeof r=="function"?Fy:by)(t,r,o??"")):ei(this.node(),t)}function ei(t,r){return t.style.getPropertyValue(r)||dp(t).getComputedStyle(t,null).getPropertyValue(r)}function Vy(t){return function(){delete this[t]}}function By(t,r){return function(){this[t]=r}}function Uy(t,r){return function(){var o=r.apply(this,arguments);o==null?delete this[t]:this[t]=o}}function Wy(t,r){return arguments.length>1?this.each((r==null?Vy:typeof r=="function"?Uy:By)(t,r)):this.node()[t]}function fp(t){return t.trim().split(/^|\s+/)}function Gu(t){return t.classList||new hp(t)}function hp(t){this._node=t,this._names=fp(t.getAttribute("class")||"")}hp.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 pp(t,r){for(var o=Gu(t),l=-1,a=r.length;++l=0&&(o=r.slice(l+1),r=r.slice(0,l)),{type:r,name:o}})}function xv(t){return function(){var r=this.__on;if(r){for(var o=0,l=-1,a=r.length,c;o()=>t;function Au(t,{sourceEvent:r,subject:o,target:l,identifier:a,active:c,x:d,y:h,dx:p,dy:y,dispatch:m}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:r,enumerable:!0,configurable:!0},subject:{value:o,enumerable:!0,configurable:!0},target:{value:l,enumerable:!0,configurable:!0},identifier:{value:a,enumerable:!0,configurable:!0},active:{value:c,enumerable:!0,configurable:!0},x:{value:d,enumerable:!0,configurable:!0},y:{value:h,enumerable:!0,configurable:!0},dx:{value:p,enumerable:!0,configurable:!0},dy:{value:y,enumerable:!0,configurable:!0},_:{value:m}})}Au.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function Pv(t){return!t.ctrlKey&&!t.button}function Iv(){return this.parentNode}function Tv(t,r){return r??{x:t.x,y:t.y}}function zv(){return navigator.maxTouchPoints||"ontouchstart"in this}function wp(){var t=Pv,r=Iv,o=Tv,l=zv,a={},c=dl("start","drag","end"),d=0,h,p,y,m,v=0;function g(P){P.on("mousedown.drag",S).filter(l).on("touchstart.drag",k).on("touchmove.drag",E,Mv).on("touchend.drag touchcancel.drag",z).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function S(P,b){if(!(m||!t.call(this,P,b))){var $=N(this,r.call(this,P,b),P,b,"mouse");$&&(zt(P.view).on("mousemove.drag",_,no).on("mouseup.drag",M,no),vp(P.view),wu(P),y=!1,h=P.clientX,p=P.clientY,$("start",P))}}function _(P){if(Zr(P),!y){var b=P.clientX-h,$=P.clientY-p;y=b*b+$*$>v}a.mouse("drag",P)}function M(P){zt(P.view).on("mousemove.drag mouseup.drag",null),xp(P.view,y),Zr(P),a.mouse("end",P)}function k(P,b){if(t.call(this,P,b)){var $=P.changedTouches,H=r.call(this,P,b),X=$.length,K,ne;for(K=0;K>8&15|r>>4&240,r>>4&15|r&240,(r&15)<<4|r&15,1):o===8?bs(r>>24&255,r>>16&255,r>>8&255,(r&255)/255):o===4?bs(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=Lv.exec(t))?new _t(r[1],r[2],r[3],1):(r=Av.exec(t))?new _t(r[1]*255/100,r[2]*255/100,r[3]*255/100,1):(r=$v.exec(t))?bs(r[1],r[2],r[3],r[4]):(r=Dv.exec(t))?bs(r[1]*255/100,r[2]*255/100,r[3]*255/100,r[4]):(r=Ov.exec(t))?eh(r[1],r[2]/100,r[3]/100,1):(r=bv.exec(t))?eh(r[1],r[2]/100,r[3]/100,r[4]):Qf.hasOwnProperty(t)?qf(Qf[t]):t==="transparent"?new _t(NaN,NaN,NaN,0):null}function qf(t){return new _t(t>>16&255,t>>8&255,t&255,1)}function bs(t,r,o,l){return l<=0&&(t=r=o=NaN),new _t(t,r,o,l)}function Vv(t){return t instanceof go||(t=mr(t)),t?(t=t.rgb(),new _t(t.r,t.g,t.b,t.opacity)):new _t}function $u(t,r,o,l){return arguments.length===1?Vv(t):new _t(t,r,o,l??1)}function _t(t,r,o,l){this.r=+t,this.g=+r,this.b=+o,this.opacity=+l}qu(_t,$u,Sp(go,{brighter(t){return t=t==null?Js:Math.pow(Js,t),new _t(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?ro:Math.pow(ro,t),new _t(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new _t(pr(this.r),pr(this.g),pr(this.b),el(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:Zf,formatHex:Zf,formatHex8:Bv,formatRgb:Jf,toString:Jf}));function Zf(){return`#${hr(this.r)}${hr(this.g)}${hr(this.b)}`}function Bv(){return`#${hr(this.r)}${hr(this.g)}${hr(this.b)}${hr((isNaN(this.opacity)?1:this.opacity)*255)}`}function Jf(){const t=el(this.opacity);return`${t===1?"rgb(":"rgba("}${pr(this.r)}, ${pr(this.g)}, ${pr(this.b)}${t===1?")":`, ${t})`}`}function el(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function pr(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function hr(t){return t=pr(t),(t<16?"0":"")+t.toString(16)}function eh(t,r,o,l){return l<=0?t=r=o=NaN:o<=0||o>=1?t=r=NaN:r<=0&&(t=NaN),new Qt(t,r,o,l)}function _p(t){if(t instanceof Qt)return new Qt(t.h,t.s,t.l,t.opacity);if(t instanceof go||(t=mr(t)),!t)return new Qt;if(t instanceof Qt)return t;t=t.rgb();var r=t.r/255,o=t.g/255,l=t.b/255,a=Math.min(r,o,l),c=Math.max(r,o,l),d=NaN,h=c-a,p=(c+a)/2;return h?(r===c?d=(o-l)/h+(o0&&p<1?0:d,new Qt(d,h,p,t.opacity)}function Uv(t,r,o,l){return arguments.length===1?_p(t):new Qt(t,r,o,l??1)}function Qt(t,r,o,l){this.h=+t,this.s=+r,this.l=+o,this.opacity=+l}qu(Qt,Uv,Sp(go,{brighter(t){return t=t==null?Js:Math.pow(Js,t),new Qt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?ro:Math.pow(ro,t),new Qt(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,o=this.l,l=o+(o<.5?o:1-o)*r,a=2*o-l;return new _t(Su(t>=240?t-240:t+120,a,l),Su(t,a,l),Su(t<120?t+240:t-120,a,l),this.opacity)},clamp(){return new Qt(th(this.h),Fs(this.s),Fs(this.l),el(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=el(this.opacity);return`${t===1?"hsl(":"hsla("}${th(this.h)}, ${Fs(this.s)*100}%, ${Fs(this.l)*100}%${t===1?")":`, ${t})`}`}}));function th(t){return t=(t||0)%360,t<0?t+360:t}function Fs(t){return Math.max(0,Math.min(1,t||0))}function Su(t,r,o){return(t<60?r+(o-r)*t/60:t<180?o:t<240?r+(o-r)*(240-t)/60:r)*255}const Zu=t=>()=>t;function Wv(t,r){return function(o){return t+o*r}}function Yv(t,r,o){return t=Math.pow(t,o),r=Math.pow(r,o)-t,o=1/o,function(l){return Math.pow(t+l*r,o)}}function Xv(t){return(t=+t)==1?kp:function(r,o){return o-r?Yv(r,o,t):Zu(isNaN(r)?o:r)}}function kp(t,r){var o=r-t;return o?Wv(t,o):Zu(isNaN(t)?r:t)}const tl=(function t(r){var o=Xv(r);function l(a,c){var d=o((a=$u(a)).r,(c=$u(c)).r),h=o(a.g,c.g),p=o(a.b,c.b),y=kp(a.opacity,c.opacity);return function(m){return a.r=d(m),a.g=h(m),a.b=p(m),a.opacity=y(m),a+""}}return l.gamma=t,l})(1);function Qv(t,r){r||(r=[]);var o=t?Math.min(r.length,t.length):0,l=r.slice(),a;return function(c){for(a=0;ao&&(c=r.slice(o,c),h[d]?h[d]+=c:h[++d]=c),(l=l[0])===(a=a[0])?h[d]?h[d]+=a:h[++d]=a:(h[++d]=null,p.push({i:d,x:sn(l,a)})),o=_u.lastIndex;return o180?m+=360:m-y>180&&(y+=360),g.push({i:v.push(a(v)+"rotate(",null,l)-2,x:sn(y,m)})):m&&v.push(a(v)+"rotate("+m+l)}function h(y,m,v,g){y!==m?g.push({i:v.push(a(v)+"skewX(",null,l)-2,x:sn(y,m)}):m&&v.push(a(v)+"skewX("+m+l)}function p(y,m,v,g,S,_){if(y!==v||m!==g){var M=S.push(a(S)+"scale(",null,",",null,")");_.push({i:M-4,x:sn(y,v)},{i:M-2,x:sn(m,g)})}else(v!==1||g!==1)&&S.push(a(S)+"scale("+v+","+g+")")}return function(y,m){var v=[],g=[];return y=t(y),m=t(m),c(y.translateX,y.translateY,m.translateX,m.translateY,v,g),d(y.rotate,m.rotate,v,g),h(y.skewX,m.skewX,v,g),p(y.scaleX,y.scaleY,m.scaleX,m.scaleY,v,g),y=m=null,function(S){for(var _=-1,M=g.length,k;++_=0&&t._call.call(void 0,r),t=t._next;--ti}function ih(){yr=(rl=oo.now())+hl,ti=Zi=0;try{ux()}finally{ti=0,dx(),yr=0}}function cx(){var t=oo.now(),r=t-rl;r>jp&&(hl-=r,rl=t)}function dx(){for(var t,r=nl,o,l=1/0;r;)r._call?(l>r._time&&(l=r._time),t=r,r=r._next):(o=r._next,r._next=null,r=t?t._next=o:nl=o);Ji=t,bu(l)}function bu(t){if(!ti){Zi&&(Zi=clearTimeout(Zi));var r=t-yr;r>24?(t<1/0&&(Zi=setTimeout(ih,t-oo.now()-hl)),Gi&&(Gi=clearInterval(Gi))):(Gi||(rl=oo.now(),Gi=setInterval(cx,jp)),ti=1,Mp(ih))}}function oh(t,r,o){var l=new il;return r=r==null?0:+r,l.restart(a=>{l.stop(),t(a+r)},r,o),l}var fx=dl("start","end","cancel","interrupt"),hx=[],Ip=0,sh=1,Fu=2,Ks=3,lh=4,Hu=5,Gs=6;function pl(t,r,o,l,a,c){var d=t.__transition;if(!d)t.__transition={};else if(o in d)return;px(t,o,{name:r,index:l,group:a,on:fx,tween:hx,time:c.time,delay:c.delay,duration:c.duration,ease:c.ease,timer:null,state:Ip})}function ec(t,r){var o=Zt(t,r);if(o.state>Ip)throw new Error("too late; already scheduled");return o}function an(t,r){var o=Zt(t,r);if(o.state>Ks)throw new Error("too late; already running");return o}function Zt(t,r){var o=t.__transition;if(!o||!(o=o[r]))throw new Error("transition not found");return o}function px(t,r,o){var l=t.__transition,a;l[r]=o,o.timer=Pp(c,0,o.time);function c(y){o.state=sh,o.timer.restart(d,o.delay,o.time),o.delay<=y&&d(y-o.delay)}function d(y){var m,v,g,S;if(o.state!==sh)return p();for(m in l)if(S=l[m],S.name===o.name){if(S.state===Ks)return oh(d);S.state===lh?(S.state=Gs,S.timer.stop(),S.on.call("interrupt",t,t.__data__,S.index,S.group),delete l[m]):+mFu&&l.state=0&&(r=r.slice(0,o)),!r||r==="start"})}function Ux(t,r,o){var l,a,c=Bx(r)?ec:an;return function(){var d=c(this,t),h=d.on;h!==l&&(a=(l=h).copy()).on(r,o),d.on=a}}function Wx(t,r){var o=this._id;return arguments.length<2?Zt(this.node(),o).on.on(t):this.each(Ux(o,t,r))}function Yx(t){return function(){var r=this.parentNode;for(var o in this.__transition)if(+o!==t)return;r&&r.removeChild(this)}}function Xx(){return this.on("end.remove",Yx(this._id))}function Qx(t){var r=this._name,o=this._id;typeof t!="function"&&(t=Ku(t));for(var l=this._groups,a=l.length,c=new Array(a),d=0;d()=>t;function xw(t,{sourceEvent:r,target:o,transform:l,dispatch:a}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:r,enumerable:!0,configurable:!0},target:{value:o,enumerable:!0,configurable:!0},transform:{value:l,enumerable:!0,configurable:!0},_:{value:a}})}function wn(t,r,o){this.k=t,this.x=r,this.y=o}wn.prototype={constructor:wn,scale:function(t){return t===1?this:new wn(this.k*t,this.x,this.y)},translate:function(t,r){return t===0&r===0?this:new wn(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 gl=new wn(1,0,0);Lp.prototype=wn.prototype;function Lp(t){for(;!t.__zoom;)if(!(t=t.parentNode))return gl;return t.__zoom}function ku(t){t.stopImmediatePropagation()}function qi(t){t.preventDefault(),t.stopImmediatePropagation()}function ww(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function Sw(){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 ah(){return this.__zoom||gl}function _w(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function kw(){return navigator.maxTouchPoints||"ontouchstart"in this}function Ew(t,r,o){var l=t.invertX(r[0][0])-o[0][0],a=t.invertX(r[1][0])-o[1][0],c=t.invertY(r[0][1])-o[0][1],d=t.invertY(r[1][1])-o[1][1];return t.translate(a>l?(l+a)/2:Math.min(0,l)||Math.max(0,a),d>c?(c+d)/2:Math.min(0,c)||Math.max(0,d))}function Ap(){var t=ww,r=Sw,o=Ew,l=_w,a=kw,c=[0,1/0],d=[[-1/0,-1/0],[1/0,1/0]],h=250,p=Qs,y=dl("start","zoom","end"),m,v,g,S=500,_=150,M=0,k=10;function E(C){C.property("__zoom",ah).on("wheel.zoom",X,{passive:!1}).on("mousedown.zoom",K).on("dblclick.zoom",ne).filter(a).on("touchstart.zoom",Z).on("touchmove.zoom",te).on("touchend.zoom touchcancel.zoom",J).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}E.transform=function(C,B,F,V){var A=C.selection?C.selection():C;A.property("__zoom",ah),C!==A?b(C,B,F,V):A.interrupt().each(function(){$(this,arguments).event(V).start().zoom(null,typeof B=="function"?B.apply(this,arguments):B).end()})},E.scaleBy=function(C,B,F,V){E.scaleTo(C,function(){var A=this.__zoom.k,L=typeof B=="function"?B.apply(this,arguments):B;return A*L},F,V)},E.scaleTo=function(C,B,F,V){E.transform(C,function(){var A=r.apply(this,arguments),L=this.__zoom,O=F==null?P(A):typeof F=="function"?F.apply(this,arguments):F,j=L.invert(O),T=typeof B=="function"?B.apply(this,arguments):B;return o(N(z(L,T),O,j),A,d)},F,V)},E.translateBy=function(C,B,F,V){E.transform(C,function(){return o(this.__zoom.translate(typeof B=="function"?B.apply(this,arguments):B,typeof F=="function"?F.apply(this,arguments):F),r.apply(this,arguments),d)},null,V)},E.translateTo=function(C,B,F,V,A){E.transform(C,function(){var L=r.apply(this,arguments),O=this.__zoom,j=V==null?P(L):typeof V=="function"?V.apply(this,arguments):V;return o(gl.translate(j[0],j[1]).scale(O.k).translate(typeof B=="function"?-B.apply(this,arguments):-B,typeof F=="function"?-F.apply(this,arguments):-F),L,d)},V,A)};function z(C,B){return B=Math.max(c[0],Math.min(c[1],B)),B===C.k?C:new wn(B,C.x,C.y)}function N(C,B,F){var V=B[0]-F[0]*C.k,A=B[1]-F[1]*C.k;return V===C.x&&A===C.y?C:new wn(C.k,V,A)}function P(C){return[(+C[0][0]+ +C[1][0])/2,(+C[0][1]+ +C[1][1])/2]}function b(C,B,F,V){C.on("start.zoom",function(){$(this,arguments).event(V).start()}).on("interrupt.zoom end.zoom",function(){$(this,arguments).event(V).end()}).tween("zoom",function(){var A=this,L=arguments,O=$(A,L).event(V),j=r.apply(A,L),T=F==null?P(j):typeof F=="function"?F.apply(A,L):F,ee=Math.max(j[1][0]-j[0][0],j[1][1]-j[0][1]),re=A.__zoom,ue=typeof B=="function"?B.apply(A,L):B,de=p(re.invert(T).concat(ee/re.k),ue.invert(T).concat(ee/ue.k));return function(ce){if(ce===1)ce=ue;else{var Q=de(ce),se=ee/Q[2];ce=new wn(se,T[0]-Q[0]*se,T[1]-Q[1]*se)}O.zoom(null,ce)}})}function $(C,B,F){return!F&&C.__zooming||new H(C,B)}function H(C,B){this.that=C,this.args=B,this.active=0,this.sourceEvent=null,this.extent=r.apply(C,B),this.taps=0}H.prototype={event:function(C){return C&&(this.sourceEvent=C),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(C,B){return this.mouse&&C!=="mouse"&&(this.mouse[1]=B.invert(this.mouse[0])),this.touch0&&C!=="touch"&&(this.touch0[1]=B.invert(this.touch0[0])),this.touch1&&C!=="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(C){var B=zt(this.that).datum();y.call(C,this.that,new xw(C,{sourceEvent:this.sourceEvent,target:E,transform:this.that.__zoom,dispatch:y}),B)}};function X(C,...B){if(!t.apply(this,arguments))return;var F=$(this,B).event(C),V=this.__zoom,A=Math.max(c[0],Math.min(c[1],V.k*Math.pow(2,l.apply(this,arguments)))),L=Xt(C);if(F.wheel)(F.mouse[0][0]!==L[0]||F.mouse[0][1]!==L[1])&&(F.mouse[1]=V.invert(F.mouse[0]=L)),clearTimeout(F.wheel);else{if(V.k===A)return;F.mouse=[L,V.invert(L)],qs(this),F.start()}qi(C),F.wheel=setTimeout(O,_),F.zoom("mouse",o(N(z(V,A),F.mouse[0],F.mouse[1]),F.extent,d));function O(){F.wheel=null,F.end()}}function K(C,...B){if(g||!t.apply(this,arguments))return;var F=C.currentTarget,V=$(this,B,!0).event(C),A=zt(C.view).on("mousemove.zoom",T,!0).on("mouseup.zoom",ee,!0),L=Xt(C,F),O=C.clientX,j=C.clientY;vp(C.view),ku(C),V.mouse=[L,this.__zoom.invert(L)],qs(this),V.start();function T(re){if(qi(re),!V.moved){var ue=re.clientX-O,de=re.clientY-j;V.moved=ue*ue+de*de>M}V.event(re).zoom("mouse",o(N(V.that.__zoom,V.mouse[0]=Xt(re,F),V.mouse[1]),V.extent,d))}function ee(re){A.on("mousemove.zoom mouseup.zoom",null),xp(re.view,V.moved),qi(re),V.event(re).end()}}function ne(C,...B){if(t.apply(this,arguments)){var F=this.__zoom,V=Xt(C.changedTouches?C.changedTouches[0]:C,this),A=F.invert(V),L=F.k*(C.shiftKey?.5:2),O=o(N(z(F,L),V,A),r.apply(this,B),d);qi(C),h>0?zt(this).transition().duration(h).call(b,O,V,C):zt(this).call(E.transform,O,V,C)}}function Z(C,...B){if(t.apply(this,arguments)){var F=C.touches,V=F.length,A=$(this,B,C.changedTouches.length===V).event(C),L,O,j,T;for(ku(C),O=0;O`Seems like you have not used ${t==="svelte"?"SvelteFlowProvider":"ReactFlowProvider"} as an ancestor. Help: https://${t}flow.dev/error#001`,error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:t=>`Node type "${t}" not found. Using fallback type "default".`,error004:()=>"The parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:t=>`The old edge with id=${t} does not exist.`,error009:t=>`Marker type "${t}" doesn't exist.`,error008:(t,{id:r,sourceHandle:o,targetHandle:l})=>`Couldn't create edge for ${t} handle id: "${t==="source"?o:l}", 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.",error016:t=>`Edge with id "${t}" does not exist, it may have been removed. This can happen when an edge is deleted before the "onEdgeClick" handler is called.`},so=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],$p=["Enter"," ","Escape"],Dp={"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:o})=>`Moved selected node ${t}. New position, x: ${r}, y: ${o}`,"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 ni;(function(t){t.Strict="strict",t.Loose="loose"})(ni||(ni={}));var gr;(function(t){t.Free="free",t.Vertical="vertical",t.Horizontal="horizontal"})(gr||(gr={}));var lo;(function(t){t.Partial="partial",t.Full="full"})(lo||(lo={}));const Op={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null};var Yn;(function(t){t.Bezier="default",t.Straight="straight",t.Step="step",t.SmoothStep="smoothstep",t.SimpleBezier="simplebezier"})(Yn||(Yn={}));var ol;(function(t){t.Arrow="arrow",t.ArrowClosed="arrowclosed"})(ol||(ol={}));var _e;(function(t){t.Left="left",t.Top="top",t.Right="right",t.Bottom="bottom"})(_e||(_e={}));const uh={[_e.Left]:_e.Right,[_e.Right]:_e.Left,[_e.Top]:_e.Bottom,[_e.Bottom]:_e.Top};function bp(t){return t===null?null:t?"valid":"invalid"}const Fp=t=>!!t&&typeof t=="object"&&"id"in t&&"source"in t&&"target"in t,Nw=t=>!!t&&typeof t=="object"&&"id"in t&&"position"in t&&!("source"in t)&&!("target"in t),nc=t=>!!t&&typeof t=="object"&&"id"in t&&"internals"in t&&!("source"in t)&&!("target"in t),mo=(t,r=[0,0])=>{const{width:o,height:l}=Jt(t),a=t.origin??r,c=o*a[0],d=l*a[1];return{x:t.position.x-c,y:t.position.y-d}},Cw=(t,r={nodeOrigin:[0,0]})=>{if(t.length===0)return{x:0,y:0,width:0,height:0};let o=!1;const l=t.reduce((a,c)=>{const d=typeof c=="string";let h=!r.nodeLookup&&!d?c:void 0;return r.nodeLookup&&(h=d?r.nodeLookup.get(c):nc(c)?c:r.nodeLookup.get(c.id)),h?(o=!0,ml(a,sl(h,r.nodeOrigin))):a},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return o?yl(l):{x:0,y:0,width:0,height:0}},yo=(t,r={})=>{let o={x:1/0,y:1/0,x2:-1/0,y2:-1/0},l=!1;return t.forEach(a=>{(r.filter===void 0||r.filter(a))&&(o=ml(o,sl(a)),l=!0)}),l?yl(o):{x:0,y:0,width:0,height:0}},rc=(t,r,[o,l,a]=[0,0,1],c=!1,d=!1)=>{const h=(r.x-o)/a,p=(r.y-l)/a,y=r.width/a,m=r.height/a,v=[];for(const g of t.values()){const{measured:S,selectable:_=!0,hidden:M=!1}=g;if(d&&!_||M)continue;const k=S.width??g.width??g.initialWidth??0,E=S.height??g.height??g.initialHeight??0,{x:z,y:N}=g.internals.positionAbsolute,P=Up(h,p,y,m,z,N,k,E),b=k*E,$=c&&P>0;(!g.internals.handleBounds||$||P>=b||g.dragging)&&v.push(g)}return v},jw=(t,r)=>{const o=new Set;return t.forEach(l=>{o.add(l.id)}),r.filter(l=>o.has(l.source)||o.has(l.target))};function Mw(t,r){const o=new Map,l=r!=null&&r.nodes?new Set(r.nodes.map(a=>a.id)):null;return t.forEach(a=>{let c;if(r!=null&&r.includeHiddenNodes){const{width:d,height:h}=Jt(a);c=d>0&&h>0}else c=!!(a.measured.width&&a.measured.height&&!a.hidden);c&&(!l||l.has(a.id))&&o.set(a.id,a)}),o}async function Pw({nodes:t,width:r,height:o,panZoom:l,minZoom:a,maxZoom:c},d){if(t.size===0)return!0;const h=Mw(t,d),p=yo(h),y=oc(p,r,o,(d==null?void 0:d.minZoom)??a,(d==null?void 0:d.maxZoom)??c,(d==null?void 0:d.padding)??.1);return await l.setViewport(y,{duration:d==null?void 0:d.duration,ease:d==null?void 0:d.ease,interpolate:d==null?void 0:d.interpolate}),!0}function Hp({nodeId:t,nextPosition:r,nodeLookup:o,nodeOrigin:l=[0,0],nodeExtent:a,onError:c}){const d=o.get(t),h=d.parentId?o.get(d.parentId):void 0,{x:p,y}=h?h.internals.positionAbsolute:{x:0,y:0},m=d.origin??l;let v=d.extent||a;if(d.extent==="parent"&&!d.expandParent)if(!h)c==null||c("005",qt.error005());else{const{width:S,height:_}=Jt(h);S&&_&&(v=[[p,y],[p+S,y+_]])}else h&&xr(d.extent)&&(v=[[d.extent[0][0]+p,d.extent[0][1]+y],[d.extent[1][0]+p,d.extent[1][1]+y]]);const g=xr(v)?vr(r,v,d.measured):r;return(d.measured.width===void 0||d.measured.height===void 0)&&(c==null||c("015",qt.error015())),{position:{x:g.x-p+(d.measured.width??0)*m[0],y:g.y-y+(d.measured.height??0)*m[1]},positionAbsolute:g}}async function Iw({nodesToRemove:t=[],edgesToRemove:r=[],nodes:o,edges:l,onBeforeDelete:a}){const c=new Set(t.map(g=>g.id)),d=[];for(const g of o){if(g.deletable===!1)continue;const S=c.has(g.id),_=!S&&g.parentId&&d.find(M=>M.id===g.parentId);(S||_)&&d.push(g)}const h=new Set(r.map(g=>g.id)),p=l.filter(g=>g.deletable!==!1),m=jw(d,p);for(const g of p)h.has(g.id)&&!m.find(_=>_.id===g.id)&&m.push(g);if(!a)return{edges:m,nodes:d};const v=await a({nodes:d,edges:m});return typeof v=="boolean"?v?{edges:m,nodes:d}:{edges:[],nodes:[]}:v}const ri=(t,r=0,o=1)=>Math.min(Math.max(t,r),o),vr=(t={x:0,y:0},r,o)=>({x:ri(t.x,r[0][0],r[1][0]-((o==null?void 0:o.width)??0)),y:ri(t.y,r[0][1],r[1][1]-((o==null?void 0:o.height)??0))});function Vp(t,r,o){const{width:l,height:a}=Jt(o),{x:c,y:d}=o.internals.positionAbsolute;return vr(t,[[c,d],[c+l,d+a]],r)}const ch=(t,r,o)=>to?-ri(Math.abs(t-o),1,r)/r:0,ic=(t,r,o=15,l=40)=>{const a=ch(t.x,l,r.width-l)*o,c=ch(t.y,l,r.height-l)*o;return[a,c]},ml=(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)}),Vu=({x:t,y:r,width:o,height:l})=>({x:t,y:r,x2:t+o,y2:r+l}),yl=({x:t,y:r,x2:o,y2:l})=>({x:t,y:r,width:o-t,height:l-r}),ao=(t,r=[0,0])=>{var a,c;const{x:o,y:l}=nc(t)?t.internals.positionAbsolute:mo(t,r);return{x:o,y:l,width:((a=t.measured)==null?void 0:a.width)??t.width??t.initialWidth??0,height:((c=t.measured)==null?void 0:c.height)??t.height??t.initialHeight??0}},sl=(t,r=[0,0])=>{var a,c;const{x:o,y:l}=nc(t)?t.internals.positionAbsolute:mo(t,r);return{x:o,y:l,x2:o+(((a=t.measured)==null?void 0:a.width)??t.width??t.initialWidth??0),y2:l+(((c=t.measured)==null?void 0:c.height)??t.height??t.initialHeight??0)}},Bp=(t,r)=>yl(ml(Vu(t),Vu(r))),Up=(t,r,o,l,a,c,d,h)=>{const p=Math.max(0,Math.min(t+o,a+d)-Math.max(t,a)),y=Math.max(0,Math.min(r+l,c+h)-Math.max(r,c));return Math.ceil(p*y)},ll=(t,r)=>Up(t.x,t.y,t.width,t.height,r.x,r.y,r.width,r.height),dh=t=>Kt(t.width)&&Kt(t.height)&&Kt(t.x)&&Kt(t.y),Kt=t=>!isNaN(t)&&isFinite(t),Wp=(t,r)=>(o,l)=>{},vo=(t,r=[1,1])=>({x:r[0]*Math.round(t.x/r[0]),y:r[1]*Math.round(t.y/r[1])}),xo=({x:t,y:r},[o,l,a],c=!1,d=[1,1])=>{const h={x:(t-o)/a,y:(r-l)/a};return c?vo(h,d):h},ii=({x:t,y:r},[o,l,a])=>({x:t*a+o,y:r*a+l});function Gr(t,r){if(typeof t=="number")return Math.floor((r-r/(1+t))*.5);if(typeof t=="string"&&t.endsWith("px")){const o=parseFloat(t);if(!Number.isNaN(o))return Math.floor(o)}if(typeof t=="string"&&t.endsWith("%")){const o=parseFloat(t);if(!Number.isNaN(o))return Math.floor(r*o*.01)}return console.error(`The padding value "${t}" is invalid. Please provide a number or a string with a valid unit (px or %).`),0}function Tw(t,r,o){if(typeof t=="string"||typeof t=="number"){const l=Gr(t,o),a=Gr(t,r);return{top:l,right:a,bottom:l,left:a,x:a*2,y:l*2}}if(typeof t=="object"){const l=Gr(t.top??t.y??0,o),a=Gr(t.bottom??t.y??0,o),c=Gr(t.left??t.x??0,r),d=Gr(t.right??t.x??0,r);return{top:l,right:d,bottom:a,left:c,x:c+d,y:l+a}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function zw(t,r,o,l,a,c){const{x:d,y:h}=ii(t,[r,o,l]),{x:p,y}=ii({x:t.x+t.width,y:t.y+t.height},[r,o,l]),m=a-p,v=c-y;return{left:Math.floor(d),top:Math.floor(h),right:Math.floor(m),bottom:Math.floor(v)}}const oc=(t,r,o,l,a,c)=>{const d=Tw(c,r,o),h=(r-d.x)/t.width,p=(o-d.y)/t.height,y=Math.min(h,p),m=ri(y,l,a),v=t.x+t.width/2,g=t.y+t.height/2,S=r/2-v*m,_=o/2-g*m,M=zw(t,S,_,m,r,o),k={left:Math.min(M.left-d.left,0),top:Math.min(M.top-d.top,0),right:Math.min(M.right-d.right,0),bottom:Math.min(M.bottom-d.bottom,0)};return{x:S-k.left+k.right,y:_-k.top+k.bottom,zoom:m}},uo=()=>{var t;return typeof navigator<"u"&&((t=navigator==null?void 0:navigator.userAgent)==null?void 0:t.indexOf("Mac"))>=0};function xr(t){return t!=null&&t!=="parent"}function Jt(t){var r,o;return{width:((r=t.measured)==null?void 0:r.width)??t.width??t.initialWidth??0,height:((o=t.measured)==null?void 0:o.height)??t.height??t.initialHeight??0}}function Yp(t){var r,o;return(((r=t.measured)==null?void 0:r.width)??t.width??t.initialWidth)!==void 0&&(((o=t.measured)==null?void 0:o.height)??t.height??t.initialHeight)!==void 0}function Xp(t,r={width:0,height:0},o,l,a){const c={...t},d=l.get(o);if(d){const h=d.origin||a;c.x+=d.internals.positionAbsolute.x-(r.width??0)*h[0],c.y+=d.internals.positionAbsolute.y-(r.height??0)*h[1]}return c}function fh(t,r){if(t.size!==r.size)return!1;for(const o of t)if(!r.has(o))return!1;return!0}function Rw(){let t,r;return{promise:new Promise((l,a)=>{t=l,r=a}),resolve:t,reject:r}}function Lw(t){return{...Dp,...t||{}}}function to(t,{snapGrid:r=[0,0],snapToGrid:o=!1,transform:l,containerBounds:a}){const{x:c,y:d}=Gt(t),h=xo({x:c-((a==null?void 0:a.left)??0),y:d-((a==null?void 0:a.top)??0)},l),{x:p,y}=o?vo(h,r):h;return{xSnapped:p,ySnapped:y,...h}}const sc=t=>({width:t.offsetWidth,height:t.offsetHeight}),Qp=t=>{var r;return((r=t==null?void 0:t.getRootNode)==null?void 0:r.call(t))||(window==null?void 0:window.document)},Aw=["INPUT","SELECT","TEXTAREA"];function Kp(t){var l,a;const r=((a=(l=t.composedPath)==null?void 0:l.call(t))==null?void 0:a[0])||t.target;return(r==null?void 0:r.nodeType)!==1?!1:Aw.includes(r.nodeName)||r.hasAttribute("contenteditable")||!!r.closest(".nokey")}const Gp=t=>"clientX"in t,Gt=(t,r)=>{var c,d;const o=Gp(t),l=o?t.clientX:(c=t.touches)==null?void 0:c[0].clientX,a=o?t.clientY:(d=t.touches)==null?void 0:d[0].clientY;return{x:l-((r==null?void 0:r.left)??0),y:a-((r==null?void 0:r.top)??0)}},hh=(t,r,o,l,a)=>{const c=r.querySelectorAll(`.${t}`);return!c||!c.length?null:Array.from(c).map(d=>{const h=d.getBoundingClientRect();return{id:d.getAttribute("data-handleid"),type:t,nodeId:a,position:d.getAttribute("data-handlepos"),x:(h.left-o.left)/l,y:(h.top-o.top)/l,...sc(d)}})};function qp({sourceX:t,sourceY:r,targetX:o,targetY:l,sourceControlX:a,sourceControlY:c,targetControlX:d,targetControlY:h}){const p=t*.125+a*.375+d*.375+o*.125,y=r*.125+c*.375+h*.375+l*.125,m=Math.abs(p-t),v=Math.abs(y-r);return[p,y,m,v]}function Bs(t,r){return t>=0?.5*t:r*25*Math.sqrt(-t)}function ph({pos:t,x1:r,y1:o,x2:l,y2:a,c}){switch(t){case _e.Left:return[r-Bs(r-l,c),o];case _e.Right:return[r+Bs(l-r,c),o];case _e.Top:return[r,o-Bs(o-a,c)];case _e.Bottom:return[r,o+Bs(a-o,c)]}}function Zp({sourceX:t,sourceY:r,sourcePosition:o=_e.Bottom,targetX:l,targetY:a,targetPosition:c=_e.Top,curvature:d=.25}){const[h,p]=ph({pos:o,x1:t,y1:r,x2:l,y2:a,c:d}),[y,m]=ph({pos:c,x1:l,y1:a,x2:t,y2:r,c:d}),[v,g,S,_]=qp({sourceX:t,sourceY:r,targetX:l,targetY:a,sourceControlX:h,sourceControlY:p,targetControlX:y,targetControlY:m});return[`M${t},${r} C${h},${p} ${y},${m} ${l},${a}`,v,g,S,_]}function Jp({sourceX:t,sourceY:r,targetX:o,targetY:l}){const a=Math.abs(o-t)/2,c=o0}const Ow=({source:t,sourceHandle:r,target:o,targetHandle:l})=>`xy-edge__${t}${r||""}-${o}${l||""}`,bw=(t,r)=>r.some(o=>o.source===t.source&&o.target===t.target&&(o.sourceHandle===t.sourceHandle||!o.sourceHandle&&!t.sourceHandle)&&(o.targetHandle===t.targetHandle||!o.targetHandle&&!t.targetHandle)),Fw=(t,r,o={})=>{var c;if(!t.source||!t.target)return(c=o.onError)==null||c.call(o,"006",qt.error006()),r;const l=o.getEdgeId||Ow;let a;return Fp(t)?a={...t}:a={...t,id:l(t)},bw(a,r)?r:(a.sourceHandle===null&&delete a.sourceHandle,a.targetHandle===null&&delete a.targetHandle,r.concat(a))};function eg({sourceX:t,sourceY:r,targetX:o,targetY:l}){const[a,c,d,h]=Jp({sourceX:t,sourceY:r,targetX:o,targetY:l});return[`M ${t},${r}L ${o},${l}`,a,c,d,h]}const gh={[_e.Left]:{x:-1,y:0},[_e.Right]:{x:1,y:0},[_e.Top]:{x:0,y:-1},[_e.Bottom]:{x:0,y:1}},Hw=({source:t,sourcePosition:r=_e.Bottom,target:o})=>r===_e.Left||r===_e.Right?t.xMath.sqrt(Math.pow(r.x-t.x,2)+Math.pow(r.y-t.y,2));function Vw({source:t,sourcePosition:r=_e.Bottom,target:o,targetPosition:l=_e.Top,center:a,offset:c,stepPosition:d}){const h=gh[r],p=gh[l],y={x:t.x+h.x*c,y:t.y+h.y*c},m={x:o.x+p.x*c,y:o.y+p.y*c},v=Hw({source:y,sourcePosition:r,target:m}),g=v.x!==0?"x":"y",S=v[g];let _=[],M,k;const E={x:0,y:0},z={x:0,y:0},[,,N,P]=Jp({sourceX:t.x,sourceY:t.y,targetX:o.x,targetY:o.y});if(h[g]*p[g]===-1){g==="x"?(M=a.x??y.x+(m.x-y.x)*d,k=a.y??(y.y+m.y)/2):(M=a.x??(y.x+m.x)/2,k=a.y??y.y+(m.y-y.y)*d);const X=[{x:M,y:y.y},{x:M,y:m.y}],K=[{x:y.x,y:k},{x:m.x,y:k}];h[g]===S?_=g==="x"?X:K:_=g==="x"?K:X}else{const X=[{x:y.x,y:m.y}],K=[{x:m.x,y:y.y}];if(g==="x"?_=h.x===S?K:X:_=h.y===S?X:K,r===l){const C=Math.abs(t[g]-o[g]);if(C<=c){const B=Math.min(c-1,c-C);h[g]===S?E[g]=(y[g]>t[g]?-1:1)*B:z[g]=(m[g]>o[g]?-1:1)*B}}if(r!==l){const C=g==="x"?"y":"x",B=h[g]===p[C],F=y[C]>m[C],V=y[C]=J?(M=(ne.x+Z.x)/2,k=_[0].y):(M=_[0].x,k=(ne.y+Z.y)/2)}const b={x:y.x+E.x,y:y.y+E.y},$={x:m.x+z.x,y:m.y+z.y};return[[t,...b.x!==_[0].x||b.y!==_[0].y?[b]:[],..._,...$.x!==_[_.length-1].x||$.y!==_[_.length-1].y?[$]:[],o],M,k,N,P]}function Bw(t,r,o,l){const a=Math.min(mh(t,r)/2,mh(r,o)/2,l),{x:c,y:d}=r;if(t.x===c&&c===o.x||t.y===d&&d===o.y)return`L${c} ${d}`;if(t.y===d){const y=t.xo.id===r):t[0])||null}function Uu(t,r){return t?typeof t=="string"?t:`${r?`${r}__`:""}${Object.keys(t).sort().map(l=>`${l}=${t[l]}`).join("&")}`:""}function Ww(t,{id:r,defaultColor:o,defaultMarkerStart:l,defaultMarkerEnd:a}){const c=new Set;return t.reduce((d,h)=>([h.markerStart||l,h.markerEnd||a].forEach(p=>{if(p&&typeof p=="object"){const y=Uu(p,r);c.has(y)||(d.push({id:y,color:p.color||o,...p}),c.add(y))}}),d),[]).sort((d,h)=>d.id.localeCompare(h.id))}const tg=1e3,Yw=10,lc={nodeOrigin:[0,0],nodeExtent:so,elevateNodesOnSelect:!0,zIndexMode:"basic",defaults:{}},Xw={...lc,checkEquality:!0};function ac(t,r){const o={...t};for(const l in r)r[l]!==void 0&&(o[l]=r[l]);return o}function Qw(t,r,o){const l=ac(lc,o);for(const a of t.values())if(a.parentId)cc(a,t,r,l);else{const c=mo(a,l.nodeOrigin),d=xr(a.extent)?a.extent:l.nodeExtent,h=vr(c,d,Jt(a));a.internals.positionAbsolute=h}}function Kw(t,r){if(!t.handles)return t.measured?r==null?void 0:r.internals.handleBounds:void 0;const o=[],l=[];for(const a of t.handles){const c={id:a.id,width:a.width??1,height:a.height??1,nodeId:t.id,x:a.x,y:a.y,position:a.position,type:a.type};a.type==="source"?o.push(c):a.type==="target"&&l.push(c)}return{source:o,target:l}}function uc(t){return t==="manual"}function Wu(t,r,o,l={}){var m,v;const a=ac(Xw,l),c={i:0},d=new Map(r),h=a!=null&&a.elevateNodesOnSelect&&!uc(a.zIndexMode)?tg:0;let p=t.length>0,y=!1;r.clear(),o.clear();for(const g of t){let S=d.get(g.id);if(a.checkEquality&&g===(S==null?void 0:S.internals.userNode))r.set(g.id,S);else{const _=mo(g,a.nodeOrigin),M=xr(g.extent)?g.extent:a.nodeExtent,k=vr(_,M,Jt(g));S={...a.defaults,...g,measured:{width:(m=g.measured)==null?void 0:m.width,height:(v=g.measured)==null?void 0:v.height},internals:{positionAbsolute:k,handleBounds:Kw(g,S),z:ng(g,h,a.zIndexMode),userNode:g}},r.set(g.id,S)}(S.measured===void 0||S.measured.width===void 0||S.measured.height===void 0)&&!S.hidden&&(p=!1),g.parentId&&cc(S,r,o,l,c),y||(y=g.selected??!1)}return{nodesInitialized:p,hasSelectedNodes:y}}function Gw(t,r){if(!t.parentId)return;const o=r.get(t.parentId);o?o.set(t.id,t):r.set(t.parentId,new Map([[t.id,t]]))}function cc(t,r,o,l,a){const{elevateNodesOnSelect:c,nodeOrigin:d,nodeExtent:h,zIndexMode:p}=ac(lc,l),y=t.parentId,m=r.get(y);if(!m){console.warn(`Parent node ${y} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}Gw(t,o),a&&!m.parentId&&m.internals.rootParentIndex===void 0&&p==="auto"&&(m.internals.rootParentIndex=++a.i,m.internals.z=m.internals.z+a.i*Yw),a&&m.internals.rootParentIndex!==void 0&&(a.i=m.internals.rootParentIndex);const v=c&&!uc(p)?tg:0,{x:g,y:S,z:_}=qw(t,m,d,h,v,p),{positionAbsolute:M}=t.internals,k=g!==M.x||S!==M.y;(k||_!==t.internals.z)&&r.set(t.id,{...t,internals:{...t.internals,positionAbsolute:k?{x:g,y:S}:M,z:_}})}function ng(t,r,o){const l=Kt(t.zIndex)?t.zIndex:0;return uc(o)?l:l+(t.selected?r:0)}function qw(t,r,o,l,a,c){const{x:d,y:h}=r.internals.positionAbsolute,p=Jt(t),y=mo(t,o),m=xr(t.extent)?vr(y,t.extent,p):y;let v=vr({x:d+m.x,y:h+m.y},l,p);t.extent==="parent"&&(v=Vp(v,p,r));const g=ng(t,a,c),S=r.internals.z??0;return{x:v.x,y:v.y,z:S>=g?S+1:g}}function dc(t,r,o,l=[0,0]){var d;const a=[],c=new Map;for(const h of t){const p=r.get(h.parentId);if(!p)continue;const y=((d=c.get(h.parentId))==null?void 0:d.expandedRect)??ao(p),m=Bp(y,h.rect);c.set(h.parentId,{expandedRect:m,parent:p})}return c.size>0&&c.forEach(({expandedRect:h,parent:p},y)=>{var N;const m=p.internals.positionAbsolute,v=Jt(p),g=p.origin??l,S=h.x0||_>0||E||z)&&(a.push({id:y,type:"position",position:{x:p.position.x-S+E,y:p.position.y-_+z}}),(N=o.get(y))==null||N.forEach(P=>{t.some(b=>b.id===P.id)||a.push({id:P.id,type:"position",position:{x:P.position.x+S,y:P.position.y+_}})})),(v.width0){const S=dc(g,r,o,a);y.push(...S)}return{changes:y,updatedInternals:p}}async function Jw({delta:t,panZoom:r,transform:o,translateExtent:l,width:a,height:c}){if(!r||!t.x&&!t.y)return!1;const d=await r.setViewportConstrained({x:o[0]+t.x,y:o[1]+t.y,zoom:o[2]},[[0,0],[a,c]],l);return!!d&&(d.x!==o[0]||d.y!==o[1]||d.k!==o[2])}function wh(t,r,o,l,a,c){let d=a;const h=l.get(d)||new Map;l.set(d,h.set(o,r)),d=`${a}-${t}`;const p=l.get(d)||new Map;if(l.set(d,p.set(o,r)),c){d=`${a}-${t}-${c}`;const y=l.get(d)||new Map;l.set(d,y.set(o,r))}}function rg(t,r,o){t.clear(),r.clear();for(const l of o){const{source:a,target:c,sourceHandle:d=null,targetHandle:h=null}=l,p={edgeId:l.id,source:a,target:c,sourceHandle:d,targetHandle:h},y=`${a}-${d}--${c}-${h}`,m=`${c}-${h}--${a}-${d}`;wh("source",p,m,t,a,d),wh("target",p,y,t,c,h),r.set(l.id,l)}}function ig(t,r){if(!t.parentId)return!1;const o=r.get(t.parentId);return o?o.selected?!0:ig(o,r):!1}function Sh(t,r,o){var a;let l=t;do{if((a=l==null?void 0:l.matches)!=null&&a.call(l,r))return!0;if(l===o)return!1;l=l==null?void 0:l.parentElement}while(l);return!1}function e1(t,r,o,l){const a=new Map;for(const[c,d]of t)if((d.selected||d.id===l)&&(!d.parentId||!ig(d,t))&&(d.draggable||r&&typeof d.draggable>"u")){const h=t.get(c);h&&a.set(c,{id:c,position:h.position||{x:0,y:0},distance:{x:o.x-h.internals.positionAbsolute.x,y:o.y-h.internals.positionAbsolute.y},extent:h.extent,parentId:h.parentId,origin:h.origin,expandParent:h.expandParent,internals:{positionAbsolute:h.internals.positionAbsolute||{x:0,y:0}},measured:{width:h.measured.width??0,height:h.measured.height??0}})}return a}function Eu({nodeId:t,dragItems:r,nodeLookup:o,dragging:l=!0}){var d,h,p;const a=[];for(const[y,m]of r){const v=(d=o.get(y))==null?void 0:d.internals.userNode;v&&a.push({...v,position:m.position,dragging:l})}if(!t)return[a[0],a];const c=(h=o.get(t))==null?void 0:h.internals.userNode;return[c?{...c,position:((p=r.get(t))==null?void 0:p.position)||c.position,dragging:l}:a[0],a]}function t1({dragItems:t,snapGrid:r,x:o,y:l}){const a=t.values().next().value;if(!a)return null;const c={x:o-a.distance.x,y:l-a.distance.y},d=vo(c,r);return{x:d.x-c.x,y:d.y-c.y}}function n1({onNodeMouseDown:t,getStoreItems:r,onDragStart:o,onDrag:l,onDragStop:a}){let c={x:null,y:null},d=0,h=new Map,p=!1,y={x:0,y:0},m=null,v=!1,g=null,S=!1,_=!1,M=null;function k({noDragClassName:z,handleSelector:N,domNode:P,isSelectable:b,nodeId:$,nodeClickDistance:H=0}){g=zt(P);function X({x:te,y:J}){const{nodeLookup:C,nodeExtent:B,snapGrid:F,snapToGrid:V,nodeOrigin:A,onNodeDrag:L,onSelectionDrag:O,onError:j,updateNodePositions:T}=r();c={x:te,y:J};let ee=!1;const re=h.size>1,ue=re&&B?Vu(yo(h)):null,de=re&&V?t1({dragItems:h,snapGrid:F,x:te,y:J}):null;for(const[ce,Q]of h){if(!C.has(ce))continue;let se={x:te-Q.distance.x,y:J-Q.distance.y};V&&(se=de?{x:Math.round(se.x+de.x),y:Math.round(se.y+de.y)}:vo(se,F));let pe=null;if(re&&B&&!Q.extent&&ue){const{positionAbsolute:me}=Q.internals,Ce=me.x-ue.x+B[0][0],Me=me.x+Q.measured.width-ue.x2+B[1][0],Pe=me.y-ue.y+B[0][1],ze=me.y+Q.measured.height-ue.y2+B[1][1];pe=[[Ce,Pe],[Me,ze]]}const{position:Se,positionAbsolute:ve}=Hp({nodeId:ce,nextPosition:se,nodeLookup:C,nodeExtent:pe||B,nodeOrigin:A,onError:j});ee=ee||Q.position.x!==Se.x||Q.position.y!==Se.y,Q.position=Se,Q.internals.positionAbsolute=ve}if(_=_||ee,!!ee&&(T(h,!0),M&&(l||L||!$&&O))){const[ce,Q]=Eu({nodeId:$,dragItems:h,nodeLookup:C});l==null||l(M,h,ce,Q),L==null||L(M,ce,Q),$||O==null||O(M,Q)}}async function K(){if(!m)return;const{transform:te,panBy:J,autoPanSpeed:C,autoPanOnNodeDrag:B}=r();if(!B){p=!1,cancelAnimationFrame(d);return}const[F,V]=ic(y,m,C);(F!==0||V!==0)&&(c.x=(c.x??0)-F/te[2],c.y=(c.y??0)-V/te[2],await J({x:F,y:V})&&X(c)),d=requestAnimationFrame(K)}function ne(te){var re;const{nodeLookup:J,multiSelectionActive:C,nodesDraggable:B,transform:F,snapGrid:V,snapToGrid:A,selectNodesOnDrag:L,onNodeDragStart:O,onSelectionDragStart:j,unselectNodesAndEdges:T}=r();v=!0,(!L||!b)&&!C&&$&&((re=J.get($))!=null&&re.selected||T()),b&&L&&$&&(t==null||t($));const ee=to(te.sourceEvent,{transform:F,snapGrid:V,snapToGrid:A,containerBounds:m});if(c=ee,h=e1(J,B,ee,$),h.size>0&&(o||O||!$&&j)){const[ue,de]=Eu({nodeId:$,dragItems:h,nodeLookup:J});o==null||o(te.sourceEvent,h,ue,de),O==null||O(te.sourceEvent,ue,de),$||j==null||j(te.sourceEvent,de)}}const Z=wp().clickDistance(H).on("start",te=>{const{domNode:J,nodeDragThreshold:C,transform:B,snapGrid:F,snapToGrid:V}=r();m=(J==null?void 0:J.getBoundingClientRect())||null,S=!1,_=!1,M=te.sourceEvent,C===0&&ne(te),c=to(te.sourceEvent,{transform:B,snapGrid:F,snapToGrid:V,containerBounds:m}),y=Gt(te.sourceEvent,m)}).on("drag",te=>{const{autoPanOnNodeDrag:J,transform:C,snapGrid:B,snapToGrid:F,nodeDragThreshold:V,nodeLookup:A}=r(),L=to(te.sourceEvent,{transform:C,snapGrid:B,snapToGrid:F,containerBounds:m});if(M=te.sourceEvent,(te.sourceEvent.type==="touchmove"&&te.sourceEvent.touches.length>1||$&&!A.has($))&&(S=!0),!S){if(!p&&J&&v&&(p=!0,K()),!v){const O=Gt(te.sourceEvent,m),j=O.x-y.x,T=O.y-y.y;Math.sqrt(j*j+T*T)>V&&ne(te)}(c.x!==L.xSnapped||c.y!==L.ySnapped)&&h&&v&&(y=Gt(te.sourceEvent,m),X(L))}}).on("end",te=>{if(!v||S){S&&h.size>0&&r().updateNodePositions(h,!1);return}if(p=!1,v=!1,cancelAnimationFrame(d),h.size>0){const{nodeLookup:J,updateNodePositions:C,onNodeDragStop:B,onSelectionDragStop:F}=r();if(_&&(C(h,!1),_=!1),a||B||!$&&F){const[V,A]=Eu({nodeId:$,dragItems:h,nodeLookup:J,dragging:!1});a==null||a(te.sourceEvent,h,V,A),B==null||B(te.sourceEvent,V,A),$||F==null||F(te.sourceEvent,A)}}}).filter(te=>{const J=te.target;return!te.button&&(!z||!Sh(J,`.${z}`,P))&&(!N||Sh(J,N,P))});g.call(Z)}function E(){g==null||g.on(".drag",null)}return{update:k,destroy:E}}function r1(t,r,o){const l=[],a={x:t.x-o,y:t.y-o,width:o*2,height:o*2};for(const c of r.values())ll(a,ao(c))>0&&l.push(c);return l}const i1=250;function o1(t,r,o,l){var h,p;let a=[],c=1/0;const d=r1(t,o,r+i1);for(const y of d){const m=[...((h=y.internals.handleBounds)==null?void 0:h.source)??[],...((p=y.internals.handleBounds)==null?void 0:p.target)??[]];for(const v of m){if(l.nodeId===v.nodeId&&l.type===v.type&&l.id===v.id)continue;const{x:g,y:S}=wr(y,v,v.position,!0),_=Math.sqrt(Math.pow(g-t.x,2)+Math.pow(S-t.y,2));_>r||(_1){const y=l.type==="source"?"target":"source";return a.find(m=>m.type===y)??a[0]}return a[0]}function og(t,r,o,l,a,c=!1){var y,m,v;const d=l.get(t);if(!d)return null;const h=a==="strict"?(y=d.internals.handleBounds)==null?void 0:y[r]:[...((m=d.internals.handleBounds)==null?void 0:m.source)??[],...((v=d.internals.handleBounds)==null?void 0:v.target)??[]],p=(o?h==null?void 0:h.find(g=>g.id===o):h==null?void 0:h[0])??null;return p&&c?{...p,...wr(d,p,p.position,!0)}:p}function sg(t,r){return t||(r!=null&&r.classList.contains("target")?"target":r!=null&&r.classList.contains("source")?"source":null)}function s1(t,r){let o=null;return r?o=!0:t&&!r&&(o=!1),o}const lg=()=>!0;function l1(t,{connectionMode:r,connectionRadius:o,handleId:l,nodeId:a,edgeUpdaterType:c,isTarget:d,domNode:h,nodeLookup:p,lib:y,autoPanOnConnect:m,flowId:v,panBy:g,cancelConnection:S,onConnectStart:_,onConnect:M,onConnectEnd:k,isValidConnection:E=lg,onReconnectEnd:z,updateConnection:N,getTransform:P,getFromHandle:b,autoPanSpeed:$,dragThreshold:H=1,handleDomNode:X}){const K=Qp(t.target);let ne=0,Z;const{x:te,y:J}=Gt(t),C=sg(c,X),B=h==null?void 0:h.getBoundingClientRect();let F=!1;if(!B||!C)return;const V=og(a,C,l,p,r);if(!V)return;let A=Gt(t,B),L=!1,O=null,j=!1,T=null;function ee(){if(!m||!B)return;const[Se,ve]=ic(A,B,$);g({x:Se,y:ve}),ne=requestAnimationFrame(ee)}const re={...V,nodeId:a,type:C,position:V.position},ue=p.get(a);let ce={inProgress:!0,isValid:null,from:wr(ue,re,_e.Left,!0),fromHandle:re,fromPosition:re.position,fromNode:ue,to:A,toHandle:null,toPosition:uh[re.position],toNode:null,pointer:A};function Q(){F=!0,N(ce),_==null||_(t,{nodeId:a,handleId:l,handleType:C})}H===0&&Q();function se(Se){if(!F){const{x:ze,y:Ze}=Gt(Se),lt=ze-te,Je=Ze-J;if(!(lt*lt+Je*Je>H*H))return;Q()}if(!b()||!re){pe(Se);return}const ve=P();A=Gt(Se,B),Z=o1(xo(A,ve,!1,[1,1]),o,p,re),L||(ee(),L=!0);const me=ag(Se,{handle:Z,connectionMode:r,fromNodeId:a,fromHandleId:l,fromType:d?"target":"source",isValidConnection:E,doc:K,lib:y,flowId:v,nodeLookup:p});T=me.handleDomNode,O=me.connection,j=s1(!!Z,me.isValid);const Ce=p.get(a),Me=Ce?wr(Ce,re,_e.Left,!0):ce.from,Pe={...ce,from:Me,isValid:j,to:me.toHandle&&j?ii({x:me.toHandle.x,y:me.toHandle.y},ve):A,toHandle:me.toHandle,toPosition:j&&me.toHandle?me.toHandle.position:uh[re.position],toNode:me.toHandle?p.get(me.toHandle.nodeId):null,pointer:A};N(Pe),ce=Pe}function pe(Se){if(!("touches"in Se&&Se.touches.length>0)){if(F){(Z||T)&&O&&j&&(M==null||M(O));const{inProgress:ve,...me}=ce,Ce={...me,toPosition:ce.toHandle?ce.toPosition:null};k==null||k(Se,Ce),c&&(z==null||z(Se,Ce))}S(),cancelAnimationFrame(ne),L=!1,j=!1,O=null,T=null,K.removeEventListener("mousemove",se),K.removeEventListener("mouseup",pe),K.removeEventListener("touchmove",se),K.removeEventListener("touchend",pe)}}K.addEventListener("mousemove",se),K.addEventListener("mouseup",pe),K.addEventListener("touchmove",se),K.addEventListener("touchend",pe)}function ag(t,{handle:r,connectionMode:o,fromNodeId:l,fromHandleId:a,fromType:c,doc:d,lib:h,flowId:p,isValidConnection:y=lg,nodeLookup:m}){const v=c==="target",g=r?d.querySelector(`.${h}-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:S,y:_}=Gt(t),M=d.elementFromPoint(S,_),k=M!=null&&M.classList.contains(`${h}-flow__handle`)?M:g,E={handleDomNode:k,isValid:!1,connection:null,toHandle:null};if(k){const z=sg(void 0,k),N=k.getAttribute("data-nodeid"),P=k.getAttribute("data-handleid"),b=k.classList.contains("connectable"),$=k.classList.contains("connectableend");if(!N||!z)return E;const H={source:v?N:l,sourceHandle:v?P:a,target:v?l:N,targetHandle:v?a:P};E.connection=H;const K=b&&$&&(o===ni.Strict?v&&z==="source"||!v&&z==="target":N!==l||P!==a);E.isValid=K&&y(H),E.toHandle=og(N,z,P,m,o,!0)}return E}const Yu={onPointerDown:l1,isValid:ag};function a1({domNode:t,panZoom:r,getTransform:o,getViewScale:l}){const a=zt(t);function c({translateExtent:h,width:p,height:y,zoomStep:m=1,pannable:v=!0,zoomable:g=!0,inversePan:S=!1}){const _=N=>{if(N.sourceEvent.type!=="wheel"||!r)return;const P=o(),b=N.sourceEvent.ctrlKey&&uo()?10:1,$=-N.sourceEvent.deltaY*(N.sourceEvent.deltaMode===1?.05:N.sourceEvent.deltaMode?1:.002)*m,H=P[2]*Math.pow(2,$*b);r.scaleTo(H)};let M=[0,0];const k=N=>{(N.sourceEvent.type==="mousedown"||N.sourceEvent.type==="touchstart")&&(M=[N.sourceEvent.clientX??N.sourceEvent.touches[0].clientX,N.sourceEvent.clientY??N.sourceEvent.touches[0].clientY])},E=N=>{const P=o();if(N.sourceEvent.type!=="mousemove"&&N.sourceEvent.type!=="touchmove"||!r)return;const b=[N.sourceEvent.clientX??N.sourceEvent.touches[0].clientX,N.sourceEvent.clientY??N.sourceEvent.touches[0].clientY],$=[b[0]-M[0],b[1]-M[1]];M=b;const H=l()*Math.max(P[2],Math.log(P[2]))*(S?-1:1),X={x:P[0]-$[0]*H,y:P[1]-$[1]*H},K=[[0,0],[p,y]];r.setViewportConstrained({x:X.x,y:X.y,zoom:P[2]},K,h)},z=Ap().on("start",k).on("zoom",v?E:null).on("zoom.wheel",g?_:null);a.call(z,{})}function d(){a.on("zoom",null)}return{update:c,destroy:d,pointer:Xt}}const vl=t=>({x:t.x,y:t.y,zoom:t.k}),Nu=({x:t,y:r,zoom:o})=>gl.translate(t,r).scale(o),Wn=(t,r)=>t.target.closest(`.${r}`),ug=(t,r)=>r===2&&Array.isArray(t)&&t.includes(2),u1=t=>((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2,Cu=(t,r=0,o=u1,l=()=>{})=>{const a=typeof r=="number"&&r>0;return a||l(),a?t.transition().duration(r).ease(o).on("end",l):t},cg=t=>{const r=t.ctrlKey&&uo()?10:1;return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*r};function c1({zoomPanValues:t,noWheelClassName:r,d3Selection:o,d3Zoom:l,panOnScrollMode:a,panOnScrollSpeed:c,zoomOnPinch:d,onPanZoomStart:h,onPanZoom:p,onPanZoomEnd:y}){return m=>{if(Wn(m,r))return m.ctrlKey&&m.preventDefault(),!1;m.preventDefault(),m.stopImmediatePropagation();const v=o.property("__zoom").k||1;if(m.ctrlKey&&d){const k=Xt(m),E=cg(m),z=v*Math.pow(2,E);l.scaleTo(o,z,k,m);return}const g=m.deltaMode===1?20:1;let S=a===gr.Vertical?0:m.deltaX*g,_=a===gr.Horizontal?0:m.deltaY*g;!uo()&&m.shiftKey&&a!==gr.Vertical&&(S=m.deltaY*g,_=0),l.translateBy(o,-(S/v)*c,-(_/v)*c,{internal:!0});const M=vl(o.property("__zoom"));clearTimeout(t.panScrollTimeout),t.isPanScrolling?p==null||p(m,M):(t.isPanScrolling=!0,h==null||h(m,M)),t.panScrollTimeout=setTimeout(()=>{y==null||y(m,M),t.isPanScrolling=!1},150)}}function d1({noWheelClassName:t,preventScrolling:r,d3ZoomHandler:o}){return function(l,a){const c=l.type==="wheel",d=!r&&c&&!l.ctrlKey,h=Wn(l,t);if(l.ctrlKey&&c&&h&&l.preventDefault(),d||h)return null;l.preventDefault(),o.call(this,l,a)}}function f1({zoomPanValues:t,onDraggingChange:r,onPanZoomStart:o}){return l=>{var c,d,h;if((c=l.sourceEvent)!=null&&c.internal)return;const a=vl(l.transform);t.mouseButton=((d=l.sourceEvent)==null?void 0:d.button)||0,t.isZoomingOrPanning=!0,t.prevViewport=a,((h=l.sourceEvent)==null?void 0:h.type)==="mousedown"&&r(!0),o&&(o==null||o(l.sourceEvent,a))}}function h1({zoomPanValues:t,panOnDrag:r,onPaneContextMenu:o,onTransformChange:l,onPanZoom:a}){return c=>{var d,h;t.usedRightMouseButton=!!(o&&ug(r,t.mouseButton??0)),(d=c.sourceEvent)!=null&&d.sync||l([c.transform.x,c.transform.y,c.transform.k]),a&&!((h=c.sourceEvent)!=null&&h.internal)&&(a==null||a(c.sourceEvent,vl(c.transform)))}}function p1({zoomPanValues:t,panOnDrag:r,panOnScroll:o,onDraggingChange:l,onPanZoomEnd:a,onPaneContextMenu:c}){return d=>{var h;if(!((h=d.sourceEvent)!=null&&h.internal)&&(t.isZoomingOrPanning=!1,c&&ug(r,t.mouseButton??0)&&!t.usedRightMouseButton&&d.sourceEvent&&c(d.sourceEvent),t.usedRightMouseButton=!1,l(!1),a)){const p=vl(d.transform);t.prevViewport=p,clearTimeout(t.timerId),t.timerId=setTimeout(()=>{a==null||a(d.sourceEvent,p)},o?150:0)}}}function g1({panActivationKeyPressed:t,zoomActivationKeyPressed:r,zoomOnScroll:o,zoomOnPinch:l,panOnDrag:a,panOnScroll:c,zoomOnDoubleClick:d,userSelectionActive:h,noWheelClassName:p,noPanClassName:y,lib:m,connectionInProgress:v}){return g=>{var E;const S=r||o,_=l&&g.ctrlKey,M=g.type==="wheel";if(g.button===1&&g.type==="mousedown"&&(Wn(g,`${m}-flow__node`)||Wn(g,`${m}-flow__edge`)||Wn(g,`${m}-flow__selection`)||Wn(g,`${m}-flow__nodesselection`)))return!0;if(!a&&!S&&!c&&!d&&!l||h||v&&!M||Wn(g,p)&&M||Wn(g,y)&&(!M||c&&M&&!r)||!l&&g.ctrlKey&&M)return!1;if(!l&&g.type==="touchstart"&&((E=g.touches)==null?void 0:E.length)>1)return g.preventDefault(),!1;if(!S&&!c&&!_&&M||!a&&(g.type==="mousedown"||g.type==="touchstart")||Array.isArray(a)&&!a.includes(g.button)&&g.type==="mousedown")return!1;const k=Array.isArray(a)&&a.includes(g.button)||!g.button||g.button<=1;return(!g.ctrlKey||M||t)&&k}}function m1({domNode:t,minZoom:r,maxZoom:o,translateExtent:l,viewport:a,onPanZoom:c,onPanZoomStart:d,onPanZoomEnd:h,onDraggingChange:p}){const y={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},m=t.getBoundingClientRect();let v=[[0,0],[m.width,m.height]];const g=typeof ResizeObserver<"u"?new ResizeObserver(J=>{const C=J[0];C&&(v=[[0,0],[C.contentRect.width,C.contentRect.height]])}):null;g==null||g.observe(t);const S=Ap().extent(()=>v).scaleExtent([r,o]).translateExtent(l),_=zt(t).call(S);P({x:a.x,y:a.y,zoom:ri(a.zoom,r,o)},[[0,0],[m.width,m.height]],l);const M=_.on("wheel.zoom"),k=_.on("dblclick.zoom");S.wheelDelta(cg);async function E(J,C){return _?new Promise(B=>{S==null||S.interpolate((C==null?void 0:C.interpolate)==="linear"?eo:Qs).transform(Cu(_,C==null?void 0:C.duration,C==null?void 0:C.ease,()=>B(!0)),J)}):!1}function z({noWheelClassName:J,noPanClassName:C,onPaneContextMenu:B,userSelectionActive:F,panOnScroll:V,panOnDrag:A,panOnScrollMode:L,panOnScrollSpeed:O,preventScrolling:j,zoomOnPinch:T,zoomOnScroll:ee,zoomOnDoubleClick:re,panActivationKeyPressed:ue=!1,zoomActivationKeyPressed:de,lib:ce,onTransformChange:Q,connectionInProgress:se,paneClickDistance:pe,selectionOnDrag:Se}){F&&!y.isZoomingOrPanning&&N();const ve=V&&!de&&!F;S.clickDistance(Se?1/0:!Kt(pe)||pe<0?0:pe);const me=ve?c1({zoomPanValues:y,noWheelClassName:J,d3Selection:_,d3Zoom:S,panOnScrollMode:L,panOnScrollSpeed:O,zoomOnPinch:T,onPanZoomStart:d,onPanZoom:c,onPanZoomEnd:h}):d1({noWheelClassName:J,preventScrolling:j,d3ZoomHandler:M});_.on("wheel.zoom",me,{passive:!1});const Ce=f1({zoomPanValues:y,onDraggingChange:p,onPanZoomStart:d});S.on("start",Ce);const Me=h1({zoomPanValues:y,panOnDrag:A,onPaneContextMenu:!!B,onPanZoom:c,onTransformChange:Q});S.on("zoom",Me);const Pe=p1({zoomPanValues:y,panOnDrag:A,panOnScroll:V,onPaneContextMenu:B,onPanZoomEnd:h,onDraggingChange:p});S.on("end",Pe);const ze=g1({panActivationKeyPressed:ue,zoomActivationKeyPressed:de,panOnDrag:A,zoomOnScroll:ee,panOnScroll:V,zoomOnDoubleClick:re,zoomOnPinch:T,userSelectionActive:F,noPanClassName:C,noWheelClassName:J,lib:ce,connectionInProgress:se});S.filter(ze),re?_.on("dblclick.zoom",k):_.on("dblclick.zoom",null)}function N(){S.on("zoom",null)}async function P(J,C,B){const F=Nu(J),V=S==null?void 0:S.constrain()(F,C,B);return V&&await E(V),V}async function b(J,C){const B=Nu(J);return await E(B,C),B}function $(J){if(_){const C=Nu(J),B=_.property("__zoom");(B.k!==J.zoom||B.x!==J.x||B.y!==J.y)&&(S==null||S.transform(_,C,null,{sync:!0}))}}function H(){const J=_?Lp(_.node()):{x:0,y:0,k:1};return{x:J.x,y:J.y,zoom:J.k}}async function X(J,C){return _?new Promise(B=>{S==null||S.interpolate((C==null?void 0:C.interpolate)==="linear"?eo:Qs).scaleTo(Cu(_,C==null?void 0:C.duration,C==null?void 0:C.ease,()=>B(!0)),J)}):!1}async function K(J,C){return _?new Promise(B=>{S==null||S.interpolate((C==null?void 0:C.interpolate)==="linear"?eo:Qs).scaleBy(Cu(_,C==null?void 0:C.duration,C==null?void 0:C.ease,()=>B(!0)),J)}):!1}function ne(J){S==null||S.scaleExtent(J)}function Z(J){S==null||S.translateExtent(J)}function te(J){const C=!Kt(J)||J<0?0:J;S==null||S.clickDistance(C)}return{update:z,destroy:N,setViewport:b,setViewportConstrained:P,getViewport:H,scaleTo:X,scaleBy:K,setScaleExtent:ne,setTranslateExtent:Z,syncViewport:$,setClickDistance:te}}var oi;(function(t){t.Line="line",t.Handle="handle"})(oi||(oi={}));function y1({width:t,prevWidth:r,height:o,prevHeight:l,affectsX:a,affectsY:c}){const d=t-r,h=o-l,p=[d>0?1:d<0?-1:0,h>0?1:h<0?-1:0];return d&&a&&(p[0]=p[0]*-1),h&&c&&(p[1]=p[1]*-1),p}function _h(t){const r=t.includes("right")||t.includes("left"),o=t.includes("bottom")||t.includes("top"),l=t.includes("left"),a=t.includes("top");return{isHorizontal:r,isVertical:o,affectsX:l,affectsY:a}}function Bn(t,r){return Math.max(0,r-t)}function Un(t,r){return Math.max(0,t-r)}function Us(t,r,o){return Math.max(0,r-t,t-o)}function kh(t,r){return t?!r:r}function v1(t,r,o,l,a,c,d,h){let{affectsX:p,affectsY:y}=r;const{isHorizontal:m,isVertical:v}=r,g=m&&v,{xSnapped:S,ySnapped:_}=o,{minWidth:M,maxWidth:k,minHeight:E,maxHeight:z}=l,{x:N,y:P,width:b,height:$,aspectRatio:H}=t;let X=Math.floor(m?S-t.pointerX:0),K=Math.floor(v?_-t.pointerY:0);const ne=b+(p?-X:X),Z=$+(y?-K:K),te=-c[0]*b,J=-c[1]*$;let C=Us(ne,M,k),B=Us(Z,E,z);if(d){let A=0,L=0;p&&X<0?A=Bn(N+X+te,d[0][0]):!p&&X>0&&(A=Un(N+ne+te,d[1][0])),y&&K<0?L=Bn(P+K+J,d[0][1]):!y&&K>0&&(L=Un(P+Z+J,d[1][1])),C=Math.max(C,A),B=Math.max(B,L)}if(h){let A=0,L=0;p&&X>0?A=Un(N+X,h[0][0]):!p&&X<0&&(A=Bn(N+ne,h[1][0])),y&&K>0?L=Un(P+K,h[0][1]):!y&&K<0&&(L=Bn(P+Z,h[1][1])),C=Math.max(C,A),B=Math.max(B,L)}if(a){if(m){const A=Us(ne/H,E,z)*H;if(C=Math.max(C,A),d){let L=0;!p&&!y||p&&!y&&g?L=Un(P+J+ne/H,d[1][1])*H:L=Bn(P+J+(p?X:-X)/H,d[0][1])*H,C=Math.max(C,L)}if(h){let L=0;!p&&!y||p&&!y&&g?L=Bn(P+ne/H,h[1][1])*H:L=Un(P+(p?X:-X)/H,h[0][1])*H,C=Math.max(C,L)}}if(v){const A=Us(Z*H,M,k)/H;if(B=Math.max(B,A),d){let L=0;!p&&!y||y&&!p&&g?L=Un(N+Z*H+te,d[1][0])/H:L=Bn(N+(y?K:-K)*H+te,d[0][0])/H,B=Math.max(B,L)}if(h){let L=0;!p&&!y||y&&!p&&g?L=Bn(N+Z*H,h[1][0])/H:L=Un(N+(y?K:-K)*H,h[0][0])/H,B=Math.max(B,L)}}}K=K+(K<0?B:-B),X=X+(X<0?C:-C),a&&(g?ne>Z*H?K=(kh(p,y)?-X:X)/H:X=(kh(p,y)?-K:K)*H:m?(K=X/H,y=p):(X=K*H,p=y));const F=p?N+X:N,V=y?P+K:P;return{width:b+(p?-X:X),height:$+(y?-K:K),x:c[0]*X*(p?-1:1)+F,y:c[1]*K*(y?-1:1)+V}}const dg={width:0,height:0,x:0,y:0},x1={...dg,pointerX:0,pointerY:0,aspectRatio:1};function w1(t,r,o){const l=r.position.x+t.position.x,a=r.position.y+t.position.y,c=t.measured.width??0,d=t.measured.height??0,h=o[0]*c,p=o[1]*d;return[[l-h,a-p],[l+c-h,a+d-p]]}function S1({domNode:t,nodeId:r,getStoreItems:o,onChange:l,onEnd:a}){const c=zt(t);let d={controlDirection:_h("bottom-right"),boundaries:{minWidth:0,minHeight:0,maxWidth:Number.MAX_VALUE,maxHeight:Number.MAX_VALUE},resizeDirection:void 0,keepAspectRatio:!1};function h({controlPosition:y,boundaries:m,keepAspectRatio:v,resizeDirection:g,onResizeStart:S,onResize:_,onResizeEnd:M,shouldResize:k}){let E={...dg},z={...x1};d={boundaries:m,resizeDirection:g,keepAspectRatio:v,controlDirection:_h(y)};let N,P=null,b=[],$,H,X,K=!1;const ne=wp().on("start",Z=>{const{nodeLookup:te,transform:J,snapGrid:C,snapToGrid:B,nodeOrigin:F,paneDomNode:V}=o();if(N=te.get(r),!N)return;P=(V==null?void 0:V.getBoundingClientRect())??null;const{xSnapped:A,ySnapped:L}=to(Z.sourceEvent,{transform:J,snapGrid:C,snapToGrid:B,containerBounds:P});E={width:N.measured.width??0,height:N.measured.height??0,x:N.position.x??0,y:N.position.y??0},z={...E,pointerX:A,pointerY:L,aspectRatio:E.width/E.height},$=void 0,H=xr(N.extent)?N.extent:void 0,N.parentId&&(N.extent==="parent"||N.expandParent)&&($=te.get(N.parentId)),$&&N.extent==="parent"&&(H=[[0,0],[$.measured.width,$.measured.height]]),b=[],X=void 0;for(const[O,j]of te)if(j.parentId===r&&(b.push({id:O,position:{...j.position},extent:j.extent}),j.extent==="parent"||j.expandParent)){const T=w1(j,N,j.origin??F);X?X=[[Math.min(T[0][0],X[0][0]),Math.min(T[0][1],X[0][1])],[Math.max(T[1][0],X[1][0]),Math.max(T[1][1],X[1][1])]]:X=T}S==null||S(Z,{...E})}).on("drag",Z=>{const{transform:te,snapGrid:J,snapToGrid:C,nodeOrigin:B}=o(),F=to(Z.sourceEvent,{transform:te,snapGrid:J,snapToGrid:C,containerBounds:P}),V=[];if(!N)return;const{x:A,y:L,width:O,height:j}=E,T={},ee=N.origin??B,{width:re,height:ue,x:de,y:ce}=v1(z,d.controlDirection,F,d.boundaries,d.keepAspectRatio,ee,H,X),Q=re!==O,se=ue!==j,pe=de!==A&&Q,Se=ce!==L&&se;if(!pe&&!Se&&!Q&&!se)return;if((pe||Se||ee[0]===1||ee[1]===1)&&(T.x=pe?de:E.x,T.y=Se?ce:E.y,E.x=T.x,E.y=T.y,b.length>0)){const Me=de-A,Pe=ce-L;for(const ze of b)ze.position={x:ze.position.x-Me+ee[0]*(re-O),y:ze.position.y-Pe+ee[1]*(ue-j)},V.push(ze)}if((Q||se)&&(T.width=Q&&(!d.resizeDirection||d.resizeDirection==="horizontal")?re:E.width,T.height=se&&(!d.resizeDirection||d.resizeDirection==="vertical")?ue:E.height,E.width=T.width,E.height=T.height),$&&N.expandParent){const Me=ee[0]*(T.width??0);T.x&&T.x{K&&(M==null||M(Z,{...E}),a==null||a({...E}),K=!1)});c.call(ne)}function p(){c.on(".drag",null)}return{update:h,destroy:p}}var ju={exports:{}},Mu={},Pu={exports:{}},Iu={};/** * @license React * use-sync-external-store-shim.production.js * @@ -45,7 +45,7 @@ Error generating stack: `+f.message+` * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Eh;function w1(){if(Eh)return Iu;Eh=1;var t=fo();function r(v,g){return v===g&&(v!==0||1/v===1/g)||v!==v&&g!==g}var o=typeof Object.is=="function"?Object.is:r,l=t.useState,a=t.useEffect,c=t.useLayoutEffect,d=t.useDebugValue;function h(v,g){var S=g(),_=l({inst:{value:S,getSnapshot:g}}),M=_[0].inst,k=_[1];return c(function(){M.value=S,M.getSnapshot=g,p(M)&&k({inst:M})},[v,S,g]),a(function(){return p(M)&&k({inst:M}),v(function(){p(M)&&k({inst:M})})},[v]),d(S),S}function p(v){var g=v.getSnapshot;v=v.value;try{var S=g();return!o(v,S)}catch{return!0}}function y(v,g){return g()}var m=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?y:h;return Iu.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:m,Iu}var Nh;function S1(){return Nh||(Nh=1,Pu.exports=w1()),Pu.exports}/** + */var Eh;function _1(){if(Eh)return Iu;Eh=1;var t=fo();function r(v,g){return v===g&&(v!==0||1/v===1/g)||v!==v&&g!==g}var o=typeof Object.is=="function"?Object.is:r,l=t.useState,a=t.useEffect,c=t.useLayoutEffect,d=t.useDebugValue;function h(v,g){var S=g(),_=l({inst:{value:S,getSnapshot:g}}),M=_[0].inst,k=_[1];return c(function(){M.value=S,M.getSnapshot=g,p(M)&&k({inst:M})},[v,S,g]),a(function(){return p(M)&&k({inst:M}),v(function(){p(M)&&k({inst:M})})},[v]),d(S),S}function p(v){var g=v.getSnapshot;v=v.value;try{var S=g();return!o(v,S)}catch{return!0}}function y(v,g){return g()}var m=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?y:h;return Iu.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:m,Iu}var Nh;function k1(){return Nh||(Nh=1,Pu.exports=_1()),Pu.exports}/** * @license React * use-sync-external-store-shim/with-selector.production.js * @@ -53,10 +53,10 @@ Error generating stack: `+f.message+` * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Ch;function _1(){if(Ch)return Mu;Ch=1;var t=fo(),r=S1();function o(y,m){return y===m&&(y!==0||1/y===1/m)||y!==y&&m!==m}var l=typeof Object.is=="function"?Object.is:o,a=r.useSyncExternalStore,c=t.useRef,d=t.useEffect,h=t.useMemo,p=t.useDebugValue;return Mu.useSyncExternalStoreWithSelector=function(y,m,v,g,S){var _=c(null);if(_.current===null){var M={hasValue:!1,value:null};_.current=M}else M=_.current;_=h(function(){function E($){if(!z){if(z=!0,N=$,$=g($),S!==void 0&&M.hasValue){var H=M.value;if(S(H,$))return P=H}return P=$}if(H=P,l(N,$))return H;var X=g($);return S!==void 0&&S(H,X)?(N=$,H):(N=$,P=X)}var z=!1,N,P,b=v===void 0?null:v;return[function(){return E(m())},b===null?void 0:function(){return E(b())}]},[m,v,g,S]);var k=a(y,_[0],_[1]);return d(function(){M.hasValue=!0,M.value=k},[k]),p(k),k},Mu}var jh;function k1(){return jh||(jh=1,ju.exports=_1()),ju.exports}var E1=k1();const N1=np(E1),C1={},Mh=t=>{let r;const o=new Set,l=(m,v)=>{const g=typeof m=="function"?m(r):m;if(!Object.is(g,r)){const S=r;r=v??(typeof g!="object"||g===null)?g:Object.assign({},r,g),o.forEach(_=>_(r,S))}},a=()=>r,p={setState:l,getState:a,getInitialState:()=>y,subscribe:m=>(o.add(m),()=>o.delete(m)),destroy:()=>{(C1?"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."),o.clear()}},y=r=t(l,a,p);return p},j1=t=>t?Mh(t):Mh,{useDebugValue:M1}=I0,{useSyncExternalStoreWithSelector:P1}=N1,I1=t=>t;function cg(t,r=I1,o){const l=P1(t.subscribe,t.getState,t.getServerState||t.getInitialState,r,o);return M1(l),l}const Ph=(t,r)=>{const o=j1(t),l=(a,c=r)=>cg(o,a,c);return Object.assign(l,o),l},T1=(t,r)=>t?Ph(t,r):Ph;function Ue(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[l,a]of t)if(!Object.is(a,r.get(l)))return!1;return!0}if(t instanceof Set&&r instanceof Set){if(t.size!==r.size)return!1;for(const l of t)if(!r.has(l))return!1;return!0}const o=Object.keys(t);if(o.length!==Object.keys(r).length)return!1;for(const l of o)if(!Object.prototype.hasOwnProperty.call(r,l)||!Object.is(t[l],r[l]))return!1;return!0}rp();const xl=W.createContext(null),z1=xl.Provider,dg=qt.error001("react");function Te(t,r){const o=W.useContext(xl);if(o===null)throw new Error(dg);return cg(o,t,r)}function be(){const t=W.useContext(xl);if(t===null)throw new Error(dg);return W.useMemo(()=>({getState:t.getState,setState:t.setState,subscribe:t.subscribe}),[t])}const Ih={display:"none"},R1={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},fg="react-flow__node-desc",hg="react-flow__edge-desc",L1="react-flow__aria-live",A1=t=>t.ariaLiveMessage,$1=t=>t.ariaLabelConfig;function D1({rfId:t}){const r=Te(A1);return x.jsx("div",{id:`${L1}-${t}`,"aria-live":"assertive","aria-atomic":"true",style:R1,children:r})}function O1({rfId:t,disableKeyboardA11y:r}){const o=Te($1);return x.jsxs(x.Fragment,{children:[x.jsx("div",{id:`${fg}-${t}`,style:Ih,children:r?o["node.a11yDescription.default"]:o["node.a11yDescription.keyboardDisabled"]}),x.jsx("div",{id:`${hg}-${t}`,style:Ih,children:o["edge.a11yDescription.default"]}),!r&&x.jsx(D1,{rfId:t})]})}const wl=W.forwardRef(({position:t="top-left",children:r,className:o,style:l,...a},c)=>{const d=`${t}`.split("-");return x.jsx("div",{className:Qe(["react-flow__panel",o,...d]),style:l,ref:c,...a,children:r})});wl.displayName="Panel";const Th="https://reactflow.dev?utm_source=attribution";function b1({proOptions:t,position:r="bottom-right"}){return t!=null&&t.hideAttribution?null:x.jsx(wl,{position:r,className:"react-flow__attribution","data-message":`Please only hide this attribution when you are subscribed to React Flow Pro: ${Th}`,children:x.jsx("a",{href:Th,target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const F1=t=>{const r=[],o=[];for(const[,l]of t.nodeLookup)l.selected&&r.push(l.internals.userNode);for(const[,l]of t.edgeLookup)l.selected&&o.push(l);return{selectedNodes:r,selectedEdges:o}},Ws=t=>t.id;function H1(t,r){return Ue(t.selectedNodes.map(Ws),r.selectedNodes.map(Ws))&&Ue(t.selectedEdges.map(Ws),r.selectedEdges.map(Ws))}function V1({onSelectionChange:t}){const r=be(),{selectedNodes:o,selectedEdges:l}=Te(F1,H1);return W.useEffect(()=>{const a={nodes:o,edges:l};t==null||t(a),r.getState().onSelectionChangeHandlers.forEach(c=>c(a))},[o,l,t]),null}const B1=t=>!!t.onSelectionChangeHandlers;function U1({onSelectionChange:t}){const r=Te(B1);return t||r?x.jsx(V1,{onSelectionChange:t}):null}const pg=[0,0],W1={x:0,y:0,zoom:1},Y1=["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"],zh=[...Y1,"rfId"],X1=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}),Rh={translateExtent:so,nodeOrigin:pg,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function Q1(t){const{setNodes:r,setEdges:o,setMinZoom:l,setMaxZoom:a,setTranslateExtent:c,setNodeExtent:d,reset:h,setDefaultNodesAndEdges:p}=Te(X1,Ue),y=be();W.useEffect(()=>(p(t.defaultNodes,t.defaultEdges),()=>{m.current=Rh,h()}),[]);const m=W.useRef(Rh);return W.useEffect(()=>{for(const v of zh){const g=t[v],S=m.current[v];g!==S&&(typeof t[v]>"u"||(v==="nodes"?r(g):v==="edges"?o(g):v==="minZoom"?l(g):v==="maxZoom"?a(g):v==="translateExtent"?c(g):v==="nodeExtent"?d(g):v==="ariaLabelConfig"?y.setState({ariaLabelConfig:zw(g)}):v==="fitView"?y.setState({fitViewQueued:g}):v==="fitViewOptions"?y.setState({fitViewOptions:g}):y.setState({[v]:g})))}m.current=t},zh.map(v=>t[v])),null}function Lh(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function K1(t){var l;const[r,o]=W.useState(t==="system"?null:t);return W.useEffect(()=>{if(t!=="system"){o(t);return}const a=Lh(),c=()=>o(a!=null&&a.matches?"dark":"light");return c(),a==null||a.addEventListener("change",c),()=>{a==null||a.removeEventListener("change",c)}},[t]),r!==null?r:(l=Lh())!=null&&l.matches?"dark":"light"}const Ah=typeof document<"u"?document:null;function co(t=null,r={target:Ah,actInsideInputWithModifier:!0}){const[o,l]=W.useState(!1),a=W.useRef(!1),c=W.useRef(new Set([])),[d,h]=W.useMemo(()=>{if(t!==null){const y=(Array.isArray(t)?t:[t]).filter(v=>typeof v=="string").map(v=>v.replace(/\+/g,` + */var Ch;function E1(){if(Ch)return Mu;Ch=1;var t=fo(),r=k1();function o(y,m){return y===m&&(y!==0||1/y===1/m)||y!==y&&m!==m}var l=typeof Object.is=="function"?Object.is:o,a=r.useSyncExternalStore,c=t.useRef,d=t.useEffect,h=t.useMemo,p=t.useDebugValue;return Mu.useSyncExternalStoreWithSelector=function(y,m,v,g,S){var _=c(null);if(_.current===null){var M={hasValue:!1,value:null};_.current=M}else M=_.current;_=h(function(){function E($){if(!z){if(z=!0,N=$,$=g($),S!==void 0&&M.hasValue){var H=M.value;if(S(H,$))return P=H}return P=$}if(H=P,l(N,$))return H;var X=g($);return S!==void 0&&S(H,X)?(N=$,H):(N=$,P=X)}var z=!1,N,P,b=v===void 0?null:v;return[function(){return E(m())},b===null?void 0:function(){return E(b())}]},[m,v,g,S]);var k=a(y,_[0],_[1]);return d(function(){M.hasValue=!0,M.value=k},[k]),p(k),k},Mu}var jh;function N1(){return jh||(jh=1,ju.exports=E1()),ju.exports}var C1=N1();const j1=ip(C1),M1={},Mh=t=>{let r;const o=new Set,l=(m,v)=>{const g=typeof m=="function"?m(r):m;if(!Object.is(g,r)){const S=r;r=v??(typeof g!="object"||g===null)?g:Object.assign({},r,g),o.forEach(_=>_(r,S))}},a=()=>r,p={setState:l,getState:a,getInitialState:()=>y,subscribe:m=>(o.add(m),()=>o.delete(m)),destroy:()=>{(M1?"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."),o.clear()}},y=r=t(l,a,p);return p},P1=t=>t?Mh(t):Mh,{useDebugValue:I1}=z0,{useSyncExternalStoreWithSelector:T1}=j1,z1=t=>t;function fg(t,r=z1,o){const l=T1(t.subscribe,t.getState,t.getServerState||t.getInitialState,r,o);return I1(l),l}const Ph=(t,r)=>{const o=P1(t),l=(a,c=r)=>fg(o,a,c);return Object.assign(l,o),l},R1=(t,r)=>t?Ph(t,r):Ph;function Ue(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[l,a]of t)if(!Object.is(a,r.get(l)))return!1;return!0}if(t instanceof Set&&r instanceof Set){if(t.size!==r.size)return!1;for(const l of t)if(!r.has(l))return!1;return!0}const o=Object.keys(t);if(o.length!==Object.keys(r).length)return!1;for(const l of o)if(!Object.prototype.hasOwnProperty.call(r,l)||!Object.is(t[l],r[l]))return!1;return!0}op();const xl=W.createContext(null),L1=xl.Provider,hg=qt.error001("react");function Te(t,r){const o=W.useContext(xl);if(o===null)throw new Error(hg);return fg(o,t,r)}function be(){const t=W.useContext(xl);if(t===null)throw new Error(hg);return W.useMemo(()=>({getState:t.getState,setState:t.setState,subscribe:t.subscribe}),[t])}const Ih={display:"none"},A1={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},pg="react-flow__node-desc",gg="react-flow__edge-desc",$1="react-flow__aria-live",D1=t=>t.ariaLiveMessage,O1=t=>t.ariaLabelConfig;function b1({rfId:t}){const r=Te(D1);return x.jsx("div",{id:`${$1}-${t}`,"aria-live":"assertive","aria-atomic":"true",style:A1,children:r})}function F1({rfId:t,disableKeyboardA11y:r}){const o=Te(O1);return x.jsxs(x.Fragment,{children:[x.jsx("div",{id:`${pg}-${t}`,style:Ih,children:r?o["node.a11yDescription.default"]:o["node.a11yDescription.keyboardDisabled"]}),x.jsx("div",{id:`${gg}-${t}`,style:Ih,children:o["edge.a11yDescription.default"]}),!r&&x.jsx(b1,{rfId:t})]})}const wl=W.forwardRef(({position:t="top-left",children:r,className:o,style:l,...a},c)=>{const d=`${t}`.split("-");return x.jsx("div",{className:Qe(["react-flow__panel",o,...d]),style:l,ref:c,...a,children:r})});wl.displayName="Panel";const Th="https://reactflow.dev?utm_source=attribution";function H1({proOptions:t,position:r="bottom-right"}){return t!=null&&t.hideAttribution?null:x.jsx(wl,{position:r,className:"react-flow__attribution","data-message":`Please only hide this attribution when you are subscribed to React Flow Pro: ${Th}`,children:x.jsx("a",{href:Th,target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const V1=t=>{const r=[],o=[];for(const[,l]of t.nodeLookup)l.selected&&r.push(l.internals.userNode);for(const[,l]of t.edgeLookup)l.selected&&o.push(l);return{selectedNodes:r,selectedEdges:o}},Ws=t=>t.id;function B1(t,r){return Ue(t.selectedNodes.map(Ws),r.selectedNodes.map(Ws))&&Ue(t.selectedEdges.map(Ws),r.selectedEdges.map(Ws))}function U1({onSelectionChange:t}){const r=be(),{selectedNodes:o,selectedEdges:l}=Te(V1,B1);return W.useEffect(()=>{const a={nodes:o,edges:l};t==null||t(a),r.getState().onSelectionChangeHandlers.forEach(c=>c(a))},[o,l,t]),null}const W1=t=>!!t.onSelectionChangeHandlers;function Y1({onSelectionChange:t}){const r=Te(W1);return t||r?x.jsx(U1,{onSelectionChange:t}):null}const mg=[0,0],X1={x:0,y:0,zoom:1},Q1=["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"],zh=[...Q1,"rfId"],K1=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}),Rh={translateExtent:so,nodeOrigin:mg,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function G1(t){const{setNodes:r,setEdges:o,setMinZoom:l,setMaxZoom:a,setTranslateExtent:c,setNodeExtent:d,reset:h,setDefaultNodesAndEdges:p}=Te(K1,Ue),y=be();W.useEffect(()=>(p(t.defaultNodes,t.defaultEdges),()=>{m.current=Rh,h()}),[]);const m=W.useRef(Rh);return W.useEffect(()=>{for(const v of zh){const g=t[v],S=m.current[v];g!==S&&(typeof t[v]>"u"||(v==="nodes"?r(g):v==="edges"?o(g):v==="minZoom"?l(g):v==="maxZoom"?a(g):v==="translateExtent"?c(g):v==="nodeExtent"?d(g):v==="ariaLabelConfig"?y.setState({ariaLabelConfig:Lw(g)}):v==="fitView"?y.setState({fitViewQueued:g}):v==="fitViewOptions"?y.setState({fitViewOptions:g}):y.setState({[v]:g})))}m.current=t},zh.map(v=>t[v])),null}function Lh(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function q1(t){var l;const[r,o]=W.useState(t==="system"?null:t);return W.useEffect(()=>{if(t!=="system"){o(t);return}const a=Lh(),c=()=>o(a!=null&&a.matches?"dark":"light");return c(),a==null||a.addEventListener("change",c),()=>{a==null||a.removeEventListener("change",c)}},[t]),r!==null?r:(l=Lh())!=null&&l.matches?"dark":"light"}const Ah=typeof document<"u"?document:null;function co(t=null,r={target:Ah,actInsideInputWithModifier:!0}){const[o,l]=W.useState(!1),a=W.useRef(!1),c=W.useRef(new Set([])),[d,h]=W.useMemo(()=>{if(t!==null){const y=(Array.isArray(t)?t:[t]).filter(v=>typeof v=="string").map(v=>v.replace(/\+/g,` `).replace(` `,` +`).split(` -`)),m=y.reduce((v,g)=>v.concat(...g),[]);return[y,m]}return[[],[]]},[t]);return W.useEffect(()=>{const p=(r==null?void 0:r.target)??Ah,y=(r==null?void 0:r.actInsideInputWithModifier)??!0;if(t!==null){const m=S=>{var k,E;if(a.current=S.ctrlKey||S.metaKey||S.shiftKey||S.altKey,(!a.current||a.current&&!y)&&Xp(S))return!1;const M=Dh(S.code,h);if(c.current.add(S[M]),$h(d,c.current,!1)){const z=((E=(k=S.composedPath)==null?void 0:k.call(S))==null?void 0:E[0])||S.target,N=(z==null?void 0:z.nodeName)==="BUTTON"||(z==null?void 0:z.nodeName)==="A";r.preventDefault!==!1&&(a.current||!N)&&S.preventDefault(),l(!0)}},v=S=>{const _=Dh(S.code,h);$h(d,c.current,!0)?(l(!1),c.current.clear()):c.current.delete(S[_]),S.key==="Meta"&&c.current.clear(),a.current=!1},g=()=>{c.current.clear(),l(!1)};return p==null||p.addEventListener("keydown",m),p==null||p.addEventListener("keyup",v),window.addEventListener("blur",g),window.addEventListener("contextmenu",g),()=>{p==null||p.removeEventListener("keydown",m),p==null||p.removeEventListener("keyup",v),window.removeEventListener("blur",g),window.removeEventListener("contextmenu",g)}}},[t,l]),o}function $h(t,r,o){return t.filter(l=>o||l.length===r.size).some(l=>l.every(a=>r.has(a)))}function Dh(t,r){return r.includes(t)?"code":"key"}const G1=()=>{const t=be();return W.useMemo(()=>({zoomIn:async r=>{const{panZoom:o}=t.getState();return o?o.scaleBy(1.2,r):!1},zoomOut:async r=>{const{panZoom:o}=t.getState();return o?o.scaleBy(1/1.2,r):!1},zoomTo:async(r,o)=>{const{panZoom:l}=t.getState();return l?l.scaleTo(r,o):!1},getZoom:()=>t.getState().transform[2],setViewport:async(r,o)=>{const{transform:[l,a,c],panZoom:d}=t.getState();return d?(await d.setViewport({x:r.x??l,y:r.y??a,zoom:r.zoom??c},o),!0):!1},getViewport:()=>{const[r,o,l]=t.getState().transform;return{x:r,y:o,zoom:l}},setCenter:async(r,o,l)=>t.getState().setCenter(r,o,l),fitBounds:async(r,o)=>{const{width:l,height:a,minZoom:c,maxZoom:d,panZoom:h}=t.getState(),p=oc(r,l,a,c,d,(o==null?void 0:o.padding)??.1);return h?(await h.setViewport(p,{duration:o==null?void 0:o.duration,ease:o==null?void 0:o.ease,interpolate:o==null?void 0:o.interpolate}),!0):!1},screenToFlowPosition:(r,o={})=>{const{transform:l,snapGrid:a,snapToGrid:c,domNode:d}=t.getState();if(!d)return r;const{x:h,y:p}=d.getBoundingClientRect(),y={x:r.x-h,y:r.y-p},m=o.snapGrid??a,v=o.snapToGrid??c;return xo(y,l,v,m)},flowToScreenPosition:r=>{const{transform:o,domNode:l}=t.getState();if(!l)return r;const{x:a,y:c}=l.getBoundingClientRect(),d=ii(r,o);return{x:d.x+a,y:d.y+c}}}),[])};function gg(t,r){const o=[],l=new Map,a=[];for(const c of t)if(c.type==="add"){a.push(c);continue}else if(c.type==="remove"||c.type==="replace")l.set(c.id,[c]);else{const d=l.get(c.id);d?d.push(c):l.set(c.id,[c])}for(const c of r){const d=l.get(c.id);if(!d){o.push(c);continue}if(d[0].type==="remove")continue;if(d[0].type==="replace"){o.push({...d[0].item});continue}const h={...c};for(const p of d)q1(p,h);o.push(h)}return a.length&&a.forEach(c=>{c.index!==void 0?o.splice(c.index,0,{...c.item}):o.push({...c.item})}),o}function q1(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 Z1(t,r){return gg(t,r)}function J1(t,r){return gg(t,r)}function fr(t,r){return{id:t,type:"select",selected:r}}function qr(t,r=new Set,o=!1){const l=[];for(const[a,c]of t){const d=r.has(a);!(c.selected===void 0&&!d)&&c.selected!==d&&(o&&(c.selected=d),l.push(fr(c.id,d)))}return l}function Oh({items:t=[],lookup:r}){var a;const o=[],l=new Map(t.map(c=>[c.id,c]));for(const[c,d]of t.entries()){const h=r.get(d.id),p=((a=h==null?void 0:h.internals)==null?void 0:a.userNode)??h;p!==void 0&&p!==d&&o.push({id:d.id,item:d,type:"replace"}),p===void 0&&o.push({item:d,type:"add",index:c})}for(const[c]of r)l.get(c)===void 0&&o.push({id:c,type:"remove"});return o}function bh(t){return{id:t.id,type:"remove"}}const eS=Bp();function tS(t,r,o={}){return Ow(t,r,{...o,onError:o.onError??eS})}const Fh=t=>kw(t),nS=t=>Op(t);function mg(t){return W.forwardRef(t)}const yg=typeof window<"u"?W.useLayoutEffect:W.useEffect;function Hh(t){const[r,o]=W.useState(BigInt(0)),[l]=W.useState(()=>rS(()=>o(a=>a+BigInt(1))));return yg(()=>{const a=l.get();a.length&&(t(a),l.reset())},[r]),l}function rS(t){let r=[];return{get:()=>r,reset:()=>{r=[]},push:o=>{r.push(o),t()}}}const vg=W.createContext(null);function iS({children:t}){const r=be(),o=W.useCallback(h=>{const{nodes:p=[],setNodes:y,hasDefaultNodes:m,onNodesChange:v,nodeLookup:g,fitViewQueued:S,onNodesChangeMiddlewareMap:_}=r.getState();let M=p;for(const E of h)M=typeof E=="function"?E(M):E;let k=Oh({items:M,lookup:g});for(const E of _.values())k=E(k);m&&y(M),k.length>0?v==null||v(k):S&&window.requestAnimationFrame(()=>{const{fitViewQueued:E,nodes:z,setNodes:N}=r.getState();E&&N(z)})},[]),l=Hh(o),a=W.useCallback(h=>{const{edges:p=[],setEdges:y,hasDefaultEdges:m,onEdgesChange:v,edgeLookup:g}=r.getState();let S=p;for(const _ of h)S=typeof _=="function"?_(S):_;m?y(S):v&&v(Oh({items:S,lookup:g}))},[]),c=Hh(a),d=W.useMemo(()=>({nodeQueue:l,edgeQueue:c}),[]);return x.jsx(vg.Provider,{value:d,children:t})}function oS(){const t=W.useContext(vg);if(!t)throw new Error("useBatchContext must be used within a BatchProvider");return t}const sS=t=>!!t.panZoom;function fc(){const t=G1(),r=be(),o=oS(),l=Te(sS),a=W.useMemo(()=>{const c=v=>r.getState().nodeLookup.get(v),d=v=>{o.nodeQueue.push(v)},h=v=>{o.edgeQueue.push(v)},p=v=>{var E,z;const{nodeLookup:g,nodeOrigin:S}=r.getState(),_=Fh(v)?v:g.get(v.id),M=_.parentId?Wp(_.position,_.measured,_.parentId,g,S):_.position,k={..._,position:M,width:((E=_.measured)==null?void 0:E.width)??_.width,height:((z=_.measured)==null?void 0:z.height)??_.height};return ao(k)},y=(v,g,S={replace:!1})=>{d(_=>_.map(M=>{if(M.id===v){const k=typeof g=="function"?g(M):g;return S.replace&&Fh(k)?k:{...M,...k}}return M}))},m=(v,g,S={replace:!1})=>{h(_=>_.map(M=>{if(M.id===v){const k=typeof g=="function"?g(M):g;return S.replace&&nS(k)?k:{...M,...k}}return M}))};return{getNodes:()=>r.getState().nodes.map(v=>({...v})),getNode:v=>{var g;return(g=c(v))==null?void 0:g.internals.userNode},getInternalNode:c,getEdges:()=>{const{edges:v=[]}=r.getState();return v.map(g=>({...g}))},getEdge:v=>r.getState().edgeLookup.get(v),setNodes:d,setEdges:h,addNodes:v=>{const g=Array.isArray(v)?v:[v];o.nodeQueue.push(S=>[...S,...g])},addEdges:v=>{const g=Array.isArray(v)?v:[v];o.edgeQueue.push(S=>[...S,...g])},toObject:()=>{const{nodes:v=[],edges:g=[],transform:S}=r.getState(),[_,M,k]=S;return{nodes:v.map(E=>({...E})),edges:g.map(E=>({...E})),viewport:{x:_,y:M,zoom:k}}},deleteElements:async({nodes:v=[],edges:g=[]})=>{const{nodes:S,edges:_,onNodesDelete:M,onEdgesDelete:k,triggerNodeChanges:E,triggerEdgeChanges:z,onDelete:N,onBeforeDelete:P}=r.getState(),{nodes:b,edges:$}=await Mw({nodesToRemove:v,edgesToRemove:g,nodes:S,edges:_,onBeforeDelete:P}),H=$.length>0,X=b.length>0;if(H){const K=$.map(bh);k==null||k($),z(K)}if(X){const K=b.map(bh);M==null||M(b),E(K)}return(X||H)&&(N==null||N({nodes:b,edges:$})),{deletedNodes:b,deletedEdges:$}},getIntersectingNodes:(v,g=!0,S)=>{const _=dh(v),M=_?v:p(v),k=S!==void 0;return M?(S||r.getState().nodes).filter(E=>{const z=r.getState().nodeLookup.get(E.id);if(z&&!_&&(E.id===v.id||!z.internals.positionAbsolute))return!1;const N=ao(k?E:z),P=ll(N,M);return g&&P>0||P>=N.width*N.height||P>=M.width*M.height}):[]},isNodeIntersecting:(v,g,S=!0)=>{const M=dh(v)?v:p(v);if(!M)return!1;const k=ll(M,g);return S&&k>0||k>=g.width*g.height||k>=M.width*M.height},updateNode:y,updateNodeData:(v,g,S={replace:!1})=>{y(v,_=>{const M=typeof g=="function"?g(_):g;return S.replace?{..._,data:M}:{..._,data:{..._.data,...M}}},S)},updateEdge:m,updateEdgeData:(v,g,S={replace:!1})=>{m(v,_=>{const M=typeof g=="function"?g(_):g;return S.replace?{..._,data:M}:{..._,data:{..._.data,...M}}},S)},getNodesBounds:v=>{const{nodeLookup:g,nodeOrigin:S}=r.getState();return Ew(v,{nodeLookup:g,nodeOrigin:S})},getHandleConnections:({type:v,id:g,nodeId:S})=>{var _;return Array.from(((_=r.getState().connectionLookup.get(`${S}-${v}${g?`-${g}`:""}`))==null?void 0:_.values())??[])},getNodeConnections:({type:v,handleId:g,nodeId:S})=>{var _;return Array.from(((_=r.getState().connectionLookup.get(`${S}${v?g?`-${v}-${g}`:`-${v}`:""}`))==null?void 0:_.values())??[])},fitView:async v=>{const g=r.getState().fitViewResolver??Tw();return r.setState({fitViewQueued:!0,fitViewOptions:v,fitViewResolver:g}),o.nodeQueue.push(S=>[...S]),g.promise}}},[]);return W.useMemo(()=>({...a,...t,viewportInitialized:l}),[l])}const Vh=t=>t.selected,lS=typeof window<"u"?window:void 0;function aS({deleteKeyCode:t,multiSelectionKeyCode:r}){const o=be(),{deleteElements:l}=fc(),a=co(t,{actInsideInputWithModifier:!1}),c=co(r,{target:lS});W.useEffect(()=>{if(a){const{edges:d,nodes:h}=o.getState();l({nodes:h.filter(Vh),edges:d.filter(Vh)}),o.setState({nodesSelectionActive:!1})}},[a]),W.useEffect(()=>{o.setState({multiSelectionActive:c})},[c])}function uS(t){const r=be();W.useEffect(()=>{const o=()=>{var a,c,d,h;if(!t.current||!(((c=(a=t.current).checkVisibility)==null?void 0:c.call(a))??!0))return!1;const l=sc(t.current);(l.height===0||l.width===0)&&((h=(d=r.getState()).onError)==null||h.call(d,"004",qt.error004())),r.setState({width:l.width||500,height:l.height||500})};if(t.current){o(),window.addEventListener("resize",o);const l=new ResizeObserver(()=>o());return l.observe(t.current),()=>{window.removeEventListener("resize",o),l&&t.current&&l.unobserve(t.current)}}},[])}const Sl={position:"absolute",width:"100%",height:"100%",top:0,left:0},cS=t=>({userSelectionActive:t.userSelectionActive,lib:t.lib,connectionInProgress:t.connection.inProgress});function dS({onPaneContextMenu:t,zoomOnScroll:r=!0,zoomOnPinch:o=!0,panOnScroll:l=!1,panActivationKeyPressed:a,panOnScrollSpeed:c=.5,panOnScrollMode:d=gr.Free,zoomOnDoubleClick:h=!0,panOnDrag:p=!0,defaultViewport:y,translateExtent:m,minZoom:v,maxZoom:g,zoomActivationKeyCode:S,preventScrolling:_=!0,children:M,noWheelClassName:k,noPanClassName:E,onViewportChange:z,isControlledViewport:N,paneClickDistance:P,selectionOnDrag:b}){const $=be(),H=W.useRef(null),{userSelectionActive:X,lib:K,connectionInProgress:ne}=Te(cS,Ue),Z=co(S),te=W.useRef();uS(H);const J=W.useCallback(C=>{z==null||z({x:C[0],y:C[1],zoom:C[2]}),N||$.setState({transform:C})},[z,N]);return W.useEffect(()=>{if(H.current){te.current=p1({domNode:H.current,minZoom:v,maxZoom:g,translateExtent:m,viewport:y,onDraggingChange:V=>$.setState(A=>A.paneDragging===V?A:{paneDragging:V}),onPanZoomStart:(V,A)=>{const{onViewportChangeStart:L,onMoveStart:O}=$.getState();O==null||O(V,A),L==null||L(A)},onPanZoom:(V,A)=>{const{onViewportChange:L,onMove:O}=$.getState();O==null||O(V,A),L==null||L(A)},onPanZoomEnd:(V,A)=>{const{onViewportChangeEnd:L,onMoveEnd:O}=$.getState();O==null||O(V,A),L==null||L(A)}});const{x:C,y:B,zoom:F}=te.current.getViewport();return $.setState({panZoom:te.current,transform:[C,B,F],domNode:H.current.closest(".react-flow")}),()=>{var V;(V=te.current)==null||V.destroy()}}},[]),W.useEffect(()=>{var C;(C=te.current)==null||C.update({onPaneContextMenu:t,zoomOnScroll:r,zoomOnPinch:o,panOnScroll:l,panActivationKeyPressed:a,panOnScrollSpeed:c,panOnScrollMode:d,zoomOnDoubleClick:h,panOnDrag:p,zoomActivationKeyPressed:Z,preventScrolling:_,noPanClassName:E,userSelectionActive:X,noWheelClassName:k,lib:K,onTransformChange:J,connectionInProgress:ne,selectionOnDrag:b,paneClickDistance:P})},[t,r,o,l,a,c,d,h,p,Z,_,E,X,k,K,J,ne,b,P]),x.jsx("div",{className:"react-flow__renderer",ref:H,style:Sl,children:M})}const fS=t=>({userSelectionActive:t.userSelectionActive,userSelectionRect:t.userSelectionRect});function hS(){const{userSelectionActive:t,userSelectionRect:r}=Te(fS,Ue);return t&&r?x.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 Tu=(t,r)=>o=>{o.target===r.current&&(t==null||t(o))},pS=t=>({userSelectionActive:t.userSelectionActive,elementsSelectable:t.elementsSelectable,dragging:t.paneDragging,panBy:t.panBy,autoPanSpeed:t.autoPanSpeed});function gS({isSelecting:t,selectionKeyPressed:r,selectionMode:o=lo.Full,panOnDrag:l,autoPanOnSelection:a,paneClickDistance:c,selectionOnDrag:d,onSelectionStart:h,onSelectionEnd:p,onPaneClick:y,onPaneContextMenu:m,onPaneScroll:v,onPaneMouseEnter:g,onPaneMouseMove:S,onPaneMouseLeave:_,children:M}){const k=W.useRef(0),E=be(),{userSelectionActive:z,elementsSelectable:N,dragging:P,panBy:b,autoPanSpeed:$}=Te(pS,Ue),H=N&&(t||z),X=W.useRef(null),K=W.useRef(),ne=W.useRef(new Set),Z=W.useRef(new Set),te=W.useRef(!1),J=W.useRef(!1),C=W.useRef({x:0,y:0}),B=W.useRef(!1),F=Q=>{if(J.current||te.current||E.getState().connection.inProgress){J.current=!1,te.current=!1;return}y==null||y(Q),E.getState().resetSelectedElements(),E.setState({nodesSelectionActive:!1})},V=Q=>{if(Array.isArray(l)&&(l!=null&&l.includes(2))){Q.preventDefault();return}m==null||m(Q)},A=v?Q=>v(Q):void 0,L=Q=>{J.current&&(Q.stopPropagation(),J.current=!1)},O=Q=>{var ze,Ze;if(Q.pointerType==="touch"&&l!==!1&&!r)return;const{domNode:se,transform:pe}=E.getState();if(K.current=se==null?void 0:se.getBoundingClientRect(),!K.current)return;const Se=Q.target===X.current;if(!Se&&!!Q.target.closest(".nokey")||!t||!(d&&Se||r)||Q.button!==0||!Q.isPrimary)return;(Ze=(ze=Q.target)==null?void 0:ze.setPointerCapture)==null||Ze.call(ze,Q.pointerId),J.current=!1;const{x:Ce,y:Me}=Gt(Q.nativeEvent,K.current),Pe=xo({x:Ce,y:Me},pe);E.setState({userSelectionRect:{width:0,height:0,startX:Pe.x,startY:Pe.y,x:Ce,y:Me}}),Se||(Q.stopPropagation(),Q.preventDefault())};function j(Q,se){const{userSelectionRect:pe}=E.getState();if(!pe)return;const{transform:Se,nodeLookup:ve,edgeLookup:me,connectionLookup:Ce,triggerNodeChanges:Me,triggerEdgeChanges:Pe,defaultEdgeOptions:ze}=E.getState(),Ze={x:pe.startX,y:pe.startY},{x:lt,y:Je}=ii(Ze,Se),et={startX:Ze.x,startY:Ze.y,x:Qit.id)),Z.current=new Set;const Et=(ze==null?void 0:ze.selectable)??!0;for(const it of ne.current){const ft=Ce.get(it);if(ft)for(const{edgeId:q}of ft.values()){const we=me.get(q);we&&(we.selectable??Et)&&Z.current.add(q)}}if(!fh(Lt,ne.current)){const it=qr(ve,ne.current,!0);Me(it)}if(!fh(kt,Z.current)){const it=qr(me,Z.current);Pe(it)}E.setState({userSelectionRect:et,userSelectionActive:!0,nodesSelectionActive:!1})}function T(){if(!a||!K.current)return;const[Q,se]=ic(C.current,K.current,$);b({x:Q,y:se}).then(pe=>{if(!J.current||!pe){k.current=requestAnimationFrame(T);return}const{x:Se,y:ve}=C.current;j(Se,ve),k.current=requestAnimationFrame(T)})}const ee=()=>{cancelAnimationFrame(k.current),k.current=0,B.current=!1};W.useEffect(()=>()=>ee(),[]);const re=Q=>{const{userSelectionRect:se,transform:pe,resetSelectedElements:Se}=E.getState();if(!K.current||!se)return;const{x:ve,y:me}=Gt(Q.nativeEvent,K.current);C.current={x:ve,y:me};const Ce=ii({x:se.startX,y:se.startY},pe);if(!J.current){const Me=r?0:c;if(Math.hypot(ve-Ce.x,me-Ce.y)<=Me)return;Se(),h==null||h(Q)}J.current=!0,B.current||(T(),B.current=!0),j(ve,me)},ue=Q=>{var se,pe;if(!H){Q.target===X.current&&E.getState().connection.inProgress&&(te.current=!0);return}Q.button===0&&((pe=(se=Q.target)==null?void 0:se.releasePointerCapture)==null||pe.call(se,Q.pointerId),!z&&Q.target===X.current&&E.getState().userSelectionRect&&(F==null||F(Q)),E.setState({userSelectionActive:!1,userSelectionRect:null}),J.current&&(p==null||p(Q),E.setState({nodesSelectionActive:ne.current.size>0})),ee())},de=Q=>{var se,pe;(pe=(se=Q.target)==null?void 0:se.releasePointerCapture)==null||pe.call(se,Q.pointerId),ee()},ce=l===!0||Array.isArray(l)&&l.includes(0);return x.jsxs("div",{className:Qe(["react-flow__pane",{draggable:ce,dragging:P,selection:t}]),onClick:H?void 0:Tu(F,X),onContextMenu:Tu(V,X),onWheel:Tu(A,X),onPointerEnter:H?void 0:g,onPointerMove:H?re:S,onPointerUp:ue,onPointerCancel:H?de:void 0,onPointerDownCapture:H?O:void 0,onClickCapture:H?L:void 0,onPointerLeave:_,ref:X,style:Sl,children:[M,x.jsx(hS,{})]})}function Xu({id:t,store:r,unselect:o=!1,nodeRef:l}){const{addSelectedNodes:a,unselectNodesAndEdges:c,multiSelectionActive:d,nodeLookup:h,onError:p}=r.getState(),y=h.get(t);if(!y){p==null||p("012",qt.error012(t));return}r.setState({nodesSelectionActive:!1}),y.selected?(o||y.selected&&d)&&(c({nodes:[y],edges:[]}),requestAnimationFrame(()=>{var m;return(m=l==null?void 0:l.current)==null?void 0:m.blur()})):a([t])}function xg({nodeRef:t,disabled:r=!1,noDragClassName:o,handleSelector:l,nodeId:a,isSelectable:c,nodeClickDistance:d}){const h=be(),[p,y]=W.useState(!1),m=W.useRef();return W.useEffect(()=>{if(!r)return m.current=e1({getStoreItems:()=>h.getState(),onNodeMouseDown:v=>{Xu({id:v,store:h,nodeRef:t})},onDragStart:()=>{y(!0)},onDragStop:()=>{y(!1)}}),()=>{var v;(v=m.current)==null||v.destroy(),m.current=void 0}},[r,h,t]),W.useEffect(()=>{r||!t.current||!m.current||m.current.update({noDragClassName:o,handleSelector:l,domNode:t.current,isSelectable:c,nodeId:a,nodeClickDistance:d})},[o,l,r,c,t,a,d]),p}const mS=t=>r=>r.selected&&(r.draggable||t&&typeof r.draggable>"u");function wg(){const t=be();return W.useCallback(o=>{const{nodeExtent:l,snapToGrid:a,snapGrid:c,nodesDraggable:d,onError:h,updateNodePositions:p,nodeLookup:y,nodeOrigin:m}=t.getState(),v=new Map,g=mS(d),S=a?c[0]:5,_=a?c[1]:5,M=o.direction.x*S*o.factor,k=o.direction.y*_*o.factor;for(const[,E]of y){if(!g(E))continue;let z={x:E.internals.positionAbsolute.x+M,y:E.internals.positionAbsolute.y+k};a&&(z=vo(z,c));const{position:N,positionAbsolute:P}=bp({nodeId:E.id,nextPosition:z,nodeLookup:y,nodeExtent:l,nodeOrigin:m,onError:h});E.position=N,E.internals.positionAbsolute=P,v.set(E.id,E)}p(v)},[])}const hc=W.createContext(null),yS=hc.Provider;hc.Consumer;const Sg=()=>W.useContext(hc),vS=t=>({connectOnClick:t.connectOnClick,noPanClassName:t.noPanClassName,rfId:t.rfId}),_g=W.createContext(null);function xS({children:t}){const r=Te(vS,Ue);return x.jsx(_g.Provider,{value:r,children:t})}function wS(){const t=W.useContext(_g);if(!t)throw new Error("useHandleConfig must be used within a HandleConfigProvider");return t}const SS={connectingFrom:!1,connectingTo:!1,clickConnecting:!1,isPossibleEndHandle:!0,connectionInProcess:!1,clickConnectionInProcess:!1,valid:!1},_S=(t,r,o)=>l=>{const{connectionClickStartHandle:a,connectionMode:c,connection:d}=l,{fromHandle:h,toHandle:p,isValid:y}=d;if(!h&&!a)return SS;const m=(p==null?void 0:p.nodeId)===t&&(p==null?void 0:p.id)===r&&(p==null?void 0:p.type)===o;return{connectingFrom:(h==null?void 0:h.nodeId)===t&&(h==null?void 0:h.id)===r&&(h==null?void 0:h.type)===o,connectingTo:m,clickConnecting:(a==null?void 0:a.nodeId)===t&&(a==null?void 0:a.id)===r&&(a==null?void 0:a.type)===o,isPossibleEndHandle:c===ni.Strict?(h==null?void 0:h.type)!==o:t!==(h==null?void 0:h.nodeId)||r!==(h==null?void 0:h.id),connectionInProcess:!!h,clickConnectionInProcess:!!a,valid:m&&y}};function kS({type:t="source",position:r=_e.Top,isValidConnection:o,isConnectable:l=!0,isConnectableStart:a=!0,isConnectableEnd:c=!0,id:d,onConnect:h,children:p,className:y,onMouseDown:m,onTouchStart:v,...g},S){var B,F;const _=d||null,M=t==="target",k=be(),E=Sg(),{connectOnClick:z,noPanClassName:N,rfId:P}=wS(),{connectingFrom:b,connectingTo:$,clickConnecting:H,isPossibleEndHandle:X,connectionInProcess:K,clickConnectionInProcess:ne,valid:Z}=Te(_S(E,_,t),Ue);E||(F=(B=k.getState()).onError)==null||F.call(B,"010",qt.error010());const te=V=>{const{defaultEdgeOptions:A,onConnect:L,hasDefaultEdges:O}=k.getState(),j={...A,...V};if(O){const{edges:T,setEdges:ee,onError:re}=k.getState();ee(tS(j,T,{onError:re}))}L==null||L(j),h==null||h(j)},J=V=>{if(!E)return;const A=Qp(V.nativeEvent);if(a&&(A&&V.button===0||!A)){const L=k.getState();Yu.onPointerDown(V.nativeEvent,{handleDomNode:V.currentTarget,autoPanOnConnect:L.autoPanOnConnect,connectionMode:L.connectionMode,connectionRadius:L.connectionRadius,domNode:L.domNode,nodeLookup:L.nodeLookup,lib:L.lib,isTarget:M,handleId:_,nodeId:E,flowId:L.rfId,panBy:L.panBy,cancelConnection:L.cancelConnection,onConnectStart:L.onConnectStart,onConnectEnd:(...O)=>{var j,T;return(T=(j=k.getState()).onConnectEnd)==null?void 0:T.call(j,...O)},updateConnection:L.updateConnection,onConnect:te,isValidConnection:o||((...O)=>{var j,T;return((T=(j=k.getState()).isValidConnection)==null?void 0:T.call(j,...O))??!0}),getTransform:()=>k.getState().transform,getFromHandle:()=>k.getState().connection.fromHandle,autoPanSpeed:L.autoPanSpeed,dragThreshold:L.connectionDragThreshold})}A?m==null||m(V):v==null||v(V)},C=V=>{const{onClickConnectStart:A,onClickConnectEnd:L,connectionClickStartHandle:O,connectionMode:j,isValidConnection:T,lib:ee,rfId:re,nodeLookup:ue,connection:de}=k.getState();if(!E||!O&&!a)return;if(!O){A==null||A(V.nativeEvent,{nodeId:E,handleId:_,handleType:t}),k.setState({connectionClickStartHandle:{nodeId:E,type:t,id:_}});return}const ce=Yp(V.target),Q=o||T,{connection:se,isValid:pe}=Yu.isValid(V.nativeEvent,{handle:{nodeId:E,id:_,type:t},connectionMode:j,fromNodeId:O.nodeId,fromHandleId:O.id||null,fromType:O.type,isValidConnection:Q,flowId:re,doc:ce,lib:ee,nodeLookup:ue});pe&&se&&te(se);const Se=structuredClone(de);delete Se.inProgress,Se.toPosition=Se.toHandle?Se.toHandle.position:null,L==null||L(V,Se),k.setState({connectionClickStartHandle:null})};return x.jsx("div",{"data-handleid":_,"data-nodeid":E,"data-handlepos":r,"data-id":`${P}-${E}-${_}-${t}`,className:Qe(["react-flow__handle",`react-flow__handle-${r}`,"nodrag",N,y,{source:!M,target:M,connectable:l,connectablestart:a,connectableend:c,clickconnecting:H,connectingfrom:b,connectingto:$,valid:Z,connectionindicator:l&&(!K||X)&&(K||ne?c:a)}]),onMouseDown:J,onTouchStart:J,onClick:z?C:void 0,ref:S,...g,children:p})}const al=W.memo(mg(kS));function ES({data:t,isConnectable:r,sourcePosition:o=_e.Bottom}){return x.jsxs(x.Fragment,{children:[t==null?void 0:t.label,x.jsx(al,{type:"source",position:o,isConnectable:r})]})}function NS({data:t,isConnectable:r,targetPosition:o=_e.Top,sourcePosition:l=_e.Bottom}){return x.jsxs(x.Fragment,{children:[x.jsx(al,{type:"target",position:o,isConnectable:r}),t==null?void 0:t.label,x.jsx(al,{type:"source",position:l,isConnectable:r})]})}function CS(){return null}function jS({data:t,isConnectable:r,targetPosition:o=_e.Top}){return x.jsxs(x.Fragment,{children:[x.jsx(al,{type:"target",position:o,isConnectable:r}),t==null?void 0:t.label]})}const ul={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},Bh={input:ES,default:NS,output:jS,group:CS};function MS(t){var r,o,l,a;return t.internals.handleBounds===void 0?{width:t.width??t.initialWidth??((r=t.style)==null?void 0:r.width),height:t.height??t.initialHeight??((o=t.style)==null?void 0:o.height)}:{width:t.width??((l=t.style)==null?void 0:l.width),height:t.height??((a=t.style)==null?void 0:a.height)}}const PS=t=>{const{width:r,height:o,x:l,y:a}=yo(t.nodeLookup,{filter:c=>!!c.selected});return{width:Kt(r)?r:null,height:Kt(o)?o:null,userSelectionActive:t.userSelectionActive,transformString:`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]}) translate(${l}px,${a}px)`}};function IS({onSelectionContextMenu:t,noPanClassName:r,disableKeyboardA11y:o}){const l=be(),{width:a,height:c,transformString:d,userSelectionActive:h}=Te(PS,Ue),p=wg(),y=W.useRef(null);W.useEffect(()=>{var S;o||(S=y.current)==null||S.focus({preventScroll:!0})},[o]);const m=!h&&a!==null&&c!==null;if(xg({nodeRef:y,disabled:!m}),!m)return null;const v=t?S=>{const _=l.getState().nodes.filter(M=>M.selected);t(S,_)}:void 0,g=S=>{Object.prototype.hasOwnProperty.call(ul,S.key)&&(S.preventDefault(),p({direction:ul[S.key],factor:S.shiftKey?4:1}))};return x.jsx("div",{className:Qe(["react-flow__nodesselection","react-flow__container",r]),style:{transform:d},children:x.jsx("div",{ref:y,className:"react-flow__nodesselection-rect",onContextMenu:v,tabIndex:o?void 0:-1,onKeyDown:o?void 0:g,style:{width:a,height:c}})})}const Uh=typeof window<"u"?window:void 0,TS=t=>({nodesSelectionActive:t.nodesSelectionActive,userSelectionActive:t.userSelectionActive});function kg({children:t,onPaneClick:r,onPaneMouseEnter:o,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:c,onPaneScroll:d,paneClickDistance:h,deleteKeyCode:p,selectionKeyCode:y,selectionOnDrag:m,selectionMode:v,onSelectionStart:g,onSelectionEnd:S,multiSelectionKeyCode:_,panActivationKeyCode:M,zoomActivationKeyCode:k,elementsSelectable:E,zoomOnScroll:z,zoomOnPinch:N,panOnScroll:P,panOnScrollSpeed:b,panOnScrollMode:$,zoomOnDoubleClick:H,panOnDrag:X,autoPanOnSelection:K,defaultViewport:ne,translateExtent:Z,minZoom:te,maxZoom:J,preventScrolling:C,onSelectionContextMenu:B,noWheelClassName:F,noPanClassName:V,disableKeyboardA11y:A,onViewportChange:L,isControlledViewport:O}){const{nodesSelectionActive:j,userSelectionActive:T}=Te(TS,Ue),ee=co(y,{target:Uh}),re=co(M,{target:Uh}),ue=re||X,de=re||P,ce=m&&ue!==!0,Q=ee||T||ce;return aS({deleteKeyCode:p,multiSelectionKeyCode:_}),x.jsx(dS,{onPaneContextMenu:c,elementsSelectable:E,zoomOnScroll:z,zoomOnPinch:N,panOnScroll:de,panActivationKeyPressed:re,panOnScrollSpeed:b,panOnScrollMode:$,zoomOnDoubleClick:H,panOnDrag:!ee&&ue,defaultViewport:ne,translateExtent:Z,minZoom:te,maxZoom:J,zoomActivationKeyCode:k,preventScrolling:C,noWheelClassName:F,noPanClassName:V,onViewportChange:L,isControlledViewport:O,paneClickDistance:h,selectionOnDrag:ce,children:x.jsxs(gS,{onSelectionStart:g,onSelectionEnd:S,onPaneClick:r,onPaneMouseEnter:o,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:c,onPaneScroll:d,panOnDrag:ue,autoPanOnSelection:K,isSelecting:!!Q,selectionMode:v,selectionKeyPressed:ee,paneClickDistance:h,selectionOnDrag:ce,children:[t,j&&x.jsx(IS,{onSelectionContextMenu:B,noPanClassName:V,disableKeyboardA11y:A})]})})}kg.displayName="FlowRenderer";const zS=W.memo(kg),RS=t=>r=>t?rc(r.nodeLookup,{x:0,y:0,width:r.width,height:r.height},r.transform,!0).map(o=>o.id):Array.from(r.nodeLookup.keys());function LS(t){return Te(W.useCallback(RS(t),[t]),Ue)}const AS=t=>t.updateNodeInternals;function $S(){const t=Te(AS),[r]=W.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(o=>{const l=new Map;o.forEach(a=>{const c=a.target.getAttribute("data-id");l.set(c,{id:c,nodeElement:a.target,force:!0})}),t(l)}));return W.useEffect(()=>()=>{r==null||r.disconnect()},[r]),r}function DS({node:t,nodeType:r,hasDimensions:o,resizeObserver:l}){const a=be(),c=W.useRef(null),d=W.useRef(null),h=W.useRef(t.sourcePosition),p=W.useRef(t.targetPosition),y=W.useRef(r),m=o&&!!t.internals.handleBounds;return W.useEffect(()=>{c.current&&!t.hidden&&(!m||d.current!==c.current)&&(d.current&&(l==null||l.unobserve(d.current)),l==null||l.observe(c.current),d.current=c.current)},[m,t.hidden]),W.useEffect(()=>()=>{d.current&&(l==null||l.unobserve(d.current),d.current=null)},[]),W.useEffect(()=>{if(c.current){const v=y.current!==r,g=h.current!==t.sourcePosition,S=p.current!==t.targetPosition;(v||g||S)&&(y.current=r,h.current=t.sourcePosition,p.current=t.targetPosition,a.getState().updateNodeInternals(new Map([[t.id,{id:t.id,nodeElement:c.current,force:!0}]])))}},[t.id,r,t.sourcePosition,t.targetPosition]),c}function OS({id:t,onClick:r,onMouseEnter:o,onMouseMove:l,onMouseLeave:a,onContextMenu:c,onDoubleClick:d,nodesDraggable:h,elementsSelectable:p,nodesConnectable:y,nodesFocusable:m,resizeObserver:v,noDragClassName:g,noPanClassName:S,disableKeyboardA11y:_,rfId:M,nodeTypes:k,nodeClickDistance:E,onError:z}){const{node:N,internals:P,isParent:b}=Te(Q=>{const se=Q.nodeLookup.get(t),pe=Q.parentLookup.has(t);return{node:se,internals:se.internals,isParent:pe}},Ue);let $=N.type||"default",H=(k==null?void 0:k[$])||Bh[$];H===void 0&&(z==null||z("003",qt.error003($)),$="default",H=(k==null?void 0:k.default)||Bh.default);const X=!!(N.draggable||h&&typeof N.draggable>"u"),K=!!(N.selectable||p&&typeof N.selectable>"u"),ne=!!(N.connectable||y&&typeof N.connectable>"u"),Z=!!(N.focusable||m&&typeof N.focusable>"u"),te=be(),J=Up(N),C=DS({node:N,nodeType:$,hasDimensions:J,resizeObserver:v}),B=xg({nodeRef:C,disabled:N.hidden||!X,noDragClassName:g,handleSelector:N.dragHandle,nodeId:t,isSelectable:K,nodeClickDistance:E}),F=wg();if(N.hidden)return null;const V=Jt(N),A=MS(N),L=K||X||r||o||l||a,O=o?Q=>o(Q,{...P.userNode}):void 0,j=l?Q=>l(Q,{...P.userNode}):void 0,T=a?Q=>a(Q,{...P.userNode}):void 0,ee=c?Q=>c(Q,{...P.userNode}):void 0,re=d?Q=>d(Q,{...P.userNode}):void 0,ue=Q=>{const{selectNodesOnDrag:se,nodeDragThreshold:pe}=te.getState();K&&(!se||!X||pe>0)&&Xu({id:t,store:te,nodeRef:C}),r&&r(Q,{...P.userNode})},de=Q=>{if(!(Xp(Q.nativeEvent)||_)){if(Lp.includes(Q.key)&&K){const se=Q.key==="Escape";Xu({id:t,store:te,unselect:se,nodeRef:C})}else if(X&&N.selected&&Object.prototype.hasOwnProperty.call(ul,Q.key)){Q.preventDefault();const{ariaLabelConfig:se}=te.getState();te.setState({ariaLiveMessage:se["node.a11yDescription.ariaLiveMessage"]({direction:Q.key.replace("Arrow","").toLowerCase(),x:~~P.positionAbsolute.x,y:~~P.positionAbsolute.y})}),F({direction:ul[Q.key],factor:Q.shiftKey?4:1})}}},ce=()=>{var Ce;if(_||!((Ce=C.current)!=null&&Ce.matches(":focus-visible")))return;const{transform:Q,width:se,height:pe,autoPanOnNodeFocus:Se,setCenter:ve}=te.getState();if(!Se)return;rc(new Map([[t,N]]),{x:0,y:0,width:se,height:pe},Q,!0).length>0||ve(N.position.x+V.width/2,N.position.y+V.height/2,{zoom:Q[2]})};return x.jsx("div",{className:Qe(["react-flow__node",`react-flow__node-${$}`,{[S]:X},N.className,{selected:N.selected,selectable:K,parent:b,draggable:X,dragging:B}]),ref:C,style:{zIndex:P.z,transform:`translate(${P.positionAbsolute.x}px,${P.positionAbsolute.y}px)`,pointerEvents:L?"all":"none",visibility:J?"visible":"hidden",...N.style,...A},"data-id":t,"data-testid":`rf__node-${t}`,onMouseEnter:O,onMouseMove:j,onMouseLeave:T,onContextMenu:ee,onClick:ue,onDoubleClick:re,onKeyDown:Z?de:void 0,tabIndex:Z?0:void 0,onFocus:Z?ce:void 0,role:N.ariaRole??(Z?"group":void 0),"aria-roledescription":"node","aria-describedby":_?void 0:`${fg}-${M}`,"aria-label":N.ariaLabel,...N.domAttributes,children:x.jsx(yS,{value:t,children:x.jsx(H,{id:t,data:N.data,type:$,positionAbsoluteX:P.positionAbsolute.x,positionAbsoluteY:P.positionAbsolute.y,selected:N.selected??!1,selectable:K,draggable:X,deletable:N.deletable??!0,isConnectable:ne,sourcePosition:N.sourcePosition,targetPosition:N.targetPosition,dragging:B,dragHandle:N.dragHandle,zIndex:P.z,parentId:N.parentId,...V})})})}var bS=W.memo(OS);const FS=t=>({nodesConnectable:t.nodesConnectable,nodesFocusable:t.nodesFocusable,elementsSelectable:t.elementsSelectable,onError:t.onError});function Eg(t){const{nodesConnectable:r,nodesFocusable:o,elementsSelectable:l,onError:a}=Te(FS,Ue),c=LS(t.onlyRenderVisibleElements),d=$S();return x.jsx("div",{className:"react-flow__nodes",style:Sl,children:c.map(h=>x.jsx(bS,{id:h,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:t.nodesDraggable??!0,nodesConnectable:r,nodesFocusable:o,elementsSelectable:l,nodeClickDistance:t.nodeClickDistance,onError:a},h))})}Eg.displayName="NodeRenderer";const HS=W.memo(Eg);function VS(t){return Te(W.useCallback(o=>{if(!t)return o.edges.map(a=>a.id);const l=[];if(o.width&&o.height)for(const a of o.edges){const c=o.nodeLookup.get(a.source),d=o.nodeLookup.get(a.target);c&&d&&Aw({sourceNode:c,targetNode:d,width:o.width,height:o.height,transform:o.transform})&&l.push(a.id)}return l},[t]),Ue)}const BS=({color:t="none",strokeWidth:r=1})=>{const o={strokeWidth:r,...t&&{stroke:t}};return x.jsx("polyline",{className:"arrow",style:o,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},US=({color:t="none",strokeWidth:r=1})=>{const o={strokeWidth:r,...t&&{stroke:t,fill:t}};return x.jsx("polyline",{className:"arrowclosed",style:o,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})},Wh={[ol.Arrow]:BS,[ol.ArrowClosed]:US};function WS(t){const r=be();return W.useMemo(()=>{var a,c;return Object.prototype.hasOwnProperty.call(Wh,t)?Wh[t]:((c=(a=r.getState()).onError)==null||c.call(a,"009",qt.error009(t)),null)},[t])}const YS=({id:t,type:r,color:o,width:l=12.5,height:a=12.5,markerUnits:c="strokeWidth",strokeWidth:d,orient:h="auto-start-reverse"})=>{const p=WS(r);return p?x.jsx("marker",{className:"react-flow__arrowhead",id:t,markerWidth:`${l}`,markerHeight:`${a}`,viewBox:"-10 -10 20 20",markerUnits:c,orient:h,refX:"0",refY:"0",children:x.jsx(p,{color:o,strokeWidth:d})}):null},Ng=({defaultColor:t,rfId:r})=>{const o=Te(c=>c.edges),l=Te(c=>c.defaultEdgeOptions),a=W.useMemo(()=>Bw(o,{id:r,defaultColor:t,defaultMarkerStart:l==null?void 0:l.markerStart,defaultMarkerEnd:l==null?void 0:l.markerEnd}),[o,l,r,t]);return a.length?x.jsx("svg",{className:"react-flow__marker","aria-hidden":"true",children:x.jsx("defs",{children:a.map(c=>x.jsx(YS,{id:c.id,type:c.type,color:c.color,width:c.width,height:c.height,markerUnits:c.markerUnits,strokeWidth:c.strokeWidth,orient:c.orient},c.id))})}):null};Ng.displayName="MarkerDefinitions";var XS=W.memo(Ng);function Cg({x:t,y:r,label:o,labelStyle:l,labelShowBg:a=!0,labelBgStyle:c,labelBgPadding:d=[2,4],labelBgBorderRadius:h=2,children:p,className:y,...m}){const[v,g]=W.useState({x:1,y:0,width:0,height:0}),S=Qe(["react-flow__edge-textwrapper",y]),_=W.useRef(null);return W.useEffect(()=>{if(_.current){const M=_.current.getBBox();g({x:M.x,y:M.y,width:M.width,height:M.height})}},[o]),o?x.jsxs("g",{transform:`translate(${t-v.width/2} ${r-v.height/2})`,className:S,visibility:v.width?"visible":"hidden",...m,children:[a&&x.jsx("rect",{width:v.width+2*d[0],x:-d[0],y:-d[1],height:v.height+2*d[1],className:"react-flow__edge-textbg",style:c,rx:h,ry:h}),x.jsx("text",{className:"react-flow__edge-text",y:v.height/2,dy:"0.3em",ref:_,style:l,children:o}),p]}):null}Cg.displayName="EdgeText";const QS=W.memo(Cg);function _l({path:t,labelX:r,labelY:o,label:l,labelStyle:a,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:p,interactionWidth:y=20,...m}){return x.jsxs(x.Fragment,{children:[x.jsx("path",{...m,d:t,fill:"none",className:Qe(["react-flow__edge-path",m.className])}),y?x.jsx("path",{d:t,fill:"none",strokeOpacity:0,strokeWidth:y,className:"react-flow__edge-interaction"}):null,l&&Kt(r)&&Kt(o)?x.jsx(QS,{x:r,y:o,label:l,labelStyle:a,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:p}):null]})}function Yh({pos:t,x1:r,y1:o,x2:l,y2:a}){return t===_e.Left||t===_e.Right?[.5*(r+l),o]:[r,.5*(o+a)]}function jg({sourceX:t,sourceY:r,sourcePosition:o=_e.Bottom,targetX:l,targetY:a,targetPosition:c=_e.Top}){const[d,h]=Yh({pos:o,x1:t,y1:r,x2:l,y2:a}),[p,y]=Yh({pos:c,x1:l,y1:a,x2:t,y2:r}),[m,v,g,S]=Kp({sourceX:t,sourceY:r,targetX:l,targetY:a,sourceControlX:d,sourceControlY:h,targetControlX:p,targetControlY:y});return[`M${t},${r} C${d},${h} ${p},${y} ${l},${a}`,m,v,g,S]}function Mg(t){return W.memo(({id:r,sourceX:o,sourceY:l,targetX:a,targetY:c,sourcePosition:d,targetPosition:h,label:p,labelStyle:y,labelShowBg:m,labelBgStyle:v,labelBgPadding:g,labelBgBorderRadius:S,style:_,markerEnd:M,markerStart:k,interactionWidth:E})=>{const[z,N,P]=jg({sourceX:o,sourceY:l,sourcePosition:d,targetX:a,targetY:c,targetPosition:h}),b=t.isInternal?void 0:r;return x.jsx(_l,{id:b,path:z,labelX:N,labelY:P,label:p,labelStyle:y,labelShowBg:m,labelBgStyle:v,labelBgPadding:g,labelBgBorderRadius:S,style:_,markerEnd:M,markerStart:k,interactionWidth:E})})}const KS=Mg({isInternal:!1}),Pg=Mg({isInternal:!0});KS.displayName="SimpleBezierEdge";Pg.displayName="SimpleBezierEdgeInternal";function Ig(t){return W.memo(({id:r,sourceX:o,sourceY:l,targetX:a,targetY:c,label:d,labelStyle:h,labelShowBg:p,labelBgStyle:y,labelBgPadding:m,labelBgBorderRadius:v,style:g,sourcePosition:S=_e.Bottom,targetPosition:_=_e.Top,markerEnd:M,markerStart:k,pathOptions:E,interactionWidth:z})=>{const[N,P,b]=Bu({sourceX:o,sourceY:l,sourcePosition:S,targetX:a,targetY:c,targetPosition:_,borderRadius:E==null?void 0:E.borderRadius,offset:E==null?void 0:E.offset,stepPosition:E==null?void 0:E.stepPosition}),$=t.isInternal?void 0:r;return x.jsx(_l,{id:$,path:N,labelX:P,labelY:b,label:d,labelStyle:h,labelShowBg:p,labelBgStyle:y,labelBgPadding:m,labelBgBorderRadius:v,style:g,markerEnd:M,markerStart:k,interactionWidth:z})})}const Tg=Ig({isInternal:!1}),zg=Ig({isInternal:!0});Tg.displayName="SmoothStepEdge";zg.displayName="SmoothStepEdgeInternal";function Rg(t){return W.memo(({id:r,...o})=>{var a;const l=t.isInternal?void 0:r;return x.jsx(Tg,{...o,id:l,pathOptions:W.useMemo(()=>{var c;return{borderRadius:0,offset:(c=o.pathOptions)==null?void 0:c.offset}},[(a=o.pathOptions)==null?void 0:a.offset])})})}const GS=Rg({isInternal:!1}),Lg=Rg({isInternal:!0});GS.displayName="StepEdge";Lg.displayName="StepEdgeInternal";function Ag(t){return W.memo(({id:r,sourceX:o,sourceY:l,targetX:a,targetY:c,label:d,labelStyle:h,labelShowBg:p,labelBgStyle:y,labelBgPadding:m,labelBgBorderRadius:v,style:g,markerEnd:S,markerStart:_,interactionWidth:M})=>{const[k,E,z]=Zp({sourceX:o,sourceY:l,targetX:a,targetY:c}),N=t.isInternal?void 0:r;return x.jsx(_l,{id:N,path:k,labelX:E,labelY:z,label:d,labelStyle:h,labelShowBg:p,labelBgStyle:y,labelBgPadding:m,labelBgBorderRadius:v,style:g,markerEnd:S,markerStart:_,interactionWidth:M})})}const qS=Ag({isInternal:!1}),$g=Ag({isInternal:!0});qS.displayName="StraightEdge";$g.displayName="StraightEdgeInternal";function Dg(t){return W.memo(({id:r,sourceX:o,sourceY:l,targetX:a,targetY:c,sourcePosition:d=_e.Bottom,targetPosition:h=_e.Top,label:p,labelStyle:y,labelShowBg:m,labelBgStyle:v,labelBgPadding:g,labelBgBorderRadius:S,style:_,markerEnd:M,markerStart:k,pathOptions:E,interactionWidth:z})=>{const[N,P,b]=Gp({sourceX:o,sourceY:l,sourcePosition:d,targetX:a,targetY:c,targetPosition:h,curvature:E==null?void 0:E.curvature}),$=t.isInternal?void 0:r;return x.jsx(_l,{id:$,path:N,labelX:P,labelY:b,label:p,labelStyle:y,labelShowBg:m,labelBgStyle:v,labelBgPadding:g,labelBgBorderRadius:S,style:_,markerEnd:M,markerStart:k,interactionWidth:z})})}const ZS=Dg({isInternal:!1}),Og=Dg({isInternal:!0});ZS.displayName="BezierEdge";Og.displayName="BezierEdgeInternal";const Xh={default:Og,straight:$g,step:Lg,smoothstep:zg,simplebezier:Pg},Qh={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null,zIndex:void 0},JS=(t,r,o)=>o===_e.Left?t-r:o===_e.Right?t+r:t,e_=(t,r,o)=>o===_e.Top?t-r:o===_e.Bottom?t+r:t,Kh="react-flow__edgeupdater";function Gh({position:t,centerX:r,centerY:o,radius:l=10,onMouseDown:a,onMouseEnter:c,onMouseOut:d,type:h}){return x.jsx("circle",{onMouseDown:a,onMouseEnter:c,onMouseOut:d,className:Qe([Kh,`${Kh}-${h}`]),cx:JS(r,l,t),cy:e_(o,l,t),r:l,stroke:"transparent",fill:"transparent"})}function t_({isReconnectable:t,reconnectRadius:r,edge:o,sourceX:l,sourceY:a,targetX:c,targetY:d,sourcePosition:h,targetPosition:p,onReconnect:y,onReconnectStart:m,onReconnectEnd:v,setReconnecting:g,setUpdateHover:S}){const _=be(),M=(P,b)=>{if(P.button!==0)return;const{autoPanOnConnect:$,domNode:H,connectionMode:X,connectionRadius:K,lib:ne,onConnectStart:Z,cancelConnection:te,nodeLookup:J,rfId:C,panBy:B,updateConnection:F}=_.getState(),V=b.type==="target",A=(j,T)=>{g(!1),v==null||v(j,o,b.type,T)},L=j=>y==null?void 0:y(o,j),O=(j,T)=>{g(!0),m==null||m(P,o,b.type),Z==null||Z(j,T)};Yu.onPointerDown(P.nativeEvent,{autoPanOnConnect:$,connectionMode:X,connectionRadius:K,domNode:H,handleId:b.id,nodeId:b.nodeId,nodeLookup:J,isTarget:V,edgeUpdaterType:b.type,lib:ne,flowId:C,cancelConnection:te,panBy:B,isValidConnection:(...j)=>{var T,ee;return((ee=(T=_.getState()).isValidConnection)==null?void 0:ee.call(T,...j))??!0},onConnect:L,onConnectStart:O,onConnectEnd:(...j)=>{var T,ee;return(ee=(T=_.getState()).onConnectEnd)==null?void 0:ee.call(T,...j)},onReconnectEnd:A,updateConnection:F,getTransform:()=>_.getState().transform,getFromHandle:()=>_.getState().connection.fromHandle,dragThreshold:_.getState().connectionDragThreshold,handleDomNode:P.currentTarget})},k=P=>M(P,{nodeId:o.target,id:o.targetHandle??null,type:"target"}),E=P=>M(P,{nodeId:o.source,id:o.sourceHandle??null,type:"source"}),z=()=>S(!0),N=()=>S(!1);return x.jsxs(x.Fragment,{children:[(t===!0||t==="source")&&x.jsx(Gh,{position:h,centerX:l,centerY:a,radius:r,onMouseDown:k,onMouseEnter:z,onMouseOut:N,type:"source"}),(t===!0||t==="target")&&x.jsx(Gh,{position:p,centerX:c,centerY:d,radius:r,onMouseDown:E,onMouseEnter:z,onMouseOut:N,type:"target"})]})}function n_({id:t,edgesFocusable:r,edgesReconnectable:o,elementsSelectable:l,onClick:a,onDoubleClick:c,onContextMenu:d,onMouseEnter:h,onMouseMove:p,onMouseLeave:y,reconnectRadius:m,onReconnect:v,onReconnectStart:g,onReconnectEnd:S,rfId:_,edgeTypes:M,noPanClassName:k,onError:E,disableKeyboardA11y:z}){let N=Te(ve=>ve.edgeLookup.get(t));const P=Te(ve=>ve.defaultEdgeOptions);N=P?{...P,...N}:N;let b=N.type||"default",$=(M==null?void 0:M[b])||Xh[b];$===void 0&&(E==null||E("011",qt.error011(b)),b="default",$=(M==null?void 0:M.default)||Xh.default);const H=!!(N.focusable||r&&typeof N.focusable>"u"),X=typeof v<"u"&&(N.reconnectable||o&&typeof N.reconnectable>"u"),K=!!(N.selectable||l&&typeof N.selectable>"u"),ne=W.useRef(null),[Z,te]=W.useState(!1),[J,C]=W.useState(!1),B=be(),{zIndex:F=N.zIndex,sourceX:V,sourceY:A,targetX:L,targetY:O,sourcePosition:j,targetPosition:T}=Te(W.useCallback(ve=>{const me=ve.nodeLookup.get(N.source),Ce=ve.nodeLookup.get(N.target);if(!me||!Ce)return Qh;const Me=Vw({id:t,sourceNode:me,targetNode:Ce,sourceHandle:N.sourceHandle||null,targetHandle:N.targetHandle||null,connectionMode:ve.connectionMode,onError:E}),Pe=Lw({selected:N.selected,zIndex:N.zIndex,sourceNode:me,targetNode:Ce,elevateOnSelect:ve.elevateEdgesOnSelect,zIndexMode:ve.zIndexMode});return{...Me||Qh,zIndex:Pe}},[N.source,N.target,N.sourceHandle,N.targetHandle,N.selected,N.zIndex,E]),Ue),ee=W.useMemo(()=>N.markerStart?`url('#${Uu(N.markerStart,_)}')`:void 0,[N.markerStart,_]),re=W.useMemo(()=>N.markerEnd?`url('#${Uu(N.markerEnd,_)}')`:void 0,[N.markerEnd,_]);if(N.hidden||V===null||A===null||L===null||O===null)return null;const ue=ve=>{var Pe;const{addSelectedEdges:me,unselectNodesAndEdges:Ce,multiSelectionActive:Me}=B.getState();K&&(B.setState({nodesSelectionActive:!1}),N.selected&&Me?(Ce({nodes:[],edges:[N]}),(Pe=ne.current)==null||Pe.blur()):me([t])),a&&a(ve,N)},de=c?ve=>{c(ve,{...N})}:void 0,ce=d?ve=>{d(ve,{...N})}:void 0,Q=h?ve=>{h(ve,{...N})}:void 0,se=p?ve=>{p(ve,{...N})}:void 0,pe=y?ve=>{y(ve,{...N})}:void 0,Se=ve=>{var me;if(!z&&Lp.includes(ve.key)&&K){const{unselectNodesAndEdges:Ce,addSelectedEdges:Me}=B.getState();ve.key==="Escape"?((me=ne.current)==null||me.blur(),Ce({edges:[N]})):Me([t])}};return x.jsx("svg",{style:{zIndex:F},children:x.jsxs("g",{className:Qe(["react-flow__edge",`react-flow__edge-${b}`,N.className,k,{selected:N.selected,animated:N.animated,inactive:!K&&!a,updating:Z,selectable:K}]),onClick:ue,onDoubleClick:de,onContextMenu:ce,onMouseEnter:Q,onMouseMove:se,onMouseLeave:pe,onKeyDown:H?Se: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?`${hg}-${_}`:void 0,ref:ne,...N.domAttributes,children:[!J&&x.jsx($,{id:t,source:N.source,target:N.target,type:N.type,selected:N.selected,animated:N.animated,selectable:K,deletable:N.deletable??!0,label:N.label,labelStyle:N.labelStyle,labelShowBg:N.labelShowBg,labelBgStyle:N.labelBgStyle,labelBgPadding:N.labelBgPadding,labelBgBorderRadius:N.labelBgBorderRadius,sourceX:V,sourceY:A,targetX:L,targetY:O,sourcePosition:j,targetPosition:T,data:N.data,style:N.style,sourceHandleId:N.sourceHandle,targetHandleId:N.targetHandle,markerStart:ee,markerEnd:re,pathOptions:"pathOptions"in N?N.pathOptions:void 0,interactionWidth:N.interactionWidth}),X&&x.jsx(t_,{edge:N,isReconnectable:X,reconnectRadius:m,onReconnect:v,onReconnectStart:g,onReconnectEnd:S,sourceX:V,sourceY:A,targetX:L,targetY:O,sourcePosition:j,targetPosition:T,setUpdateHover:te,setReconnecting:C})]})})}var r_=W.memo(n_);const i_=t=>({edgesFocusable:t.edgesFocusable,edgesReconnectable:t.edgesReconnectable,elementsSelectable:t.elementsSelectable,connectionMode:t.connectionMode,onError:t.onError});function bg({defaultMarkerColor:t,onlyRenderVisibleElements:r,rfId:o,edgeTypes:l,noPanClassName:a,onReconnect:c,onEdgeContextMenu:d,onEdgeMouseEnter:h,onEdgeMouseMove:p,onEdgeMouseLeave:y,onEdgeClick:m,reconnectRadius:v,onEdgeDoubleClick:g,onReconnectStart:S,onReconnectEnd:_,disableKeyboardA11y:M}){const{edgesFocusable:k,edgesReconnectable:E,elementsSelectable:z,onError:N}=Te(i_,Ue),P=VS(r);return x.jsxs("div",{className:"react-flow__edges",children:[x.jsx(XS,{defaultColor:t,rfId:o}),P.map(b=>x.jsx(r_,{id:b,edgesFocusable:k,edgesReconnectable:E,elementsSelectable:z,noPanClassName:a,onReconnect:c,onContextMenu:d,onMouseEnter:h,onMouseMove:p,onMouseLeave:y,onClick:m,reconnectRadius:v,onDoubleClick:g,onReconnectStart:S,onReconnectEnd:_,rfId:o,onError:N,edgeTypes:l,disableKeyboardA11y:M},b))]})}bg.displayName="EdgeRenderer";const o_=W.memo(bg),qh=t=>`translate(${t[0]}px,${t[1]}px) scale(${t[2]})`;function s_({children:t}){const r=be(),o=W.useRef(null),[l]=W.useState(()=>r.getState().transform);return yg(()=>{let a=null;const c=()=>{const d=r.getState().transform;a&&d[0]===a[0]&&d[1]===a[1]&&d[2]===a[2]||(a=d,o.current&&(o.current.style.transform=qh(d)))};return c(),r.subscribe(c)},[r]),x.jsx("div",{ref:o,className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:qh(l)},children:t})}function l_(t){const r=fc(),o=W.useRef(!1);W.useEffect(()=>{!o.current&&r.viewportInitialized&&t&&(setTimeout(()=>t(r),1),o.current=!0)},[t,r.viewportInitialized])}const a_=t=>{var r;return(r=t.panZoom)==null?void 0:r.syncViewport};function u_(t){const r=Te(a_),o=be();return W.useEffect(()=>{t&&(r==null||r(t),o.setState({transform:[t.x,t.y,t.zoom]}))},[t,r]),null}function c_(t){return t.connection.inProgress?{...t.connection,to:xo(t.connection.to,t.transform)}:{...t.connection}}function d_(t){return c_}function f_(t){const r=d_();return Te(r,Ue)}const h_=t=>({nodesConnectable:t.nodesConnectable,isValid:t.connection.isValid,inProgress:t.connection.inProgress,width:t.width,height:t.height});function p_({containerStyle:t,style:r,type:o,component:l}){const{nodesConnectable:a,width:c,height:d,isValid:h,inProgress:p}=Te(h_,Ue);return!(c&&a&&p)?null:x.jsx("svg",{style:t,width:c,height:d,className:"react-flow__connectionline react-flow__container",children:x.jsx("g",{className:Qe(["react-flow__connection",Dp(h)]),children:x.jsx(Fg,{style:r,type:o,CustomComponent:l,isValid:h})})})}const Fg=({style:t,type:r=Yn.Bezier,CustomComponent:o,isValid:l})=>{const{inProgress:a,from:c,fromNode:d,fromHandle:h,fromPosition:p,to:y,toNode:m,toHandle:v,toPosition:g,pointer:S}=f_();if(!a)return;if(o)return x.jsx(o,{connectionLineType:r,connectionLineStyle:t,fromNode:d,fromHandle:h,fromX:c.x,fromY:c.y,toX:y.x,toY:y.y,fromPosition:p,toPosition:g,connectionStatus:Dp(l),toNode:m,toHandle:v,pointer:S});let _="";const M={sourceX:c.x,sourceY:c.y,sourcePosition:p,targetX:y.x,targetY:y.y,targetPosition:g};switch(r){case Yn.Bezier:[_]=Gp(M);break;case Yn.SimpleBezier:[_]=jg(M);break;case Yn.Step:[_]=Bu({...M,borderRadius:0});break;case Yn.SmoothStep:[_]=Bu(M);break;default:[_]=Zp(M)}return x.jsx("path",{d:_,fill:"none",className:"react-flow__connection-path",style:t})};Fg.displayName="ConnectionLine";const g_={};function Zh(t=g_){W.useRef(t),be(),W.useEffect(()=>{},[t])}function m_(){be(),W.useRef(!1),W.useEffect(()=>{},[])}function Hg({nodeTypes:t,edgeTypes:r,onInit:o,onNodeClick:l,onEdgeClick:a,onNodeDoubleClick:c,onEdgeDoubleClick:d,onNodeMouseEnter:h,onNodeMouseMove:p,onNodeMouseLeave:y,onNodeContextMenu:m,onSelectionContextMenu:v,onSelectionStart:g,onSelectionEnd:S,connectionLineType:_,connectionLineStyle:M,connectionLineComponent:k,connectionLineContainerStyle:E,selectionKeyCode:z,selectionOnDrag:N,selectionMode:P,multiSelectionKeyCode:b,panActivationKeyCode:$,zoomActivationKeyCode:H,deleteKeyCode:X,onlyRenderVisibleElements:K,elementsSelectable:ne,defaultViewport:Z,translateExtent:te,minZoom:J,maxZoom:C,preventScrolling:B,defaultMarkerColor:F,zoomOnScroll:V,zoomOnPinch:A,panOnScroll:L,panOnScrollSpeed:O,panOnScrollMode:j,zoomOnDoubleClick:T,panOnDrag:ee,autoPanOnSelection:re,onPaneClick:ue,onPaneMouseEnter:de,onPaneMouseMove:ce,onPaneMouseLeave:Q,onPaneScroll:se,onPaneContextMenu:pe,paneClickDistance:Se,nodeClickDistance:ve,onEdgeContextMenu:me,onEdgeMouseEnter:Ce,onEdgeMouseMove:Me,onEdgeMouseLeave:Pe,reconnectRadius:ze,onReconnect:Ze,onReconnectStart:lt,onReconnectEnd:Je,noDragClassName:et,noWheelClassName:Lt,noPanClassName:kt,disableKeyboardA11y:Et,nodeExtent:it,rfId:ft,viewport:q,onViewportChange:we,nodesDraggable:Ae}){return Zh(t),Zh(r),m_(),l_(o),u_(q),x.jsx(zS,{onPaneClick:ue,onPaneMouseEnter:de,onPaneMouseMove:ce,onPaneMouseLeave:Q,onPaneContextMenu:pe,onPaneScroll:se,paneClickDistance:Se,deleteKeyCode:X,selectionKeyCode:z,selectionOnDrag:N,selectionMode:P,onSelectionStart:g,onSelectionEnd:S,multiSelectionKeyCode:b,panActivationKeyCode:$,zoomActivationKeyCode:H,elementsSelectable:ne,zoomOnScroll:V,zoomOnPinch:A,zoomOnDoubleClick:T,panOnScroll:L,panOnScrollSpeed:O,panOnScrollMode:j,panOnDrag:ee,autoPanOnSelection:re,defaultViewport:Z,translateExtent:te,minZoom:J,maxZoom:C,onSelectionContextMenu:v,preventScrolling:B,noDragClassName:et,noWheelClassName:Lt,noPanClassName:kt,disableKeyboardA11y:Et,onViewportChange:we,isControlledViewport:!!q,children:x.jsxs(s_,{children:[x.jsx(o_,{edgeTypes:r,onEdgeClick:a,onEdgeDoubleClick:d,onReconnect:Ze,onReconnectStart:lt,onReconnectEnd:Je,onlyRenderVisibleElements:K,onEdgeContextMenu:me,onEdgeMouseEnter:Ce,onEdgeMouseMove:Me,onEdgeMouseLeave:Pe,reconnectRadius:ze,defaultMarkerColor:F,noPanClassName:kt,disableKeyboardA11y:Et,rfId:ft}),x.jsx(p_,{style:M,type:_,component:k,containerStyle:E}),x.jsx("div",{className:"react-flow__edgelabel-renderer"}),x.jsx(HS,{nodeTypes:t,onNodeClick:l,onNodeDoubleClick:c,onNodeMouseEnter:h,onNodeMouseMove:p,onNodeMouseLeave:y,onNodeContextMenu:m,nodeClickDistance:ve,onlyRenderVisibleElements:K,noPanClassName:kt,noDragClassName:et,disableKeyboardA11y:Et,nodeExtent:it,rfId:ft,nodesDraggable:Ae}),x.jsx("div",{className:"react-flow__viewport-portal"})]})})}Hg.displayName="GraphView";const y_=W.memo(Hg),v_=Bp(),Jh=({nodes:t,edges:r,defaultNodes:o,defaultEdges:l,width:a,height:c,fitView:d,fitViewOptions:h,minZoom:p=.5,maxZoom:y=2,nodeOrigin:m,nodeExtent:v,zIndexMode:g="basic"}={})=>{const S=new Map,_=new Map,M=new Map,k=new Map,E=l??r??[],z=o??t??[],N=m??[0,0],P=v??so;tg(M,k,E);const{nodesInitialized:b}=Wu(z,S,_,{nodeOrigin:N,nodeExtent:P,zIndexMode:g});let $=[0,0,1];if(d&&a&&c){const H=yo(S,{filter:Z=>!!((Z.width||Z.initialWidth)&&(Z.height||Z.initialHeight))}),{x:X,y:K,zoom:ne}=oc(H,a,c,p,y,(h==null?void 0:h.padding)??.1);$=[X,K,ne]}return{rfId:"1",width:a??0,height:c??0,transform:$,nodes:z,nodesInitialized:b,nodeLookup:S,parentLookup:_,edges:E,edgeLookup:k,connectionLookup:M,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:o!==void 0,hasDefaultEdges:l!==void 0,panZoom:null,minZoom:p,maxZoom:y,translateExtent:so,nodeExtent:P,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:ni.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:d??!1,fitViewOptions:h,fitViewResolver:null,connection:{...$p},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:v_,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:Ap,zIndexMode:g,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},x_=({nodes:t,edges:r,defaultNodes:o,defaultEdges:l,width:a,height:c,fitView:d,fitViewOptions:h,minZoom:p,maxZoom:y,nodeOrigin:m,nodeExtent:v,zIndexMode:g})=>T1((S,_)=>{async function M(){const{nodeLookup:k,panZoom:E,fitViewOptions:z,fitViewResolver:N,width:P,height:b,minZoom:$,maxZoom:H}=_();E&&(await jw({nodes:k,width:P,height:b,panZoom:E,minZoom:$,maxZoom:H},z),N==null||N.resolve(!0),S({fitViewResolver:null}))}return{...Jh({nodes:t,edges:r,width:a,height:c,fitView:d,fitViewOptions:h,minZoom:p,maxZoom:y,nodeOrigin:m,nodeExtent:v,defaultNodes:o,defaultEdges:l,zIndexMode:g}),setNodes:k=>{const{nodeLookup:E,parentLookup:z,nodeOrigin:N,nodeExtent:P,elevateNodesOnSelect:b,fitViewQueued:$,zIndexMode:H,nodesSelectionActive:X}=_(),{nodesInitialized:K,hasSelectedNodes:ne}=Wu(k,E,z,{nodeOrigin:N,nodeExtent:P,elevateNodesOnSelect:b,checkEquality:!0,zIndexMode:H}),Z=X&≠$&&K?(M(),S({nodes:k,nodesInitialized:K,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:Z})):S({nodes:k,nodesInitialized:K,nodesSelectionActive:Z})},setEdges:k=>{const{connectionLookup:E,edgeLookup:z}=_();tg(E,z,k),S({edges:k})},setDefaultNodesAndEdges:(k,E)=>{if(k){const{setNodes:z}=_();z(k),S({hasDefaultNodes:!0})}if(E){const{setEdges:z}=_();z(E),S({hasDefaultEdges:!0})}},updateNodeInternals:k=>{const{triggerNodeChanges:E,nodeLookup:z,parentLookup:N,domNode:P,nodeOrigin:b,nodeExtent:$,debug:H,fitViewQueued:X,zIndexMode:K}=_(),{changes:ne,updatedInternals:Z}=Gw(k,z,N,P,b,$,K);Z&&(Yw(z,N,{nodeOrigin:b,nodeExtent:$,zIndexMode:K}),X?(M(),S({fitViewQueued:!1,fitViewOptions:void 0})):S({}),(ne==null?void 0:ne.length)>0&&(H&&console.log("React Flow: trigger node changes",ne),E==null||E(ne)))},updateNodePositions:(k,E=!1)=>{const z=[];let N=[];const{nodeLookup:P,triggerNodeChanges:b,connection:$,updateConnection:H,onNodesChangeMiddlewareMap:X}=_();for(const[K,ne]of k){const Z=P.get(K),te=!!(Z!=null&&Z.expandParent&&(Z!=null&&Z.parentId)&&(ne!=null&&ne.position)),J={id:K,type:"position",position:te?{x:Math.max(0,ne.position.x),y:Math.max(0,ne.position.y)}:ne.position,dragging:E};if(Z&&$.inProgress&&$.fromNode.id===Z.id){const C=wr(Z,$.fromHandle,_e.Left,!0);H({...$,from:C})}te&&Z.parentId&&z.push({id:K,parentId:Z.parentId,rect:{...ne.internals.positionAbsolute,width:ne.measured.width??0,height:ne.measured.height??0}}),N.push(J)}if(z.length>0){const{parentLookup:K,nodeOrigin:ne}=_(),Z=dc(z,P,K,ne);N.push(...Z)}for(const K of X.values())N=K(N);b(N)},triggerNodeChanges:k=>{const{onNodesChange:E,setNodes:z,nodes:N,hasDefaultNodes:P,debug:b}=_();if(k!=null&&k.length){if(P){const $=Z1(k,N);z($)}b&&console.log("React Flow: trigger node changes",k),E==null||E(k)}},triggerEdgeChanges:k=>{const{onEdgesChange:E,setEdges:z,edges:N,hasDefaultEdges:P,debug:b}=_();if(k!=null&&k.length){if(P){const $=J1(k,N);z($)}b&&console.log("React Flow: trigger edge changes",k),E==null||E(k)}},addSelectedNodes:k=>{const{multiSelectionActive:E,edgeLookup:z,nodeLookup:N,triggerNodeChanges:P,triggerEdgeChanges:b}=_();if(E){const $=k.map(H=>fr(H,!0));P($);return}P(qr(N,new Set([...k]),!0)),b(qr(z))},addSelectedEdges:k=>{const{multiSelectionActive:E,edgeLookup:z,nodeLookup:N,triggerNodeChanges:P,triggerEdgeChanges:b}=_();if(E){const $=k.map(H=>fr(H,!0));b($);return}b(qr(z,new Set([...k]))),P(qr(N,new Set,!0))},unselectNodesAndEdges:({nodes:k,edges:E}={})=>{const{edges:z,nodes:N,nodeLookup:P,triggerNodeChanges:b,triggerEdgeChanges:$}=_(),H=k||N,X=E||z,K=[];for(const Z of H){if(!Z.selected)continue;const te=P.get(Z.id);te&&(te.selected=!1),K.push(fr(Z.id,!1))}const ne=[];for(const Z of X)Z.selected&&ne.push(fr(Z.id,!1));b(K),$(ne)},setMinZoom:k=>{const{panZoom:E,maxZoom:z}=_();E==null||E.setScaleExtent([k,z]),S({minZoom:k})},setMaxZoom:k=>{const{panZoom:E,minZoom:z}=_();E==null||E.setScaleExtent([z,k]),S({maxZoom:k})},setTranslateExtent:k=>{var E;(E=_().panZoom)==null||E.setTranslateExtent(k),S({translateExtent:k})},resetSelectedElements:()=>{const{edges:k,nodes:E,triggerNodeChanges:z,triggerEdgeChanges:N,elementsSelectable:P}=_();if(!P)return;const b=E.reduce((H,X)=>X.selected?[...H,fr(X.id,!1)]:H,[]),$=k.reduce((H,X)=>X.selected?[...H,fr(X.id,!1)]:H,[]);z(b),N($)},setNodeExtent:k=>{const{nodes:E,nodeLookup:z,parentLookup:N,nodeOrigin:P,elevateNodesOnSelect:b,nodeExtent:$,zIndexMode:H}=_();k[0][0]===$[0][0]&&k[0][1]===$[0][1]&&k[1][0]===$[1][0]&&k[1][1]===$[1][1]||(Wu(E,z,N,{nodeOrigin:P,nodeExtent:k,elevateNodesOnSelect:b,checkEquality:!1,zIndexMode:H}),S({nodeExtent:k}))},panBy:k=>{const{transform:E,width:z,height:N,panZoom:P,translateExtent:b}=_();return qw({delta:k,panZoom:P,transform:E,translateExtent:b,width:z,height:N})},setCenter:async(k,E,z)=>{const{width:N,height:P,maxZoom:b,panZoom:$}=_();if(!$)return!1;const H=typeof(z==null?void 0:z.zoom)<"u"?z.zoom:b;return await $.setViewport({x:N/2-k*H,y:P/2-E*H,zoom:H},{duration:z==null?void 0:z.duration,ease:z==null?void 0:z.ease,interpolate:z==null?void 0:z.interpolate}),!0},cancelConnection:()=>{S({connection:{...$p}})},updateConnection:k=>{S({connection:k})},reset:()=>S({...Jh()})}},Object.is);function Vg({initialNodes:t,initialEdges:r,defaultNodes:o,defaultEdges:l,initialWidth:a,initialHeight:c,initialMinZoom:d,initialMaxZoom:h,initialFitViewOptions:p,fitView:y,nodeOrigin:m,nodeExtent:v,zIndexMode:g,children:S}){const[_]=W.useState(()=>x_({nodes:t,edges:r,defaultNodes:o,defaultEdges:l,width:a,height:c,fitView:y,minZoom:d,maxZoom:h,fitViewOptions:p,nodeOrigin:m,nodeExtent:v,zIndexMode:g}));return x.jsx(z1,{value:_,children:x.jsx(iS,{children:x.jsx(xS,{children:S})})})}function w_({children:t,nodes:r,edges:o,defaultNodes:l,defaultEdges:a,width:c,height:d,fitView:h,fitViewOptions:p,minZoom:y,maxZoom:m,nodeOrigin:v,nodeExtent:g,zIndexMode:S}){return W.useContext(xl)?x.jsx(x.Fragment,{children:t}):x.jsx(Vg,{initialNodes:r,initialEdges:o,defaultNodes:l,defaultEdges:a,initialWidth:c,initialHeight:d,fitView:h,initialFitViewOptions:p,initialMinZoom:y,initialMaxZoom:m,nodeOrigin:v,nodeExtent:g,zIndexMode:S,children:t})}const S_={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function __({nodes:t,edges:r,defaultNodes:o,defaultEdges:l,className:a,nodeTypes:c,edgeTypes:d,onNodeClick:h,onEdgeClick:p,onInit:y,onMove:m,onMoveStart:v,onMoveEnd:g,onConnect:S,onConnectStart:_,onConnectEnd:M,onClickConnectStart:k,onClickConnectEnd:E,onNodeMouseEnter:z,onNodeMouseMove:N,onNodeMouseLeave:P,onNodeContextMenu:b,onNodeDoubleClick:$,onNodeDragStart:H,onNodeDrag:X,onNodeDragStop:K,onNodesDelete:ne,onEdgesDelete:Z,onDelete:te,onSelectionChange:J,onSelectionDragStart:C,onSelectionDrag:B,onSelectionDragStop:F,onSelectionContextMenu:V,onSelectionStart:A,onSelectionEnd:L,onBeforeDelete:O,connectionMode:j,connectionLineType:T=Yn.Bezier,connectionLineStyle:ee,connectionLineComponent:re,connectionLineContainerStyle:ue,deleteKeyCode:de="Backspace",selectionKeyCode:ce="Shift",selectionOnDrag:Q=!1,selectionMode:se=lo.Full,panActivationKeyCode:pe="Space",multiSelectionKeyCode:Se=uo()?"Meta":"Control",zoomActivationKeyCode:ve=uo()?"Meta":"Control",snapToGrid:me,snapGrid:Ce,onlyRenderVisibleElements:Me=!1,selectNodesOnDrag:Pe,nodesDraggable:ze,autoPanOnNodeFocus:Ze,nodesConnectable:lt,nodesFocusable:Je,nodeOrigin:et=pg,edgesFocusable:Lt,edgesReconnectable:kt,elementsSelectable:Et=!0,defaultViewport:it=W1,minZoom:ft=.5,maxZoom:q=2,translateExtent:we=so,preventScrolling:Ae=!0,nodeExtent:Ke,defaultMarkerColor:un="#b1b1b7",zoomOnScroll:kl=!0,zoomOnPinch:wo=!0,panOnScroll:So=!1,panOnScrollSpeed:El=.5,panOnScrollMode:si=gr.Free,zoomOnDoubleClick:li=!0,panOnDrag:ai=!0,onPaneClick:ui,onPaneMouseEnter:ci,onPaneMouseMove:_n,onPaneMouseLeave:kn,onPaneScroll:_o,onPaneContextMenu:ko,paneClickDistance:Eo=1,nodeClickDistance:No=0,children:Co,onReconnect:di,onReconnectStart:jo,onReconnectEnd:Qn,onEdgeContextMenu:fi,onEdgeDoubleClick:Kn,onEdgeMouseEnter:Nl,onEdgeMouseMove:Gn,onEdgeMouseLeave:Sr,reconnectRadius:_r=10,onNodesChange:hi,onEdgesChange:Cl,noDragClassName:jl="nodrag",noWheelClassName:Ml="nowheel",noPanClassName:en="nopan",fitView:pi,fitViewOptions:gi,connectOnClick:Pl,attributionPosition:Mo,proOptions:Po,defaultEdgeOptions:Io,elevateNodesOnSelect:To=!0,elevateEdgesOnSelect:Il=!1,disableKeyboardA11y:zo=!1,autoPanOnConnect:He,autoPanOnNodeDrag:Tl,autoPanOnSelection:mi=!0,autoPanSpeed:Ro,connectionRadius:kr,isValidConnection:zl,onError:Lo,style:Er,id:Nt,nodeDragThreshold:Rl,connectionDragThreshold:Ct,viewport:Ll,onViewportChange:Al,width:$l,height:Nr,colorMode:Cr="light",debug:qn,onScroll:cn,ariaLabelConfig:Dl,zIndexMode:Ao="basic",...yi},$o){const Zn=Nt||"1",Jn=K1(Cr),Ol=W.useCallback(jr=>{jr.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),cn==null||cn(jr)},[cn]);return x.jsx("div",{"data-testid":"rf__wrapper",...yi,onScroll:Ol,style:{...Er,...S_},ref:$o,className:Qe(["react-flow",a,Jn]),id:Nt,role:"application",children:x.jsxs(w_,{nodes:t,edges:r,width:$l,height:Nr,fitView:pi,fitViewOptions:gi,minZoom:ft,maxZoom:q,nodeOrigin:et,nodeExtent:Ke,zIndexMode:Ao,children:[x.jsx(Q1,{nodes:t,edges:r,defaultNodes:o,defaultEdges:l,onConnect:S,onConnectStart:_,onConnectEnd:M,onClickConnectStart:k,onClickConnectEnd:E,nodesDraggable:ze,autoPanOnNodeFocus:Ze,nodesConnectable:lt,nodesFocusable:Je,edgesFocusable:Lt,edgesReconnectable:kt,elementsSelectable:Et,elevateNodesOnSelect:To,elevateEdgesOnSelect:Il,minZoom:ft,maxZoom:q,nodeExtent:Ke,onNodesChange:hi,onEdgesChange:Cl,snapToGrid:me,snapGrid:Ce,connectionMode:j,translateExtent:we,connectOnClick:Pl,defaultEdgeOptions:Io,fitView:pi,fitViewOptions:gi,onNodesDelete:ne,onEdgesDelete:Z,onDelete:te,onNodeDragStart:H,onNodeDrag:X,onNodeDragStop:K,onSelectionDrag:B,onSelectionDragStart:C,onSelectionDragStop:F,onMove:m,onMoveStart:v,onMoveEnd:g,noPanClassName:en,nodeOrigin:et,rfId:Zn,autoPanOnConnect:He,autoPanOnNodeDrag:Tl,autoPanSpeed:Ro,onError:Lo,connectionRadius:kr,isValidConnection:zl,selectNodesOnDrag:Pe,nodeDragThreshold:Rl,connectionDragThreshold:Ct,onBeforeDelete:O,debug:qn,ariaLabelConfig:Dl,zIndexMode:Ao}),x.jsx(y_,{onInit:y,onNodeClick:h,onEdgeClick:p,onNodeMouseEnter:z,onNodeMouseMove:N,onNodeMouseLeave:P,onNodeContextMenu:b,onNodeDoubleClick:$,nodeTypes:c,edgeTypes:d,connectionLineType:T,connectionLineStyle:ee,connectionLineComponent:re,connectionLineContainerStyle:ue,selectionKeyCode:ce,selectionOnDrag:Q,selectionMode:se,deleteKeyCode:de,multiSelectionKeyCode:Se,panActivationKeyCode:pe,zoomActivationKeyCode:ve,onlyRenderVisibleElements:Me,defaultViewport:it,translateExtent:we,minZoom:ft,maxZoom:q,preventScrolling:Ae,zoomOnScroll:kl,zoomOnPinch:wo,zoomOnDoubleClick:li,panOnScroll:So,panOnScrollSpeed:El,panOnScrollMode:si,panOnDrag:ai,autoPanOnSelection:mi,onPaneClick:ui,onPaneMouseEnter:ci,onPaneMouseMove:_n,onPaneMouseLeave:kn,onPaneScroll:_o,onPaneContextMenu:ko,paneClickDistance:Eo,nodeClickDistance:No,onSelectionContextMenu:V,onSelectionStart:A,onSelectionEnd:L,onReconnect:di,onReconnectStart:jo,onReconnectEnd:Qn,onEdgeContextMenu:fi,onEdgeDoubleClick:Kn,onEdgeMouseEnter:Nl,onEdgeMouseMove:Gn,onEdgeMouseLeave:Sr,reconnectRadius:_r,defaultMarkerColor:un,noDragClassName:jl,noWheelClassName:Ml,noPanClassName:en,rfId:Zn,disableKeyboardA11y:zo,nodeExtent:Ke,viewport:Ll,onViewportChange:Al,nodesDraggable:ze}),x.jsx(U1,{onSelectionChange:J}),Co,x.jsx(b1,{proOptions:Po,position:Mo}),x.jsx(O1,{rfId:Zn,disableKeyboardA11y:zo})]})})}var k_=mg(__);function E_({dimensions:t,lineWidth:r,variant:o,className:l}){return x.jsx("path",{strokeWidth:r,d:`M${t[0]/2} 0 V${t[1]} M0 ${t[1]/2} H${t[0]}`,className:Qe(["react-flow__background-pattern",o,l])})}function N_({radius:t,className:r}){return x.jsx("circle",{cx:t,cy:t,r:t,className:Qe(["react-flow__background-pattern","dots",r])})}var Xn;(function(t){t.Lines="lines",t.Dots="dots",t.Cross="cross"})(Xn||(Xn={}));const C_={[Xn.Dots]:1,[Xn.Lines]:1,[Xn.Cross]:6},j_=t=>({transform:t.transform,patternId:`pattern-${t.rfId}`});function Bg({id:t,variant:r=Xn.Dots,gap:o=20,size:l,lineWidth:a=1,offset:c=0,color:d,bgColor:h,style:p,className:y,patternClassName:m}){const v=W.useRef(null),{transform:g,patternId:S}=Te(j_,Ue),_=l||C_[r],M=r===Xn.Dots,k=r===Xn.Cross,E=Array.isArray(o)?o:[o,o],z=[E[0]*g[2]||1,E[1]*g[2]||1],N=_*g[2],P=Array.isArray(c)?c:[c,c],b=k?[N,N]:z,$=[P[0]*g[2]+b[0]/2,P[1]*g[2]+b[1]/2],H=`${S}${t||""}`;return x.jsxs("svg",{className:Qe(["react-flow__background",y]),style:{...p,...Sl,"--xy-background-color-props":h,"--xy-background-pattern-color-props":d},ref:v,"data-testid":"rf__background",children:[x.jsx("pattern",{id:H,x:g[0]%z[0],y:g[1]%z[1],width:z[0],height:z[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${$[0]},-${$[1]})`,children:M?x.jsx(N_,{radius:N/2,className:m}):x.jsx(E_,{dimensions:b,lineWidth:a,variant:r,className:m})}),x.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${H})`})]})}Bg.displayName="Background";const M_=W.memo(Bg);function P_(){return x.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:x.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function I_(){return x.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:x.jsx("path",{d:"M0 0h32v4.2H0z"})})}function T_(){return x.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children: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 z_(){return x.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children: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 R_(){return x.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children: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 Ys({children:t,className:r,...o}){return x.jsx("button",{type:"button",className:Qe(["react-flow__controls-button",r]),...o,children:t})}const L_=t=>({isInteractive:t.nodesDraggable||t.nodesConnectable||t.elementsSelectable,minZoomReached:t.transform[2]<=t.minZoom,maxZoomReached:t.transform[2]>=t.maxZoom,ariaLabelConfig:t.ariaLabelConfig});function Ug({style:t,showZoom:r=!0,showFitView:o=!0,showInteractive:l=!0,fitViewOptions:a,onZoomIn:c,onZoomOut:d,onFitView:h,onInteractiveChange:p,className:y,children:m,position:v="bottom-left",orientation:g="vertical","aria-label":S}){const _=be(),{isInteractive:M,minZoomReached:k,maxZoomReached:E,ariaLabelConfig:z}=Te(L_,Ue),{zoomIn:N,zoomOut:P,fitView:b}=fc(),$=()=>{N(),c==null||c()},H=()=>{P(),d==null||d()},X=()=>{b(a),h==null||h()},K=()=>{_.setState({nodesDraggable:!M,nodesConnectable:!M,elementsSelectable:!M}),p==null||p(!M)},ne=g==="horizontal"?"horizontal":"vertical";return x.jsxs(wl,{className:Qe(["react-flow__controls",ne,y]),position:v,style:t,"data-testid":"rf__controls","aria-label":S??z["controls.ariaLabel"],children:[r&&x.jsxs(x.Fragment,{children:[x.jsx(Ys,{onClick:$,className:"react-flow__controls-zoomin",title:z["controls.zoomIn.ariaLabel"],"aria-label":z["controls.zoomIn.ariaLabel"],disabled:E,children:x.jsx(P_,{})}),x.jsx(Ys,{onClick:H,className:"react-flow__controls-zoomout",title:z["controls.zoomOut.ariaLabel"],"aria-label":z["controls.zoomOut.ariaLabel"],disabled:k,children:x.jsx(I_,{})})]}),o&&x.jsx(Ys,{className:"react-flow__controls-fitview",onClick:X,title:z["controls.fitView.ariaLabel"],"aria-label":z["controls.fitView.ariaLabel"],children:x.jsx(T_,{})}),l&&x.jsx(Ys,{className:"react-flow__controls-interactive",onClick:K,title:z["controls.interactive.ariaLabel"],"aria-label":z["controls.interactive.ariaLabel"],children:M?x.jsx(R_,{}):x.jsx(z_,{})}),m]})}Ug.displayName="Controls";const A_=W.memo(Ug);function $_({id:t,x:r,y:o,width:l,height:a,style:c,color:d,strokeColor:h,strokeWidth:p,className:y,borderRadius:m,shapeRendering:v,selected:g,onClick:S}){const{background:_,backgroundColor:M}=c||{},k=d||_||M;return x.jsx("rect",{className:Qe(["react-flow__minimap-node",{selected:g},y]),x:r,y:o,rx:m,ry:m,width:l,height:a,style:{fill:k,stroke:h,strokeWidth:p},shapeRendering:v,onClick:S?E=>S(E,t):void 0})}const D_=W.memo($_),O_=t=>t.nodes.map(r=>r.id),zu=t=>t instanceof Function?t:()=>t;function b_({nodeStrokeColor:t,nodeColor:r,nodeClassName:o="",nodeBorderRadius:l=5,nodeStrokeWidth:a,nodeComponent:c=D_,onClick:d}){const h=Te(O_,Ue),p=zu(r),y=zu(t),m=zu(o),v=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return x.jsx(x.Fragment,{children:h.map(g=>x.jsx(H_,{id:g,nodeColorFunc:p,nodeStrokeColorFunc:y,nodeClassNameFunc:m,nodeBorderRadius:l,nodeStrokeWidth:a,NodeComponent:c,onClick:d,shapeRendering:v},g))})}function F_({id:t,nodeColorFunc:r,nodeStrokeColorFunc:o,nodeClassNameFunc:l,nodeBorderRadius:a,nodeStrokeWidth:c,shapeRendering:d,NodeComponent:h,onClick:p}){const{node:y,x:m,y:v,width:g,height:S}=Te(_=>{const M=_.nodeLookup.get(t);if(!M)return{node:void 0,x:0,y:0,width:0,height:0};const k=M.internals.userNode,{x:E,y:z}=M.internals.positionAbsolute,{width:N,height:P}=Jt(k);return{node:k,x:E,y:z,width:N,height:P}},Ue);return!y||y.hidden||!Up(y)?null:x.jsx(h,{x:m,y:v,width:g,height:S,style:y.style,selected:!!y.selected,className:l(y),color:r(y),borderRadius:a,strokeColor:o(y),strokeWidth:c,shapeRendering:d,onClick:p,id:y.id})}const H_=W.memo(F_);var V_=W.memo(b_);const B_=200,U_=150,W_=t=>!t.hidden,Y_=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?Hp(yo(t.nodeLookup,{filter:W_}),r):r,rfId:t.rfId,panZoom:t.panZoom,translateExtent:t.translateExtent,flowWidth:t.width,flowHeight:t.height,ariaLabelConfig:t.ariaLabelConfig}},ep=(t,r)=>t.x===r.x&&t.y===r.y&&t.width===r.width&&t.height===r.height,X_=(t,r)=>ep(t.viewBB,r.viewBB)&&ep(t.boundingRect,r.boundingRect)&&t.rfId===r.rfId&&t.panZoom===r.panZoom&&t.translateExtent===r.translateExtent&&t.flowWidth===r.flowWidth&&t.flowHeight===r.flowHeight&&t.ariaLabelConfig===r.ariaLabelConfig,Q_="react-flow__minimap-desc";function Wg({style:t,className:r,nodeStrokeColor:o,nodeColor:l,nodeClassName:a="",nodeBorderRadius:c=5,nodeStrokeWidth:d,nodeComponent:h,bgColor:p,maskColor:y,maskStrokeColor:m,maskStrokeWidth:v,position:g="bottom-right",onClick:S,onNodeClick:_,pannable:M=!1,zoomable:k=!1,ariaLabel:E,inversePan:z,zoomStep:N=1,offsetScale:P=5}){const b=be(),$=W.useRef(null),{boundingRect:H,viewBB:X,rfId:K,panZoom:ne,translateExtent:Z,flowWidth:te,flowHeight:J,ariaLabelConfig:C}=Te(Y_,X_),B=(t==null?void 0:t.width)??B_,F=(t==null?void 0:t.height)??U_,V=H.width/B,A=H.height/F,L=Math.max(V,A),O=L*B,j=L*F,T=P*L,ee=H.x-(O-H.width)/2-T,re=H.y-(j-H.height)/2-T,ue=O+T*2,de=j+T*2,ce=`${Q_}-${K}`,Q=W.useRef(0),se=W.useRef();Q.current=L,W.useEffect(()=>{if($.current&&ne)return se.current=s1({domNode:$.current,panZoom:ne,getTransform:()=>b.getState().transform,getViewScale:()=>Q.current}),()=>{var me;(me=se.current)==null||me.destroy()}},[ne]),W.useEffect(()=>{var me;(me=se.current)==null||me.update({translateExtent:Z,width:te,height:J,inversePan:z,pannable:M,zoomStep:N,zoomable:k})},[M,k,z,N,Z,te,J]);const pe=S?me=>{var Pe;const[Ce,Me]=((Pe=se.current)==null?void 0:Pe.pointer(me))||[0,0];S(me,{x:Ce,y:Me})}:void 0,Se=_?W.useCallback((me,Ce)=>{const Me=b.getState().nodeLookup.get(Ce).internals.userNode;_(me,Me)},[]):void 0,ve=E??C["minimap.ariaLabel"];return x.jsx(wl,{position:g,style:{...t,"--xy-minimap-background-color-props":typeof p=="string"?p:void 0,"--xy-minimap-mask-background-color-props":typeof y=="string"?y:void 0,"--xy-minimap-mask-stroke-color-props":typeof m=="string"?m:void 0,"--xy-minimap-mask-stroke-width-props":typeof v=="number"?v*L:void 0,"--xy-minimap-node-background-color-props":typeof l=="string"?l:void 0,"--xy-minimap-node-stroke-color-props":typeof o=="string"?o:void 0,"--xy-minimap-node-stroke-width-props":typeof d=="number"?d:void 0},className:Qe(["react-flow__minimap",r]),"data-testid":"rf__minimap",children:x.jsxs("svg",{width:B,height:F,viewBox:`${ee} ${re} ${ue} ${de}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":ce,ref:$,onClick:pe,children:[ve&&x.jsx("title",{id:ce,children:ve}),x.jsx(V_,{onClick:Se,nodeColor:l,nodeStrokeColor:o,nodeBorderRadius:c,nodeClassName:a,nodeStrokeWidth:d,nodeComponent:h}),x.jsx("path",{className:"react-flow__minimap-mask",d:`M${ee-T},${re-T}h${ue+T*2}v${de+T*2}h${-ue-T*2}z - M${X.x},${X.y}h${X.width}v${X.height}h${-X.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}Wg.displayName="MiniMap";const K_=W.memo(Wg),G_=t=>r=>t?`${Math.max(1/r.transform[2],1)}`:void 0,q_={[oi.Line]:"right",[oi.Handle]:"bottom-right"};function Z_({nodeId:t,position:r,variant:o=oi.Handle,className:l,style:a=void 0,children:c,color:d,minWidth:h=10,minHeight:p=10,maxWidth:y=Number.MAX_VALUE,maxHeight:m=Number.MAX_VALUE,keepAspectRatio:v=!1,resizeDirection:g,autoScale:S=!0,shouldResize:_,onResizeStart:M,onResize:k,onResizeEnd:E}){const z=Sg(),N=typeof t=="string"?t:z,P=be(),b=W.useRef(null),$=o===oi.Handle,H=Te(W.useCallback(G_($&&S),[$,S]),Ue),X=W.useRef(null),K=r??q_[o];W.useEffect(()=>{if(!(!b.current||!N))return X.current||(X.current=x1({domNode:b.current,nodeId:N,getStoreItems:()=>{const{nodeLookup:Z,transform:te,snapGrid:J,snapToGrid:C,nodeOrigin:B,domNode:F}=P.getState();return{nodeLookup:Z,transform:te,snapGrid:J,snapToGrid:C,nodeOrigin:B,paneDomNode:F}},onChange:(Z,te)=>{const{triggerNodeChanges:J,nodeLookup:C,parentLookup:B,nodeOrigin:F}=P.getState(),V=[],A={x:Z.x,y:Z.y},L=C.get(N);if(L&&L.expandParent&&L.parentId){const O=L.origin??F,j=Z.width??L.measured.width??0,T=Z.height??L.measured.height??0,ee={id:L.id,parentId:L.parentId,rect:{width:j,height:T,...Wp({x:Z.x??L.position.x,y:Z.y??L.position.y},{width:j,height:T},L.parentId,C,O)}},re=dc([ee],C,B,F);V.push(...re),A.x=Z.x?Math.max(O[0]*j,Z.x):void 0,A.y=Z.y?Math.max(O[1]*T,Z.y):void 0}if(A.x!==void 0&&A.y!==void 0){const O={id:N,type:"position",position:{...A}};V.push(O)}if(Z.width!==void 0&&Z.height!==void 0){const j={id:N,type:"dimensions",resizing:!0,setAttributes:g?g==="horizontal"?"width":"height":!0,dimensions:{width:Z.width,height:Z.height}};V.push(j)}for(const O of te){const j={...O,type:"position"};V.push(j)}J(V)},onEnd:({width:Z,height:te})=>{const J={id:N,type:"dimensions",resizing:!1,dimensions:{width:Z,height:te}};P.getState().triggerNodeChanges([J])}})),X.current.update({controlPosition:K,boundaries:{minWidth:h,minHeight:p,maxWidth:y,maxHeight:m},keepAspectRatio:v,resizeDirection:g,onResizeStart:M,onResize:k,onResizeEnd:E,shouldResize:_}),()=>{var Z;(Z=X.current)==null||Z.destroy()}},[K,h,p,y,m,v,M,k,E,_]);const ne=K.split("-");return x.jsx("div",{className:Qe(["react-flow__resize-control","nodrag",...ne,o,l]),ref:b,style:{...a,scale:H,...d&&{[$?"backgroundColor":"borderColor"]:d}},children:c})}W.memo(Z_);const J_={"arch.context":0,"django.app":0,"django.route":1,"django.url_name":1,"django.view":2,"django.viewset_action":2,"django.permission":2,"django.serializer":3,"django.serializer_field":4,"django.service":4,"django.model":5,"django.field":6,"django.relation":6,"django.task":7,"django.receiver":7,"django.signal":7,"django.test":7,"django.migration_op":7,"django.admin":7,"openapi.path":8,"react.api_client":9,"react.query_key":10,"react.hook":10,"react.feature":10,"react.route":11,"react.page":11,"react.component":12,"react.form_schema":13,"react.test":13,"react.context":12};function ek(t){return J_[t]??8}function tk(t){const r=new Map;for(const l of t){const a=ek(l.type),c=r.get(a)??[];c.push(l),r.set(a,c)}const o=new Map;for(const[l,a]of r)a.sort((c,d)=>c.name.localeCompare(d.name)),a.forEach((c,d)=>{o.set(c.id,{x:l*260,y:d*108})});return o}const nk={cheap:"var(--edge-cheap)",expensive:"var(--edge-expensive)",critical:"var(--edge-critical)"};function rk({data:t,selected:r}){return x.jsxs("div",{className:r?"lp-node selected":"lp-node",children:[x.jsx("div",{className:"t",children:Qu(t.type)}),x.jsx("div",{className:"n",children:t.name})]})}const ik={load:rk};function Ru({nodes:t,edges:r}){const[o,l]=W.useState(null),a=typeof window<"u"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,c=W.useMemo(()=>new Map(t.map(v=>[v.id,v])),[t]),d=o?c.get(o)??null:null,h=tk(t),p=t.map(v=>({id:v.id,type:"load",position:h.get(v.id)??{x:0,y:0},data:{name:v.name,type:v.type,file:v.file_path},selected:o===v.id})),y=r.filter(v=>c.has(v.src)&&c.has(v.dst)).map(v=>({id:v.id,source:v.src,target:v.dst,animated:!a&&v.weight==="critical",style:{stroke:nk[v.weight]||"var(--edge-cheap)",strokeWidth:v.weight==="critical"?2.4:1.2,strokeDasharray:v.confidence<.8?"6 4":void 0},label:v.type.replaceAll("_"," "),labelStyle:{fill:"var(--muted)",fontSize:10}})),m=(v,g)=>{l(g.id)};return x.jsxs("div",{style:{flex:1,minHeight:0,position:"relative"},children:[x.jsx(Vg,{children:x.jsxs(k_,{nodes:p,edges:y,nodeTypes:ik,fitView:!0,fitViewOptions:{padding:.2,maxZoom:1.15},minZoom:.25,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!0,deleteKeyCode:null,onNodeClick:m,onPaneClick:()=>l(null),proOptions:{hideAttribution:!1},"data-testid":"impact-graph",children:[x.jsx(M_,{}),x.jsx(K_,{pannable:!0,zoomable:!0}),x.jsx(A_,{})]})}),d?x.jsxs("aside",{className:"inspector","data-testid":"graph-inspector",children:[x.jsx("div",{className:"t",children:Qu(d.type)}),x.jsx("div",{className:"n",children:d.name}),d.context?x.jsx("div",{className:"muted",children:d.context}):null,d.file_path?x.jsxs("div",{className:"file",children:[d.file_path,d.start_line?`:${d.start_line}`:""]}):null,x.jsx("div",{className:"muted",children:d.qualified_name})]}):null]})}const cl=[{id:"obsidian",label:"Obsidian",group:"dark"},{id:"nord",label:"Nord",group:"dark"},{id:"solarized-dark",label:"Solarized Dark",group:"dark"},{id:"forest",label:"Forest",group:"dark"},{id:"rose",label:"Rose Pine",group:"dark"},{id:"amber",label:"Midnight Amber",group:"dark"},{id:"volcano",label:"Volcano",group:"dark"},{id:"lavender",label:"Lavender",group:"dark"},{id:"paper",label:"Paper",group:"light"},{id:"solarized-light",label:"Solarized Light",group:"light"},{id:"seafoam",label:"Seafoam",group:"light"},{id:"high-contrast",label:"High Contrast",group:"light"}],ok="obsidian",Yg="loadpath.theme";function sk(t){return cl.some(r=>r.id===t)}function Xg(){try{const t=localStorage.getItem(Yg)||"";if(sk(t))return t}catch{}return ok}function lk(t){var r;return((r=cl.find(o=>o.id===t))==null?void 0:r.group)==="light"?"light":"dark"}function Qg(t){document.documentElement.dataset.theme=t,document.documentElement.style.colorScheme=lk(t);try{localStorage.setItem(Yg,t)}catch{}}const tp=[{id:"review",label:"Review",testId:"tab-review",shortcut:"1",icon:b0},{id:"architecture",label:"Architecture",testId:"tab-architecture",shortcut:"2",icon:F0},{id:"graph",label:"Impact graph",testId:"tab-graph",shortcut:"3",icon:H0},{id:"prs",label:"Pull requests",testId:"tab-prs",shortcut:"4",icon:V0},{id:"settings",label:"Settings",testId:"tab-settings",shortcut:"5",icon:B0}];function ak(){var Lt,kt,Et,it,ft;const[t,r]=W.useState("review"),[o,l]=W.useState(localStorage.getItem("loadpath.repo")||""),[a,c]=W.useState(localStorage.getItem("loadpath.base")||"HEAD~1"),[d,h]=W.useState(localStorage.getItem("loadpath.head")||"HEAD"),[p,y]=W.useState(null),[m,v]=W.useState(null),[g,S]=W.useState([]),[_,M]=W.useState("review"),[k,E]=W.useState(""),[z,N]=W.useState(""),[P,b]=W.useState(""),[$,H]=W.useState({}),[X,K]=W.useState([]),[ne,Z]=W.useState(localStorage.getItem("loadpath.scmRepo")||""),[te,J]=W.useState(localStorage.getItem("loadpath.provider")||"github"),[C,B]=W.useState(localStorage.getItem("loadpath.prNumber")||""),[F,V]=W.useState(""),[A,L]=W.useState(Xg),O=W.useRef(o);O.current=o;const j=q=>{L(q),Qg(q)},T=W.useRef(""),ee=q=>{T.current=q,N(q)};W.useEffect(()=>{St.settings().then(H).catch(()=>{}),St.repos().then(q=>S(q.repos)).catch(()=>{})},[]),W.useEffect(()=>{if(t!=="architecture"||!o)return;const q=o;let we=!1;return St.architecture(q).then(Ae=>{!we&&O.current===q&&v(Ae)}).catch(()=>{}),()=>{we=!0}},[t,o]);const re=q=>{l(q),localStorage.setItem("loadpath.repo",q)},ue=(q,we)=>{c(q),h(we),localStorage.setItem("loadpath.base",q),localStorage.setItem("loadpath.head",we)},de=(q,we,Ae)=>{J(q),Z(we),localStorage.setItem("loadpath.provider",q),localStorage.setItem("loadpath.scmRepo",we),Ae!==void 0&&(B(Ae),localStorage.setItem("loadpath.prNumber",Ae))},ce=async(q=o)=>{if(!q)return null;const we=await St.architecture(q);return O.current===q&&v(we),we},Q=async()=>{if(!T.current){E(""),b(""),ee("Tracing load path…"),re(o),ue(a,d);try{const q=await St.review(o,a,d,!0);y(q),M("review"),r("review"),await St.repos().then(we=>S(we.repos)).catch(()=>{}),await ce(o)}catch(q){E(q instanceof Error?q.message:String(q))}finally{ee("")}}},se=async(q=!0)=>{if(!T.current){E(""),b(""),ee(q?"Indexing…":"Full reindex…"),re(o);try{await St.index(o,q);const we=await ce(o);await St.repos().then(Ae=>S(Ae.repos)).catch(()=>{}),we!=null&&we.indexed&&(M("architecture"),r("architecture"))}catch(we){E(we instanceof Error?we.message:String(we))}finally{ee("")}}},pe=async()=>{if(!T.current){E(""),b(""),ee("Detecting layout…"),re(o);try{const q=await St.init(o);b(q.message),await St.repos().then(we=>S(we.repos)).catch(()=>{})}catch(q){E(q instanceof Error?q.message:String(q))}finally{ee("")}}},Se=async()=>{if(p!=null&&p.markdown)try{await navigator.clipboard.writeText(p.markdown),b("Copied markdown brief")}catch(q){E(q instanceof Error?q.message:String(q))}},ve=async()=>{if(!T.current){if(!(p!=null&&p.markdown)||!ne||!C){E("Pick a pull request first (Pull requests tab), then post the brief.");return}ee("Posting Loadpath brief…");try{const q=await St.postComment(te,ne,Number(C),p.markdown);b(q.updated?"Updated the Loadpath PR comment":"Posted the Loadpath PR comment")}catch(q){E(q instanceof Error?q.message:String(q))}finally{ee("")}}},me=async()=>{if(!T.current){E(""),ee("Fetching pull requests…");try{const q=await St.prs(te,ne);K(q.pull_requests)}catch(q){E(q instanceof Error?q.message:String(q))}finally{ee("")}}},Ce=async q=>{q.preventDefault();const we=new FormData(q.currentTarget),Ae={github_token:String(we.get("github_token")||""),bitbucket_token:String(we.get("bitbucket_token")||""),bitbucket_username:String(we.get("bitbucket_username")||""),ai_provider:String(we.get("ai_provider")||"none"),ai_api_key:String(we.get("ai_api_key")||""),ai_model:String(we.get("ai_model")||""),ai_base_url:String(we.get("ai_base_url")||""),workspaces:g.length?g.map(Ke=>({path:Ke.path,name:Ke.name})):o?[{path:o,name:O0(o)}]:[]};try{H(await St.saveSettings(Ae)),b("Settings saved on this machine")}catch(Ke){E(Ke instanceof Error?Ke.message:String(Ke))}},Me=async()=>{if(!(!p||T.current)){ee("Residual analysis…");try{const q=await St.residual(p);V(q.note)}catch(q){E(q instanceof Error?q.message:String(q))}finally{ee("")}}},Pe=W.useRef(Q);Pe.current=Q;const ze=W.useRef(t);ze.current=t,W.useEffect(()=>{const q=we=>{const Ae=we.target;if(Ae&&(Ae.tagName==="INPUT"||Ae.tagName==="TEXTAREA"||Ae.tagName==="SELECT"||Ae.isContentEditable)){we.key==="Escape"&&Ae.blur();return}if(we.key==="Escape"){E(""),b("");return}const Ke=tp.find(un=>un.shortcut===we.key);if(Ke&&!we.metaKey&&!we.ctrlKey&&!we.altKey&&r(Ke.id),(we.metaKey||we.ctrlKey)&&we.key==="Enter"){if(ze.current==="settings"||ze.current==="prs"||T.current)return;we.preventDefault(),Pe.current()}};return window.addEventListener("keydown",q),()=>window.removeEventListener("keydown",q)},[]);const Ze=W.useMemo(()=>_==="architecture"?(m==null?void 0:m.nodes)??[]:(p==null?void 0:p.nodes)??[],[_,m,p]),lt=W.useMemo(()=>_==="architecture"?(m==null?void 0:m.edges)??[]:(p==null?void 0:p.edges)??[],[_,m,p]),Je=p!=null&&p.index?`${p.index.counts.nodes} nodes · ${p.index.counts.edges} edges`:m!=null&&m.indexed?`${m.counts.nodes} nodes · ${m.counts.edges} edges`:"Not indexed",et=((p==null?void 0:p.findings)||[]).filter(q=>!q.waived);return x.jsxs("div",{className:"app",children:[x.jsx("a",{className:"skip",href:"#main",children:"Skip to content"}),x.jsxs("nav",{className:"rail","data-testid":"rail","aria-label":"Primary",children:[x.jsxs("div",{className:"brand",children:[x.jsx("div",{className:"brand-mark",children:"Loadpath"}),x.jsx("div",{className:"brand-sub",children:"Load-path review"})]}),tp.map(q=>{const we=q.icon,Ae=t===q.id;return x.jsxs("button",{type:"button","data-testid":q.testId,className:Ae?"nav-item active":"nav-item","aria-current":Ae?"page":void 0,"aria-label":q.label,onClick:()=>r(q.id),children:[x.jsx(we,{}),x.jsx("span",{children:q.label})]},q.id)}),x.jsxs("div",{className:"theme-pick",children:[x.jsx("label",{htmlFor:"theme-select",children:"Theme"}),x.jsx("select",{id:"theme-select","data-testid":"theme-select",value:A,onChange:q=>j(q.target.value),children:cl.map(q=>x.jsx("option",{value:q.id,children:q.label},q.id))})]}),x.jsxs("div",{className:"rail-foot",children:[x.jsx("div",{className:"muted",role:"status",children:z||Je}),x.jsxs("div",{className:"kbd-hint",children:[x.jsx("kbd",{children:"1"}),"–",x.jsx("kbd",{children:"5"})," tabs · ",x.jsx("kbd",{children:"Ctrl"}),"+",x.jsx("kbd",{children:"Enter"})," review"]})]})]}),x.jsxs("div",{className:"main",id:"main",children:[z?x.jsxs("div",{className:"progress",role:"status","aria-live":"polite","aria-busy":"true",children:[x.jsx("i",{}),x.jsx("span",{className:"sr-only",children:z})]}):null,x.jsxs("header",{className:"topbar","data-testid":"topbar",children:[g.length>0?x.jsxs("label",{className:"field workspace",children:[x.jsx("span",{children:"Workspace"}),x.jsxs("select",{"data-testid":"workspace-select",value:g.some(q=>q.path===o)?o:"",onChange:q=>{q.target.value&&re(q.target.value)},children:[x.jsx("option",{value:"",children:"Indexed repos…"}),g.map(q=>x.jsxs("option",{value:q.path,children:[q.name,q.indexed?` (${q.counts.nodes})`:""]},q.path))]})]}):null,x.jsxs("label",{className:"field path",children:[x.jsx("span",{children:"Repository"}),x.jsx("input",{"data-testid":"repo-path",placeholder:"Local monorepo path",value:o,onChange:q=>l(q.target.value),spellCheck:!1})]}),x.jsxs("label",{className:"field ref",children:[x.jsx("span",{children:"Base"}),x.jsx("input",{"data-testid":"base-ref",value:a,onChange:q=>ue(q.target.value,d),placeholder:"base",spellCheck:!1})]}),x.jsxs("label",{className:"field ref",children:[x.jsx("span",{children:"Head"}),x.jsx("input",{"data-testid":"head-ref",value:d,onChange:q=>ue(a,q.target.value),placeholder:"head",spellCheck:!1})]}),x.jsxs("div",{className:"topbar-actions",children:[x.jsx("button",{type:"button","data-testid":"btn-init",disabled:!!z,onClick:pe,children:"Draft config"}),x.jsx("button",{type:"button","data-testid":"btn-index",disabled:!!z,onClick:()=>se(!0),children:"Index"}),x.jsx("button",{type:"button","data-testid":"btn-review",className:"btn primary",disabled:!!z,onClick:Q,children:"Review"})]})]}),x.jsxs("div",{className:"alerts",children:[k?x.jsxs("div",{className:"error",children:[x.jsx("span",{children:k}),x.jsx("button",{type:"button",className:"dismiss",onClick:()=>E(""),"aria-label":"Dismiss error",children:"×"})]}):null,P?x.jsxs("div",{className:"banner","data-testid":"status-note",children:[x.jsx("span",{children:P}),x.jsx("button",{type:"button",className:"dismiss",onClick:()=>b(""),"aria-label":"Dismiss",children:"×"})]}):null,((Lt=p==null?void 0:p.index)!=null&&Lt.stale||m!=null&&m.stale)&&(t==="review"||t==="architecture")?x.jsx("div",{className:"banner stale","data-testid":"index-stale",children:"Index is stale — files changed since the last extract. Index again before trusting this walk."}):null,((kt=p==null?void 0:p.index)==null?void 0:kt.django_boot)==="failed"||(m==null?void 0:m.django_boot)==="failed"?x.jsx("div",{className:"banner warn","data-testid":"django-boot-failed",children:((Et=p==null?void 0:p.index)==null?void 0:Et.django_boot_detail)||(m==null?void 0:m.django_boot_detail)||"django.setup() failed"}):null,(it=p==null?void 0:p.workspace)!=null&&it.dirty_overlaps_review&&t==="review"?x.jsxs("div",{className:"banner warn","data-testid":"dirty-tree",children:["Uncommitted files overlap this review: ",(p.workspace.dirty_overlap||[]).slice(0,6).join(", ")]}):null]}),x.jsxs("div",{className:"stage",children:[t==="review"&&x.jsxs("div",{className:"content","data-testid":"review-layout",children:[x.jsx("aside",{className:"brief","data-testid":"brief",children:p?x.jsx(uk,{review:p,findings:et,aiNote:F,busy:!!z,onAskAi:Me,onCopy:Se,onPost:ve}):x.jsxs("div",{className:"empty","data-testid":"review-empty",children:[x.jsx("h2",{children:"Trace the force of this diff"}),x.jsx("p",{children:"The graph is the architecture. The brief is where this change travels — not a hunk list."}),x.jsxs("ol",{children:[x.jsx("li",{children:"Point at a Django + React monorepo, or pick an indexed workspace."}),x.jsxs("li",{children:["Index it. Missing ",x.jsx("code",{children:"loadpath.yml"})," is drafted from ",x.jsx("code",{children:"manage.py"})," and"," ",x.jsx("code",{children:"src/features"}),"."]}),x.jsx("li",{children:"Review a git range, or open a pull request so base/head become a three-dot merge-base."})]})]})}),x.jsx("div",{className:"graph-wrap","data-testid":"review-graph",children:p?x.jsx(Ru,{nodes:p.nodes,edges:p.edges}):null})]}),t==="architecture"&&x.jsxs("div",{className:"content","data-testid":"architecture-panel",children:[x.jsx("aside",{className:"brief","data-testid":"architecture-brief",children:m!=null&&m.indexed?x.jsx(ck,{architecture:m,busy:!!z,onReindex:()=>se(!1),onReview:Q}):x.jsx("p",{className:"muted","data-testid":"architecture-empty",children:"Index this repo to build the architecture graph. Review then walks that same graph for a git range — it does not start from a hunk list."})}),x.jsx("div",{className:"graph-wrap","data-testid":"architecture-graph",children:m!=null&&m.indexed?x.jsx(Ru,{nodes:m.nodes,edges:m.edges}):null})]}),t==="graph"&&x.jsxs("div",{className:"graph-wrap","data-testid":"graph-full",style:{height:"100%"},children:[x.jsxs("div",{className:"graph-modes",children:[x.jsxs("div",{className:"seg","aria-label":"Graph scope",children:[x.jsx("button",{type:"button","aria-pressed":_==="review","data-testid":"graph-mode-review",className:_==="review"?"active":"",onClick:()=>M("review"),children:"This review"}),x.jsx("button",{type:"button","aria-pressed":_==="architecture","data-testid":"graph-mode-architecture",className:_==="architecture"?"active":"",onClick:()=>M("architecture"),children:"Indexed architecture"})]}),x.jsxs("div",{className:"legend","aria-hidden":"true",children:[x.jsxs("span",{children:[x.jsx("i",{})," cheap"]}),x.jsxs("span",{children:[x.jsx("i",{className:"exp"})," expensive"]}),x.jsxs("span",{children:[x.jsx("i",{className:"crit"})," critical"]}),x.jsxs("span",{children:[x.jsx("i",{className:"dash"})," inferred"]})]})]}),Ze.length?x.jsx(Ru,{nodes:Ze,edges:lt}):x.jsx("p",{className:"empty",children:"Index the repo or run a review first. Click a node to inspect it."})]}),t==="prs"&&x.jsxs("div",{className:"pr-list","data-testid":"pr-list",children:[x.jsxs("div",{className:"pr-toolbar",children:[x.jsxs("label",{className:"field provider",children:[x.jsx("span",{children:"Provider"}),x.jsxs("select",{"data-testid":"pr-provider",value:te,onChange:q=>de(q.target.value,ne,C),children:[x.jsx("option",{value:"github",children:"GitHub"}),x.jsx("option",{value:"bitbucket",children:"Bitbucket"})]})]}),x.jsxs("label",{className:"field",children:[x.jsx("span",{children:"Repository"}),x.jsx("input",{"data-testid":"pr-repo",placeholder:"owner/repo",value:ne,onChange:q=>de(te,q.target.value,C),spellCheck:!1})]}),x.jsx("button",{type:"button","data-testid":"btn-list-prs",className:"btn",disabled:!!z,onClick:me,children:"List PRs"})]}),X.length===0?x.jsxs("div",{className:"empty",children:[x.jsx("h2",{children:"No pull requests loaded"}),x.jsx("p",{children:"Enter an owner/repo, then list open PRs. Reviewing a PR fills base and head from its SHAs."})]}):X.map(q=>x.jsxs("article",{className:"pr","data-testid":`pr-${q.number}`,children:[x.jsxs("h3",{children:["#",q.number," ",q.title]}),x.jsxs("div",{className:"pr-meta muted",children:[x.jsx("span",{className:`chip ${q.draft?"":"open"}`,children:q.draft?"draft":q.state}),x.jsx("span",{children:q.author}),x.jsxs("span",{children:[q.source_branch," → ",q.target_branch]})]}),x.jsxs("div",{className:"pr-actions",children:[x.jsxs("a",{href:q.url,target:"_blank",rel:"noreferrer",children:["Open on ",q.provider]}),x.jsx("button",{type:"button",className:"btn primary",onClick:()=>{ue(q.base_sha||q.target_branch,q.head_sha||q.source_branch),de(q.provider,q.repo,String(q.number)),r("review")},children:"Review this range"})]})]},`${q.provider}-${q.number}`))]}),t==="settings"&&x.jsxs("form",{className:"settings","data-testid":"settings-form",onSubmit:Ce,children:[x.jsxs("div",{children:[x.jsx("h1",{children:"Settings"}),x.jsx("p",{className:"muted",children:"Tokens stay on this machine in ~/.loadpath/settings.json. AI runs only on residual uncertainty the graph could not close."})]}),x.jsxs("section",{className:"settings-card",children:[x.jsx("h2",{children:"Appearance"}),x.jsx("p",{className:"muted",children:"Local to this browser. High contrast is a first-class theme, not an afterthought."}),x.jsx("div",{className:"theme-grid","data-testid":"theme-grid",children:cl.map(q=>x.jsxs("button",{type:"button",className:A===q.id?"theme-swatch active":"theme-swatch","data-testid":`theme-${q.id}`,onClick:()=>j(q.id),children:[x.jsx("div",{className:"name",children:q.label}),x.jsx("div",{className:"group",children:q.group})]},q.id))})]}),x.jsxs("section",{className:"settings-card",children:[x.jsx("h2",{children:"Source control"}),x.jsx("label",{htmlFor:"github_token",children:"GitHub token"}),x.jsx("input",{id:"github_token",name:"github_token",type:"password",placeholder:"ghp_…",autoComplete:"off"}),x.jsx("label",{htmlFor:"bitbucket_token",children:"Bitbucket token"}),x.jsx("input",{id:"bitbucket_token",name:"bitbucket_token",type:"password",autoComplete:"off"}),x.jsx("label",{htmlFor:"bitbucket_username",children:"Bitbucket username (app passwords)"}),x.jsx("input",{id:"bitbucket_username",name:"bitbucket_username",defaultValue:String($.bitbucket_username||"")})]}),x.jsxs("section",{className:"settings-card",children:[x.jsx("h2",{children:"Residual AI"}),x.jsx("label",{htmlFor:"ai_provider",children:"Provider"}),x.jsxs("select",{id:"ai_provider",name:"ai_provider",defaultValue:String(((ft=$.ai)==null?void 0:ft.provider)||"none"),children:[x.jsx("option",{value:"none",children:"none (graph only)"}),x.jsx("option",{value:"anthropic",children:"Anthropic"}),x.jsx("option",{value:"openai",children:"OpenAI"}),x.jsx("option",{value:"grok",children:"Grok / xAI"}),x.jsx("option",{value:"deepseek",children:"DeepSeek"}),x.jsx("option",{value:"cursor",children:"Cursor-compatible (OpenAI protocol)"}),x.jsx("option",{value:"ollama",children:"Ollama local"})]}),x.jsx("label",{htmlFor:"ai_api_key",children:"API key"}),x.jsx("input",{id:"ai_api_key",name:"ai_api_key",type:"password",autoComplete:"off"}),x.jsx("label",{htmlFor:"ai_model",children:"Model"}),x.jsx("input",{id:"ai_model",name:"ai_model",placeholder:"optional override"}),x.jsx("label",{htmlFor:"ai_base_url",children:"Base URL"}),x.jsx("input",{id:"ai_base_url",name:"ai_base_url",placeholder:"optional, OpenAI-compatible"}),x.jsx("button",{className:"btn primary",type:"submit",children:"Save"})]})]})]})]})]})}function uk({review:t,findings:r,aiNote:o,busy:l,onAskAi:a,onCopy:c,onPost:d}){var p,y,m,v,g,S,_,M;const h=[...new Set(t.confidence.reasons||[])];return x.jsxs(x.Fragment,{children:[x.jsxs("div",{className:`merge-box ${t.confidence.level}`,children:[x.jsxs("div",{className:`level ${t.confidence.level}`,children:[t.confidence.level.toUpperCase()," — ",t.title]}),h.length?x.jsx("ul",{className:"reasons",children:h.map(k=>x.jsx("li",{children:k},k))}):null,t.low_risk?x.jsx("span",{className:"chip",children:"low-risk"}):null,t.change_kinds.map(k=>x.jsx("span",{className:"chip",children:$0(k)},k))]}),x.jsxs("div",{className:"metrics",children:[x.jsxs("div",{className:"metric",children:[x.jsxs("div",{className:"n",children:[t.confidence.covered_sinks,"/",t.confidence.sinks]}),x.jsx("div",{className:"l",children:"Sinks tested"})]}),x.jsxs("div",{className:"metric",children:[x.jsx("div",{className:"n",children:r.length}),x.jsx("div",{className:"l",children:"Findings"})]}),x.jsxs("div",{className:"metric",children:[x.jsx("div",{className:"n",children:t.residuals.length}),x.jsx("div",{className:"l",children:"Residuals"})]})]}),x.jsx("pre",{className:"headline",children:t.headline}),t.index?x.jsxs("details",{className:"section",open:!0,children:[x.jsxs("summary",{children:["Index ",x.jsx("span",{className:"count",children:t.index.counts.nodes})]}),x.jsxs("div",{className:"muted",children:["Walked ",t.index.counts.nodes," nodes / ",t.index.counts.edges," edges",t.index.reindex_skipped?" from an unchanged index":t.index.reindexed?" after an incremental refresh":" from the existing index",t.index.django_boot&&t.index.django_boot!=="off"?` · Django boot ${t.index.django_boot}`:"",(p=t.workspace)!=null&&p.three_dot?" · three-dot range":""]})]}):null,x.jsxs("details",{className:"section",open:!0,children:[x.jsxs("summary",{children:["Read this ",x.jsx("span",{className:"count",children:t.read_order.length})]}),t.read_order.map((k,E)=>x.jsxs("div",{className:"read-item",children:[x.jsxs("span",{className:"file",children:[E+1,". ",k.path]}),x.jsx("div",{className:"why",children:k.why})]},k.path))]}),x.jsxs("details",{className:"section",children:[x.jsxs("summary",{children:["Clusters ",x.jsx("span",{className:"count",children:t.clusters.length})]}),t.clusters.map(k=>x.jsxs("div",{className:"muted",children:[x.jsx("strong",{children:k.title})," — ",k.files.join(", ")]},k.id))]}),x.jsxs("details",{className:"section",open:!0,children:[x.jsxs("summary",{children:["Architecture ",x.jsx("span",{className:"count",children:r.length})]}),r.length===0?x.jsx("div",{className:"muted",children:t.architecture_note}):r.map(k=>x.jsxs("div",{className:"finding",children:[x.jsx("span",{className:`chip ${k.severity}`,children:k.severity}),k.message]},k.rule+k.message))]}),x.jsxs("details",{className:"section",open:!0,children:[x.jsxs("summary",{children:["Residual ",x.jsx("span",{className:"count",children:t.residuals.length})]}),x.jsx("p",{className:"muted",children:"AI is only used here, on what the graph could not close."}),t.residuals.map(k=>x.jsx("div",{className:"residual muted",children:k},k))]}),(m=(y=t.evolution)==null?void 0:y.notes)!=null&&m.length||(g=(v=t.evolution)==null?void 0:v.hotspots)!=null&&g.some(k=>k.commits)?x.jsxs("details",{className:"section",children:[x.jsx("summary",{children:"Churn & coupling"}),(((S=t.evolution)==null?void 0:S.notes)||[]).map(k=>x.jsx("div",{className:"muted",children:k},k)),(((_=t.evolution)==null?void 0:_.hotspots)||[]).filter(k=>k.commits).slice(0,6).map(k=>x.jsxs("div",{className:"muted",children:[x.jsx("span",{className:"file",children:k.path})," — ",k.commits," commits, bus factor ",k.bus_factor]},k.path))]}):null,x.jsxs("div",{className:"btn-row",children:[x.jsx("button",{type:"button",className:"btn",disabled:l,onClick:a,children:"Ask configured model"}),x.jsx("button",{type:"button",className:"btn","data-testid":"btn-copy-markdown",onClick:c,children:"Copy markdown"}),x.jsx("button",{type:"button",className:"btn","data-testid":"btn-post-comment",onClick:d,children:"Post to PR"})]}),o?x.jsx("pre",{className:"headline",children:o}):null,x.jsx("div",{className:"kicker",children:"Reviewers"}),x.jsx("div",{className:"muted",children:t.suggested_reviewers.join(", ")||"—"}),(M=t.knowledge_owners)!=null&&M.length?x.jsxs("div",{className:"muted",children:["Knowledge: ",t.knowledge_owners.join(", ")]}):null]})}function ck({architecture:t,busy:r,onReindex:o,onReview:l}){const a=t.findings.filter(c=>!c.waived);return x.jsxs(x.Fragment,{children:[x.jsxs("div",{className:"merge-box high",children:[x.jsxs("div",{className:"level high",children:["INDEXED — ",t.counts.nodes," nodes"]}),x.jsxs("div",{className:"muted",style:{marginTop:8},children:[t.indexed_at?`Last index ${D0(t.indexed_at)}`:"Indexed",t.incremental?" · incremental":" · full",t.stale?" · stale":"",t.django_boot&&t.django_boot!=="off"?` · Django boot ${t.django_boot}`:""]}),x.jsxs("span",{className:"chip",children:[t.counts.edges," edges"]}),t.has_config?x.jsx("span",{className:"chip",children:"loadpath.yml"}):null]}),x.jsxs("details",{className:"section",open:!0,children:[x.jsx("summary",{children:"Bounded contexts"}),Object.values(t.contexts).map(c=>x.jsxs("div",{className:"muted",children:[x.jsx("strong",{children:c.name})," — ",(c.django_apps||[]).join(", ")||"no apps"," ·"," ",(c.owners||[]).join(", ")||"unowned"]},c.name))]}),x.jsxs("details",{className:"section",children:[x.jsxs("summary",{children:["Rules ",x.jsx("span",{className:"count",children:(t.rules||[]).length})]}),(t.rules||[]).map(c=>x.jsx("div",{className:"muted",children:c},c))]}),x.jsxs("details",{className:"section",open:!0,children:[x.jsxs("summary",{children:["Findings ",x.jsx("span",{className:"count",children:a.length})]}),a.length===0?x.jsx("div",{className:"muted",children:"No architecture rule hits on the full graph."}):a.map(c=>x.jsxs("div",{className:"finding",children:[x.jsx("span",{className:`chip ${c.severity}`,children:c.severity}),c.message]},c.rule+c.message))]}),x.jsxs("details",{className:"section",open:!0,children:[x.jsx("summary",{children:"Types"}),x.jsx("table",{className:"type-table",children:x.jsx("tbody",{children:Object.entries(t.type_counts||{}).sort((c,d)=>d[1]-c[1]).slice(0,12).map(([c,d])=>x.jsxs("tr",{children:[x.jsx("td",{children:Qu(c)}),x.jsx("td",{children:d})]},c))})})]}),x.jsxs("div",{className:"btn-row",children:[x.jsx("button",{type:"button",className:"btn",disabled:r,onClick:o,"data-testid":"btn-full-reindex",children:"Full reindex"}),x.jsx("button",{type:"button",className:"btn primary",disabled:r,onClick:l,children:"Review against this index"})]})]})}Qg(Xg());A0.createRoot(document.getElementById("root")).render(x.jsx(W.StrictMode,{children:x.jsx(ak,{})})); +`)),m=y.reduce((v,g)=>v.concat(...g),[]);return[y,m]}return[[],[]]},[t]);return W.useEffect(()=>{const p=(r==null?void 0:r.target)??Ah,y=(r==null?void 0:r.actInsideInputWithModifier)??!0;if(t!==null){const m=S=>{var k,E;if(a.current=S.ctrlKey||S.metaKey||S.shiftKey||S.altKey,(!a.current||a.current&&!y)&&Kp(S))return!1;const M=Dh(S.code,h);if(c.current.add(S[M]),$h(d,c.current,!1)){const z=((E=(k=S.composedPath)==null?void 0:k.call(S))==null?void 0:E[0])||S.target,N=(z==null?void 0:z.nodeName)==="BUTTON"||(z==null?void 0:z.nodeName)==="A";r.preventDefault!==!1&&(a.current||!N)&&S.preventDefault(),l(!0)}},v=S=>{const _=Dh(S.code,h);$h(d,c.current,!0)?(l(!1),c.current.clear()):c.current.delete(S[_]),S.key==="Meta"&&c.current.clear(),a.current=!1},g=()=>{c.current.clear(),l(!1)};return p==null||p.addEventListener("keydown",m),p==null||p.addEventListener("keyup",v),window.addEventListener("blur",g),window.addEventListener("contextmenu",g),()=>{p==null||p.removeEventListener("keydown",m),p==null||p.removeEventListener("keyup",v),window.removeEventListener("blur",g),window.removeEventListener("contextmenu",g)}}},[t,l]),o}function $h(t,r,o){return t.filter(l=>o||l.length===r.size).some(l=>l.every(a=>r.has(a)))}function Dh(t,r){return r.includes(t)?"code":"key"}const Z1=()=>{const t=be();return W.useMemo(()=>({zoomIn:async r=>{const{panZoom:o}=t.getState();return o?o.scaleBy(1.2,r):!1},zoomOut:async r=>{const{panZoom:o}=t.getState();return o?o.scaleBy(1/1.2,r):!1},zoomTo:async(r,o)=>{const{panZoom:l}=t.getState();return l?l.scaleTo(r,o):!1},getZoom:()=>t.getState().transform[2],setViewport:async(r,o)=>{const{transform:[l,a,c],panZoom:d}=t.getState();return d?(await d.setViewport({x:r.x??l,y:r.y??a,zoom:r.zoom??c},o),!0):!1},getViewport:()=>{const[r,o,l]=t.getState().transform;return{x:r,y:o,zoom:l}},setCenter:async(r,o,l)=>t.getState().setCenter(r,o,l),fitBounds:async(r,o)=>{const{width:l,height:a,minZoom:c,maxZoom:d,panZoom:h}=t.getState(),p=oc(r,l,a,c,d,(o==null?void 0:o.padding)??.1);return h?(await h.setViewport(p,{duration:o==null?void 0:o.duration,ease:o==null?void 0:o.ease,interpolate:o==null?void 0:o.interpolate}),!0):!1},screenToFlowPosition:(r,o={})=>{const{transform:l,snapGrid:a,snapToGrid:c,domNode:d}=t.getState();if(!d)return r;const{x:h,y:p}=d.getBoundingClientRect(),y={x:r.x-h,y:r.y-p},m=o.snapGrid??a,v=o.snapToGrid??c;return xo(y,l,v,m)},flowToScreenPosition:r=>{const{transform:o,domNode:l}=t.getState();if(!l)return r;const{x:a,y:c}=l.getBoundingClientRect(),d=ii(r,o);return{x:d.x+a,y:d.y+c}}}),[])};function yg(t,r){const o=[],l=new Map,a=[];for(const c of t)if(c.type==="add"){a.push(c);continue}else if(c.type==="remove"||c.type==="replace")l.set(c.id,[c]);else{const d=l.get(c.id);d?d.push(c):l.set(c.id,[c])}for(const c of r){const d=l.get(c.id);if(!d){o.push(c);continue}if(d[0].type==="remove")continue;if(d[0].type==="replace"){o.push({...d[0].item});continue}const h={...c};for(const p of d)J1(p,h);o.push(h)}return a.length&&a.forEach(c=>{c.index!==void 0?o.splice(c.index,0,{...c.item}):o.push({...c.item})}),o}function J1(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 eS(t,r){return yg(t,r)}function tS(t,r){return yg(t,r)}function fr(t,r){return{id:t,type:"select",selected:r}}function qr(t,r=new Set,o=!1){const l=[];for(const[a,c]of t){const d=r.has(a);!(c.selected===void 0&&!d)&&c.selected!==d&&(o&&(c.selected=d),l.push(fr(c.id,d)))}return l}function Oh({items:t=[],lookup:r}){var a;const o=[],l=new Map(t.map(c=>[c.id,c]));for(const[c,d]of t.entries()){const h=r.get(d.id),p=((a=h==null?void 0:h.internals)==null?void 0:a.userNode)??h;p!==void 0&&p!==d&&o.push({id:d.id,item:d,type:"replace"}),p===void 0&&o.push({item:d,type:"add",index:c})}for(const[c]of r)l.get(c)===void 0&&o.push({id:c,type:"remove"});return o}function bh(t){return{id:t.id,type:"remove"}}const nS=Wp();function rS(t,r,o={}){return Fw(t,r,{...o,onError:o.onError??nS})}const Fh=t=>Nw(t),iS=t=>Fp(t);function vg(t){return W.forwardRef(t)}const xg=typeof window<"u"?W.useLayoutEffect:W.useEffect;function Hh(t){const[r,o]=W.useState(BigInt(0)),[l]=W.useState(()=>oS(()=>o(a=>a+BigInt(1))));return xg(()=>{const a=l.get();a.length&&(t(a),l.reset())},[r]),l}function oS(t){let r=[];return{get:()=>r,reset:()=>{r=[]},push:o=>{r.push(o),t()}}}const wg=W.createContext(null);function sS({children:t}){const r=be(),o=W.useCallback(h=>{const{nodes:p=[],setNodes:y,hasDefaultNodes:m,onNodesChange:v,nodeLookup:g,fitViewQueued:S,onNodesChangeMiddlewareMap:_}=r.getState();let M=p;for(const E of h)M=typeof E=="function"?E(M):E;let k=Oh({items:M,lookup:g});for(const E of _.values())k=E(k);m&&y(M),k.length>0?v==null||v(k):S&&window.requestAnimationFrame(()=>{const{fitViewQueued:E,nodes:z,setNodes:N}=r.getState();E&&N(z)})},[]),l=Hh(o),a=W.useCallback(h=>{const{edges:p=[],setEdges:y,hasDefaultEdges:m,onEdgesChange:v,edgeLookup:g}=r.getState();let S=p;for(const _ of h)S=typeof _=="function"?_(S):_;m?y(S):v&&v(Oh({items:S,lookup:g}))},[]),c=Hh(a),d=W.useMemo(()=>({nodeQueue:l,edgeQueue:c}),[]);return x.jsx(wg.Provider,{value:d,children:t})}function lS(){const t=W.useContext(wg);if(!t)throw new Error("useBatchContext must be used within a BatchProvider");return t}const aS=t=>!!t.panZoom;function fc(){const t=Z1(),r=be(),o=lS(),l=Te(aS),a=W.useMemo(()=>{const c=v=>r.getState().nodeLookup.get(v),d=v=>{o.nodeQueue.push(v)},h=v=>{o.edgeQueue.push(v)},p=v=>{var E,z;const{nodeLookup:g,nodeOrigin:S}=r.getState(),_=Fh(v)?v:g.get(v.id),M=_.parentId?Xp(_.position,_.measured,_.parentId,g,S):_.position,k={..._,position:M,width:((E=_.measured)==null?void 0:E.width)??_.width,height:((z=_.measured)==null?void 0:z.height)??_.height};return ao(k)},y=(v,g,S={replace:!1})=>{d(_=>_.map(M=>{if(M.id===v){const k=typeof g=="function"?g(M):g;return S.replace&&Fh(k)?k:{...M,...k}}return M}))},m=(v,g,S={replace:!1})=>{h(_=>_.map(M=>{if(M.id===v){const k=typeof g=="function"?g(M):g;return S.replace&&iS(k)?k:{...M,...k}}return M}))};return{getNodes:()=>r.getState().nodes.map(v=>({...v})),getNode:v=>{var g;return(g=c(v))==null?void 0:g.internals.userNode},getInternalNode:c,getEdges:()=>{const{edges:v=[]}=r.getState();return v.map(g=>({...g}))},getEdge:v=>r.getState().edgeLookup.get(v),setNodes:d,setEdges:h,addNodes:v=>{const g=Array.isArray(v)?v:[v];o.nodeQueue.push(S=>[...S,...g])},addEdges:v=>{const g=Array.isArray(v)?v:[v];o.edgeQueue.push(S=>[...S,...g])},toObject:()=>{const{nodes:v=[],edges:g=[],transform:S}=r.getState(),[_,M,k]=S;return{nodes:v.map(E=>({...E})),edges:g.map(E=>({...E})),viewport:{x:_,y:M,zoom:k}}},deleteElements:async({nodes:v=[],edges:g=[]})=>{const{nodes:S,edges:_,onNodesDelete:M,onEdgesDelete:k,triggerNodeChanges:E,triggerEdgeChanges:z,onDelete:N,onBeforeDelete:P}=r.getState(),{nodes:b,edges:$}=await Iw({nodesToRemove:v,edgesToRemove:g,nodes:S,edges:_,onBeforeDelete:P}),H=$.length>0,X=b.length>0;if(H){const K=$.map(bh);k==null||k($),z(K)}if(X){const K=b.map(bh);M==null||M(b),E(K)}return(X||H)&&(N==null||N({nodes:b,edges:$})),{deletedNodes:b,deletedEdges:$}},getIntersectingNodes:(v,g=!0,S)=>{const _=dh(v),M=_?v:p(v),k=S!==void 0;return M?(S||r.getState().nodes).filter(E=>{const z=r.getState().nodeLookup.get(E.id);if(z&&!_&&(E.id===v.id||!z.internals.positionAbsolute))return!1;const N=ao(k?E:z),P=ll(N,M);return g&&P>0||P>=N.width*N.height||P>=M.width*M.height}):[]},isNodeIntersecting:(v,g,S=!0)=>{const M=dh(v)?v:p(v);if(!M)return!1;const k=ll(M,g);return S&&k>0||k>=g.width*g.height||k>=M.width*M.height},updateNode:y,updateNodeData:(v,g,S={replace:!1})=>{y(v,_=>{const M=typeof g=="function"?g(_):g;return S.replace?{..._,data:M}:{..._,data:{..._.data,...M}}},S)},updateEdge:m,updateEdgeData:(v,g,S={replace:!1})=>{m(v,_=>{const M=typeof g=="function"?g(_):g;return S.replace?{..._,data:M}:{..._,data:{..._.data,...M}}},S)},getNodesBounds:v=>{const{nodeLookup:g,nodeOrigin:S}=r.getState();return Cw(v,{nodeLookup:g,nodeOrigin:S})},getHandleConnections:({type:v,id:g,nodeId:S})=>{var _;return Array.from(((_=r.getState().connectionLookup.get(`${S}-${v}${g?`-${g}`:""}`))==null?void 0:_.values())??[])},getNodeConnections:({type:v,handleId:g,nodeId:S})=>{var _;return Array.from(((_=r.getState().connectionLookup.get(`${S}${v?g?`-${v}-${g}`:`-${v}`:""}`))==null?void 0:_.values())??[])},fitView:async v=>{const g=r.getState().fitViewResolver??Rw();return r.setState({fitViewQueued:!0,fitViewOptions:v,fitViewResolver:g}),o.nodeQueue.push(S=>[...S]),g.promise}}},[]);return W.useMemo(()=>({...a,...t,viewportInitialized:l}),[l])}const Vh=t=>t.selected,uS=typeof window<"u"?window:void 0;function cS({deleteKeyCode:t,multiSelectionKeyCode:r}){const o=be(),{deleteElements:l}=fc(),a=co(t,{actInsideInputWithModifier:!1}),c=co(r,{target:uS});W.useEffect(()=>{if(a){const{edges:d,nodes:h}=o.getState();l({nodes:h.filter(Vh),edges:d.filter(Vh)}),o.setState({nodesSelectionActive:!1})}},[a]),W.useEffect(()=>{o.setState({multiSelectionActive:c})},[c])}function dS(t){const r=be();W.useEffect(()=>{const o=()=>{var a,c,d,h;if(!t.current||!(((c=(a=t.current).checkVisibility)==null?void 0:c.call(a))??!0))return!1;const l=sc(t.current);(l.height===0||l.width===0)&&((h=(d=r.getState()).onError)==null||h.call(d,"004",qt.error004())),r.setState({width:l.width||500,height:l.height||500})};if(t.current){o(),window.addEventListener("resize",o);const l=new ResizeObserver(()=>o());return l.observe(t.current),()=>{window.removeEventListener("resize",o),l&&t.current&&l.unobserve(t.current)}}},[])}const Sl={position:"absolute",width:"100%",height:"100%",top:0,left:0},fS=t=>({userSelectionActive:t.userSelectionActive,lib:t.lib,connectionInProgress:t.connection.inProgress});function hS({onPaneContextMenu:t,zoomOnScroll:r=!0,zoomOnPinch:o=!0,panOnScroll:l=!1,panActivationKeyPressed:a,panOnScrollSpeed:c=.5,panOnScrollMode:d=gr.Free,zoomOnDoubleClick:h=!0,panOnDrag:p=!0,defaultViewport:y,translateExtent:m,minZoom:v,maxZoom:g,zoomActivationKeyCode:S,preventScrolling:_=!0,children:M,noWheelClassName:k,noPanClassName:E,onViewportChange:z,isControlledViewport:N,paneClickDistance:P,selectionOnDrag:b}){const $=be(),H=W.useRef(null),{userSelectionActive:X,lib:K,connectionInProgress:ne}=Te(fS,Ue),Z=co(S),te=W.useRef();dS(H);const J=W.useCallback(C=>{z==null||z({x:C[0],y:C[1],zoom:C[2]}),N||$.setState({transform:C})},[z,N]);return W.useEffect(()=>{if(H.current){te.current=m1({domNode:H.current,minZoom:v,maxZoom:g,translateExtent:m,viewport:y,onDraggingChange:V=>$.setState(A=>A.paneDragging===V?A:{paneDragging:V}),onPanZoomStart:(V,A)=>{const{onViewportChangeStart:L,onMoveStart:O}=$.getState();O==null||O(V,A),L==null||L(A)},onPanZoom:(V,A)=>{const{onViewportChange:L,onMove:O}=$.getState();O==null||O(V,A),L==null||L(A)},onPanZoomEnd:(V,A)=>{const{onViewportChangeEnd:L,onMoveEnd:O}=$.getState();O==null||O(V,A),L==null||L(A)}});const{x:C,y:B,zoom:F}=te.current.getViewport();return $.setState({panZoom:te.current,transform:[C,B,F],domNode:H.current.closest(".react-flow")}),()=>{var V;(V=te.current)==null||V.destroy()}}},[]),W.useEffect(()=>{var C;(C=te.current)==null||C.update({onPaneContextMenu:t,zoomOnScroll:r,zoomOnPinch:o,panOnScroll:l,panActivationKeyPressed:a,panOnScrollSpeed:c,panOnScrollMode:d,zoomOnDoubleClick:h,panOnDrag:p,zoomActivationKeyPressed:Z,preventScrolling:_,noPanClassName:E,userSelectionActive:X,noWheelClassName:k,lib:K,onTransformChange:J,connectionInProgress:ne,selectionOnDrag:b,paneClickDistance:P})},[t,r,o,l,a,c,d,h,p,Z,_,E,X,k,K,J,ne,b,P]),x.jsx("div",{className:"react-flow__renderer",ref:H,style:Sl,children:M})}const pS=t=>({userSelectionActive:t.userSelectionActive,userSelectionRect:t.userSelectionRect});function gS(){const{userSelectionActive:t,userSelectionRect:r}=Te(pS,Ue);return t&&r?x.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 Tu=(t,r)=>o=>{o.target===r.current&&(t==null||t(o))},mS=t=>({userSelectionActive:t.userSelectionActive,elementsSelectable:t.elementsSelectable,dragging:t.paneDragging,panBy:t.panBy,autoPanSpeed:t.autoPanSpeed});function yS({isSelecting:t,selectionKeyPressed:r,selectionMode:o=lo.Full,panOnDrag:l,autoPanOnSelection:a,paneClickDistance:c,selectionOnDrag:d,onSelectionStart:h,onSelectionEnd:p,onPaneClick:y,onPaneContextMenu:m,onPaneScroll:v,onPaneMouseEnter:g,onPaneMouseMove:S,onPaneMouseLeave:_,children:M}){const k=W.useRef(0),E=be(),{userSelectionActive:z,elementsSelectable:N,dragging:P,panBy:b,autoPanSpeed:$}=Te(mS,Ue),H=N&&(t||z),X=W.useRef(null),K=W.useRef(),ne=W.useRef(new Set),Z=W.useRef(new Set),te=W.useRef(!1),J=W.useRef(!1),C=W.useRef({x:0,y:0}),B=W.useRef(!1),F=Q=>{if(J.current||te.current||E.getState().connection.inProgress){J.current=!1,te.current=!1;return}y==null||y(Q),E.getState().resetSelectedElements(),E.setState({nodesSelectionActive:!1})},V=Q=>{if(Array.isArray(l)&&(l!=null&&l.includes(2))){Q.preventDefault();return}m==null||m(Q)},A=v?Q=>v(Q):void 0,L=Q=>{J.current&&(Q.stopPropagation(),J.current=!1)},O=Q=>{var ze,Ze;if(Q.pointerType==="touch"&&l!==!1&&!r)return;const{domNode:se,transform:pe}=E.getState();if(K.current=se==null?void 0:se.getBoundingClientRect(),!K.current)return;const Se=Q.target===X.current;if(!Se&&!!Q.target.closest(".nokey")||!t||!(d&&Se||r)||Q.button!==0||!Q.isPrimary)return;(Ze=(ze=Q.target)==null?void 0:ze.setPointerCapture)==null||Ze.call(ze,Q.pointerId),J.current=!1;const{x:Ce,y:Me}=Gt(Q.nativeEvent,K.current),Pe=xo({x:Ce,y:Me},pe);E.setState({userSelectionRect:{width:0,height:0,startX:Pe.x,startY:Pe.y,x:Ce,y:Me}}),Se||(Q.stopPropagation(),Q.preventDefault())};function j(Q,se){const{userSelectionRect:pe}=E.getState();if(!pe)return;const{transform:Se,nodeLookup:ve,edgeLookup:me,connectionLookup:Ce,triggerNodeChanges:Me,triggerEdgeChanges:Pe,defaultEdgeOptions:ze}=E.getState(),Ze={x:pe.startX,y:pe.startY},{x:lt,y:Je}=ii(Ze,Se),et={startX:Ze.x,startY:Ze.y,x:Qit.id)),Z.current=new Set;const Et=(ze==null?void 0:ze.selectable)??!0;for(const it of ne.current){const ft=Ce.get(it);if(ft)for(const{edgeId:q}of ft.values()){const we=me.get(q);we&&(we.selectable??Et)&&Z.current.add(q)}}if(!fh(Lt,ne.current)){const it=qr(ve,ne.current,!0);Me(it)}if(!fh(kt,Z.current)){const it=qr(me,Z.current);Pe(it)}E.setState({userSelectionRect:et,userSelectionActive:!0,nodesSelectionActive:!1})}function T(){if(!a||!K.current)return;const[Q,se]=ic(C.current,K.current,$);b({x:Q,y:se}).then(pe=>{if(!J.current||!pe){k.current=requestAnimationFrame(T);return}const{x:Se,y:ve}=C.current;j(Se,ve),k.current=requestAnimationFrame(T)})}const ee=()=>{cancelAnimationFrame(k.current),k.current=0,B.current=!1};W.useEffect(()=>()=>ee(),[]);const re=Q=>{const{userSelectionRect:se,transform:pe,resetSelectedElements:Se}=E.getState();if(!K.current||!se)return;const{x:ve,y:me}=Gt(Q.nativeEvent,K.current);C.current={x:ve,y:me};const Ce=ii({x:se.startX,y:se.startY},pe);if(!J.current){const Me=r?0:c;if(Math.hypot(ve-Ce.x,me-Ce.y)<=Me)return;Se(),h==null||h(Q)}J.current=!0,B.current||(T(),B.current=!0),j(ve,me)},ue=Q=>{var se,pe;if(!H){Q.target===X.current&&E.getState().connection.inProgress&&(te.current=!0);return}Q.button===0&&((pe=(se=Q.target)==null?void 0:se.releasePointerCapture)==null||pe.call(se,Q.pointerId),!z&&Q.target===X.current&&E.getState().userSelectionRect&&(F==null||F(Q)),E.setState({userSelectionActive:!1,userSelectionRect:null}),J.current&&(p==null||p(Q),E.setState({nodesSelectionActive:ne.current.size>0})),ee())},de=Q=>{var se,pe;(pe=(se=Q.target)==null?void 0:se.releasePointerCapture)==null||pe.call(se,Q.pointerId),ee()},ce=l===!0||Array.isArray(l)&&l.includes(0);return x.jsxs("div",{className:Qe(["react-flow__pane",{draggable:ce,dragging:P,selection:t}]),onClick:H?void 0:Tu(F,X),onContextMenu:Tu(V,X),onWheel:Tu(A,X),onPointerEnter:H?void 0:g,onPointerMove:H?re:S,onPointerUp:ue,onPointerCancel:H?de:void 0,onPointerDownCapture:H?O:void 0,onClickCapture:H?L:void 0,onPointerLeave:_,ref:X,style:Sl,children:[M,x.jsx(gS,{})]})}function Xu({id:t,store:r,unselect:o=!1,nodeRef:l}){const{addSelectedNodes:a,unselectNodesAndEdges:c,multiSelectionActive:d,nodeLookup:h,onError:p}=r.getState(),y=h.get(t);if(!y){p==null||p("012",qt.error012(t));return}r.setState({nodesSelectionActive:!1}),y.selected?(o||y.selected&&d)&&(c({nodes:[y],edges:[]}),requestAnimationFrame(()=>{var m;return(m=l==null?void 0:l.current)==null?void 0:m.blur()})):a([t])}function Sg({nodeRef:t,disabled:r=!1,noDragClassName:o,handleSelector:l,nodeId:a,isSelectable:c,nodeClickDistance:d}){const h=be(),[p,y]=W.useState(!1),m=W.useRef();return W.useEffect(()=>{if(!r)return m.current=n1({getStoreItems:()=>h.getState(),onNodeMouseDown:v=>{Xu({id:v,store:h,nodeRef:t})},onDragStart:()=>{y(!0)},onDragStop:()=>{y(!1)}}),()=>{var v;(v=m.current)==null||v.destroy(),m.current=void 0}},[r,h,t]),W.useEffect(()=>{r||!t.current||!m.current||m.current.update({noDragClassName:o,handleSelector:l,domNode:t.current,isSelectable:c,nodeId:a,nodeClickDistance:d})},[o,l,r,c,t,a,d]),p}const vS=t=>r=>r.selected&&(r.draggable||t&&typeof r.draggable>"u");function _g(){const t=be();return W.useCallback(o=>{const{nodeExtent:l,snapToGrid:a,snapGrid:c,nodesDraggable:d,onError:h,updateNodePositions:p,nodeLookup:y,nodeOrigin:m}=t.getState(),v=new Map,g=vS(d),S=a?c[0]:5,_=a?c[1]:5,M=o.direction.x*S*o.factor,k=o.direction.y*_*o.factor;for(const[,E]of y){if(!g(E))continue;let z={x:E.internals.positionAbsolute.x+M,y:E.internals.positionAbsolute.y+k};a&&(z=vo(z,c));const{position:N,positionAbsolute:P}=Hp({nodeId:E.id,nextPosition:z,nodeLookup:y,nodeExtent:l,nodeOrigin:m,onError:h});E.position=N,E.internals.positionAbsolute=P,v.set(E.id,E)}p(v)},[])}const hc=W.createContext(null),xS=hc.Provider;hc.Consumer;const kg=()=>W.useContext(hc),wS=t=>({connectOnClick:t.connectOnClick,noPanClassName:t.noPanClassName,rfId:t.rfId}),Eg=W.createContext(null);function SS({children:t}){const r=Te(wS,Ue);return x.jsx(Eg.Provider,{value:r,children:t})}function _S(){const t=W.useContext(Eg);if(!t)throw new Error("useHandleConfig must be used within a HandleConfigProvider");return t}const kS={connectingFrom:!1,connectingTo:!1,clickConnecting:!1,isPossibleEndHandle:!0,connectionInProcess:!1,clickConnectionInProcess:!1,valid:!1},ES=(t,r,o)=>l=>{const{connectionClickStartHandle:a,connectionMode:c,connection:d}=l,{fromHandle:h,toHandle:p,isValid:y}=d;if(!h&&!a)return kS;const m=(p==null?void 0:p.nodeId)===t&&(p==null?void 0:p.id)===r&&(p==null?void 0:p.type)===o;return{connectingFrom:(h==null?void 0:h.nodeId)===t&&(h==null?void 0:h.id)===r&&(h==null?void 0:h.type)===o,connectingTo:m,clickConnecting:(a==null?void 0:a.nodeId)===t&&(a==null?void 0:a.id)===r&&(a==null?void 0:a.type)===o,isPossibleEndHandle:c===ni.Strict?(h==null?void 0:h.type)!==o:t!==(h==null?void 0:h.nodeId)||r!==(h==null?void 0:h.id),connectionInProcess:!!h,clickConnectionInProcess:!!a,valid:m&&y}};function NS({type:t="source",position:r=_e.Top,isValidConnection:o,isConnectable:l=!0,isConnectableStart:a=!0,isConnectableEnd:c=!0,id:d,onConnect:h,children:p,className:y,onMouseDown:m,onTouchStart:v,...g},S){var B,F;const _=d||null,M=t==="target",k=be(),E=kg(),{connectOnClick:z,noPanClassName:N,rfId:P}=_S(),{connectingFrom:b,connectingTo:$,clickConnecting:H,isPossibleEndHandle:X,connectionInProcess:K,clickConnectionInProcess:ne,valid:Z}=Te(ES(E,_,t),Ue);E||(F=(B=k.getState()).onError)==null||F.call(B,"010",qt.error010());const te=V=>{const{defaultEdgeOptions:A,onConnect:L,hasDefaultEdges:O}=k.getState(),j={...A,...V};if(O){const{edges:T,setEdges:ee,onError:re}=k.getState();ee(rS(j,T,{onError:re}))}L==null||L(j),h==null||h(j)},J=V=>{if(!E)return;const A=Gp(V.nativeEvent);if(a&&(A&&V.button===0||!A)){const L=k.getState();Yu.onPointerDown(V.nativeEvent,{handleDomNode:V.currentTarget,autoPanOnConnect:L.autoPanOnConnect,connectionMode:L.connectionMode,connectionRadius:L.connectionRadius,domNode:L.domNode,nodeLookup:L.nodeLookup,lib:L.lib,isTarget:M,handleId:_,nodeId:E,flowId:L.rfId,panBy:L.panBy,cancelConnection:L.cancelConnection,onConnectStart:L.onConnectStart,onConnectEnd:(...O)=>{var j,T;return(T=(j=k.getState()).onConnectEnd)==null?void 0:T.call(j,...O)},updateConnection:L.updateConnection,onConnect:te,isValidConnection:o||((...O)=>{var j,T;return((T=(j=k.getState()).isValidConnection)==null?void 0:T.call(j,...O))??!0}),getTransform:()=>k.getState().transform,getFromHandle:()=>k.getState().connection.fromHandle,autoPanSpeed:L.autoPanSpeed,dragThreshold:L.connectionDragThreshold})}A?m==null||m(V):v==null||v(V)},C=V=>{const{onClickConnectStart:A,onClickConnectEnd:L,connectionClickStartHandle:O,connectionMode:j,isValidConnection:T,lib:ee,rfId:re,nodeLookup:ue,connection:de}=k.getState();if(!E||!O&&!a)return;if(!O){A==null||A(V.nativeEvent,{nodeId:E,handleId:_,handleType:t}),k.setState({connectionClickStartHandle:{nodeId:E,type:t,id:_}});return}const ce=Qp(V.target),Q=o||T,{connection:se,isValid:pe}=Yu.isValid(V.nativeEvent,{handle:{nodeId:E,id:_,type:t},connectionMode:j,fromNodeId:O.nodeId,fromHandleId:O.id||null,fromType:O.type,isValidConnection:Q,flowId:re,doc:ce,lib:ee,nodeLookup:ue});pe&&se&&te(se);const Se=structuredClone(de);delete Se.inProgress,Se.toPosition=Se.toHandle?Se.toHandle.position:null,L==null||L(V,Se),k.setState({connectionClickStartHandle:null})};return x.jsx("div",{"data-handleid":_,"data-nodeid":E,"data-handlepos":r,"data-id":`${P}-${E}-${_}-${t}`,className:Qe(["react-flow__handle",`react-flow__handle-${r}`,"nodrag",N,y,{source:!M,target:M,connectable:l,connectablestart:a,connectableend:c,clickconnecting:H,connectingfrom:b,connectingto:$,valid:Z,connectionindicator:l&&(!K||X)&&(K||ne?c:a)}]),onMouseDown:J,onTouchStart:J,onClick:z?C:void 0,ref:S,...g,children:p})}const al=W.memo(vg(NS));function CS({data:t,isConnectable:r,sourcePosition:o=_e.Bottom}){return x.jsxs(x.Fragment,{children:[t==null?void 0:t.label,x.jsx(al,{type:"source",position:o,isConnectable:r})]})}function jS({data:t,isConnectable:r,targetPosition:o=_e.Top,sourcePosition:l=_e.Bottom}){return x.jsxs(x.Fragment,{children:[x.jsx(al,{type:"target",position:o,isConnectable:r}),t==null?void 0:t.label,x.jsx(al,{type:"source",position:l,isConnectable:r})]})}function MS(){return null}function PS({data:t,isConnectable:r,targetPosition:o=_e.Top}){return x.jsxs(x.Fragment,{children:[x.jsx(al,{type:"target",position:o,isConnectable:r}),t==null?void 0:t.label]})}const ul={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},Bh={input:CS,default:jS,output:PS,group:MS};function IS(t){var r,o,l,a;return t.internals.handleBounds===void 0?{width:t.width??t.initialWidth??((r=t.style)==null?void 0:r.width),height:t.height??t.initialHeight??((o=t.style)==null?void 0:o.height)}:{width:t.width??((l=t.style)==null?void 0:l.width),height:t.height??((a=t.style)==null?void 0:a.height)}}const TS=t=>{const{width:r,height:o,x:l,y:a}=yo(t.nodeLookup,{filter:c=>!!c.selected});return{width:Kt(r)?r:null,height:Kt(o)?o:null,userSelectionActive:t.userSelectionActive,transformString:`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]}) translate(${l}px,${a}px)`}};function zS({onSelectionContextMenu:t,noPanClassName:r,disableKeyboardA11y:o}){const l=be(),{width:a,height:c,transformString:d,userSelectionActive:h}=Te(TS,Ue),p=_g(),y=W.useRef(null);W.useEffect(()=>{var S;o||(S=y.current)==null||S.focus({preventScroll:!0})},[o]);const m=!h&&a!==null&&c!==null;if(Sg({nodeRef:y,disabled:!m}),!m)return null;const v=t?S=>{const _=l.getState().nodes.filter(M=>M.selected);t(S,_)}:void 0,g=S=>{Object.prototype.hasOwnProperty.call(ul,S.key)&&(S.preventDefault(),p({direction:ul[S.key],factor:S.shiftKey?4:1}))};return x.jsx("div",{className:Qe(["react-flow__nodesselection","react-flow__container",r]),style:{transform:d},children:x.jsx("div",{ref:y,className:"react-flow__nodesselection-rect",onContextMenu:v,tabIndex:o?void 0:-1,onKeyDown:o?void 0:g,style:{width:a,height:c}})})}const Uh=typeof window<"u"?window:void 0,RS=t=>({nodesSelectionActive:t.nodesSelectionActive,userSelectionActive:t.userSelectionActive});function Ng({children:t,onPaneClick:r,onPaneMouseEnter:o,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:c,onPaneScroll:d,paneClickDistance:h,deleteKeyCode:p,selectionKeyCode:y,selectionOnDrag:m,selectionMode:v,onSelectionStart:g,onSelectionEnd:S,multiSelectionKeyCode:_,panActivationKeyCode:M,zoomActivationKeyCode:k,elementsSelectable:E,zoomOnScroll:z,zoomOnPinch:N,panOnScroll:P,panOnScrollSpeed:b,panOnScrollMode:$,zoomOnDoubleClick:H,panOnDrag:X,autoPanOnSelection:K,defaultViewport:ne,translateExtent:Z,minZoom:te,maxZoom:J,preventScrolling:C,onSelectionContextMenu:B,noWheelClassName:F,noPanClassName:V,disableKeyboardA11y:A,onViewportChange:L,isControlledViewport:O}){const{nodesSelectionActive:j,userSelectionActive:T}=Te(RS,Ue),ee=co(y,{target:Uh}),re=co(M,{target:Uh}),ue=re||X,de=re||P,ce=m&&ue!==!0,Q=ee||T||ce;return cS({deleteKeyCode:p,multiSelectionKeyCode:_}),x.jsx(hS,{onPaneContextMenu:c,elementsSelectable:E,zoomOnScroll:z,zoomOnPinch:N,panOnScroll:de,panActivationKeyPressed:re,panOnScrollSpeed:b,panOnScrollMode:$,zoomOnDoubleClick:H,panOnDrag:!ee&&ue,defaultViewport:ne,translateExtent:Z,minZoom:te,maxZoom:J,zoomActivationKeyCode:k,preventScrolling:C,noWheelClassName:F,noPanClassName:V,onViewportChange:L,isControlledViewport:O,paneClickDistance:h,selectionOnDrag:ce,children:x.jsxs(yS,{onSelectionStart:g,onSelectionEnd:S,onPaneClick:r,onPaneMouseEnter:o,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:c,onPaneScroll:d,panOnDrag:ue,autoPanOnSelection:K,isSelecting:!!Q,selectionMode:v,selectionKeyPressed:ee,paneClickDistance:h,selectionOnDrag:ce,children:[t,j&&x.jsx(zS,{onSelectionContextMenu:B,noPanClassName:V,disableKeyboardA11y:A})]})})}Ng.displayName="FlowRenderer";const LS=W.memo(Ng),AS=t=>r=>t?rc(r.nodeLookup,{x:0,y:0,width:r.width,height:r.height},r.transform,!0).map(o=>o.id):Array.from(r.nodeLookup.keys());function $S(t){return Te(W.useCallback(AS(t),[t]),Ue)}const DS=t=>t.updateNodeInternals;function OS(){const t=Te(DS),[r]=W.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(o=>{const l=new Map;o.forEach(a=>{const c=a.target.getAttribute("data-id");l.set(c,{id:c,nodeElement:a.target,force:!0})}),t(l)}));return W.useEffect(()=>()=>{r==null||r.disconnect()},[r]),r}function bS({node:t,nodeType:r,hasDimensions:o,resizeObserver:l}){const a=be(),c=W.useRef(null),d=W.useRef(null),h=W.useRef(t.sourcePosition),p=W.useRef(t.targetPosition),y=W.useRef(r),m=o&&!!t.internals.handleBounds;return W.useEffect(()=>{c.current&&!t.hidden&&(!m||d.current!==c.current)&&(d.current&&(l==null||l.unobserve(d.current)),l==null||l.observe(c.current),d.current=c.current)},[m,t.hidden]),W.useEffect(()=>()=>{d.current&&(l==null||l.unobserve(d.current),d.current=null)},[]),W.useEffect(()=>{if(c.current){const v=y.current!==r,g=h.current!==t.sourcePosition,S=p.current!==t.targetPosition;(v||g||S)&&(y.current=r,h.current=t.sourcePosition,p.current=t.targetPosition,a.getState().updateNodeInternals(new Map([[t.id,{id:t.id,nodeElement:c.current,force:!0}]])))}},[t.id,r,t.sourcePosition,t.targetPosition]),c}function FS({id:t,onClick:r,onMouseEnter:o,onMouseMove:l,onMouseLeave:a,onContextMenu:c,onDoubleClick:d,nodesDraggable:h,elementsSelectable:p,nodesConnectable:y,nodesFocusable:m,resizeObserver:v,noDragClassName:g,noPanClassName:S,disableKeyboardA11y:_,rfId:M,nodeTypes:k,nodeClickDistance:E,onError:z}){const{node:N,internals:P,isParent:b}=Te(Q=>{const se=Q.nodeLookup.get(t),pe=Q.parentLookup.has(t);return{node:se,internals:se.internals,isParent:pe}},Ue);let $=N.type||"default",H=(k==null?void 0:k[$])||Bh[$];H===void 0&&(z==null||z("003",qt.error003($)),$="default",H=(k==null?void 0:k.default)||Bh.default);const X=!!(N.draggable||h&&typeof N.draggable>"u"),K=!!(N.selectable||p&&typeof N.selectable>"u"),ne=!!(N.connectable||y&&typeof N.connectable>"u"),Z=!!(N.focusable||m&&typeof N.focusable>"u"),te=be(),J=Yp(N),C=bS({node:N,nodeType:$,hasDimensions:J,resizeObserver:v}),B=Sg({nodeRef:C,disabled:N.hidden||!X,noDragClassName:g,handleSelector:N.dragHandle,nodeId:t,isSelectable:K,nodeClickDistance:E}),F=_g();if(N.hidden)return null;const V=Jt(N),A=IS(N),L=K||X||r||o||l||a,O=o?Q=>o(Q,{...P.userNode}):void 0,j=l?Q=>l(Q,{...P.userNode}):void 0,T=a?Q=>a(Q,{...P.userNode}):void 0,ee=c?Q=>c(Q,{...P.userNode}):void 0,re=d?Q=>d(Q,{...P.userNode}):void 0,ue=Q=>{const{selectNodesOnDrag:se,nodeDragThreshold:pe}=te.getState();K&&(!se||!X||pe>0)&&Xu({id:t,store:te,nodeRef:C}),r&&r(Q,{...P.userNode})},de=Q=>{if(!(Kp(Q.nativeEvent)||_)){if($p.includes(Q.key)&&K){const se=Q.key==="Escape";Xu({id:t,store:te,unselect:se,nodeRef:C})}else if(X&&N.selected&&Object.prototype.hasOwnProperty.call(ul,Q.key)){Q.preventDefault();const{ariaLabelConfig:se}=te.getState();te.setState({ariaLiveMessage:se["node.a11yDescription.ariaLiveMessage"]({direction:Q.key.replace("Arrow","").toLowerCase(),x:~~P.positionAbsolute.x,y:~~P.positionAbsolute.y})}),F({direction:ul[Q.key],factor:Q.shiftKey?4:1})}}},ce=()=>{var Ce;if(_||!((Ce=C.current)!=null&&Ce.matches(":focus-visible")))return;const{transform:Q,width:se,height:pe,autoPanOnNodeFocus:Se,setCenter:ve}=te.getState();if(!Se)return;rc(new Map([[t,N]]),{x:0,y:0,width:se,height:pe},Q,!0).length>0||ve(N.position.x+V.width/2,N.position.y+V.height/2,{zoom:Q[2]})};return x.jsx("div",{className:Qe(["react-flow__node",`react-flow__node-${$}`,{[S]:X},N.className,{selected:N.selected,selectable:K,parent:b,draggable:X,dragging:B}]),ref:C,style:{zIndex:P.z,transform:`translate(${P.positionAbsolute.x}px,${P.positionAbsolute.y}px)`,pointerEvents:L?"all":"none",visibility:J?"visible":"hidden",...N.style,...A},"data-id":t,"data-testid":`rf__node-${t}`,onMouseEnter:O,onMouseMove:j,onMouseLeave:T,onContextMenu:ee,onClick:ue,onDoubleClick:re,onKeyDown:Z?de:void 0,tabIndex:Z?0:void 0,onFocus:Z?ce:void 0,role:N.ariaRole??(Z?"group":void 0),"aria-roledescription":"node","aria-describedby":_?void 0:`${pg}-${M}`,"aria-label":N.ariaLabel,...N.domAttributes,children:x.jsx(xS,{value:t,children:x.jsx(H,{id:t,data:N.data,type:$,positionAbsoluteX:P.positionAbsolute.x,positionAbsoluteY:P.positionAbsolute.y,selected:N.selected??!1,selectable:K,draggable:X,deletable:N.deletable??!0,isConnectable:ne,sourcePosition:N.sourcePosition,targetPosition:N.targetPosition,dragging:B,dragHandle:N.dragHandle,zIndex:P.z,parentId:N.parentId,...V})})})}var HS=W.memo(FS);const VS=t=>({nodesConnectable:t.nodesConnectable,nodesFocusable:t.nodesFocusable,elementsSelectable:t.elementsSelectable,onError:t.onError});function Cg(t){const{nodesConnectable:r,nodesFocusable:o,elementsSelectable:l,onError:a}=Te(VS,Ue),c=$S(t.onlyRenderVisibleElements),d=OS();return x.jsx("div",{className:"react-flow__nodes",style:Sl,children:c.map(h=>x.jsx(HS,{id:h,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:t.nodesDraggable??!0,nodesConnectable:r,nodesFocusable:o,elementsSelectable:l,nodeClickDistance:t.nodeClickDistance,onError:a},h))})}Cg.displayName="NodeRenderer";const BS=W.memo(Cg);function US(t){return Te(W.useCallback(o=>{if(!t)return o.edges.map(a=>a.id);const l=[];if(o.width&&o.height)for(const a of o.edges){const c=o.nodeLookup.get(a.source),d=o.nodeLookup.get(a.target);c&&d&&Dw({sourceNode:c,targetNode:d,width:o.width,height:o.height,transform:o.transform})&&l.push(a.id)}return l},[t]),Ue)}const WS=({color:t="none",strokeWidth:r=1})=>{const o={strokeWidth:r,...t&&{stroke:t}};return x.jsx("polyline",{className:"arrow",style:o,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},YS=({color:t="none",strokeWidth:r=1})=>{const o={strokeWidth:r,...t&&{stroke:t,fill:t}};return x.jsx("polyline",{className:"arrowclosed",style:o,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})},Wh={[ol.Arrow]:WS,[ol.ArrowClosed]:YS};function XS(t){const r=be();return W.useMemo(()=>{var a,c;return Object.prototype.hasOwnProperty.call(Wh,t)?Wh[t]:((c=(a=r.getState()).onError)==null||c.call(a,"009",qt.error009(t)),null)},[t])}const QS=({id:t,type:r,color:o,width:l=12.5,height:a=12.5,markerUnits:c="strokeWidth",strokeWidth:d,orient:h="auto-start-reverse"})=>{const p=XS(r);return p?x.jsx("marker",{className:"react-flow__arrowhead",id:t,markerWidth:`${l}`,markerHeight:`${a}`,viewBox:"-10 -10 20 20",markerUnits:c,orient:h,refX:"0",refY:"0",children:x.jsx(p,{color:o,strokeWidth:d})}):null},jg=({defaultColor:t,rfId:r})=>{const o=Te(c=>c.edges),l=Te(c=>c.defaultEdgeOptions),a=W.useMemo(()=>Ww(o,{id:r,defaultColor:t,defaultMarkerStart:l==null?void 0:l.markerStart,defaultMarkerEnd:l==null?void 0:l.markerEnd}),[o,l,r,t]);return a.length?x.jsx("svg",{className:"react-flow__marker","aria-hidden":"true",children:x.jsx("defs",{children:a.map(c=>x.jsx(QS,{id:c.id,type:c.type,color:c.color,width:c.width,height:c.height,markerUnits:c.markerUnits,strokeWidth:c.strokeWidth,orient:c.orient},c.id))})}):null};jg.displayName="MarkerDefinitions";var KS=W.memo(jg);function Mg({x:t,y:r,label:o,labelStyle:l,labelShowBg:a=!0,labelBgStyle:c,labelBgPadding:d=[2,4],labelBgBorderRadius:h=2,children:p,className:y,...m}){const[v,g]=W.useState({x:1,y:0,width:0,height:0}),S=Qe(["react-flow__edge-textwrapper",y]),_=W.useRef(null);return W.useEffect(()=>{if(_.current){const M=_.current.getBBox();g({x:M.x,y:M.y,width:M.width,height:M.height})}},[o]),o?x.jsxs("g",{transform:`translate(${t-v.width/2} ${r-v.height/2})`,className:S,visibility:v.width?"visible":"hidden",...m,children:[a&&x.jsx("rect",{width:v.width+2*d[0],x:-d[0],y:-d[1],height:v.height+2*d[1],className:"react-flow__edge-textbg",style:c,rx:h,ry:h}),x.jsx("text",{className:"react-flow__edge-text",y:v.height/2,dy:"0.3em",ref:_,style:l,children:o}),p]}):null}Mg.displayName="EdgeText";const GS=W.memo(Mg);function _l({path:t,labelX:r,labelY:o,label:l,labelStyle:a,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:p,interactionWidth:y=20,...m}){return x.jsxs(x.Fragment,{children:[x.jsx("path",{...m,d:t,fill:"none",className:Qe(["react-flow__edge-path",m.className])}),y?x.jsx("path",{d:t,fill:"none",strokeOpacity:0,strokeWidth:y,className:"react-flow__edge-interaction"}):null,l&&Kt(r)&&Kt(o)?x.jsx(GS,{x:r,y:o,label:l,labelStyle:a,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:p}):null]})}function Yh({pos:t,x1:r,y1:o,x2:l,y2:a}){return t===_e.Left||t===_e.Right?[.5*(r+l),o]:[r,.5*(o+a)]}function Pg({sourceX:t,sourceY:r,sourcePosition:o=_e.Bottom,targetX:l,targetY:a,targetPosition:c=_e.Top}){const[d,h]=Yh({pos:o,x1:t,y1:r,x2:l,y2:a}),[p,y]=Yh({pos:c,x1:l,y1:a,x2:t,y2:r}),[m,v,g,S]=qp({sourceX:t,sourceY:r,targetX:l,targetY:a,sourceControlX:d,sourceControlY:h,targetControlX:p,targetControlY:y});return[`M${t},${r} C${d},${h} ${p},${y} ${l},${a}`,m,v,g,S]}function Ig(t){return W.memo(({id:r,sourceX:o,sourceY:l,targetX:a,targetY:c,sourcePosition:d,targetPosition:h,label:p,labelStyle:y,labelShowBg:m,labelBgStyle:v,labelBgPadding:g,labelBgBorderRadius:S,style:_,markerEnd:M,markerStart:k,interactionWidth:E})=>{const[z,N,P]=Pg({sourceX:o,sourceY:l,sourcePosition:d,targetX:a,targetY:c,targetPosition:h}),b=t.isInternal?void 0:r;return x.jsx(_l,{id:b,path:z,labelX:N,labelY:P,label:p,labelStyle:y,labelShowBg:m,labelBgStyle:v,labelBgPadding:g,labelBgBorderRadius:S,style:_,markerEnd:M,markerStart:k,interactionWidth:E})})}const qS=Ig({isInternal:!1}),Tg=Ig({isInternal:!0});qS.displayName="SimpleBezierEdge";Tg.displayName="SimpleBezierEdgeInternal";function zg(t){return W.memo(({id:r,sourceX:o,sourceY:l,targetX:a,targetY:c,label:d,labelStyle:h,labelShowBg:p,labelBgStyle:y,labelBgPadding:m,labelBgBorderRadius:v,style:g,sourcePosition:S=_e.Bottom,targetPosition:_=_e.Top,markerEnd:M,markerStart:k,pathOptions:E,interactionWidth:z})=>{const[N,P,b]=Bu({sourceX:o,sourceY:l,sourcePosition:S,targetX:a,targetY:c,targetPosition:_,borderRadius:E==null?void 0:E.borderRadius,offset:E==null?void 0:E.offset,stepPosition:E==null?void 0:E.stepPosition}),$=t.isInternal?void 0:r;return x.jsx(_l,{id:$,path:N,labelX:P,labelY:b,label:d,labelStyle:h,labelShowBg:p,labelBgStyle:y,labelBgPadding:m,labelBgBorderRadius:v,style:g,markerEnd:M,markerStart:k,interactionWidth:z})})}const Rg=zg({isInternal:!1}),Lg=zg({isInternal:!0});Rg.displayName="SmoothStepEdge";Lg.displayName="SmoothStepEdgeInternal";function Ag(t){return W.memo(({id:r,...o})=>{var a;const l=t.isInternal?void 0:r;return x.jsx(Rg,{...o,id:l,pathOptions:W.useMemo(()=>{var c;return{borderRadius:0,offset:(c=o.pathOptions)==null?void 0:c.offset}},[(a=o.pathOptions)==null?void 0:a.offset])})})}const ZS=Ag({isInternal:!1}),$g=Ag({isInternal:!0});ZS.displayName="StepEdge";$g.displayName="StepEdgeInternal";function Dg(t){return W.memo(({id:r,sourceX:o,sourceY:l,targetX:a,targetY:c,label:d,labelStyle:h,labelShowBg:p,labelBgStyle:y,labelBgPadding:m,labelBgBorderRadius:v,style:g,markerEnd:S,markerStart:_,interactionWidth:M})=>{const[k,E,z]=eg({sourceX:o,sourceY:l,targetX:a,targetY:c}),N=t.isInternal?void 0:r;return x.jsx(_l,{id:N,path:k,labelX:E,labelY:z,label:d,labelStyle:h,labelShowBg:p,labelBgStyle:y,labelBgPadding:m,labelBgBorderRadius:v,style:g,markerEnd:S,markerStart:_,interactionWidth:M})})}const JS=Dg({isInternal:!1}),Og=Dg({isInternal:!0});JS.displayName="StraightEdge";Og.displayName="StraightEdgeInternal";function bg(t){return W.memo(({id:r,sourceX:o,sourceY:l,targetX:a,targetY:c,sourcePosition:d=_e.Bottom,targetPosition:h=_e.Top,label:p,labelStyle:y,labelShowBg:m,labelBgStyle:v,labelBgPadding:g,labelBgBorderRadius:S,style:_,markerEnd:M,markerStart:k,pathOptions:E,interactionWidth:z})=>{const[N,P,b]=Zp({sourceX:o,sourceY:l,sourcePosition:d,targetX:a,targetY:c,targetPosition:h,curvature:E==null?void 0:E.curvature}),$=t.isInternal?void 0:r;return x.jsx(_l,{id:$,path:N,labelX:P,labelY:b,label:p,labelStyle:y,labelShowBg:m,labelBgStyle:v,labelBgPadding:g,labelBgBorderRadius:S,style:_,markerEnd:M,markerStart:k,interactionWidth:z})})}const e_=bg({isInternal:!1}),Fg=bg({isInternal:!0});e_.displayName="BezierEdge";Fg.displayName="BezierEdgeInternal";const Xh={default:Fg,straight:Og,step:$g,smoothstep:Lg,simplebezier:Tg},Qh={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null,zIndex:void 0},t_=(t,r,o)=>o===_e.Left?t-r:o===_e.Right?t+r:t,n_=(t,r,o)=>o===_e.Top?t-r:o===_e.Bottom?t+r:t,Kh="react-flow__edgeupdater";function Gh({position:t,centerX:r,centerY:o,radius:l=10,onMouseDown:a,onMouseEnter:c,onMouseOut:d,type:h}){return x.jsx("circle",{onMouseDown:a,onMouseEnter:c,onMouseOut:d,className:Qe([Kh,`${Kh}-${h}`]),cx:t_(r,l,t),cy:n_(o,l,t),r:l,stroke:"transparent",fill:"transparent"})}function r_({isReconnectable:t,reconnectRadius:r,edge:o,sourceX:l,sourceY:a,targetX:c,targetY:d,sourcePosition:h,targetPosition:p,onReconnect:y,onReconnectStart:m,onReconnectEnd:v,setReconnecting:g,setUpdateHover:S}){const _=be(),M=(P,b)=>{if(P.button!==0)return;const{autoPanOnConnect:$,domNode:H,connectionMode:X,connectionRadius:K,lib:ne,onConnectStart:Z,cancelConnection:te,nodeLookup:J,rfId:C,panBy:B,updateConnection:F}=_.getState(),V=b.type==="target",A=(j,T)=>{g(!1),v==null||v(j,o,b.type,T)},L=j=>y==null?void 0:y(o,j),O=(j,T)=>{g(!0),m==null||m(P,o,b.type),Z==null||Z(j,T)};Yu.onPointerDown(P.nativeEvent,{autoPanOnConnect:$,connectionMode:X,connectionRadius:K,domNode:H,handleId:b.id,nodeId:b.nodeId,nodeLookup:J,isTarget:V,edgeUpdaterType:b.type,lib:ne,flowId:C,cancelConnection:te,panBy:B,isValidConnection:(...j)=>{var T,ee;return((ee=(T=_.getState()).isValidConnection)==null?void 0:ee.call(T,...j))??!0},onConnect:L,onConnectStart:O,onConnectEnd:(...j)=>{var T,ee;return(ee=(T=_.getState()).onConnectEnd)==null?void 0:ee.call(T,...j)},onReconnectEnd:A,updateConnection:F,getTransform:()=>_.getState().transform,getFromHandle:()=>_.getState().connection.fromHandle,dragThreshold:_.getState().connectionDragThreshold,handleDomNode:P.currentTarget})},k=P=>M(P,{nodeId:o.target,id:o.targetHandle??null,type:"target"}),E=P=>M(P,{nodeId:o.source,id:o.sourceHandle??null,type:"source"}),z=()=>S(!0),N=()=>S(!1);return x.jsxs(x.Fragment,{children:[(t===!0||t==="source")&&x.jsx(Gh,{position:h,centerX:l,centerY:a,radius:r,onMouseDown:k,onMouseEnter:z,onMouseOut:N,type:"source"}),(t===!0||t==="target")&&x.jsx(Gh,{position:p,centerX:c,centerY:d,radius:r,onMouseDown:E,onMouseEnter:z,onMouseOut:N,type:"target"})]})}function i_({id:t,edgesFocusable:r,edgesReconnectable:o,elementsSelectable:l,onClick:a,onDoubleClick:c,onContextMenu:d,onMouseEnter:h,onMouseMove:p,onMouseLeave:y,reconnectRadius:m,onReconnect:v,onReconnectStart:g,onReconnectEnd:S,rfId:_,edgeTypes:M,noPanClassName:k,onError:E,disableKeyboardA11y:z}){let N=Te(ve=>ve.edgeLookup.get(t));const P=Te(ve=>ve.defaultEdgeOptions);N=P?{...P,...N}:N;let b=N.type||"default",$=(M==null?void 0:M[b])||Xh[b];$===void 0&&(E==null||E("011",qt.error011(b)),b="default",$=(M==null?void 0:M.default)||Xh.default);const H=!!(N.focusable||r&&typeof N.focusable>"u"),X=typeof v<"u"&&(N.reconnectable||o&&typeof N.reconnectable>"u"),K=!!(N.selectable||l&&typeof N.selectable>"u"),ne=W.useRef(null),[Z,te]=W.useState(!1),[J,C]=W.useState(!1),B=be(),{zIndex:F=N.zIndex,sourceX:V,sourceY:A,targetX:L,targetY:O,sourcePosition:j,targetPosition:T}=Te(W.useCallback(ve=>{const me=ve.nodeLookup.get(N.source),Ce=ve.nodeLookup.get(N.target);if(!me||!Ce)return Qh;const Me=Uw({id:t,sourceNode:me,targetNode:Ce,sourceHandle:N.sourceHandle||null,targetHandle:N.targetHandle||null,connectionMode:ve.connectionMode,onError:E}),Pe=$w({selected:N.selected,zIndex:N.zIndex,sourceNode:me,targetNode:Ce,elevateOnSelect:ve.elevateEdgesOnSelect,zIndexMode:ve.zIndexMode});return{...Me||Qh,zIndex:Pe}},[N.source,N.target,N.sourceHandle,N.targetHandle,N.selected,N.zIndex,E]),Ue),ee=W.useMemo(()=>N.markerStart?`url('#${Uu(N.markerStart,_)}')`:void 0,[N.markerStart,_]),re=W.useMemo(()=>N.markerEnd?`url('#${Uu(N.markerEnd,_)}')`:void 0,[N.markerEnd,_]);if(N.hidden||V===null||A===null||L===null||O===null)return null;const ue=ve=>{var Pe;const{addSelectedEdges:me,unselectNodesAndEdges:Ce,multiSelectionActive:Me}=B.getState();K&&(B.setState({nodesSelectionActive:!1}),N.selected&&Me?(Ce({nodes:[],edges:[N]}),(Pe=ne.current)==null||Pe.blur()):me([t])),a&&a(ve,N)},de=c?ve=>{c(ve,{...N})}:void 0,ce=d?ve=>{d(ve,{...N})}:void 0,Q=h?ve=>{h(ve,{...N})}:void 0,se=p?ve=>{p(ve,{...N})}:void 0,pe=y?ve=>{y(ve,{...N})}:void 0,Se=ve=>{var me;if(!z&&$p.includes(ve.key)&&K){const{unselectNodesAndEdges:Ce,addSelectedEdges:Me}=B.getState();ve.key==="Escape"?((me=ne.current)==null||me.blur(),Ce({edges:[N]})):Me([t])}};return x.jsx("svg",{style:{zIndex:F},children:x.jsxs("g",{className:Qe(["react-flow__edge",`react-flow__edge-${b}`,N.className,k,{selected:N.selected,animated:N.animated,inactive:!K&&!a,updating:Z,selectable:K}]),onClick:ue,onDoubleClick:de,onContextMenu:ce,onMouseEnter:Q,onMouseMove:se,onMouseLeave:pe,onKeyDown:H?Se: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?`${gg}-${_}`:void 0,ref:ne,...N.domAttributes,children:[!J&&x.jsx($,{id:t,source:N.source,target:N.target,type:N.type,selected:N.selected,animated:N.animated,selectable:K,deletable:N.deletable??!0,label:N.label,labelStyle:N.labelStyle,labelShowBg:N.labelShowBg,labelBgStyle:N.labelBgStyle,labelBgPadding:N.labelBgPadding,labelBgBorderRadius:N.labelBgBorderRadius,sourceX:V,sourceY:A,targetX:L,targetY:O,sourcePosition:j,targetPosition:T,data:N.data,style:N.style,sourceHandleId:N.sourceHandle,targetHandleId:N.targetHandle,markerStart:ee,markerEnd:re,pathOptions:"pathOptions"in N?N.pathOptions:void 0,interactionWidth:N.interactionWidth}),X&&x.jsx(r_,{edge:N,isReconnectable:X,reconnectRadius:m,onReconnect:v,onReconnectStart:g,onReconnectEnd:S,sourceX:V,sourceY:A,targetX:L,targetY:O,sourcePosition:j,targetPosition:T,setUpdateHover:te,setReconnecting:C})]})})}var o_=W.memo(i_);const s_=t=>({edgesFocusable:t.edgesFocusable,edgesReconnectable:t.edgesReconnectable,elementsSelectable:t.elementsSelectable,connectionMode:t.connectionMode,onError:t.onError});function Hg({defaultMarkerColor:t,onlyRenderVisibleElements:r,rfId:o,edgeTypes:l,noPanClassName:a,onReconnect:c,onEdgeContextMenu:d,onEdgeMouseEnter:h,onEdgeMouseMove:p,onEdgeMouseLeave:y,onEdgeClick:m,reconnectRadius:v,onEdgeDoubleClick:g,onReconnectStart:S,onReconnectEnd:_,disableKeyboardA11y:M}){const{edgesFocusable:k,edgesReconnectable:E,elementsSelectable:z,onError:N}=Te(s_,Ue),P=US(r);return x.jsxs("div",{className:"react-flow__edges",children:[x.jsx(KS,{defaultColor:t,rfId:o}),P.map(b=>x.jsx(o_,{id:b,edgesFocusable:k,edgesReconnectable:E,elementsSelectable:z,noPanClassName:a,onReconnect:c,onContextMenu:d,onMouseEnter:h,onMouseMove:p,onMouseLeave:y,onClick:m,reconnectRadius:v,onDoubleClick:g,onReconnectStart:S,onReconnectEnd:_,rfId:o,onError:N,edgeTypes:l,disableKeyboardA11y:M},b))]})}Hg.displayName="EdgeRenderer";const l_=W.memo(Hg),qh=t=>`translate(${t[0]}px,${t[1]}px) scale(${t[2]})`;function a_({children:t}){const r=be(),o=W.useRef(null),[l]=W.useState(()=>r.getState().transform);return xg(()=>{let a=null;const c=()=>{const d=r.getState().transform;a&&d[0]===a[0]&&d[1]===a[1]&&d[2]===a[2]||(a=d,o.current&&(o.current.style.transform=qh(d)))};return c(),r.subscribe(c)},[r]),x.jsx("div",{ref:o,className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:qh(l)},children:t})}function u_(t){const r=fc(),o=W.useRef(!1);W.useEffect(()=>{!o.current&&r.viewportInitialized&&t&&(setTimeout(()=>t(r),1),o.current=!0)},[t,r.viewportInitialized])}const c_=t=>{var r;return(r=t.panZoom)==null?void 0:r.syncViewport};function d_(t){const r=Te(c_),o=be();return W.useEffect(()=>{t&&(r==null||r(t),o.setState({transform:[t.x,t.y,t.zoom]}))},[t,r]),null}function f_(t){return t.connection.inProgress?{...t.connection,to:xo(t.connection.to,t.transform)}:{...t.connection}}function h_(t){return f_}function p_(t){const r=h_();return Te(r,Ue)}const g_=t=>({nodesConnectable:t.nodesConnectable,isValid:t.connection.isValid,inProgress:t.connection.inProgress,width:t.width,height:t.height});function m_({containerStyle:t,style:r,type:o,component:l}){const{nodesConnectable:a,width:c,height:d,isValid:h,inProgress:p}=Te(g_,Ue);return!(c&&a&&p)?null:x.jsx("svg",{style:t,width:c,height:d,className:"react-flow__connectionline react-flow__container",children:x.jsx("g",{className:Qe(["react-flow__connection",bp(h)]),children:x.jsx(Vg,{style:r,type:o,CustomComponent:l,isValid:h})})})}const Vg=({style:t,type:r=Yn.Bezier,CustomComponent:o,isValid:l})=>{const{inProgress:a,from:c,fromNode:d,fromHandle:h,fromPosition:p,to:y,toNode:m,toHandle:v,toPosition:g,pointer:S}=p_();if(!a)return;if(o)return x.jsx(o,{connectionLineType:r,connectionLineStyle:t,fromNode:d,fromHandle:h,fromX:c.x,fromY:c.y,toX:y.x,toY:y.y,fromPosition:p,toPosition:g,connectionStatus:bp(l),toNode:m,toHandle:v,pointer:S});let _="";const M={sourceX:c.x,sourceY:c.y,sourcePosition:p,targetX:y.x,targetY:y.y,targetPosition:g};switch(r){case Yn.Bezier:[_]=Zp(M);break;case Yn.SimpleBezier:[_]=Pg(M);break;case Yn.Step:[_]=Bu({...M,borderRadius:0});break;case Yn.SmoothStep:[_]=Bu(M);break;default:[_]=eg(M)}return x.jsx("path",{d:_,fill:"none",className:"react-flow__connection-path",style:t})};Vg.displayName="ConnectionLine";const y_={};function Zh(t=y_){W.useRef(t),be(),W.useEffect(()=>{},[t])}function v_(){be(),W.useRef(!1),W.useEffect(()=>{},[])}function Bg({nodeTypes:t,edgeTypes:r,onInit:o,onNodeClick:l,onEdgeClick:a,onNodeDoubleClick:c,onEdgeDoubleClick:d,onNodeMouseEnter:h,onNodeMouseMove:p,onNodeMouseLeave:y,onNodeContextMenu:m,onSelectionContextMenu:v,onSelectionStart:g,onSelectionEnd:S,connectionLineType:_,connectionLineStyle:M,connectionLineComponent:k,connectionLineContainerStyle:E,selectionKeyCode:z,selectionOnDrag:N,selectionMode:P,multiSelectionKeyCode:b,panActivationKeyCode:$,zoomActivationKeyCode:H,deleteKeyCode:X,onlyRenderVisibleElements:K,elementsSelectable:ne,defaultViewport:Z,translateExtent:te,minZoom:J,maxZoom:C,preventScrolling:B,defaultMarkerColor:F,zoomOnScroll:V,zoomOnPinch:A,panOnScroll:L,panOnScrollSpeed:O,panOnScrollMode:j,zoomOnDoubleClick:T,panOnDrag:ee,autoPanOnSelection:re,onPaneClick:ue,onPaneMouseEnter:de,onPaneMouseMove:ce,onPaneMouseLeave:Q,onPaneScroll:se,onPaneContextMenu:pe,paneClickDistance:Se,nodeClickDistance:ve,onEdgeContextMenu:me,onEdgeMouseEnter:Ce,onEdgeMouseMove:Me,onEdgeMouseLeave:Pe,reconnectRadius:ze,onReconnect:Ze,onReconnectStart:lt,onReconnectEnd:Je,noDragClassName:et,noWheelClassName:Lt,noPanClassName:kt,disableKeyboardA11y:Et,nodeExtent:it,rfId:ft,viewport:q,onViewportChange:we,nodesDraggable:Ae}){return Zh(t),Zh(r),v_(),u_(o),d_(q),x.jsx(LS,{onPaneClick:ue,onPaneMouseEnter:de,onPaneMouseMove:ce,onPaneMouseLeave:Q,onPaneContextMenu:pe,onPaneScroll:se,paneClickDistance:Se,deleteKeyCode:X,selectionKeyCode:z,selectionOnDrag:N,selectionMode:P,onSelectionStart:g,onSelectionEnd:S,multiSelectionKeyCode:b,panActivationKeyCode:$,zoomActivationKeyCode:H,elementsSelectable:ne,zoomOnScroll:V,zoomOnPinch:A,zoomOnDoubleClick:T,panOnScroll:L,panOnScrollSpeed:O,panOnScrollMode:j,panOnDrag:ee,autoPanOnSelection:re,defaultViewport:Z,translateExtent:te,minZoom:J,maxZoom:C,onSelectionContextMenu:v,preventScrolling:B,noDragClassName:et,noWheelClassName:Lt,noPanClassName:kt,disableKeyboardA11y:Et,onViewportChange:we,isControlledViewport:!!q,children:x.jsxs(a_,{children:[x.jsx(l_,{edgeTypes:r,onEdgeClick:a,onEdgeDoubleClick:d,onReconnect:Ze,onReconnectStart:lt,onReconnectEnd:Je,onlyRenderVisibleElements:K,onEdgeContextMenu:me,onEdgeMouseEnter:Ce,onEdgeMouseMove:Me,onEdgeMouseLeave:Pe,reconnectRadius:ze,defaultMarkerColor:F,noPanClassName:kt,disableKeyboardA11y:Et,rfId:ft}),x.jsx(m_,{style:M,type:_,component:k,containerStyle:E}),x.jsx("div",{className:"react-flow__edgelabel-renderer"}),x.jsx(BS,{nodeTypes:t,onNodeClick:l,onNodeDoubleClick:c,onNodeMouseEnter:h,onNodeMouseMove:p,onNodeMouseLeave:y,onNodeContextMenu:m,nodeClickDistance:ve,onlyRenderVisibleElements:K,noPanClassName:kt,noDragClassName:et,disableKeyboardA11y:Et,nodeExtent:it,rfId:ft,nodesDraggable:Ae}),x.jsx("div",{className:"react-flow__viewport-portal"})]})})}Bg.displayName="GraphView";const x_=W.memo(Bg),w_=Wp(),Jh=({nodes:t,edges:r,defaultNodes:o,defaultEdges:l,width:a,height:c,fitView:d,fitViewOptions:h,minZoom:p=.5,maxZoom:y=2,nodeOrigin:m,nodeExtent:v,zIndexMode:g="basic"}={})=>{const S=new Map,_=new Map,M=new Map,k=new Map,E=l??r??[],z=o??t??[],N=m??[0,0],P=v??so;rg(M,k,E);const{nodesInitialized:b}=Wu(z,S,_,{nodeOrigin:N,nodeExtent:P,zIndexMode:g});let $=[0,0,1];if(d&&a&&c){const H=yo(S,{filter:Z=>!!((Z.width||Z.initialWidth)&&(Z.height||Z.initialHeight))}),{x:X,y:K,zoom:ne}=oc(H,a,c,p,y,(h==null?void 0:h.padding)??.1);$=[X,K,ne]}return{rfId:"1",width:a??0,height:c??0,transform:$,nodes:z,nodesInitialized:b,nodeLookup:S,parentLookup:_,edges:E,edgeLookup:k,connectionLookup:M,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:o!==void 0,hasDefaultEdges:l!==void 0,panZoom:null,minZoom:p,maxZoom:y,translateExtent:so,nodeExtent:P,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:ni.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:d??!1,fitViewOptions:h,fitViewResolver:null,connection:{...Op},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:w_,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:Dp,zIndexMode:g,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},S_=({nodes:t,edges:r,defaultNodes:o,defaultEdges:l,width:a,height:c,fitView:d,fitViewOptions:h,minZoom:p,maxZoom:y,nodeOrigin:m,nodeExtent:v,zIndexMode:g})=>R1((S,_)=>{async function M(){const{nodeLookup:k,panZoom:E,fitViewOptions:z,fitViewResolver:N,width:P,height:b,minZoom:$,maxZoom:H}=_();E&&(await Pw({nodes:k,width:P,height:b,panZoom:E,minZoom:$,maxZoom:H},z),N==null||N.resolve(!0),S({fitViewResolver:null}))}return{...Jh({nodes:t,edges:r,width:a,height:c,fitView:d,fitViewOptions:h,minZoom:p,maxZoom:y,nodeOrigin:m,nodeExtent:v,defaultNodes:o,defaultEdges:l,zIndexMode:g}),setNodes:k=>{const{nodeLookup:E,parentLookup:z,nodeOrigin:N,nodeExtent:P,elevateNodesOnSelect:b,fitViewQueued:$,zIndexMode:H,nodesSelectionActive:X}=_(),{nodesInitialized:K,hasSelectedNodes:ne}=Wu(k,E,z,{nodeOrigin:N,nodeExtent:P,elevateNodesOnSelect:b,checkEquality:!0,zIndexMode:H}),Z=X&≠$&&K?(M(),S({nodes:k,nodesInitialized:K,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:Z})):S({nodes:k,nodesInitialized:K,nodesSelectionActive:Z})},setEdges:k=>{const{connectionLookup:E,edgeLookup:z}=_();rg(E,z,k),S({edges:k})},setDefaultNodesAndEdges:(k,E)=>{if(k){const{setNodes:z}=_();z(k),S({hasDefaultNodes:!0})}if(E){const{setEdges:z}=_();z(E),S({hasDefaultEdges:!0})}},updateNodeInternals:k=>{const{triggerNodeChanges:E,nodeLookup:z,parentLookup:N,domNode:P,nodeOrigin:b,nodeExtent:$,debug:H,fitViewQueued:X,zIndexMode:K}=_(),{changes:ne,updatedInternals:Z}=Zw(k,z,N,P,b,$,K);Z&&(Qw(z,N,{nodeOrigin:b,nodeExtent:$,zIndexMode:K}),X?(M(),S({fitViewQueued:!1,fitViewOptions:void 0})):S({}),(ne==null?void 0:ne.length)>0&&(H&&console.log("React Flow: trigger node changes",ne),E==null||E(ne)))},updateNodePositions:(k,E=!1)=>{const z=[];let N=[];const{nodeLookup:P,triggerNodeChanges:b,connection:$,updateConnection:H,onNodesChangeMiddlewareMap:X}=_();for(const[K,ne]of k){const Z=P.get(K),te=!!(Z!=null&&Z.expandParent&&(Z!=null&&Z.parentId)&&(ne!=null&&ne.position)),J={id:K,type:"position",position:te?{x:Math.max(0,ne.position.x),y:Math.max(0,ne.position.y)}:ne.position,dragging:E};if(Z&&$.inProgress&&$.fromNode.id===Z.id){const C=wr(Z,$.fromHandle,_e.Left,!0);H({...$,from:C})}te&&Z.parentId&&z.push({id:K,parentId:Z.parentId,rect:{...ne.internals.positionAbsolute,width:ne.measured.width??0,height:ne.measured.height??0}}),N.push(J)}if(z.length>0){const{parentLookup:K,nodeOrigin:ne}=_(),Z=dc(z,P,K,ne);N.push(...Z)}for(const K of X.values())N=K(N);b(N)},triggerNodeChanges:k=>{const{onNodesChange:E,setNodes:z,nodes:N,hasDefaultNodes:P,debug:b}=_();if(k!=null&&k.length){if(P){const $=eS(k,N);z($)}b&&console.log("React Flow: trigger node changes",k),E==null||E(k)}},triggerEdgeChanges:k=>{const{onEdgesChange:E,setEdges:z,edges:N,hasDefaultEdges:P,debug:b}=_();if(k!=null&&k.length){if(P){const $=tS(k,N);z($)}b&&console.log("React Flow: trigger edge changes",k),E==null||E(k)}},addSelectedNodes:k=>{const{multiSelectionActive:E,edgeLookup:z,nodeLookup:N,triggerNodeChanges:P,triggerEdgeChanges:b}=_();if(E){const $=k.map(H=>fr(H,!0));P($);return}P(qr(N,new Set([...k]),!0)),b(qr(z))},addSelectedEdges:k=>{const{multiSelectionActive:E,edgeLookup:z,nodeLookup:N,triggerNodeChanges:P,triggerEdgeChanges:b}=_();if(E){const $=k.map(H=>fr(H,!0));b($);return}b(qr(z,new Set([...k]))),P(qr(N,new Set,!0))},unselectNodesAndEdges:({nodes:k,edges:E}={})=>{const{edges:z,nodes:N,nodeLookup:P,triggerNodeChanges:b,triggerEdgeChanges:$}=_(),H=k||N,X=E||z,K=[];for(const Z of H){if(!Z.selected)continue;const te=P.get(Z.id);te&&(te.selected=!1),K.push(fr(Z.id,!1))}const ne=[];for(const Z of X)Z.selected&&ne.push(fr(Z.id,!1));b(K),$(ne)},setMinZoom:k=>{const{panZoom:E,maxZoom:z}=_();E==null||E.setScaleExtent([k,z]),S({minZoom:k})},setMaxZoom:k=>{const{panZoom:E,minZoom:z}=_();E==null||E.setScaleExtent([z,k]),S({maxZoom:k})},setTranslateExtent:k=>{var E;(E=_().panZoom)==null||E.setTranslateExtent(k),S({translateExtent:k})},resetSelectedElements:()=>{const{edges:k,nodes:E,triggerNodeChanges:z,triggerEdgeChanges:N,elementsSelectable:P}=_();if(!P)return;const b=E.reduce((H,X)=>X.selected?[...H,fr(X.id,!1)]:H,[]),$=k.reduce((H,X)=>X.selected?[...H,fr(X.id,!1)]:H,[]);z(b),N($)},setNodeExtent:k=>{const{nodes:E,nodeLookup:z,parentLookup:N,nodeOrigin:P,elevateNodesOnSelect:b,nodeExtent:$,zIndexMode:H}=_();k[0][0]===$[0][0]&&k[0][1]===$[0][1]&&k[1][0]===$[1][0]&&k[1][1]===$[1][1]||(Wu(E,z,N,{nodeOrigin:P,nodeExtent:k,elevateNodesOnSelect:b,checkEquality:!1,zIndexMode:H}),S({nodeExtent:k}))},panBy:k=>{const{transform:E,width:z,height:N,panZoom:P,translateExtent:b}=_();return Jw({delta:k,panZoom:P,transform:E,translateExtent:b,width:z,height:N})},setCenter:async(k,E,z)=>{const{width:N,height:P,maxZoom:b,panZoom:$}=_();if(!$)return!1;const H=typeof(z==null?void 0:z.zoom)<"u"?z.zoom:b;return await $.setViewport({x:N/2-k*H,y:P/2-E*H,zoom:H},{duration:z==null?void 0:z.duration,ease:z==null?void 0:z.ease,interpolate:z==null?void 0:z.interpolate}),!0},cancelConnection:()=>{S({connection:{...Op}})},updateConnection:k=>{S({connection:k})},reset:()=>S({...Jh()})}},Object.is);function Ug({initialNodes:t,initialEdges:r,defaultNodes:o,defaultEdges:l,initialWidth:a,initialHeight:c,initialMinZoom:d,initialMaxZoom:h,initialFitViewOptions:p,fitView:y,nodeOrigin:m,nodeExtent:v,zIndexMode:g,children:S}){const[_]=W.useState(()=>S_({nodes:t,edges:r,defaultNodes:o,defaultEdges:l,width:a,height:c,fitView:y,minZoom:d,maxZoom:h,fitViewOptions:p,nodeOrigin:m,nodeExtent:v,zIndexMode:g}));return x.jsx(L1,{value:_,children:x.jsx(sS,{children:x.jsx(SS,{children:S})})})}function __({children:t,nodes:r,edges:o,defaultNodes:l,defaultEdges:a,width:c,height:d,fitView:h,fitViewOptions:p,minZoom:y,maxZoom:m,nodeOrigin:v,nodeExtent:g,zIndexMode:S}){return W.useContext(xl)?x.jsx(x.Fragment,{children:t}):x.jsx(Ug,{initialNodes:r,initialEdges:o,defaultNodes:l,defaultEdges:a,initialWidth:c,initialHeight:d,fitView:h,initialFitViewOptions:p,initialMinZoom:y,initialMaxZoom:m,nodeOrigin:v,nodeExtent:g,zIndexMode:S,children:t})}const k_={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function E_({nodes:t,edges:r,defaultNodes:o,defaultEdges:l,className:a,nodeTypes:c,edgeTypes:d,onNodeClick:h,onEdgeClick:p,onInit:y,onMove:m,onMoveStart:v,onMoveEnd:g,onConnect:S,onConnectStart:_,onConnectEnd:M,onClickConnectStart:k,onClickConnectEnd:E,onNodeMouseEnter:z,onNodeMouseMove:N,onNodeMouseLeave:P,onNodeContextMenu:b,onNodeDoubleClick:$,onNodeDragStart:H,onNodeDrag:X,onNodeDragStop:K,onNodesDelete:ne,onEdgesDelete:Z,onDelete:te,onSelectionChange:J,onSelectionDragStart:C,onSelectionDrag:B,onSelectionDragStop:F,onSelectionContextMenu:V,onSelectionStart:A,onSelectionEnd:L,onBeforeDelete:O,connectionMode:j,connectionLineType:T=Yn.Bezier,connectionLineStyle:ee,connectionLineComponent:re,connectionLineContainerStyle:ue,deleteKeyCode:de="Backspace",selectionKeyCode:ce="Shift",selectionOnDrag:Q=!1,selectionMode:se=lo.Full,panActivationKeyCode:pe="Space",multiSelectionKeyCode:Se=uo()?"Meta":"Control",zoomActivationKeyCode:ve=uo()?"Meta":"Control",snapToGrid:me,snapGrid:Ce,onlyRenderVisibleElements:Me=!1,selectNodesOnDrag:Pe,nodesDraggable:ze,autoPanOnNodeFocus:Ze,nodesConnectable:lt,nodesFocusable:Je,nodeOrigin:et=mg,edgesFocusable:Lt,edgesReconnectable:kt,elementsSelectable:Et=!0,defaultViewport:it=X1,minZoom:ft=.5,maxZoom:q=2,translateExtent:we=so,preventScrolling:Ae=!0,nodeExtent:Ke,defaultMarkerColor:un="#b1b1b7",zoomOnScroll:kl=!0,zoomOnPinch:wo=!0,panOnScroll:So=!1,panOnScrollSpeed:El=.5,panOnScrollMode:si=gr.Free,zoomOnDoubleClick:li=!0,panOnDrag:ai=!0,onPaneClick:ui,onPaneMouseEnter:ci,onPaneMouseMove:_n,onPaneMouseLeave:kn,onPaneScroll:_o,onPaneContextMenu:ko,paneClickDistance:Eo=1,nodeClickDistance:No=0,children:Co,onReconnect:di,onReconnectStart:jo,onReconnectEnd:Qn,onEdgeContextMenu:fi,onEdgeDoubleClick:Kn,onEdgeMouseEnter:Nl,onEdgeMouseMove:Gn,onEdgeMouseLeave:Sr,reconnectRadius:_r=10,onNodesChange:hi,onEdgesChange:Cl,noDragClassName:jl="nodrag",noWheelClassName:Ml="nowheel",noPanClassName:en="nopan",fitView:pi,fitViewOptions:gi,connectOnClick:Pl,attributionPosition:Mo,proOptions:Po,defaultEdgeOptions:Io,elevateNodesOnSelect:To=!0,elevateEdgesOnSelect:Il=!1,disableKeyboardA11y:zo=!1,autoPanOnConnect:He,autoPanOnNodeDrag:Tl,autoPanOnSelection:mi=!0,autoPanSpeed:Ro,connectionRadius:kr,isValidConnection:zl,onError:Lo,style:Er,id:Nt,nodeDragThreshold:Rl,connectionDragThreshold:Ct,viewport:Ll,onViewportChange:Al,width:$l,height:Nr,colorMode:Cr="light",debug:qn,onScroll:cn,ariaLabelConfig:Dl,zIndexMode:Ao="basic",...yi},$o){const Zn=Nt||"1",Jn=q1(Cr),Ol=W.useCallback(jr=>{jr.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),cn==null||cn(jr)},[cn]);return x.jsx("div",{"data-testid":"rf__wrapper",...yi,onScroll:Ol,style:{...Er,...k_},ref:$o,className:Qe(["react-flow",a,Jn]),id:Nt,role:"application",children:x.jsxs(__,{nodes:t,edges:r,width:$l,height:Nr,fitView:pi,fitViewOptions:gi,minZoom:ft,maxZoom:q,nodeOrigin:et,nodeExtent:Ke,zIndexMode:Ao,children:[x.jsx(G1,{nodes:t,edges:r,defaultNodes:o,defaultEdges:l,onConnect:S,onConnectStart:_,onConnectEnd:M,onClickConnectStart:k,onClickConnectEnd:E,nodesDraggable:ze,autoPanOnNodeFocus:Ze,nodesConnectable:lt,nodesFocusable:Je,edgesFocusable:Lt,edgesReconnectable:kt,elementsSelectable:Et,elevateNodesOnSelect:To,elevateEdgesOnSelect:Il,minZoom:ft,maxZoom:q,nodeExtent:Ke,onNodesChange:hi,onEdgesChange:Cl,snapToGrid:me,snapGrid:Ce,connectionMode:j,translateExtent:we,connectOnClick:Pl,defaultEdgeOptions:Io,fitView:pi,fitViewOptions:gi,onNodesDelete:ne,onEdgesDelete:Z,onDelete:te,onNodeDragStart:H,onNodeDrag:X,onNodeDragStop:K,onSelectionDrag:B,onSelectionDragStart:C,onSelectionDragStop:F,onMove:m,onMoveStart:v,onMoveEnd:g,noPanClassName:en,nodeOrigin:et,rfId:Zn,autoPanOnConnect:He,autoPanOnNodeDrag:Tl,autoPanSpeed:Ro,onError:Lo,connectionRadius:kr,isValidConnection:zl,selectNodesOnDrag:Pe,nodeDragThreshold:Rl,connectionDragThreshold:Ct,onBeforeDelete:O,debug:qn,ariaLabelConfig:Dl,zIndexMode:Ao}),x.jsx(x_,{onInit:y,onNodeClick:h,onEdgeClick:p,onNodeMouseEnter:z,onNodeMouseMove:N,onNodeMouseLeave:P,onNodeContextMenu:b,onNodeDoubleClick:$,nodeTypes:c,edgeTypes:d,connectionLineType:T,connectionLineStyle:ee,connectionLineComponent:re,connectionLineContainerStyle:ue,selectionKeyCode:ce,selectionOnDrag:Q,selectionMode:se,deleteKeyCode:de,multiSelectionKeyCode:Se,panActivationKeyCode:pe,zoomActivationKeyCode:ve,onlyRenderVisibleElements:Me,defaultViewport:it,translateExtent:we,minZoom:ft,maxZoom:q,preventScrolling:Ae,zoomOnScroll:kl,zoomOnPinch:wo,zoomOnDoubleClick:li,panOnScroll:So,panOnScrollSpeed:El,panOnScrollMode:si,panOnDrag:ai,autoPanOnSelection:mi,onPaneClick:ui,onPaneMouseEnter:ci,onPaneMouseMove:_n,onPaneMouseLeave:kn,onPaneScroll:_o,onPaneContextMenu:ko,paneClickDistance:Eo,nodeClickDistance:No,onSelectionContextMenu:V,onSelectionStart:A,onSelectionEnd:L,onReconnect:di,onReconnectStart:jo,onReconnectEnd:Qn,onEdgeContextMenu:fi,onEdgeDoubleClick:Kn,onEdgeMouseEnter:Nl,onEdgeMouseMove:Gn,onEdgeMouseLeave:Sr,reconnectRadius:_r,defaultMarkerColor:un,noDragClassName:jl,noWheelClassName:Ml,noPanClassName:en,rfId:Zn,disableKeyboardA11y:zo,nodeExtent:Ke,viewport:Ll,onViewportChange:Al,nodesDraggable:ze}),x.jsx(Y1,{onSelectionChange:J}),Co,x.jsx(H1,{proOptions:Po,position:Mo}),x.jsx(F1,{rfId:Zn,disableKeyboardA11y:zo})]})})}var N_=vg(E_);function C_({dimensions:t,lineWidth:r,variant:o,className:l}){return x.jsx("path",{strokeWidth:r,d:`M${t[0]/2} 0 V${t[1]} M0 ${t[1]/2} H${t[0]}`,className:Qe(["react-flow__background-pattern",o,l])})}function j_({radius:t,className:r}){return x.jsx("circle",{cx:t,cy:t,r:t,className:Qe(["react-flow__background-pattern","dots",r])})}var Xn;(function(t){t.Lines="lines",t.Dots="dots",t.Cross="cross"})(Xn||(Xn={}));const M_={[Xn.Dots]:1,[Xn.Lines]:1,[Xn.Cross]:6},P_=t=>({transform:t.transform,patternId:`pattern-${t.rfId}`});function Wg({id:t,variant:r=Xn.Dots,gap:o=20,size:l,lineWidth:a=1,offset:c=0,color:d,bgColor:h,style:p,className:y,patternClassName:m}){const v=W.useRef(null),{transform:g,patternId:S}=Te(P_,Ue),_=l||M_[r],M=r===Xn.Dots,k=r===Xn.Cross,E=Array.isArray(o)?o:[o,o],z=[E[0]*g[2]||1,E[1]*g[2]||1],N=_*g[2],P=Array.isArray(c)?c:[c,c],b=k?[N,N]:z,$=[P[0]*g[2]+b[0]/2,P[1]*g[2]+b[1]/2],H=`${S}${t||""}`;return x.jsxs("svg",{className:Qe(["react-flow__background",y]),style:{...p,...Sl,"--xy-background-color-props":h,"--xy-background-pattern-color-props":d},ref:v,"data-testid":"rf__background",children:[x.jsx("pattern",{id:H,x:g[0]%z[0],y:g[1]%z[1],width:z[0],height:z[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${$[0]},-${$[1]})`,children:M?x.jsx(j_,{radius:N/2,className:m}):x.jsx(C_,{dimensions:b,lineWidth:a,variant:r,className:m})}),x.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${H})`})]})}Wg.displayName="Background";const I_=W.memo(Wg);function T_(){return x.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:x.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function z_(){return x.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:x.jsx("path",{d:"M0 0h32v4.2H0z"})})}function R_(){return x.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children: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 L_(){return x.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children: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 A_(){return x.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children: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 Ys({children:t,className:r,...o}){return x.jsx("button",{type:"button",className:Qe(["react-flow__controls-button",r]),...o,children:t})}const $_=t=>({isInteractive:t.nodesDraggable||t.nodesConnectable||t.elementsSelectable,minZoomReached:t.transform[2]<=t.minZoom,maxZoomReached:t.transform[2]>=t.maxZoom,ariaLabelConfig:t.ariaLabelConfig});function Yg({style:t,showZoom:r=!0,showFitView:o=!0,showInteractive:l=!0,fitViewOptions:a,onZoomIn:c,onZoomOut:d,onFitView:h,onInteractiveChange:p,className:y,children:m,position:v="bottom-left",orientation:g="vertical","aria-label":S}){const _=be(),{isInteractive:M,minZoomReached:k,maxZoomReached:E,ariaLabelConfig:z}=Te($_,Ue),{zoomIn:N,zoomOut:P,fitView:b}=fc(),$=()=>{N(),c==null||c()},H=()=>{P(),d==null||d()},X=()=>{b(a),h==null||h()},K=()=>{_.setState({nodesDraggable:!M,nodesConnectable:!M,elementsSelectable:!M}),p==null||p(!M)},ne=g==="horizontal"?"horizontal":"vertical";return x.jsxs(wl,{className:Qe(["react-flow__controls",ne,y]),position:v,style:t,"data-testid":"rf__controls","aria-label":S??z["controls.ariaLabel"],children:[r&&x.jsxs(x.Fragment,{children:[x.jsx(Ys,{onClick:$,className:"react-flow__controls-zoomin",title:z["controls.zoomIn.ariaLabel"],"aria-label":z["controls.zoomIn.ariaLabel"],disabled:E,children:x.jsx(T_,{})}),x.jsx(Ys,{onClick:H,className:"react-flow__controls-zoomout",title:z["controls.zoomOut.ariaLabel"],"aria-label":z["controls.zoomOut.ariaLabel"],disabled:k,children:x.jsx(z_,{})})]}),o&&x.jsx(Ys,{className:"react-flow__controls-fitview",onClick:X,title:z["controls.fitView.ariaLabel"],"aria-label":z["controls.fitView.ariaLabel"],children:x.jsx(R_,{})}),l&&x.jsx(Ys,{className:"react-flow__controls-interactive",onClick:K,title:z["controls.interactive.ariaLabel"],"aria-label":z["controls.interactive.ariaLabel"],children:M?x.jsx(A_,{}):x.jsx(L_,{})}),m]})}Yg.displayName="Controls";const D_=W.memo(Yg);function O_({id:t,x:r,y:o,width:l,height:a,style:c,color:d,strokeColor:h,strokeWidth:p,className:y,borderRadius:m,shapeRendering:v,selected:g,onClick:S}){const{background:_,backgroundColor:M}=c||{},k=d||_||M;return x.jsx("rect",{className:Qe(["react-flow__minimap-node",{selected:g},y]),x:r,y:o,rx:m,ry:m,width:l,height:a,style:{fill:k,stroke:h,strokeWidth:p},shapeRendering:v,onClick:S?E=>S(E,t):void 0})}const b_=W.memo(O_),F_=t=>t.nodes.map(r=>r.id),zu=t=>t instanceof Function?t:()=>t;function H_({nodeStrokeColor:t,nodeColor:r,nodeClassName:o="",nodeBorderRadius:l=5,nodeStrokeWidth:a,nodeComponent:c=b_,onClick:d}){const h=Te(F_,Ue),p=zu(r),y=zu(t),m=zu(o),v=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return x.jsx(x.Fragment,{children:h.map(g=>x.jsx(B_,{id:g,nodeColorFunc:p,nodeStrokeColorFunc:y,nodeClassNameFunc:m,nodeBorderRadius:l,nodeStrokeWidth:a,NodeComponent:c,onClick:d,shapeRendering:v},g))})}function V_({id:t,nodeColorFunc:r,nodeStrokeColorFunc:o,nodeClassNameFunc:l,nodeBorderRadius:a,nodeStrokeWidth:c,shapeRendering:d,NodeComponent:h,onClick:p}){const{node:y,x:m,y:v,width:g,height:S}=Te(_=>{const M=_.nodeLookup.get(t);if(!M)return{node:void 0,x:0,y:0,width:0,height:0};const k=M.internals.userNode,{x:E,y:z}=M.internals.positionAbsolute,{width:N,height:P}=Jt(k);return{node:k,x:E,y:z,width:N,height:P}},Ue);return!y||y.hidden||!Yp(y)?null:x.jsx(h,{x:m,y:v,width:g,height:S,style:y.style,selected:!!y.selected,className:l(y),color:r(y),borderRadius:a,strokeColor:o(y),strokeWidth:c,shapeRendering:d,onClick:p,id:y.id})}const B_=W.memo(V_);var U_=W.memo(H_);const W_=200,Y_=150,X_=t=>!t.hidden,Q_=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?Bp(yo(t.nodeLookup,{filter:X_}),r):r,rfId:t.rfId,panZoom:t.panZoom,translateExtent:t.translateExtent,flowWidth:t.width,flowHeight:t.height,ariaLabelConfig:t.ariaLabelConfig}},ep=(t,r)=>t.x===r.x&&t.y===r.y&&t.width===r.width&&t.height===r.height,K_=(t,r)=>ep(t.viewBB,r.viewBB)&&ep(t.boundingRect,r.boundingRect)&&t.rfId===r.rfId&&t.panZoom===r.panZoom&&t.translateExtent===r.translateExtent&&t.flowWidth===r.flowWidth&&t.flowHeight===r.flowHeight&&t.ariaLabelConfig===r.ariaLabelConfig,G_="react-flow__minimap-desc";function Xg({style:t,className:r,nodeStrokeColor:o,nodeColor:l,nodeClassName:a="",nodeBorderRadius:c=5,nodeStrokeWidth:d,nodeComponent:h,bgColor:p,maskColor:y,maskStrokeColor:m,maskStrokeWidth:v,position:g="bottom-right",onClick:S,onNodeClick:_,pannable:M=!1,zoomable:k=!1,ariaLabel:E,inversePan:z,zoomStep:N=1,offsetScale:P=5}){const b=be(),$=W.useRef(null),{boundingRect:H,viewBB:X,rfId:K,panZoom:ne,translateExtent:Z,flowWidth:te,flowHeight:J,ariaLabelConfig:C}=Te(Q_,K_),B=(t==null?void 0:t.width)??W_,F=(t==null?void 0:t.height)??Y_,V=H.width/B,A=H.height/F,L=Math.max(V,A),O=L*B,j=L*F,T=P*L,ee=H.x-(O-H.width)/2-T,re=H.y-(j-H.height)/2-T,ue=O+T*2,de=j+T*2,ce=`${G_}-${K}`,Q=W.useRef(0),se=W.useRef();Q.current=L,W.useEffect(()=>{if($.current&&ne)return se.current=a1({domNode:$.current,panZoom:ne,getTransform:()=>b.getState().transform,getViewScale:()=>Q.current}),()=>{var me;(me=se.current)==null||me.destroy()}},[ne]),W.useEffect(()=>{var me;(me=se.current)==null||me.update({translateExtent:Z,width:te,height:J,inversePan:z,pannable:M,zoomStep:N,zoomable:k})},[M,k,z,N,Z,te,J]);const pe=S?me=>{var Pe;const[Ce,Me]=((Pe=se.current)==null?void 0:Pe.pointer(me))||[0,0];S(me,{x:Ce,y:Me})}:void 0,Se=_?W.useCallback((me,Ce)=>{const Me=b.getState().nodeLookup.get(Ce).internals.userNode;_(me,Me)},[]):void 0,ve=E??C["minimap.ariaLabel"];return x.jsx(wl,{position:g,style:{...t,"--xy-minimap-background-color-props":typeof p=="string"?p:void 0,"--xy-minimap-mask-background-color-props":typeof y=="string"?y:void 0,"--xy-minimap-mask-stroke-color-props":typeof m=="string"?m:void 0,"--xy-minimap-mask-stroke-width-props":typeof v=="number"?v*L:void 0,"--xy-minimap-node-background-color-props":typeof l=="string"?l:void 0,"--xy-minimap-node-stroke-color-props":typeof o=="string"?o:void 0,"--xy-minimap-node-stroke-width-props":typeof d=="number"?d:void 0},className:Qe(["react-flow__minimap",r]),"data-testid":"rf__minimap",children:x.jsxs("svg",{width:B,height:F,viewBox:`${ee} ${re} ${ue} ${de}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":ce,ref:$,onClick:pe,children:[ve&&x.jsx("title",{id:ce,children:ve}),x.jsx(U_,{onClick:Se,nodeColor:l,nodeStrokeColor:o,nodeBorderRadius:c,nodeClassName:a,nodeStrokeWidth:d,nodeComponent:h}),x.jsx("path",{className:"react-flow__minimap-mask",d:`M${ee-T},${re-T}h${ue+T*2}v${de+T*2}h${-ue-T*2}z + M${X.x},${X.y}h${X.width}v${X.height}h${-X.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}Xg.displayName="MiniMap";const q_=W.memo(Xg),Z_=t=>r=>t?`${Math.max(1/r.transform[2],1)}`:void 0,J_={[oi.Line]:"right",[oi.Handle]:"bottom-right"};function ek({nodeId:t,position:r,variant:o=oi.Handle,className:l,style:a=void 0,children:c,color:d,minWidth:h=10,minHeight:p=10,maxWidth:y=Number.MAX_VALUE,maxHeight:m=Number.MAX_VALUE,keepAspectRatio:v=!1,resizeDirection:g,autoScale:S=!0,shouldResize:_,onResizeStart:M,onResize:k,onResizeEnd:E}){const z=kg(),N=typeof t=="string"?t:z,P=be(),b=W.useRef(null),$=o===oi.Handle,H=Te(W.useCallback(Z_($&&S),[$,S]),Ue),X=W.useRef(null),K=r??J_[o];W.useEffect(()=>{if(!(!b.current||!N))return X.current||(X.current=S1({domNode:b.current,nodeId:N,getStoreItems:()=>{const{nodeLookup:Z,transform:te,snapGrid:J,snapToGrid:C,nodeOrigin:B,domNode:F}=P.getState();return{nodeLookup:Z,transform:te,snapGrid:J,snapToGrid:C,nodeOrigin:B,paneDomNode:F}},onChange:(Z,te)=>{const{triggerNodeChanges:J,nodeLookup:C,parentLookup:B,nodeOrigin:F}=P.getState(),V=[],A={x:Z.x,y:Z.y},L=C.get(N);if(L&&L.expandParent&&L.parentId){const O=L.origin??F,j=Z.width??L.measured.width??0,T=Z.height??L.measured.height??0,ee={id:L.id,parentId:L.parentId,rect:{width:j,height:T,...Xp({x:Z.x??L.position.x,y:Z.y??L.position.y},{width:j,height:T},L.parentId,C,O)}},re=dc([ee],C,B,F);V.push(...re),A.x=Z.x?Math.max(O[0]*j,Z.x):void 0,A.y=Z.y?Math.max(O[1]*T,Z.y):void 0}if(A.x!==void 0&&A.y!==void 0){const O={id:N,type:"position",position:{...A}};V.push(O)}if(Z.width!==void 0&&Z.height!==void 0){const j={id:N,type:"dimensions",resizing:!0,setAttributes:g?g==="horizontal"?"width":"height":!0,dimensions:{width:Z.width,height:Z.height}};V.push(j)}for(const O of te){const j={...O,type:"position"};V.push(j)}J(V)},onEnd:({width:Z,height:te})=>{const J={id:N,type:"dimensions",resizing:!1,dimensions:{width:Z,height:te}};P.getState().triggerNodeChanges([J])}})),X.current.update({controlPosition:K,boundaries:{minWidth:h,minHeight:p,maxWidth:y,maxHeight:m},keepAspectRatio:v,resizeDirection:g,onResizeStart:M,onResize:k,onResizeEnd:E,shouldResize:_}),()=>{var Z;(Z=X.current)==null||Z.destroy()}},[K,h,p,y,m,v,M,k,E,_]);const ne=K.split("-");return x.jsx("div",{className:Qe(["react-flow__resize-control","nodrag",...ne,o,l]),ref:b,style:{...a,scale:H,...d&&{[$?"backgroundColor":"borderColor"]:d}},children:c})}W.memo(ek);const tk={"arch.context":0,"django.app":0,"django.route":1,"django.url_name":1,"django.view":2,"django.viewset_action":2,"django.permission":2,"django.serializer":3,"django.serializer_field":4,"django.service":4,"django.model":5,"django.field":6,"django.relation":6,"django.task":7,"django.receiver":7,"django.signal":7,"django.test":7,"django.migration_op":7,"django.admin":7,"openapi.path":8,"react.api_client":9,"react.query_key":10,"react.hook":10,"react.feature":10,"react.route":11,"react.page":11,"react.component":12,"react.form_schema":13,"react.test":13,"react.context":12};function nk(t){return tk[t]??8}function rk(t){const r=new Map;for(const l of t){const a=nk(l.type),c=r.get(a)??[];c.push(l),r.set(a,c)}const o=new Map;for(const[l,a]of r)a.sort((c,d)=>c.name.localeCompare(d.name)),a.forEach((c,d)=>{o.set(c.id,{x:l*260,y:d*108})});return o}const ik={cheap:"var(--edge-cheap)",expensive:"var(--edge-expensive)",critical:"var(--edge-critical)"};function ok({data:t,selected:r}){return x.jsxs("div",{className:r?"lp-node selected":"lp-node",children:[x.jsx("div",{className:"t",children:Qu(t.type)}),x.jsx("div",{className:"n",children:t.name})]})}const sk={load:ok},tp=180,np=56;function Ru({nodes:t,edges:r}){const[o,l]=W.useState(null),a=typeof window<"u"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,c=W.useMemo(()=>new Map(t.map(v=>[v.id,v])),[t]),d=o?c.get(o)??null:null,h=rk(t),p=t.map(v=>({id:v.id,type:"load",position:h.get(v.id)??{x:0,y:0},data:{name:v.name,type:v.type,file:v.file_path},selected:o===v.id,width:tp,height:np,style:{width:tp,height:np}})),y=r.filter(v=>c.has(v.src)&&c.has(v.dst)).map(v=>({id:v.id,source:v.src,target:v.dst,animated:!a&&v.weight==="critical",style:{stroke:ik[v.weight]||"var(--edge-cheap)",strokeWidth:v.weight==="critical"?2.4:1.2,strokeDasharray:v.confidence<.8?"6 4":void 0},label:v.type.replaceAll("_"," "),labelStyle:{fill:"var(--muted)",fontSize:10}})),m=(v,g)=>{l(g.id)};return x.jsxs("div",{style:{flex:1,minHeight:0,position:"relative"},children:[x.jsx(Ug,{children:x.jsxs(N_,{nodes:p,edges:y,nodeTypes:sk,fitView:!0,fitViewOptions:{padding:.2,maxZoom:1.15},minZoom:.25,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!0,deleteKeyCode:null,onNodeClick:m,onPaneClick:()=>l(null),proOptions:{hideAttribution:!1},"data-testid":"impact-graph",children:[x.jsx(I_,{}),x.jsx(q_,{pannable:!0,zoomable:!0,ariaLabel:"Impact graph overview",nodeColor:"var(--muted)",nodeStrokeColor:"transparent",nodeStrokeWidth:0,maskColor:"rgba(0, 0, 0, 0.45)",maskStrokeColor:"var(--accent)",maskStrokeWidth:1.4,bgColor:"var(--graph-bg)",style:{width:184,height:128}}),x.jsx(D_,{})]})}),d?x.jsxs("aside",{className:"inspector","data-testid":"graph-inspector",children:[x.jsx("div",{className:"t",children:Qu(d.type)}),x.jsx("div",{className:"n",children:d.name}),d.context?x.jsx("div",{className:"muted",children:d.context}):null,d.file_path?x.jsxs("div",{className:"file",children:[d.file_path,d.start_line?`:${d.start_line}`:""]}):null,x.jsx("div",{className:"muted",children:d.qualified_name})]}):null]})}const cl=[{id:"obsidian",label:"Obsidian",group:"dark"},{id:"nord",label:"Nord",group:"dark"},{id:"solarized-dark",label:"Solarized Dark",group:"dark"},{id:"forest",label:"Forest",group:"dark"},{id:"rose",label:"Rose Pine",group:"dark"},{id:"amber",label:"Midnight Amber",group:"dark"},{id:"volcano",label:"Volcano",group:"dark"},{id:"lavender",label:"Lavender",group:"dark"},{id:"paper",label:"Paper",group:"light"},{id:"solarized-light",label:"Solarized Light",group:"light"},{id:"seafoam",label:"Seafoam",group:"light"},{id:"high-contrast",label:"High Contrast",group:"light"}],lk="obsidian",Qg="loadpath.theme";function ak(t){return cl.some(r=>r.id===t)}function Kg(){try{const t=localStorage.getItem(Qg)||"";if(ak(t))return t}catch{}return lk}function uk(t){var r;return((r=cl.find(o=>o.id===t))==null?void 0:r.group)==="light"?"light":"dark"}function Gg(t){document.documentElement.dataset.theme=t,document.documentElement.style.colorScheme=uk(t);try{localStorage.setItem(Qg,t)}catch{}}const rp=[{id:"review",label:"Review",testId:"tab-review",shortcut:"1",icon:H0},{id:"architecture",label:"Architecture",testId:"tab-architecture",shortcut:"2",icon:V0},{id:"graph",label:"Impact graph",testId:"tab-graph",shortcut:"3",icon:B0},{id:"prs",label:"Pull requests",testId:"tab-prs",shortcut:"4",icon:U0},{id:"settings",label:"Settings",testId:"tab-settings",shortcut:"5",icon:W0}];function ck(){var Lt,kt,Et,it,ft;const[t,r]=W.useState("review"),[o,l]=W.useState(localStorage.getItem("loadpath.repo")||""),[a,c]=W.useState(localStorage.getItem("loadpath.base")||"HEAD~1"),[d,h]=W.useState(localStorage.getItem("loadpath.head")||"HEAD"),[p,y]=W.useState(null),[m,v]=W.useState(null),[g,S]=W.useState([]),[_,M]=W.useState("review"),[k,E]=W.useState(""),[z,N]=W.useState(""),[P,b]=W.useState(""),[$,H]=W.useState({}),[X,K]=W.useState([]),[ne,Z]=W.useState(localStorage.getItem("loadpath.scmRepo")||""),[te,J]=W.useState(localStorage.getItem("loadpath.provider")||"github"),[C,B]=W.useState(localStorage.getItem("loadpath.prNumber")||""),[F,V]=W.useState(""),[A,L]=W.useState(Kg),O=W.useRef(o);O.current=o;const j=q=>{L(q),Gg(q)},T=W.useRef(""),ee=q=>{T.current=q,N(q)};W.useEffect(()=>{St.settings().then(H).catch(()=>{}),St.repos().then(q=>S(q.repos)).catch(()=>{})},[]),W.useEffect(()=>{if(t!=="architecture"||!o)return;const q=o;let we=!1;return St.architecture(q).then(Ae=>{!we&&O.current===q&&v(Ae)}).catch(()=>{}),()=>{we=!0}},[t,o]);const re=q=>{l(q),localStorage.setItem("loadpath.repo",q)},ue=(q,we)=>{c(q),h(we),localStorage.setItem("loadpath.base",q),localStorage.setItem("loadpath.head",we)},de=(q,we,Ae)=>{J(q),Z(we),localStorage.setItem("loadpath.provider",q),localStorage.setItem("loadpath.scmRepo",we),Ae!==void 0&&(B(Ae),localStorage.setItem("loadpath.prNumber",Ae))},ce=async(q=o)=>{if(!q)return null;const we=await St.architecture(q);return O.current===q&&v(we),we},Q=async()=>{if(!T.current){E(""),b(""),ee("Tracing load path…"),re(o),ue(a,d);try{const q=await St.review(o,a,d,!0);y(q),M("review"),r("review"),await St.repos().then(we=>S(we.repos)).catch(()=>{}),await ce(o)}catch(q){E(q instanceof Error?q.message:String(q))}finally{ee("")}}},se=async(q=!0)=>{if(!T.current){E(""),b(""),ee(q?"Indexing…":"Full reindex…"),re(o);try{await St.index(o,q);const we=await ce(o);await St.repos().then(Ae=>S(Ae.repos)).catch(()=>{}),we!=null&&we.indexed&&(M("architecture"),r("architecture"))}catch(we){E(we instanceof Error?we.message:String(we))}finally{ee("")}}},pe=async()=>{if(!T.current){E(""),b(""),ee("Detecting layout…"),re(o);try{const q=await St.init(o);b(q.message),await St.repos().then(we=>S(we.repos)).catch(()=>{})}catch(q){E(q instanceof Error?q.message:String(q))}finally{ee("")}}},Se=async()=>{if(p!=null&&p.markdown)try{await navigator.clipboard.writeText(p.markdown),b("Copied markdown brief")}catch(q){E(q instanceof Error?q.message:String(q))}},ve=async()=>{if(!T.current){if(!(p!=null&&p.markdown)||!ne||!C){E("Pick a pull request first (Pull requests tab), then post the brief.");return}ee("Posting Loadpath brief…");try{const q=await St.postComment(te,ne,Number(C),p.markdown);b(q.updated?"Updated the Loadpath PR comment":"Posted the Loadpath PR comment")}catch(q){E(q instanceof Error?q.message:String(q))}finally{ee("")}}},me=async()=>{if(!T.current){E(""),ee("Fetching pull requests…");try{const q=await St.prs(te,ne);K(q.pull_requests)}catch(q){E(q instanceof Error?q.message:String(q))}finally{ee("")}}},Ce=async q=>{q.preventDefault();const we=new FormData(q.currentTarget),Ae={github_token:String(we.get("github_token")||""),bitbucket_token:String(we.get("bitbucket_token")||""),bitbucket_username:String(we.get("bitbucket_username")||""),ai_provider:String(we.get("ai_provider")||"none"),ai_api_key:String(we.get("ai_api_key")||""),ai_model:String(we.get("ai_model")||""),ai_base_url:String(we.get("ai_base_url")||""),workspaces:g.length?g.map(Ke=>({path:Ke.path,name:Ke.name})):o?[{path:o,name:F0(o)}]:[]};try{H(await St.saveSettings(Ae)),b("Settings saved on this machine")}catch(Ke){E(Ke instanceof Error?Ke.message:String(Ke))}},Me=async()=>{if(!(!p||T.current)){ee("Residual analysis…");try{const q=await St.residual(p);V(q.note)}catch(q){E(q instanceof Error?q.message:String(q))}finally{ee("")}}},Pe=W.useRef(Q);Pe.current=Q;const ze=W.useRef(t);ze.current=t,W.useEffect(()=>{const q=we=>{const Ae=we.target;if(Ae&&(Ae.tagName==="INPUT"||Ae.tagName==="TEXTAREA"||Ae.tagName==="SELECT"||Ae.isContentEditable)){we.key==="Escape"&&Ae.blur();return}if(we.key==="Escape"){E(""),b("");return}const Ke=rp.find(un=>un.shortcut===we.key);if(Ke&&!we.metaKey&&!we.ctrlKey&&!we.altKey&&r(Ke.id),(we.metaKey||we.ctrlKey)&&we.key==="Enter"){if(ze.current==="settings"||ze.current==="prs"||T.current)return;we.preventDefault(),Pe.current()}};return window.addEventListener("keydown",q),()=>window.removeEventListener("keydown",q)},[]);const Ze=W.useMemo(()=>_==="architecture"?(m==null?void 0:m.nodes)??[]:(p==null?void 0:p.nodes)??[],[_,m,p]),lt=W.useMemo(()=>_==="architecture"?(m==null?void 0:m.edges)??[]:(p==null?void 0:p.edges)??[],[_,m,p]),Je=p!=null&&p.index?`${p.index.counts.nodes} nodes · ${p.index.counts.edges} edges`:m!=null&&m.indexed?`${m.counts.nodes} nodes · ${m.counts.edges} edges`:"Not indexed",et=((p==null?void 0:p.findings)||[]).filter(q=>!q.waived);return x.jsxs("div",{className:"app",children:[x.jsx("a",{className:"skip",href:"#main",children:"Skip to content"}),x.jsxs("nav",{className:"rail","data-testid":"rail","aria-label":"Primary",children:[x.jsxs("div",{className:"brand",children:[x.jsx("div",{className:"brand-mark",children:"Loadpath"}),x.jsx("div",{className:"brand-sub",children:"Load-path review"})]}),rp.map(q=>{const we=q.icon,Ae=t===q.id;return x.jsxs("button",{type:"button","data-testid":q.testId,className:Ae?"nav-item active":"nav-item","aria-current":Ae?"page":void 0,"aria-label":q.label,onClick:()=>r(q.id),children:[x.jsx(we,{}),x.jsx("span",{children:q.label})]},q.id)}),x.jsxs("div",{className:"theme-pick",children:[x.jsx("label",{htmlFor:"theme-select",children:"Theme"}),x.jsx("select",{id:"theme-select","data-testid":"theme-select",value:A,onChange:q=>j(q.target.value),children:cl.map(q=>x.jsx("option",{value:q.id,children:q.label},q.id))})]}),x.jsxs("div",{className:"rail-foot",children:[x.jsx("div",{className:"muted",role:"status",children:z||Je}),x.jsxs("div",{className:"kbd-hint",children:[x.jsx("kbd",{children:"1"}),"–",x.jsx("kbd",{children:"5"})," tabs · ",x.jsx("kbd",{children:"Ctrl"}),"+",x.jsx("kbd",{children:"Enter"})," review"]})]})]}),x.jsxs("div",{className:"main",id:"main",children:[z?x.jsxs("div",{className:"progress",role:"status","aria-live":"polite","aria-busy":"true",children:[x.jsx("i",{}),x.jsx("span",{className:"sr-only",children:z})]}):null,x.jsxs("header",{className:"topbar","data-testid":"topbar",children:[g.length>0?x.jsxs("label",{className:"field workspace",children:[x.jsx("span",{children:"Workspace"}),x.jsxs("select",{"data-testid":"workspace-select",value:g.some(q=>q.path===o)?o:"",onChange:q=>{q.target.value&&re(q.target.value)},children:[x.jsx("option",{value:"",children:"Indexed repos…"}),g.map(q=>x.jsxs("option",{value:q.path,children:[q.name,q.indexed?` (${q.counts.nodes})`:""]},q.path))]})]}):null,x.jsxs("label",{className:"field path",children:[x.jsx("span",{children:"Repository"}),x.jsx("input",{"data-testid":"repo-path",placeholder:"Local monorepo path",value:o,onChange:q=>l(q.target.value),spellCheck:!1})]}),x.jsxs("label",{className:"field ref",children:[x.jsx("span",{children:"Base"}),x.jsx("input",{"data-testid":"base-ref",value:a,onChange:q=>ue(q.target.value,d),placeholder:"base",spellCheck:!1})]}),x.jsxs("label",{className:"field ref",children:[x.jsx("span",{children:"Head"}),x.jsx("input",{"data-testid":"head-ref",value:d,onChange:q=>ue(a,q.target.value),placeholder:"head",spellCheck:!1})]}),x.jsxs("div",{className:"topbar-actions",children:[x.jsx("button",{type:"button","data-testid":"btn-init",disabled:!!z,onClick:pe,children:"Draft config"}),x.jsx("button",{type:"button","data-testid":"btn-index",disabled:!!z,onClick:()=>se(!0),children:"Index"}),x.jsx("button",{type:"button","data-testid":"btn-review",className:"btn primary",disabled:!!z,onClick:Q,children:"Review"})]})]}),x.jsxs("div",{className:"alerts",children:[k?x.jsxs("div",{className:"error",children:[x.jsx("span",{children:k}),x.jsx("button",{type:"button",className:"dismiss",onClick:()=>E(""),"aria-label":"Dismiss error",children:"×"})]}):null,P?x.jsxs("div",{className:"banner","data-testid":"status-note",children:[x.jsx("span",{children:P}),x.jsx("button",{type:"button",className:"dismiss",onClick:()=>b(""),"aria-label":"Dismiss",children:"×"})]}):null,((Lt=p==null?void 0:p.index)!=null&&Lt.stale||m!=null&&m.stale)&&(t==="review"||t==="architecture")?x.jsx("div",{className:"banner stale","data-testid":"index-stale",children:"Index is stale — files changed since the last extract. Index again before trusting this walk."}):null,((kt=p==null?void 0:p.index)==null?void 0:kt.django_boot)==="failed"||(m==null?void 0:m.django_boot)==="failed"?x.jsx("div",{className:"banner warn","data-testid":"django-boot-failed",children:((Et=p==null?void 0:p.index)==null?void 0:Et.django_boot_detail)||(m==null?void 0:m.django_boot_detail)||"django.setup() failed"}):null,(it=p==null?void 0:p.workspace)!=null&&it.dirty_overlaps_review&&t==="review"?x.jsxs("div",{className:"banner warn","data-testid":"dirty-tree",children:["Uncommitted files overlap this review: ",(p.workspace.dirty_overlap||[]).slice(0,6).join(", ")]}):null]}),x.jsxs("div",{className:"stage",children:[t==="review"&&x.jsxs("div",{className:"content","data-testid":"review-layout",children:[x.jsx("aside",{className:"brief","data-testid":"brief",children:p?x.jsx(dk,{review:p,findings:et,aiNote:F,busy:!!z,onAskAi:Me,onCopy:Se,onPost:ve}):x.jsxs("div",{className:"empty","data-testid":"review-empty",children:[x.jsx("h2",{children:"Trace the force of this diff"}),x.jsx("p",{children:"The graph is the architecture. The brief is where this change travels — not a hunk list."}),x.jsxs("ol",{children:[x.jsx("li",{children:"Point at a Django + React monorepo, or pick an indexed workspace."}),x.jsxs("li",{children:["Index it. Missing ",x.jsx("code",{children:"loadpath.yml"})," is drafted from ",x.jsx("code",{children:"manage.py"})," and"," ",x.jsx("code",{children:"src/features"}),"."]}),x.jsx("li",{children:"Review a git range, or open a pull request so base/head become a three-dot merge-base."})]})]})}),x.jsx("div",{className:"graph-wrap","data-testid":"review-graph",children:p?x.jsx(Ru,{nodes:p.nodes,edges:p.edges}):null})]}),t==="architecture"&&x.jsxs("div",{className:"content","data-testid":"architecture-panel",children:[x.jsx("aside",{className:"brief","data-testid":"architecture-brief",children:m!=null&&m.indexed?x.jsx(fk,{architecture:m,busy:!!z,onReindex:()=>se(!1),onReview:Q}):x.jsx("p",{className:"muted","data-testid":"architecture-empty",children:"Index this repo to build the architecture graph. Review then walks that same graph for a git range — it does not start from a hunk list."})}),x.jsx("div",{className:"graph-wrap","data-testid":"architecture-graph",children:m!=null&&m.indexed?x.jsx(Ru,{nodes:m.nodes,edges:m.edges}):null})]}),t==="graph"&&x.jsxs("div",{className:"graph-wrap","data-testid":"graph-full",style:{height:"100%"},children:[x.jsxs("div",{className:"graph-modes",children:[x.jsxs("div",{className:"seg","aria-label":"Graph scope",children:[x.jsx("button",{type:"button","aria-pressed":_==="review","data-testid":"graph-mode-review",className:_==="review"?"active":"",onClick:()=>M("review"),children:"This review"}),x.jsx("button",{type:"button","aria-pressed":_==="architecture","data-testid":"graph-mode-architecture",className:_==="architecture"?"active":"",onClick:()=>M("architecture"),children:"Indexed architecture"})]}),x.jsxs("div",{className:"legend","aria-hidden":"true",children:[x.jsxs("span",{children:[x.jsx("i",{})," cheap"]}),x.jsxs("span",{children:[x.jsx("i",{className:"exp"})," expensive"]}),x.jsxs("span",{children:[x.jsx("i",{className:"crit"})," critical"]}),x.jsxs("span",{children:[x.jsx("i",{className:"dash"})," inferred"]})]})]}),Ze.length?x.jsx(Ru,{nodes:Ze,edges:lt}):x.jsx("p",{className:"empty",children:"Index the repo or run a review first. Click a node to inspect it."})]}),t==="prs"&&x.jsxs("div",{className:"pr-list","data-testid":"pr-list",children:[x.jsxs("div",{className:"pr-toolbar",children:[x.jsxs("label",{className:"field provider",children:[x.jsx("span",{children:"Provider"}),x.jsxs("select",{"data-testid":"pr-provider",value:te,onChange:q=>de(q.target.value,ne,C),children:[x.jsx("option",{value:"github",children:"GitHub"}),x.jsx("option",{value:"bitbucket",children:"Bitbucket"})]})]}),x.jsxs("label",{className:"field",children:[x.jsx("span",{children:"Repository"}),x.jsx("input",{"data-testid":"pr-repo",placeholder:"owner/repo",value:ne,onChange:q=>de(te,q.target.value,C),spellCheck:!1})]}),x.jsx("button",{type:"button","data-testid":"btn-list-prs",className:"btn",disabled:!!z,onClick:me,children:"List PRs"})]}),X.length===0?x.jsxs("div",{className:"empty",children:[x.jsx("h2",{children:"No pull requests loaded"}),x.jsx("p",{children:"Enter an owner/repo, then list open PRs. Reviewing a PR fills base and head from its SHAs."})]}):X.map(q=>x.jsxs("article",{className:"pr","data-testid":`pr-${q.number}`,children:[x.jsxs("h3",{children:["#",q.number," ",q.title]}),x.jsxs("div",{className:"pr-meta muted",children:[x.jsx("span",{className:`chip ${q.draft?"":"open"}`,children:q.draft?"draft":q.state}),x.jsx("span",{children:q.author}),x.jsxs("span",{children:[q.source_branch," → ",q.target_branch]})]}),x.jsxs("div",{className:"pr-actions",children:[x.jsxs("a",{href:q.url,target:"_blank",rel:"noreferrer",children:["Open on ",q.provider]}),x.jsx("button",{type:"button",className:"btn primary",onClick:()=>{ue(q.base_sha||q.target_branch,q.head_sha||q.source_branch),de(q.provider,q.repo,String(q.number)),r("review")},children:"Review this range"})]})]},`${q.provider}-${q.number}`))]}),t==="settings"&&x.jsxs("form",{className:"settings","data-testid":"settings-form",onSubmit:Ce,children:[x.jsxs("div",{children:[x.jsx("h1",{children:"Settings"}),x.jsx("p",{className:"muted",children:"Tokens stay on this machine in ~/.loadpath/settings.json. AI runs only on residual uncertainty the graph could not close."})]}),x.jsxs("section",{className:"settings-card",children:[x.jsx("h2",{children:"Appearance"}),x.jsx("p",{className:"muted",children:"Local to this browser. High contrast is a first-class theme, not an afterthought."}),x.jsx("div",{className:"theme-grid","data-testid":"theme-grid",children:cl.map(q=>x.jsxs("button",{type:"button",className:A===q.id?"theme-swatch active":"theme-swatch","data-testid":`theme-${q.id}`,onClick:()=>j(q.id),children:[x.jsx("div",{className:"name",children:q.label}),x.jsx("div",{className:"group",children:q.group})]},q.id))})]}),x.jsxs("section",{className:"settings-card",children:[x.jsx("h2",{children:"Source control"}),x.jsx("label",{htmlFor:"github_token",children:"GitHub token"}),x.jsx("input",{id:"github_token",name:"github_token",type:"password",placeholder:"ghp_…",autoComplete:"off"}),x.jsx("label",{htmlFor:"bitbucket_token",children:"Bitbucket token"}),x.jsx("input",{id:"bitbucket_token",name:"bitbucket_token",type:"password",autoComplete:"off"}),x.jsx("label",{htmlFor:"bitbucket_username",children:"Bitbucket username (app passwords)"}),x.jsx("input",{id:"bitbucket_username",name:"bitbucket_username",defaultValue:String($.bitbucket_username||"")})]}),x.jsxs("section",{className:"settings-card",children:[x.jsx("h2",{children:"Residual AI"}),x.jsx("label",{htmlFor:"ai_provider",children:"Provider"}),x.jsxs("select",{id:"ai_provider",name:"ai_provider",defaultValue:String(((ft=$.ai)==null?void 0:ft.provider)||"none"),children:[x.jsx("option",{value:"none",children:"none (graph only)"}),x.jsx("option",{value:"anthropic",children:"Anthropic"}),x.jsx("option",{value:"openai",children:"OpenAI"}),x.jsx("option",{value:"grok",children:"Grok / xAI"}),x.jsx("option",{value:"deepseek",children:"DeepSeek"}),x.jsx("option",{value:"cursor",children:"Cursor-compatible (OpenAI protocol)"}),x.jsx("option",{value:"ollama",children:"Ollama local"})]}),x.jsx("label",{htmlFor:"ai_api_key",children:"API key"}),x.jsx("input",{id:"ai_api_key",name:"ai_api_key",type:"password",autoComplete:"off"}),x.jsx("label",{htmlFor:"ai_model",children:"Model"}),x.jsx("input",{id:"ai_model",name:"ai_model",placeholder:"optional override"}),x.jsx("label",{htmlFor:"ai_base_url",children:"Base URL"}),x.jsx("input",{id:"ai_base_url",name:"ai_base_url",placeholder:"optional, OpenAI-compatible"}),x.jsx("button",{className:"btn primary",type:"submit",children:"Save"})]})]})]})]})]})}function dk({review:t,findings:r,aiNote:o,busy:l,onAskAi:a,onCopy:c,onPost:d}){var p,y,m,v,g,S,_,M;const h=[...new Set(t.confidence.reasons||[])];return x.jsxs(x.Fragment,{children:[x.jsxs("div",{className:`merge-box ${t.confidence.level}`,children:[x.jsxs("div",{className:`level ${t.confidence.level}`,children:[t.confidence.level.toUpperCase()," — ",t.title]}),h.length?x.jsx("ul",{className:"reasons",children:h.map(k=>x.jsx("li",{children:k},k))}):null,t.low_risk?x.jsx("span",{className:"chip",children:"low-risk"}):null,t.change_kinds.map(k=>x.jsx("span",{className:"chip",children:O0(k)},k))]}),x.jsxs("div",{className:"metrics",children:[x.jsxs("div",{className:"metric",children:[x.jsxs("div",{className:"n",children:[t.confidence.covered_sinks,"/",t.confidence.sinks]}),x.jsx("div",{className:"l",children:"Sinks tested"})]}),x.jsxs("div",{className:"metric",children:[x.jsx("div",{className:"n",children:r.length}),x.jsx("div",{className:"l",children:"Findings"})]}),x.jsxs("div",{className:"metric",children:[x.jsx("div",{className:"n",children:t.residuals.length}),x.jsx("div",{className:"l",children:"Residuals"})]})]}),x.jsx("pre",{className:"headline",children:t.headline}),t.index?x.jsxs("details",{className:"section",open:!0,children:[x.jsxs("summary",{children:["Index ",x.jsx("span",{className:"count",children:t.index.counts.nodes})]}),x.jsxs("div",{className:"muted",children:["Walked ",t.index.counts.nodes," nodes / ",t.index.counts.edges," edges",t.index.reindex_skipped?" from an unchanged index":t.index.reindexed?" after an incremental refresh":" from the existing index",t.index.django_boot&&t.index.django_boot!=="off"?` · Django boot ${t.index.django_boot}`:"",(p=t.workspace)!=null&&p.three_dot?" · three-dot range":""]})]}):null,x.jsxs("details",{className:"section",open:!0,children:[x.jsxs("summary",{children:["Read this ",x.jsx("span",{className:"count",children:t.read_order.length})]}),t.read_order.map((k,E)=>x.jsxs("div",{className:"read-item",children:[x.jsxs("span",{className:"file",children:[E+1,". ",k.path]}),x.jsx("div",{className:"why",children:k.why})]},k.path))]}),x.jsxs("details",{className:"section",children:[x.jsxs("summary",{children:["Clusters ",x.jsx("span",{className:"count",children:t.clusters.length})]}),t.clusters.map(k=>x.jsxs("div",{className:"muted",children:[x.jsx("strong",{children:k.title})," — ",k.files.join(", ")]},k.id))]}),x.jsxs("details",{className:"section",open:!0,children:[x.jsxs("summary",{children:["Architecture ",x.jsx("span",{className:"count",children:r.length})]}),r.length===0?x.jsx("div",{className:"muted",children:t.architecture_note}):r.map(k=>x.jsxs("div",{className:"finding",children:[x.jsx("span",{className:`chip ${k.severity}`,children:k.severity}),k.message]},k.rule+k.message))]}),x.jsxs("details",{className:"section",open:!0,children:[x.jsxs("summary",{children:["Residual ",x.jsx("span",{className:"count",children:t.residuals.length})]}),x.jsx("p",{className:"muted",children:"AI is only used here, on what the graph could not close."}),t.residuals.map(k=>x.jsx("div",{className:"residual muted",children:k},k))]}),(m=(y=t.evolution)==null?void 0:y.notes)!=null&&m.length||(g=(v=t.evolution)==null?void 0:v.hotspots)!=null&&g.some(k=>k.commits)?x.jsxs("details",{className:"section",children:[x.jsx("summary",{children:"Churn & coupling"}),(((S=t.evolution)==null?void 0:S.notes)||[]).map(k=>x.jsx("div",{className:"muted",children:k},k)),(((_=t.evolution)==null?void 0:_.hotspots)||[]).filter(k=>k.commits).slice(0,6).map(k=>x.jsxs("div",{className:"muted",children:[x.jsx("span",{className:"file",children:k.path})," — ",k.commits," commits, bus factor ",k.bus_factor]},k.path))]}):null,x.jsxs("div",{className:"btn-row",children:[x.jsx("button",{type:"button",className:"btn",disabled:l,onClick:a,children:"Ask configured model"}),x.jsx("button",{type:"button",className:"btn","data-testid":"btn-copy-markdown",onClick:c,children:"Copy markdown"}),x.jsx("button",{type:"button",className:"btn","data-testid":"btn-post-comment",onClick:d,children:"Post to PR"})]}),o?x.jsx("pre",{className:"headline",children:o}):null,x.jsx("div",{className:"kicker",children:"Reviewers"}),x.jsx("div",{className:"muted",children:t.suggested_reviewers.join(", ")||"—"}),(M=t.knowledge_owners)!=null&&M.length?x.jsxs("div",{className:"muted",children:["Knowledge: ",t.knowledge_owners.join(", ")]}):null]})}function fk({architecture:t,busy:r,onReindex:o,onReview:l}){const a=t.findings.filter(c=>!c.waived);return x.jsxs(x.Fragment,{children:[x.jsxs("div",{className:"merge-box high",children:[x.jsxs("div",{className:"level high",children:["INDEXED — ",t.counts.nodes," nodes"]}),x.jsxs("div",{className:"muted",style:{marginTop:8},children:[t.indexed_at?`Last index ${b0(t.indexed_at)}`:"Indexed",t.incremental?" · incremental":" · full",t.stale?" · stale":"",t.django_boot&&t.django_boot!=="off"?` · Django boot ${t.django_boot}`:""]}),x.jsxs("span",{className:"chip",children:[t.counts.edges," edges"]}),t.has_config?x.jsx("span",{className:"chip",children:"loadpath.yml"}):null]}),x.jsxs("details",{className:"section",open:!0,children:[x.jsx("summary",{children:"Bounded contexts"}),Object.values(t.contexts).map(c=>x.jsxs("div",{className:"muted",children:[x.jsx("strong",{children:c.name})," — ",(c.django_apps||[]).join(", ")||"no apps"," ·"," ",(c.owners||[]).join(", ")||"unowned"]},c.name))]}),x.jsxs("details",{className:"section",children:[x.jsxs("summary",{children:["Rules ",x.jsx("span",{className:"count",children:(t.rules||[]).length})]}),(t.rules||[]).map(c=>x.jsx("div",{className:"muted",children:c},c))]}),x.jsxs("details",{className:"section",open:!0,children:[x.jsxs("summary",{children:["Findings ",x.jsx("span",{className:"count",children:a.length})]}),a.length===0?x.jsx("div",{className:"muted",children:"No architecture rule hits on the full graph."}):a.map(c=>x.jsxs("div",{className:"finding",children:[x.jsx("span",{className:`chip ${c.severity}`,children:c.severity}),c.message]},c.rule+c.message))]}),x.jsxs("details",{className:"section",open:!0,children:[x.jsx("summary",{children:"Types"}),x.jsx("table",{className:"type-table",children:x.jsx("tbody",{children:Object.entries(t.type_counts||{}).sort((c,d)=>d[1]-c[1]).slice(0,12).map(([c,d])=>x.jsxs("tr",{children:[x.jsx("td",{children:Qu(c)}),x.jsx("td",{children:d})]},c))})})]}),x.jsxs("div",{className:"btn-row",children:[x.jsx("button",{type:"button",className:"btn",disabled:r,onClick:o,"data-testid":"btn-full-reindex",children:"Full reindex"}),x.jsx("button",{type:"button",className:"btn primary",disabled:r,onClick:l,children:"Review against this index"})]})]})}Gg(Kg());D0.createRoot(document.getElementById("root")).render(x.jsx(W.StrictMode,{children:x.jsx(ck,{})})); diff --git a/src/loadpath/static/index.html b/src/loadpath/static/index.html index f45dcef..9b2dd5f 100644 --- a/src/loadpath/static/index.html +++ b/src/loadpath/static/index.html @@ -17,8 +17,8 @@ - - + +
diff --git a/tests/e2e/test_ui_screenshots.py b/tests/e2e/test_ui_screenshots.py index 0908fef..64a8277 100644 --- a/tests/e2e/test_ui_screenshots.py +++ b/tests/e2e/test_ui_screenshots.py @@ -123,6 +123,8 @@ def test_ui_review_graph_prs_settings(live_app, tmp_path: Path): page.get_by_test_id("tab-graph").click() page.get_by_test_id("graph-full").wait_for() page.locator(".react-flow__node").first.wait_for(timeout=15_000) + page.locator(".react-flow__minimap-node").first.wait_for(timeout=10_000) + assert page.locator(".react-flow__minimap-node").count() > 3 page.wait_for_timeout(600) page.screenshot(path=str(dest / "graph.png"), full_page=False) diff --git a/ui/src/ImpactGraph.tsx b/ui/src/ImpactGraph.tsx index 14311c6..8089f07 100644 --- a/ui/src/ImpactGraph.tsx +++ b/ui/src/ImpactGraph.tsx @@ -29,6 +29,8 @@ function LoadNode({ data, selected }: { data: { name: string; type: string }; se } const nodeTypes = { load: LoadNode }; +const NODE_WIDTH = 180; +const NODE_HEIGHT = 56; export function ImpactGraph({ nodes, edges }: { nodes: GraphNode[]; edges: GraphEdge[] }) { const [selectedId, setSelectedId] = useState(null); @@ -43,6 +45,10 @@ export function ImpactGraph({ nodes, edges }: { nodes: GraphNode[]; edges: Graph position: pos.get(n.id) ?? { x: 0, y: 0 }, data: { name: n.name, type: n.type, file: n.file_path }, selected: selectedId === n.id, + // MiniMap reads width/height off the user node, not the measured DOM box. + width: NODE_WIDTH, + height: NODE_HEIGHT, + style: { width: NODE_WIDTH, height: NODE_HEIGHT }, })); const rfEdges: Edge[] = edges .filter((e) => byId.has(e.src) && byId.has(e.dst)) @@ -84,7 +90,19 @@ export function ImpactGraph({ nodes, edges }: { nodes: GraphNode[]; edges: Graph data-testid="impact-graph" > - + diff --git a/ui/src/styles.css b/ui/src/styles.css index 9f5e532..42bacd2 100644 --- a/ui/src/styles.css +++ b/ui/src/styles.css @@ -610,7 +610,24 @@ kbd { linear-gradient(90deg, var(--graph-grid) 1px, transparent 1px); background-size: 24px 24px; } -.react-flow__minimap { background: var(--surface) !important; } +.react-flow__minimap { + background: var(--graph-bg) !important; + border: 1px solid var(--line) !important; + border-radius: var(--radius); + overflow: hidden; + box-shadow: 0 8px 24px var(--shadow); +} +.react-flow__minimap-node { + fill: var(--muted); + stroke: none; +} +.react-flow__minimap-node.selected { + fill: var(--accent); +} +.react-flow__minimap-mask { + fill: rgba(0, 0, 0, 0.45) !important; + stroke: var(--accent) !important; +} .react-flow__controls { box-shadow: none !important; } .react-flow__controls-button { background: var(--surface) !important; @@ -881,8 +898,11 @@ h2 { font-size: 13px; margin: 0; font-weight: 600; } border-radius: var(--radius); border: 1px solid var(--node-line); background: var(--node-bg); - min-width: 168px; + width: 180px; + height: 56px; + box-sizing: border-box; box-shadow: 0 0 0 1px var(--shadow); + overflow: hidden; } .lp-node .t { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.08em; } .lp-node .n { font-size: 13px; font-weight: 600; }