diff --git a/src/loadpath/static/assets/index-DASg3n-q.js b/src/loadpath/static/assets/index-DASg3n-q.js deleted file mode 100644 index 698d82f..0000000 --- a/src/loadpath/static/assets/index-DASg3n-q.js +++ /dev/null @@ -1,62 +0,0 @@ -(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 u of a)if(u.type==="childList")for(const d of u.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&l(d)}).observe(document,{childList:!0,subtree:!0});function o(a){const u={};return a.integrity&&(u.integrity=a.integrity),a.referrerPolicy&&(u.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?u.credentials="include":a.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function l(a){if(a.ep)return;a.ep=!0;const u=o(a);fetch(a.href,u)}})();function ip(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var gu={exports:{}},Ji={},mu={exports:{}},je={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Df;function P0(){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"),u=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,z,re){this.props=j,this.context=z,this.refs=M,this.updater=re||S}k.prototype.isReactComponent={},k.prototype.setState=function(j,z){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,z,"setState")},k.prototype.forceUpdate=function(j){this.updater.enqueueForceUpdate(this,j,"forceUpdate")};function E(){}E.prototype=k.prototype;function T(j,z,re){this.props=j,this.context=z,this.refs=M,this.updater=re||S}var N=T.prototype=new E;N.constructor=T,_(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,z,re){var te,ae={},de=null,ce=null;if(z!=null)for(te in z.ref!==void 0&&(ce=z.ref),z.key!==void 0&&(de=""+z.key),z)b.call(z,te)&&!H.hasOwnProperty(te)&&(ae[te]=z[te]);var Q=arguments.length-2;if(Q===1)ae.children=re;else if(1>>1,z=A[j];if(0>>1;ja(ae,O))dea(ce,ae)?(A[j]=ce,A[de]=O,j=de):(A[j]=ae,A[te]=O,j=te);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 u=performance;t.unstable_now=function(){return u.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,T=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&&!q());){var j=v.callback;if(typeof j=="function"){v.callback=null,g=v.priorityLevel;var z=j(v.expirationTime<=L);L=t.unstable_now(),typeof z=="function"?v.callback=z:v===o(p)&&l(p),N(L)}else l(p);v=o(p)}if(v!==null)var re=!0;else{var te=o(y);te!==null&&V(P,te.startTime-L),re=!1}return re}finally{v=null,g=O,S=!1}}var $=!1,H=null,X=-1,K=5,ne=-1;function q(){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=z,r(p,A),_||S||(_=!0,F(b))),A},t.unstable_shouldYield=q,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 - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Bf;function A0(){if(Bf)return _t;Bf=1;var t=mo(),r=L0();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,c,f,w){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=s,this.attributeNamespace=c,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 T(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,T);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,T);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,T);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 c=k.hasOwnProperty(n)?k[n]:null;(c!==null?c.type!==0:s||!(2I||c[w]!==f[I]){var R=` -`+c[w].replace(" at new "," at ");return e.displayName&&R.includes("")&&(R=R.replace("",e.displayName)),R}while(1<=w&&0<=I);break}}}finally{re=!1,Error.prepareStackTrace=i}return(e=e?e.displayName||e.name:"")?z(e):""}function ae(e){switch(e.tag){case 5:return z(e.type);case 16:return z("Lazy");case 13:return z("Suspense");case 19:return z("SuspenseList");case 0:case 2:case 15:return e=te(e.type,!1),e;case 11:return e=te(e.type.render,!1),e;case 1:return e=te(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 q:return(e.displayName||"Context")+".Consumer";case ne:return(e._context.displayName||"Context")+".Provider";case ee: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 he(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 c=i.get,f=i.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return c.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 we(e){e._valueTracker||(e._valueTracker=he(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 Re(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")?rt(e,n.type,i):n.hasOwnProperty("defaultValue")&&rt(e,n.type,Q(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function nt(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 rt(e,n,i){(n!=="number"||me(e.ownerDocument)!==e)&&(i==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+i&&(e.defaultValue=""+i))}var Xe=Array.isArray;function Ge(e,n,i,s){if(e=e.options,n){n={};for(var c=0;c"+n.valueOf().toString()+"",n=ht.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function $t(e,n){if(n){var i=e.firstChild;if(i&&i===e.lastChild&&i.nodeType===3){i.nodeValue=n;return}}e.textContent=n}var rn={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},Z=["Webkit","ms","Moz","O"];Object.keys(rn).forEach(function(e){Z.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),rn[n]=rn[e]})});function Ee(e,n,i){return n==null||typeof n=="boolean"||n===""?"":i||typeof n!="number"||n===0||rn.hasOwnProperty(e)&&rn[e]?(""+n).trim():n+"px"}function $e(e,n){e=e.style;for(var i in n)if(n.hasOwnProperty(i)){var s=i.indexOf("--")===0,c=Ee(i,n[i],s);i==="float"&&(i="cssFloat"),s?e.setProperty(i,c):e[i]=c}}var Cn=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 mt(e,n){if(n){if(Cn[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 di(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 fi=null;function hi(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var pi=null,jn=null,Mn=null;function Eo(e){if(e=Oi(e)){if(typeof pi!="function")throw Error(o(280));var n=e.stateNode;n&&(n=es(n),pi(e.stateNode,e.type,n))}}function No(e){jn?Mn?Mn.push(e):Mn=[e]:jn=e}function Co(){if(jn){var e=jn,n=Mn;if(Mn=jn=null,Eo(e),n)for(e=0;e>>=0,e===0?32:31-(Ll(e)/Al|0)|0}var Ir=64,Tr=4194304;function nr(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 pn(e,n){var i=e.pendingLanes;if(i===0)return 0;var s=0,c=e.suspendedLanes,f=e.pingedLanes,w=i&268435455;if(w!==0){var I=w&~c;I!==0?s=nr(I):(f&=w,f!==0&&(s=nr(f)))}else w=i&~c,w!==0?s=nr(w):f!==0&&(s=nr(f));if(s===0)return 0;if(n!==0&&n!==s&&(n&c)===0&&(c=s&-s,f=n&-n,c>=f||c===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 ir(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=Pi),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 Ar=!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(Ar)return e==="compositionend"||!Kl&&Tc(e,n)?(e=kc(),Bo=Bl=Rn=null,Ar=!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 c=i.textContent.length,f=Math.min(s.start,c);s=s.end===void 0?f:Math.min(s.end,c),!e.extend&&f>s&&(c=s,s=f,f=c),c=Fc(i,f);var w=Fc(i,s);c&&w&&(e.rangeCount!==1||e.anchorNode!==c.node||e.anchorOffset!==c.offset||e.focusNode!==w.node||e.focusOffset!==w.offset)&&(n=n.createRange(),n.setStart(c.node,c.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,$r=null,Jl=null,Ri=null,ea=!1;function Bc(e,n,i){var s=i.window===i?i.document:i.nodeType===9?i:i.ownerDocument;ea||$r==null||$r!==me(s)||(s=$r,"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}),Ri&&zi(Ri,s)||(Ri=s,s=qo(Jl,"onSelect"),0Hr||(e.current=fa[Hr],fa[Hr]=null,Hr--)}function Ae(e,n){Hr++,fa[Hr]=e.current,e.current=n}var Dn={},at=$n(Dn),yt=$n(!1),sr=Dn;function Vr(e,n){var i=e.type.contextTypes;if(!i)return Dn;var s=e.stateNode;if(s&&s.__reactInternalMemoizedUnmaskedChildContext===n)return s.__reactInternalMemoizedMaskedChildContext;var c={},f;for(f in i)c[f]=n[f];return s&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=c),c}function vt(e){return e=e.childContextTypes,e!=null}function ts(){Oe(yt),Oe(at)}function id(e,n,i){if(at.current!==Dn)throw Error(o(168));Ae(at,n),Ae(yt,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 c in s)if(!(c in n))throw Error(o(108,ce(e)||"Unknown",c));return O({},i,s)}function ns(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Dn,sr=at.current,Ae(at,e),Ae(yt,yt.current),!0}function sd(e,n,i){var s=e.stateNode;if(!s)throw Error(o(169));i?(e=od(e,n,sr),s.__reactInternalMemoizedMergedChildContext=e,Oe(yt),Oe(at),Ae(at,e)):Oe(yt),Ae(yt,i)}var mn=null,rs=!1,ha=!1;function ld(e){mn===null?mn=[e]:mn.push(e)}function Qm(e){rs=!0,ld(e)}function On(){if(!ha&&mn!==null){ha=!0;var e=0,n=Le;try{var i=mn;for(Le=1;e>=w,c-=w,yn=1<<32-Ct(n)+c|i<Ne?(tt=ke,ke=null):tt=ke.sibling;var ze=ie(U,ke,Y[Ne],ue);if(ze===null){ke===null&&(ke=tt);break}e&&ke&&ze.alternate===null&&n(U,ke),D=f(ze,D,Ne),_e===null?xe=ze:_e.sibling=ze,_e=ze,ke=tt}if(Ne===Y.length)return i(U,ke),Fe&&ar(U,Ne),xe;if(ke===null){for(;NeNe?(tt=ke,ke=null):tt=ke.sibling;var Xn=ie(U,ke,ze.value,ue);if(Xn===null){ke===null&&(ke=tt);break}e&&ke&&Xn.alternate===null&&n(U,ke),D=f(Xn,D,Ne),_e===null?xe=Xn:_e.sibling=Xn,_e=Xn,ke=tt}if(ze.done)return i(U,ke),Fe&&ar(U,Ne),xe;if(ke===null){for(;!ze.done;Ne++,ze=Y.next())ze=le(U,ze.value,ue),ze!==null&&(D=f(ze,D,Ne),_e===null?xe=ze:_e.sibling=ze,_e=ze);return Fe&&ar(U,Ne),xe}for(ke=s(U,ke);!ze.done;Ne++,ze=Y.next())ze=fe(ke,U,Ne,ze.value,ue),ze!==null&&(e&&ze.alternate!==null&&ke.delete(ze.key===null?Ne:ze.key),D=f(ze,D,Ne),_e===null?xe=ze:_e.sibling=ze,_e=ze);return e&&ke.forEach(function(M0){return n(U,M0)}),Fe&&ar(U,Ne),xe}function Ye(U,D,Y,ue){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,_e=D;_e!==null;){if(_e.key===xe){if(xe=Y.type,xe===H){if(_e.tag===7){i(U,_e.sibling),D=c(_e,Y.props.children),D.return=U,U=D;break e}}else if(_e.elementType===xe||typeof xe=="object"&&xe!==null&&xe.$$typeof===F&&hd(xe)===_e.type){i(U,_e.sibling),D=c(_e,Y.props),D.ref=bi(U,_e,Y),D.return=U,U=D;break e}i(U,_e);break}else n(U,_e);_e=_e.sibling}Y.type===H?(D=mr(Y.props.children,U.mode,ue,Y.key),D.return=U,U=D):(ue=Ts(Y.type,Y.key,Y.props,null,U.mode,ue),ue.ref=bi(U,D,Y),ue.return=U,U=ue)}return w(U);case $:e:{for(_e=Y.key;D!==null;){if(D.key===_e)if(D.tag===4&&D.stateNode.containerInfo===Y.containerInfo&&D.stateNode.implementation===Y.implementation){i(U,D.sibling),D=c(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,ue),D.return=U,U=D}return w(U);case F:return _e=Y._init,Ye(U,D,_e(Y._payload),ue)}if(Xe(Y))return ge(U,D,Y,ue);if(L(Y))return ye(U,D,Y,ue);ls(U,Y)}return typeof Y=="string"&&Y!==""||typeof Y=="number"?(Y=""+Y,D!==null&&D.tag===6?(i(U,D.sibling),D=c(D,Y),D.return=U,U=D):(i(U,D),D=uu(Y,U.mode,ue),D.return=U,U=D),w(U)):i(U,D)}return Ye}var Yr=pd(!0),gd=pd(!1),as=$n(null),us=null,Xr=null,xa=null;function wa(){xa=Xr=us=null}function Sa(e){var n=as.current;Oe(as),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 Qr(e,n){us=e,xa=Xr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&n)!==0&&(xt=!0),e.firstContext=null)}function bt(e){var n=e._currentValue;if(xa!==e)if(e={context:e,memoizedValue:n,next:null},Xr===null){if(us===null)throw Error(o(308));Xr=e,us.dependencies={lanes:0,firstContext:e}}else Xr=Xr.next=e;return n}var ur=null;function ka(e){ur===null?ur=[e]:ur.push(e)}function md(e,n,i,s){var c=n.interleaved;return c===null?(i.next=i,ka(n)):(i.next=c.next,c.next=i),n.interleaved=i,xn(e,s)}function xn(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 bn=!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 wn(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function Fn(e,n,i){var s=e.updateQueue;if(s===null)return null;if(s=s.shared,(Ie&2)!==0){var c=s.pending;return c===null?n.next=n:(n.next=c.next,c.next=n),s.pending=n,xn(e,i)}return c=s.interleaved,c===null?(n.next=n,ka(s)):(n.next=c.next,c.next=n),s.interleaved=n,xn(e,i)}function cs(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,zr(e,i)}}function vd(e,n){var i=e.updateQueue,s=e.alternate;if(s!==null&&(s=s.updateQueue,i===s)){var c=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?c=f=w:f=f.next=w,i=i.next}while(i!==null);f===null?c=f=n:f=f.next=n}else c=f=n;i={baseState:s.baseState,firstBaseUpdate:c,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 ds(e,n,i,s){var c=e.updateQueue;bn=!1;var f=c.firstBaseUpdate,w=c.lastBaseUpdate,I=c.shared.pending;if(I!==null){c.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=c.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:bn=!0}}I.callback!==null&&I.lane!==0&&(e.flags|=64,ie=c.effects,ie===null?c.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=c.shared.pending,I===null)break;ie=I,I=ie.next,ie.next=null,c.lastBaseUpdate=ie,c.shared.pending=null}}while(!0);if(oe===null&&(R=le),c.baseState=R,c.firstBaseUpdate=G,c.lastBaseUpdate=oe,n=c.shared.interleaved,n!==null){c=n;do w|=c.lane,c=c.next;while(c!==n)}else f===null&&(c.shared.lanes=0);fr|=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 Ft().memoizedState}function Zm(e,n,i){var s=Un(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 c=gt();Kt(i,e,s,c),Hd(i,n,s)}}function Jm(e,n,i){var s=Un(e),c={lane:s,action:i,hasEagerState:!1,eagerState:null,next:null};if(bd(e))Fd(n,c);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(c.hasEagerState=!0,c.eagerState=I,Ut(I,w)){var R=n.interleaved;R===null?(c.next=c,ka(n)):(c.next=R.next,R.next=c),n.interleaved=c;return}}catch{}finally{}i=md(e,n,c,s),i!==null&&(c=gt(),Kt(i,e,s,c),Hd(i,n,s))}}function bd(e){var n=e.alternate;return e===Be||n!==null&&n===Be}function Fd(e,n){Bi=ps=!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,zr(e,i)}}var ys={readContext:bt,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:bt,useCallback:function(e,n){return an().memoizedState=[e,n===void 0?null:n],e},useContext:bt,useEffect:Id,useImperativeHandle:function(e,n,i){return i=i!=null?i.concat([e]):null,gs(4194308,4,Rd.bind(null,n,e),i)},useLayoutEffect:function(e,n){return gs(4194308,4,e,n)},useInsertionEffect:function(e,n){return gs(4,2,e,n)},useMemo:function(e,n){var i=an();return n=n===void 0?null:n,e=e(),i.memoizedState=[e,n],e},useReducer:function(e,n,i){var s=an();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=an();return e={current:e},n.memoizedState=e},useState:Md,useDebugValue:$a,useDeferredValue:function(e){return an().memoizedState=e},useTransition:function(){var e=Md(!1),n=e[0];return e=qm.bind(null,e[1]),an().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,i){var s=Be,c=an();if(Fe){if(i===void 0)throw Error(o(407));i=i()}else{if(i=n(),et===null)throw Error(o(349));(dr&30)!==0||kd(s,n,i)}c.memoizedState=i;var f={value:i,getSnapshot:n};return c.queue=f,Id(Nd.bind(null,s,f,e),[e]),s.flags|=2048,Yi(9,Ed.bind(null,s,f,i,n),void 0,null),i},useId:function(){var e=an(),n=et.identifierPrefix;if(Fe){var i=vn,s=yn;i=(s&~(1<<32-Ct(s)-1)).toString(32)+i,n=":"+n+"R"+i,i=Ui++,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[sn]=n,e[Di]=s,af(e,n,!1,!1),n.stateNode=e;e:{switch(w=di(i,s),i){case"dialog":De("cancel",e),De("close",e),c=s;break;case"iframe":case"object":case"embed":De("load",e),c=s;break;case"video":case"audio":for(c=0;cJr&&(n.flags|=128,s=!0,Xi(f,!1),n.lanes=4194304)}else{if(!s)if(e=fs(w),e!==null){if(n.flags|=128,s=!0,i=e.updateQueue,i!==null&&(n.updateQueue=i,n.flags|=4),Xi(f,!0),f.tail===null&&f.tailMode==="hidden"&&!w.alternate&&!Fe)return ct(n),null}else 2*He()-f.renderingStartTime>Jr&&i!==1073741824&&(n.flags|=128,s=!0,Xi(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,Ae(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 vt(n.type)&&ts(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return Kr(),Oe(yt),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));Wr()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return Oe(Ve),null;case 4:return Kr(),null;case 10:return Sa(n.type._context),null;case 22:case 23:return su(),null;case 24:return null;default:return null}}var Ss=!1,dt=!1,u0=typeof WeakSet=="function"?WeakSet:Set,pe=null;function qr(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=Ho,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 c=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||c!==0&&le.nodeType!==3||(I=w+c),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===c&&(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},Ho=!1,pe=n;pe!==null;)if(n=pe,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,pe=e;else for(;pe!==null;){n=pe;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:Yt(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(ue){We(n,n.return,ue)}if(e=n.sibling,e!==null){e.return=n.return,pe=e;break}pe=n.return}return ge=df,df=!1,ge}function Qi(e,n,i){var s=n.updateQueue;if(s=s!==null?s.lastEffect:null,s!==null){var c=s=s.next;do{if((c.tag&e)===e){var f=c.destroy;c.destroy=void 0,f!==void 0&&Qa(n,i,f)}c=c.next}while(c!==s)}}function _s(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[sn],delete n[Di],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=Jo));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,Xt=!1;function Hn(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(Pr,i)}catch{}switch(i.tag){case 5:dt||qr(i,n);case 6:var s=ot,c=Xt;ot=null,Hn(e,n,i),ot=s,Xt=c,ot!==null&&(Xt?(e=ot,i=i.stateNode,e.nodeType===8?e.parentNode.removeChild(i):e.removeChild(i)):ot.removeChild(i.stateNode));break;case 18:ot!==null&&(Xt?(e=ot,i=i.stateNode,e.nodeType===8?ca(e.parentNode,i):e.nodeType===1&&ca(e,i),Ci(e)):ca(ot,i.stateNode));break;case 4:s=ot,c=Xt,ot=i.stateNode.containerInfo,Xt=!0,Hn(e,n,i),ot=s,Xt=c;break;case 0:case 11:case 14:case 15:if(!dt&&(s=i.updateQueue,s!==null&&(s=s.lastEffect,s!==null))){c=s=s.next;do{var f=c,w=f.destroy;f=f.tag,w!==void 0&&((f&2)!==0||(f&4)!==0)&&Qa(i,n,w),c=c.next}while(c!==s)}Hn(e,n,i);break;case 1:if(!dt&&(qr(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)}Hn(e,n,i);break;case 21:Hn(e,n,i);break;case 22:i.mode&1?(dt=(s=dt)||i.memoizedState!==null,Hn(e,n,i),dt=s):Hn(e,n,i);break;default:Hn(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 c=x0.bind(null,e,s);i.has(s)||(i.add(s),s.then(c,c))})}}function Qt(e,n){var i=n.deletions;if(i!==null)for(var s=0;sc&&(c=w),s&=~f}if(s=c,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,Bn===null)var s=!1;else{if(e=Bn,Bn=null,js=0,(Ie&6)!==0)throw Error(o(331));var c=Ie;for(Ie|=4,pe=e.current;pe!==null;){var f=pe,w=f.child;if((pe.flags&16)!==0){var I=f.deletions;if(I!==null){for(var R=0;RHe()-eu?pr(e,0):Ja|=i),St(e,n)}function Pf(e,n){n===0&&((e.mode&1)===0?n=1:(n=Tr,Tr<<=1,(Tr&130023424)===0&&(Tr=4194304)));var i=gt();e=xn(e,n),e!==null&&(ir(e,n,i),St(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,c=e.memoizedState;c!==null&&(i=c.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||yt.current)xt=!0;else{if((e.lanes&i)===0&&(n.flags&128)===0)return xt=!1,s0(e,n,i);xt=(e.flags&131072)!==0}else xt=!1,Fe&&(n.flags&1048576)!==0&&ad(n,os,n.index);switch(n.lanes=0,n.tag){case 2:var s=n.type;ws(e,n),e=n.pendingProps;var c=Vr(n,at.current);Qr(n,i),c=Ta(null,n,s,e,c,i);var f=za();return n.flags|=1,typeof c=="object"&&c!==null&&typeof c.render=="function"&&c.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,vt(s)?(f=!0,ns(n)):f=!1,n.memoizedState=c.state!==null&&c.state!==void 0?c.state:null,Ea(n),c.updater=vs,n.stateNode=c,c._reactInternals=n,Oa(n,s,e,i),n=Va(null,n,s,!0,f,i)):(n.tag=0,Fe&&f&&pa(n),pt(null,n,c,i),n=n.child),n;case 16:s=n.elementType;e:{switch(ws(e,n),e=n.pendingProps,c=s._init,s=c(s._payload),n.type=s,c=n.tag=S0(s),e=Yt(s,e),c){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,Yt(s.type,e),i);break e}throw Error(o(306,s,""))}return n;case 0:return s=n.type,c=n.pendingProps,c=n.elementType===s?c:Yt(s,c),Ha(e,n,s,c,i);case 1:return s=n.type,c=n.pendingProps,c=n.elementType===s?c:Yt(s,c),tf(e,n,s,c,i);case 3:e:{if(nf(n),e===null)throw Error(o(387));s=n.pendingProps,f=n.memoizedState,c=f.element,yd(e,n),ds(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){c=Gr(Error(o(423)),n),n=rf(e,n,s,i,c);break e}else if(s!==c){c=Gr(Error(o(424)),n),n=rf(e,n,s,i,c);break e}else for(Pt=An(n.stateNode.containerInfo.firstChild),Mt=n,Fe=!0,Wt=null,i=gd(n,null,s,i),n.child=i;i;)i.flags=i.flags&-3|4096,i=i.sibling;else{if(Wr(),s===c){n=Sn(e,n,i);break e}pt(e,n,s,i)}n=n.child}return n;case 5:return wd(n),e===null&&ya(n),s=n.type,c=n.pendingProps,f=e!==null?e.memoizedProps:null,w=c.children,aa(s,c)?w=null:f!==null&&aa(s,f)&&(n.flags|=32),ef(e,n),pt(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=Yr(n,null,s,i):pt(e,n,s,i),n.child;case 11:return s=n.type,c=n.pendingProps,c=n.elementType===s?c:Yt(s,c),Gd(e,n,s,c,i);case 7:return pt(e,n,n.pendingProps,i),n.child;case 8:return pt(e,n,n.pendingProps.children,i),n.child;case 12:return pt(e,n,n.pendingProps.children,i),n.child;case 10:e:{if(s=n.type._context,c=n.pendingProps,f=n.memoizedProps,w=c.value,Ae(as,s._currentValue),s._currentValue=w,f!==null)if(Ut(f.value,w)){if(f.children===c.children&&!yt.current){n=Sn(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=wn(-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}pt(e,n,c.children,i),n=n.child}return n;case 9:return c=n.type,s=n.pendingProps.children,Qr(n,i),c=bt(c),s=s(c),n.flags|=1,pt(e,n,s,i),n.child;case 14:return s=n.type,c=Yt(s,n.pendingProps),c=Yt(s.type,c),qd(e,n,s,c,i);case 15:return Zd(e,n,n.type,n.pendingProps,i);case 17:return s=n.type,c=n.pendingProps,c=n.elementType===s?c:Yt(s,c),ws(e,n),n.tag=1,vt(s)?(e=!0,ns(n)):e=!1,Qr(n,i),Bd(n,s,c),Oa(n,s,c,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 zo(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 Vt(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===ee)return 11;if(e===B)return 14}return 2}function Yn(e,n){var i=e.alternate;return i===null?(i=Vt(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 Ts(e,n,i,s,c,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 mr(i.children,c,f,n);case X:w=8,c|=8;break;case K:return e=Vt(12,i,n,c|2),e.elementType=K,e.lanes=f,e;case J:return e=Vt(13,i,n,c),e.elementType=J,e.lanes=f,e;case C:return e=Vt(19,i,n,c),e.elementType=C,e.lanes=f,e;case V:return zs(i,c,f,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ne:w=10;break e;case q:w=9;break e;case ee: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=Vt(w,i,n,c),n.elementType=e,n.type=s,n.lanes=f,n}function mr(e,n,i,s){return e=Vt(7,e,s,n),e.lanes=i,e}function zs(e,n,i,s){return e=Vt(22,e,s,n),e.elementType=V,e.lanes=i,e.stateNode={isHidden:!1},e}function uu(e,n,i){return e=Vt(6,e,null,n),e.lanes=i,e}function cu(e,n,i){return n=Vt(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,c){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=rr(0),this.expirationTimes=rr(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=rr(0),this.identifierPrefix=s,this.onRecoverableError=c,this.mutableSourceEagerHydrationData=null}function du(e,n,i,s,c,f,w,I,R){return e=new _0(e,n,i,I,R),n===1?(n=1,f===!0&&(n|=8)):n=0,f=Vt(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 bs;Wf=1;var t=op();return bs.createRoot=t.createRoot,bs.hydrateRoot=t.hydrateRoot,bs}var D0=$0();function O0(t,r="Request failed"){const o=(t||"").trim();if(!o)return r;try{const a=JSON.parse(o).detail;if(typeof a=="string"&&a.trim())return a;if(Array.isArray(a)){const u=a.map(d=>typeof d=="string"?d:d&&typeof d=="object"&&"msg"in d?String(d.msg):"").filter(Boolean);if(u.length)return u.join("; ")}}catch{}return o}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(O0(l,o.statusText||"Request failed"))}return o.json()}const b0=["github_token","bitbucket_token","ai_api_key","ai_model","ai_base_url"],kt={health:()=>Tt("/api/health"),settings:()=>Tt("/api/settings"),saveSettings:t=>{const r={...t};for(const o of b0)r[o]===""&&delete r[o];return Tt("/api/settings",{method:"PUT",body:JSON.stringify(r)})},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 F0(t){return t.replaceAll("_"," ")}function Qu(t){return t.split(".").pop()||t}function H0(t){if(!t)return"";const r=new Date(t);return Number.isNaN(r.getTime())?t:r.toLocaleString()}function yo({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 V0({className:t}){return x.jsxs(yo,{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 B0({className:t}){return x.jsxs(yo,{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 U0({className:t}){return x.jsxs(yo,{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 W0({className:t}){return x.jsxs(yo,{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 Y0({className:t}){return x.jsxs(yo,{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 Ke(t){if(typeof t=="string"||typeof t=="number")return""+t;let r="";if(Array.isArray(t))for(let o=0,l;o{}};function hl(){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}})}Ks.prototype=hl.prototype={constructor:Ks,on:function(t,r){var o=this._,l=Q0(t+"",o),a,u=-1,d=l.length;if(arguments.length<2){for(;++u0)for(var o=new Array(a),l=0,a,u;l=0&&(r=t.slice(0,o))!=="xmlns"&&(t=t.slice(o+1)),Xf.hasOwnProperty(r)?{space:Xf[r],local:t}:t}function G0(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 sp(t){var r=pl(t);return(r.local?q0:G0)(r)}function Z0(){}function Ku(t){return t==null?Z0:function(){return this.querySelector(t)}}function J0(t){typeof t!="function"&&(t=Ku(t));for(var r=this._groups,o=r.length,l=new Array(o),a=0;a=N&&(N=T+1);!(b=k[N])&&++N<_;);P._next=b||null}}return d=new Rt(d,l),d._enter=h,d._exit=p,d}function xy(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function wy(){return new Rt(this._exit||this._groups.map(cp),this._parents)}function Sy(t,r,o){var l=this.enter(),a=this,u=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?u.remove():o(u),l&&a?l.merge(a).order():a}function _y(t){for(var r=t.selection?t.selection():t,o=this._groups,l=r._groups,a=o.length,u=l.length,d=Math.min(a,u),h=new Array(a),p=0;p=0;)(d=l[a])&&(u&&d.compareDocumentPosition(u)^4&&u.parentNode.insertBefore(d,u),u=d);return this}function Ey(t){t||(t=Ny);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),u=0;ur?1:t>=r?0:NaN}function Cy(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function jy(){return Array.from(this)}function My(){for(var t=this._groups,r=0,o=t.length;r1?this.each((r==null?by:typeof r=="function"?Hy:Fy)(t,r,o??"")):oi(this.node(),t)}function oi(t,r){return t.style.getPropertyValue(r)||dp(t).getComputedStyle(t,null).getPropertyValue(r)}function By(t){return function(){delete this[t]}}function Uy(t,r){return function(){this[t]=r}}function Wy(t,r){return function(){var o=r.apply(this,arguments);o==null?delete this[t]:this[t]=o}}function Yy(t,r){return arguments.length>1?this.each((r==null?By:typeof r=="function"?Wy:Uy)(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 wv(t){return function(){var r=this.__on;if(r){for(var o=0,l=-1,a=r.length,u;o()=>t;function Au(t,{sourceEvent:r,subject:o,target:l,identifier:a,active:u,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:u,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 Iv(t){return!t.ctrlKey&&!t.button}function Tv(){return this.parentNode}function zv(t,r){return r??{x:t.x,y:t.y}}function Rv(){return navigator.maxTouchPoints||"ontouchstart"in this}function wp(){var t=Iv,r=Tv,o=zv,l=Rv,a={},u=hl("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,Pv).on("touchend.drag touchcancel.drag",T).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",_,so).on("mouseup.drag",M,so),vp(P.view),wu(P),y=!1,h=P.clientX,p=P.clientY,$("start",P))}}function _(P){if(ri(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),ri(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?Hs(r>>24&255,r>>16&255,r>>8&255,(r&255)/255):o===4?Hs(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=Av.exec(t))?new Et(r[1],r[2],r[3],1):(r=$v.exec(t))?new Et(r[1]*255/100,r[2]*255/100,r[3]*255/100,1):(r=Dv.exec(t))?Hs(r[1],r[2],r[3],r[4]):(r=Ov.exec(t))?Hs(r[1]*255/100,r[2]*255/100,r[3]*255/100,r[4]):(r=bv.exec(t))?eh(r[1],r[2]/100,r[3]/100,1):(r=Fv.exec(t))?eh(r[1],r[2]/100,r[3]/100,r[4]):Qf.hasOwnProperty(t)?qf(Qf[t]):t==="transparent"?new Et(NaN,NaN,NaN,0):null}function qf(t){return new Et(t>>16&255,t>>8&255,t&255,1)}function Hs(t,r,o,l){return l<=0&&(t=r=o=NaN),new Et(t,r,o,l)}function Bv(t){return t instanceof xo||(t=Sr(t)),t?(t=t.rgb(),new Et(t.r,t.g,t.b,t.opacity)):new Et}function $u(t,r,o,l){return arguments.length===1?Bv(t):new Et(t,r,o,l??1)}function Et(t,r,o,l){this.r=+t,this.g=+r,this.b=+o,this.opacity=+l}qu(Et,$u,Sp(xo,{brighter(t){return t=t==null?tl:Math.pow(tl,t),new Et(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?lo:Math.pow(lo,t),new Et(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Et(xr(this.r),xr(this.g),xr(this.b),nl(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:Uv,formatRgb:Jf,toString:Jf}));function Zf(){return`#${vr(this.r)}${vr(this.g)}${vr(this.b)}`}function Uv(){return`#${vr(this.r)}${vr(this.g)}${vr(this.b)}${vr((isNaN(this.opacity)?1:this.opacity)*255)}`}function Jf(){const t=nl(this.opacity);return`${t===1?"rgb(":"rgba("}${xr(this.r)}, ${xr(this.g)}, ${xr(this.b)}${t===1?")":`, ${t})`}`}function nl(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function xr(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function vr(t){return t=xr(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 xo||(t=Sr(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),u=Math.max(r,o,l),d=NaN,h=u-a,p=(u+a)/2;return h?(r===u?d=(o-l)/h+(o0&&p<1?0:d,new qt(d,h,p,t.opacity)}function Wv(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,Wv,Sp(xo,{brighter(t){return t=t==null?tl:Math.pow(tl,t),new qt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?lo:Math.pow(lo,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 Et(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),Vs(this.s),Vs(this.l),nl(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=nl(this.opacity);return`${t===1?"hsl(":"hsla("}${th(this.h)}, ${Vs(this.s)*100}%, ${Vs(this.l)*100}%${t===1?")":`, ${t})`}`}}));function th(t){return t=(t||0)%360,t<0?t+360:t}function Vs(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 Yv(t,r){return function(o){return t+o*r}}function Xv(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 Qv(t){return(t=+t)==1?kp:function(r,o){return o-r?Xv(r,o,t):Zu(isNaN(r)?o:r)}}function kp(t,r){var o=r-t;return o?Yv(t,o):Zu(isNaN(t)?r:t)}const rl=(function t(r){var o=Qv(r);function l(a,u){var d=o((a=$u(a)).r,(u=$u(u)).r),h=o(a.g,u.g),p=o(a.b,u.b),y=kp(a.opacity,u.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 Kv(t,r){r||(r=[]);var o=t?Math.min(r.length,t.length):0,l=r.slice(),a;return function(u){for(a=0;ao&&(u=r.slice(o,u),h[d]?h[d]+=u:h[++d]=u),(l=l[0])===(a=a[0])?h[d]?h[d]+=a:h[++d]=a:(h[++d]=null,p.push({i:d,x:cn(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:cn(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:cn(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:cn(y,v)},{i:M-2,x:cn(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),u(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;--si}function ih(){_r=(ol=uo.now())+gl,si=no=0;try{cx()}finally{si=0,fx(),_r=0}}function dx(){var t=uo.now(),r=t-ol;r>jp&&(gl-=r,ol=t)}function fx(){for(var t,r=il,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:il=o);ro=t,bu(l)}function bu(t){if(!si){no&&(no=clearTimeout(no));var r=t-_r;r>24?(t<1/0&&(no=setTimeout(ih,t-uo.now()-gl)),eo&&(eo=clearInterval(eo))):(eo||(ol=uo.now(),eo=setInterval(dx,jp)),si=1,Mp(ih))}}function oh(t,r,o){var l=new sl;return r=r==null?0:+r,l.restart(a=>{l.stop(),t(a+r)},r,o),l}var hx=hl("start","end","cancel","interrupt"),px=[],Ip=0,sh=1,Fu=2,qs=3,lh=4,Hu=5,Zs=6;function ml(t,r,o,l,a,u){var d=t.__transition;if(!d)t.__transition={};else if(o in d)return;gx(t,o,{name:r,index:l,group:a,on:hx,tween:px,time:u.time,delay:u.delay,duration:u.duration,ease:u.ease,timer:null,state:Ip})}function ec(t,r){var o=tn(t,r);if(o.state>Ip)throw new Error("too late; already scheduled");return o}function fn(t,r){var o=tn(t,r);if(o.state>qs)throw new Error("too late; already running");return o}function tn(t,r){var o=t.__transition;if(!o||!(o=o[r]))throw new Error("transition not found");return o}function gx(t,r,o){var l=t.__transition,a;l[r]=o,o.timer=Pp(u,0,o.time);function u(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===qs)return oh(d);S.state===lh?(S.state=Zs,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 Wx(t,r,o){var l,a,u=Ux(r)?ec:fn;return function(){var d=u(this,t),h=d.on;h!==l&&(a=(l=h).copy()).on(r,o),d.on=a}}function Yx(t,r){var o=this._id;return arguments.length<2?tn(this.node(),o).on.on(t):this.each(Wx(o,t,r))}function Xx(t){return function(){var r=this.parentNode;for(var o in this.__transition)if(+o!==t)return;r&&r.removeChild(this)}}function Qx(){return this.on("end.remove",Xx(this._id))}function Kx(t){var r=this._name,o=this._id;typeof t!="function"&&(t=Ku(t));for(var l=this._groups,a=l.length,u=new Array(a),d=0;d()=>t;function ww(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 En(t,r,o){this.k=t,this.x=r,this.y=o}En.prototype={constructor:En,scale:function(t){return t===1?this:new En(this.k*t,this.x,this.y)},translate:function(t,r){return t===0&r===0?this:new En(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 yl=new En(1,0,0);Lp.prototype=En.prototype;function Lp(t){for(;!t.__zoom;)if(!(t=t.parentNode))return yl;return t.__zoom}function ku(t){t.stopImmediatePropagation()}function to(t){t.preventDefault(),t.stopImmediatePropagation()}function Sw(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function _w(){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||yl}function kw(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function Ew(){return navigator.maxTouchPoints||"ontouchstart"in this}function Nw(t,r,o){var l=t.invertX(r[0][0])-o[0][0],a=t.invertX(r[1][0])-o[1][0],u=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>u?(u+d)/2:Math.min(0,u)||Math.max(0,d))}function Ap(){var t=Sw,r=_w,o=Nw,l=kw,a=Ew,u=[0,1/0],d=[[-1/0,-1/0],[1/0,1/0]],h=250,p=Gs,y=hl("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",q).on("touchmove.zoom",ee).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),z=typeof B=="function"?B.apply(this,arguments):B;return o(N(T(L,z),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(yl.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 T(C,B){return B=Math.max(u[0],Math.min(u[1],B)),B===C.k?C:new En(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 En(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),z=F==null?P(j):typeof F=="function"?F.apply(A,L):F,re=Math.max(j[1][0]-j[0][0],j[1][1]-j[0][1]),te=A.__zoom,ae=typeof B=="function"?B.apply(A,L):B,de=p(te.invert(z).concat(re/te.k),ae.invert(z).concat(re/ae.k));return function(ce){if(ce===1)ce=ae;else{var Q=de(ce),se=re/Q[2];ce=new En(se,z[0]-Q[0]*se,z[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 ww(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(u[0],Math.min(u[1],V.k*Math.pow(2,l.apply(this,arguments)))),L=Gt(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)],Js(this),F.start()}to(C),F.wheel=setTimeout(O,_),F.zoom("mouse",o(N(T(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",z,!0).on("mouseup.zoom",re,!0),L=Gt(C,F),O=C.clientX,j=C.clientY;vp(C.view),ku(C),V.mouse=[L,this.__zoom.invert(L)],Js(this),V.start();function z(te){if(to(te),!V.moved){var ae=te.clientX-O,de=te.clientY-j;V.moved=ae*ae+de*de>M}V.event(te).zoom("mouse",o(N(V.that.__zoom,V.mouse[0]=Gt(te,F),V.mouse[1]),V.extent,d))}function re(te){A.on("mousemove.zoom mouseup.zoom",null),xp(te.view,V.moved),to(te),V.event(te).end()}}function ne(C,...B){if(t.apply(this,arguments)){var F=this.__zoom,V=Gt(C.changedTouches?C.changedTouches[0]:C,this),A=F.invert(V),L=F.k*(C.shiftKey?.5:2),O=o(N(T(F,L),V,A),r.apply(this,B),d);to(C),h>0?zt(this).transition().duration(h).call(b,O,V,C):zt(this).call(E.transform,O,V,C)}}function q(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,z;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.`},co=[[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 li;(function(t){t.Strict="strict",t.Loose="loose"})(li||(li={}));var wr;(function(t){t.Free="free",t.Vertical="vertical",t.Horizontal="horizontal"})(wr||(wr={}));var fo;(function(t){t.Partial="partial",t.Full="full"})(fo||(fo={}));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 qn;(function(t){t.Bezier="default",t.Straight="straight",t.Step="step",t.SmoothStep="smoothstep",t.SimpleBezier="simplebezier"})(qn||(qn={}));var ll;(function(t){t.Arrow="arrow",t.ArrowClosed="arrowclosed"})(ll||(ll={}));var Se;(function(t){t.Left="left",t.Top="top",t.Right="right",t.Bottom="bottom"})(Se||(Se={}));const uh={[Se.Left]:Se.Right,[Se.Right]:Se.Left,[Se.Top]:Se.Bottom,[Se.Bottom]:Se.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,Cw=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),wo=(t,r=[0,0])=>{const{width:o,height:l}=nn(t),a=t.origin??r,u=o*a[0],d=l*a[1];return{x:t.position.x-u,y:t.position.y-d}},jw=(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,u)=>{const d=typeof u=="string";let h=!r.nodeLookup&&!d?u:void 0;return r.nodeLookup&&(h=d?r.nodeLookup.get(u):nc(u)?u:r.nodeLookup.get(u.id)),h?(o=!0,vl(a,al(h,r.nodeOrigin))):a},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return o?xl(l):{x:0,y:0,width:0,height:0}},So=(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=vl(o,al(a)),l=!0)}),l?xl(o):{x:0,y:0,width:0,height:0}},rc=(t,r,[o,l,a]=[0,0,1],u=!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:T,y:N}=g.internals.positionAbsolute,P=Up(h,p,y,m,T,N,k,E),b=k*E,$=u&&P>0;(!g.internals.handleBounds||$||P>=b||g.dragging)&&v.push(g)}return v},Mw=(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 Pw(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 u;if(r!=null&&r.includeHiddenNodes){const{width:d,height:h}=nn(a);u=d>0&&h>0}else u=!!(a.measured.width&&a.measured.height&&!a.hidden);u&&(!l||l.has(a.id))&&o.set(a.id,a)}),o}async function Iw({nodes:t,width:r,height:o,panZoom:l,minZoom:a,maxZoom:u},d){if(t.size===0)return!0;const h=Pw(t,d),p=So(h),y=oc(p,r,o,(d==null?void 0:d.minZoom)??a,(d==null?void 0:d.maxZoom)??u,(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:u}){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)u==null||u("005",en.error005());else{const{width:S,height:_}=nn(h);S&&_&&(v=[[p,y],[p+S,y+_]])}else h&&Er(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=Er(v)?kr(r,v,d.measured):r;return(d.measured.width===void 0||d.measured.height===void 0)&&(u==null||u("015",en.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 Tw({nodesToRemove:t=[],edgesToRemove:r=[],nodes:o,edges:l,onBeforeDelete:a}){const u=new Set(t.map(g=>g.id)),d=[];for(const g of o){if(g.deletable===!1)continue;const S=u.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=Mw(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 ai=(t,r=0,o=1)=>Math.min(Math.max(t,r),o),kr=(t={x:0,y:0},r,o)=>({x:ai(t.x,r[0][0],r[1][0]-((o==null?void 0:o.width)??0)),y:ai(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}=nn(o),{x:u,y:d}=o.internals.positionAbsolute;return kr(t,[[u,d],[u+l,d+a]],r)}const ch=(t,r,o)=>to?-ai(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,u=ch(t.y,l,r.height-l)*o;return[a,u]},vl=(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}),xl=({x:t,y:r,x2:o,y2:l})=>({x:t,y:r,width:o-t,height:l-r}),ho=(t,r=[0,0])=>{var a,u;const{x:o,y:l}=nc(t)?t.internals.positionAbsolute:wo(t,r);return{x:o,y:l,width:((a=t.measured)==null?void 0:a.width)??t.width??t.initialWidth??0,height:((u=t.measured)==null?void 0:u.height)??t.height??t.initialHeight??0}},al=(t,r=[0,0])=>{var a,u;const{x:o,y:l}=nc(t)?t.internals.positionAbsolute:wo(t,r);return{x:o,y:l,x2:o+(((a=t.measured)==null?void 0:a.width)??t.width??t.initialWidth??0),y2:l+(((u=t.measured)==null?void 0:u.height)??t.height??t.initialHeight??0)}},Bp=(t,r)=>xl(vl(Vu(t),Vu(r))),Up=(t,r,o,l,a,u,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,u+h)-Math.max(r,u));return Math.ceil(p*y)},ul=(t,r)=>Up(t.x,t.y,t.width,t.height,r.x,r.y,r.width,r.height),dh=t=>Zt(t.width)&&Zt(t.height)&&Zt(t.x)&&Zt(t.y),Zt=t=>!isNaN(t)&&isFinite(t),Wp=(t,r)=>(o,l)=>{},_o=(t,r=[1,1])=>({x:r[0]*Math.round(t.x/r[0]),y:r[1]*Math.round(t.y/r[1])}),ko=({x:t,y:r},[o,l,a],u=!1,d=[1,1])=>{const h={x:(t-o)/a,y:(r-l)/a};return u?_o(h,d):h},ui=({x:t,y:r},[o,l,a])=>({x:t*a+o,y:r*a+l});function ti(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 zw(t,r,o){if(typeof t=="string"||typeof t=="number"){const l=ti(t,o),a=ti(t,r);return{top:l,right:a,bottom:l,left:a,x:a*2,y:l*2}}if(typeof t=="object"){const l=ti(t.top??t.y??0,o),a=ti(t.bottom??t.y??0,o),u=ti(t.left??t.x??0,r),d=ti(t.right??t.x??0,r);return{top:l,right:d,bottom:a,left:u,x:u+d,y:l+a}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function Rw(t,r,o,l,a,u){const{x:d,y:h}=ui(t,[r,o,l]),{x:p,y}=ui({x:t.x+t.width,y:t.y+t.height},[r,o,l]),m=a-p,v=u-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,u)=>{const d=zw(u,r,o),h=(r-d.x)/t.width,p=(o-d.y)/t.height,y=Math.min(h,p),m=ai(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=Rw(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}},po=()=>{var t;return typeof navigator<"u"&&((t=navigator==null?void 0:navigator.userAgent)==null?void 0:t.indexOf("Mac"))>=0};function Er(t){return t!=null&&t!=="parent"}function nn(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 u={...t},d=l.get(o);if(d){const h=d.origin||a;u.x+=d.internals.positionAbsolute.x-(r.width??0)*h[0],u.y+=d.internals.positionAbsolute.y-(r.height??0)*h[1]}return u}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 Lw(){let t,r;return{promise:new Promise((l,a)=>{t=l,r=a}),resolve:t,reject:r}}function Aw(t){return{...Dp,...t||{}}}function oo(t,{snapGrid:r=[0,0],snapToGrid:o=!1,transform:l,containerBounds:a}){const{x:u,y:d}=Jt(t),h=ko({x:u-((a==null?void 0:a.left)??0),y:d-((a==null?void 0:a.top)??0)},l),{x:p,y}=o?_o(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)},$w=["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:$w.includes(r.nodeName)||r.hasAttribute("contenteditable")||!!r.closest(".nokey")}const Gp=t=>"clientX"in t,Jt=(t,r)=>{var u,d;const o=Gp(t),l=o?t.clientX:(u=t.touches)==null?void 0:u[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 u=r.querySelectorAll(`.${t}`);return!u||!u.length?null:Array.from(u).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:u,targetControlX:d,targetControlY:h}){const p=t*.125+a*.375+d*.375+o*.125,y=r*.125+u*.375+h*.375+l*.125,m=Math.abs(p-t),v=Math.abs(y-r);return[p,y,m,v]}function Ws(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:u}){switch(t){case Se.Left:return[r-Ws(r-l,u),o];case Se.Right:return[r+Ws(l-r,u),o];case Se.Top:return[r,o-Ws(o-a,u)];case Se.Bottom:return[r,o+Ws(a-o,u)]}}function Zp({sourceX:t,sourceY:r,sourcePosition:o=Se.Bottom,targetX:l,targetY:a,targetPosition:u=Se.Top,curvature:d=.25}){const[h,p]=ph({pos:o,x1:t,y1:r,x2:l,y2:a,c:d}),[y,m]=ph({pos:u,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,u=o0}const bw=({source:t,sourceHandle:r,target:o,targetHandle:l})=>`xy-edge__${t}${r||""}-${o}${l||""}`,Fw=(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)),Hw=(t,r,o={})=>{var u;if(!t.source||!t.target)return(u=o.onError)==null||u.call(o,"006",en.error006()),r;const l=o.getEdgeId||bw;let a;return Fp(t)?a={...t}:a={...t,id:l(t)},Fw(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,u,d,h]=Jp({sourceX:t,sourceY:r,targetX:o,targetY:l});return[`M ${t},${r}L ${o},${l}`,a,u,d,h]}const gh={[Se.Left]:{x:-1,y:0},[Se.Right]:{x:1,y:0},[Se.Top]:{x:0,y:-1},[Se.Bottom]:{x:0,y:1}},Vw=({source:t,sourcePosition:r=Se.Bottom,target:o})=>r===Se.Left||r===Se.Right?t.xMath.sqrt(Math.pow(r.x-t.x,2)+Math.pow(r.y-t.y,2));function Bw({source:t,sourcePosition:r=Se.Bottom,target:o,targetPosition:l=Se.Top,center:a,offset:u,stepPosition:d}){const h=gh[r],p=gh[l],y={x:t.x+h.x*u,y:t.y+h.y*u},m={x:o.x+p.x*u,y:o.y+p.y*u},v=Vw({source:y,sourcePosition:r,target:m}),g=v.x!==0?"x":"y",S=v[g];let _=[],M,k;const E={x:0,y:0},T={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<=u){const B=Math.min(u-1,u-C);h[g]===S?E[g]=(y[g]>t[g]?-1:1)*B:T[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+q.x)/2,k=_[0].y):(M=_[0].x,k=(ne.y+q.y)/2)}const b={x:y.x+E.x,y:y.y+E.y},$={x:m.x+T.x,y:m.y+T.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 Uw(t,r,o,l){const a=Math.min(mh(t,r)/2,mh(r,o)/2,l),{x:u,y:d}=r;if(t.x===u&&u===o.x||t.y===d&&d===o.y)return`L${u} ${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 Yw(t,{id:r,defaultColor:o,defaultMarkerStart:l,defaultMarkerEnd:a}){const u=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);u.has(y)||(d.push({id:y,color:p.color||o,...p}),u.add(y))}}),d),[]).sort((d,h)=>d.id.localeCompare(h.id))}const tg=1e3,Xw=10,lc={nodeOrigin:[0,0],nodeExtent:co,elevateNodesOnSelect:!0,zIndexMode:"basic",defaults:{}},Qw={...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 Kw(t,r,o){const l=ac(lc,o);for(const a of t.values())if(a.parentId)cc(a,t,r,l);else{const u=wo(a,l.nodeOrigin),d=Er(a.extent)?a.extent:l.nodeExtent,h=kr(u,d,nn(a));a.internals.positionAbsolute=h}}function Gw(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 u={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(u):a.type==="target"&&l.push(u)}return{source:o,target:l}}function uc(t){return t==="manual"}function Wu(t,r,o,l={}){var m,v;const a=ac(Qw,l),u={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 _=wo(g,a.nodeOrigin),M=Er(g.extent)?g.extent:a.nodeExtent,k=kr(_,M,nn(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:Gw(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,u),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:u,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*Xw),a&&m.internals.rootParentIndex!==void 0&&(a.i=m.internals.rootParentIndex);const v=u&&!uc(p)?tg:0,{x:g,y:S,z:_}=Zw(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=Zt(t.zIndex)?t.zIndex:0;return uc(o)?l:l+(t.selected?r:0)}function Zw(t,r,o,l,a,u){const{x:d,y:h}=r.internals.positionAbsolute,p=nn(t),y=wo(t,o),m=Er(t.extent)?kr(y,t.extent,p):y;let v=kr({x:d+m.x,y:h+m.y},l,p);t.extent==="parent"&&(v=Vp(v,p,r));const g=ng(t,a,u),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=[],u=new Map;for(const h of t){const p=r.get(h.parentId);if(!p)continue;const y=((d=u.get(h.parentId))==null?void 0:d.expandedRect)??ho(p),m=Bp(y,h.rect);u.set(h.parentId,{expandedRect:m,parent:p})}return u.size>0&&u.forEach(({expandedRect:h,parent:p},y)=>{var N;const m=p.internals.positionAbsolute,v=nn(p),g=p.origin??l,S=h.x0||_>0||E||T)&&(a.push({id:y,type:"position",position:{x:p.position.x-S+E,y:p.position.y-_+T}}),(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 e1({delta:t,panZoom:r,transform:o,translateExtent:l,width:a,height:u}){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,u]],l);return!!d&&(d.x!==o[0]||d.y!==o[1]||d.k!==o[2])}function wh(t,r,o,l,a,u){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)),u){d=`${a}-${t}-${u}`;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:u,sourceHandle:d=null,targetHandle:h=null}=l,p={edgeId:l.id,source:a,target:u,sourceHandle:d,targetHandle:h},y=`${a}-${d}--${u}-${h}`,m=`${u}-${h}--${a}-${d}`;wh("source",p,m,t,a,d),wh("target",p,y,t,u,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 t1(t,r,o,l){const a=new Map;for(const[u,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(u);h&&a.set(u,{id:u,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 u=(h=o.get(t))==null?void 0:h.internals.userNode;return[u?{...u,position:((p=r.get(t))==null?void 0:p.position)||u.position,dragging:l}:a[0],a]}function n1({dragItems:t,snapGrid:r,x:o,y:l}){const a=t.values().next().value;if(!a)return null;const u={x:o-a.distance.x,y:l-a.distance.y},d=_o(u,r);return{x:d.x-u.x,y:d.y-u.y}}function r1({onNodeMouseDown:t,getStoreItems:r,onDragStart:o,onDrag:l,onDragStop:a}){let u={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:T,handleSelector:N,domNode:P,isSelectable:b,nodeId:$,nodeClickDistance:H=0}){g=zt(P);function X({x:ee,y:J}){const{nodeLookup:C,nodeExtent:B,snapGrid:F,snapToGrid:V,nodeOrigin:A,onNodeDrag:L,onSelectionDrag:O,onError:j,updateNodePositions:z}=r();u={x:ee,y:J};let re=!1;const te=h.size>1,ae=te&&B?Vu(So(h)):null,de=te&&V?n1({dragItems:h,snapGrid:F,x:ee,y:J}):null;for(const[ce,Q]of h){if(!C.has(ce))continue;let se={x:ee-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)}:_o(se,F));let he=null;if(te&&B&&!Q.extent&&ae){const{positionAbsolute:me}=Q.internals,Ce=me.x-ae.x+B[0][0],Me=me.x+Q.measured.width-ae.x2+B[1][0],Pe=me.y-ae.y+B[0][1],Re=me.y+Q.measured.height-ae.y2+B[1][1];he=[[Ce,Pe],[Me,Re]]}const{position:we,positionAbsolute:ve}=Hp({nodeId:ce,nextPosition:se,nodeLookup:C,nodeExtent:he||B,nodeOrigin:A,onError:j});re=re||Q.position.x!==we.x||Q.position.y!==we.y,Q.position=we,Q.internals.positionAbsolute=ve}if(_=_||re,!!re&&(z(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:ee,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)&&(u.x=(u.x??0)-F/ee[2],u.y=(u.y??0)-V/ee[2],await J({x:F,y:V})&&X(u)),d=requestAnimationFrame(K)}function ne(ee){var te;const{nodeLookup:J,multiSelectionActive:C,nodesDraggable:B,transform:F,snapGrid:V,snapToGrid:A,selectNodesOnDrag:L,onNodeDragStart:O,onSelectionDragStart:j,unselectNodesAndEdges:z}=r();v=!0,(!L||!b)&&!C&&$&&((te=J.get($))!=null&&te.selected||z()),b&&L&&$&&(t==null||t($));const re=oo(ee.sourceEvent,{transform:F,snapGrid:V,snapToGrid:A,containerBounds:m});if(u=re,h=t1(J,B,re,$),h.size>0&&(o||O||!$&&j)){const[ae,de]=Eu({nodeId:$,dragItems:h,nodeLookup:J});o==null||o(ee.sourceEvent,h,ae,de),O==null||O(ee.sourceEvent,ae,de),$||j==null||j(ee.sourceEvent,de)}}const q=wp().clickDistance(H).on("start",ee=>{const{domNode:J,nodeDragThreshold:C,transform:B,snapGrid:F,snapToGrid:V}=r();m=(J==null?void 0:J.getBoundingClientRect())||null,S=!1,_=!1,M=ee.sourceEvent,C===0&&ne(ee),u=oo(ee.sourceEvent,{transform:B,snapGrid:F,snapToGrid:V,containerBounds:m}),y=Jt(ee.sourceEvent,m)}).on("drag",ee=>{const{autoPanOnNodeDrag:J,transform:C,snapGrid:B,snapToGrid:F,nodeDragThreshold:V,nodeLookup:A}=r(),L=oo(ee.sourceEvent,{transform:C,snapGrid:B,snapToGrid:F,containerBounds:m});if(M=ee.sourceEvent,(ee.sourceEvent.type==="touchmove"&&ee.sourceEvent.touches.length>1||$&&!A.has($))&&(S=!0),!S){if(!p&&J&&v&&(p=!0,K()),!v){const O=Jt(ee.sourceEvent,m),j=O.x-y.x,z=O.y-y.y;Math.sqrt(j*j+z*z)>V&&ne(ee)}(u.x!==L.xSnapped||u.y!==L.ySnapped)&&h&&v&&(y=Jt(ee.sourceEvent,m),X(L))}}).on("end",ee=>{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(ee.sourceEvent,h,V,A),B==null||B(ee.sourceEvent,V,A),$||F==null||F(ee.sourceEvent,A)}}}).filter(ee=>{const J=ee.target;return!ee.button&&(!T||!Sh(J,`.${T}`,P))&&(!N||Sh(J,N,P))});g.call(q)}function E(){g==null||g.on(".drag",null)}return{update:k,destroy:E}}function i1(t,r,o){const l=[],a={x:t.x-o,y:t.y-o,width:o*2,height:o*2};for(const u of r.values())ul(a,ho(u))>0&&l.push(u);return l}const o1=250;function s1(t,r,o,l){var h,p;let a=[],u=1/0;const d=i1(t,o,r+o1);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}=Nr(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,u=!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&&u?{...p,...Nr(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 l1(t,r){let o=null;return r?o=!0:t&&!r&&(o=!1),o}const lg=()=>!0;function a1(t,{connectionMode:r,connectionRadius:o,handleId:l,nodeId:a,edgeUpdaterType:u,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:T,updateConnection:N,getTransform:P,getFromHandle:b,autoPanSpeed:$,dragThreshold:H=1,handleDomNode:X}){const K=Qp(t.target);let ne=0,q;const{x:ee,y:J}=Jt(t),C=sg(u,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=Jt(t,B),L=!1,O=null,j=!1,z=null;function re(){if(!m||!B)return;const[we,ve]=ic(A,B,$);g({x:we,y:ve}),ne=requestAnimationFrame(re)}const te={...V,nodeId:a,type:C,position:V.position},ae=p.get(a);let ce={inProgress:!0,isValid:null,from:Nr(ae,te,Se.Left,!0),fromHandle:te,fromPosition:te.position,fromNode:ae,to:A,toHandle:null,toPosition:uh[te.position],toNode:null,pointer:A};function Q(){F=!0,N(ce),_==null||_(t,{nodeId:a,handleId:l,handleType:C})}H===0&&Q();function se(we){if(!F){const{x:Re,y:nt}=Jt(we),rt=Re-ee,Xe=nt-J;if(!(rt*rt+Xe*Xe>H*H))return;Q()}if(!b()||!te){he(we);return}const ve=P();A=Jt(we,B),q=s1(ko(A,ve,!1,[1,1]),o,p,te),L||(re(),L=!0);const me=ag(we,{handle:q,connectionMode:r,fromNodeId:a,fromHandleId:l,fromType:d?"target":"source",isValidConnection:E,doc:K,lib:y,flowId:v,nodeLookup:p});z=me.handleDomNode,O=me.connection,j=l1(!!q,me.isValid);const Ce=p.get(a),Me=Ce?Nr(Ce,te,Se.Left,!0):ce.from,Pe={...ce,from:Me,isValid:j,to:me.toHandle&&j?ui({x:me.toHandle.x,y:me.toHandle.y},ve):A,toHandle:me.toHandle,toPosition:j&&me.toHandle?me.toHandle.position:uh[te.position],toNode:me.toHandle?p.get(me.toHandle.nodeId):null,pointer:A};N(Pe),ce=Pe}function he(we){if(!("touches"in we&&we.touches.length>0)){if(F){(q||z)&&O&&j&&(M==null||M(O));const{inProgress:ve,...me}=ce,Ce={...me,toPosition:ce.toHandle?ce.toPosition:null};k==null||k(we,Ce),u&&(T==null||T(we,Ce))}S(),cancelAnimationFrame(ne),L=!1,j=!1,O=null,z=null,K.removeEventListener("mousemove",se),K.removeEventListener("mouseup",he),K.removeEventListener("touchmove",se),K.removeEventListener("touchend",he)}}K.addEventListener("mousemove",se),K.addEventListener("mouseup",he),K.addEventListener("touchmove",se),K.addEventListener("touchend",he)}function ag(t,{handle:r,connectionMode:o,fromNodeId:l,fromHandleId:a,fromType:u,doc:d,lib:h,flowId:p,isValidConnection:y=lg,nodeLookup:m}){const v=u==="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:_}=Jt(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 T=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||!T)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===li.Strict?v&&T==="source"||!v&&T==="target":N!==l||P!==a);E.isValid=K&&y(H),E.toHandle=og(N,T,P,m,o,!0)}return E}const Yu={onPointerDown:a1,isValid:ag};function u1({domNode:t,panZoom:r,getTransform:o,getViewScale:l}){const a=zt(t);function u({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&&po()?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)},T=Ap().on("start",k).on("zoom",v?E:null).on("zoom.wheel",g?_:null);a.call(T,{})}function d(){a.on("zoom",null)}return{update:u,destroy:d,pointer:Gt}}const wl=t=>({x:t.x,y:t.y,zoom:t.k}),Nu=({x:t,y:r,zoom:o})=>yl.translate(t,r).scale(o),Gn=(t,r)=>t.target.closest(`.${r}`),ug=(t,r)=>r===2&&Array.isArray(t)&&t.includes(2),c1=t=>((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2,Cu=(t,r=0,o=c1,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&&po()?10:1;return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*r};function d1({zoomPanValues:t,noWheelClassName:r,d3Selection:o,d3Zoom:l,panOnScrollMode:a,panOnScrollSpeed:u,zoomOnPinch:d,onPanZoomStart:h,onPanZoom:p,onPanZoomEnd:y}){return m=>{if(Gn(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=Gt(m),E=cg(m),T=v*Math.pow(2,E);l.scaleTo(o,T,k,m);return}const g=m.deltaMode===1?20:1;let S=a===wr.Vertical?0:m.deltaX*g,_=a===wr.Horizontal?0:m.deltaY*g;!po()&&m.shiftKey&&a!==wr.Vertical&&(S=m.deltaY*g,_=0),l.translateBy(o,-(S/v)*u,-(_/v)*u,{internal:!0});const M=wl(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 f1({noWheelClassName:t,preventScrolling:r,d3ZoomHandler:o}){return function(l,a){const u=l.type==="wheel",d=!r&&u&&!l.ctrlKey,h=Gn(l,t);if(l.ctrlKey&&u&&h&&l.preventDefault(),d||h)return null;l.preventDefault(),o.call(this,l,a)}}function h1({zoomPanValues:t,onDraggingChange:r,onPanZoomStart:o}){return l=>{var u,d,h;if((u=l.sourceEvent)!=null&&u.internal)return;const a=wl(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 p1({zoomPanValues:t,panOnDrag:r,onPaneContextMenu:o,onTransformChange:l,onPanZoom:a}){return u=>{var d,h;t.usedRightMouseButton=!!(o&&ug(r,t.mouseButton??0)),(d=u.sourceEvent)!=null&&d.sync||l([u.transform.x,u.transform.y,u.transform.k]),a&&!((h=u.sourceEvent)!=null&&h.internal)&&(a==null||a(u.sourceEvent,wl(u.transform)))}}function g1({zoomPanValues:t,panOnDrag:r,panOnScroll:o,onDraggingChange:l,onPanZoomEnd:a,onPaneContextMenu:u}){return d=>{var h;if(!((h=d.sourceEvent)!=null&&h.internal)&&(t.isZoomingOrPanning=!1,u&&ug(r,t.mouseButton??0)&&!t.usedRightMouseButton&&d.sourceEvent&&u(d.sourceEvent),t.usedRightMouseButton=!1,l(!1),a)){const p=wl(d.transform);t.prevViewport=p,clearTimeout(t.timerId),t.timerId=setTimeout(()=>{a==null||a(d.sourceEvent,p)},o?150:0)}}}function m1({panActivationKeyPressed:t,zoomActivationKeyPressed:r,zoomOnScroll:o,zoomOnPinch:l,panOnDrag:a,panOnScroll:u,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"&&(Gn(g,`${m}-flow__node`)||Gn(g,`${m}-flow__edge`)||Gn(g,`${m}-flow__selection`)||Gn(g,`${m}-flow__nodesselection`)))return!0;if(!a&&!S&&!u&&!d&&!l||h||v&&!M||Gn(g,p)&&M||Gn(g,y)&&(!M||u&&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&&!u&&!_&&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 y1({domNode:t,minZoom:r,maxZoom:o,translateExtent:l,viewport:a,onPanZoom:u,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:ai(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"?io:Gs).transform(Cu(_,C==null?void 0:C.duration,C==null?void 0:C.ease,()=>B(!0)),J)}):!1}function T({noWheelClassName:J,noPanClassName:C,onPaneContextMenu:B,userSelectionActive:F,panOnScroll:V,panOnDrag:A,panOnScrollMode:L,panOnScrollSpeed:O,preventScrolling:j,zoomOnPinch:z,zoomOnScroll:re,zoomOnDoubleClick:te,panActivationKeyPressed:ae=!1,zoomActivationKeyPressed:de,lib:ce,onTransformChange:Q,connectionInProgress:se,paneClickDistance:he,selectionOnDrag:we}){F&&!y.isZoomingOrPanning&&N();const ve=V&&!de&&!F;S.clickDistance(we?1/0:!Zt(he)||he<0?0:he);const me=ve?d1({zoomPanValues:y,noWheelClassName:J,d3Selection:_,d3Zoom:S,panOnScrollMode:L,panOnScrollSpeed:O,zoomOnPinch:z,onPanZoomStart:d,onPanZoom:u,onPanZoomEnd:h}):f1({noWheelClassName:J,preventScrolling:j,d3ZoomHandler:M});_.on("wheel.zoom",me,{passive:!1});const Ce=h1({zoomPanValues:y,onDraggingChange:p,onPanZoomStart:d});S.on("start",Ce);const Me=p1({zoomPanValues:y,panOnDrag:A,onPaneContextMenu:!!B,onPanZoom:u,onTransformChange:Q});S.on("zoom",Me);const Pe=g1({zoomPanValues:y,panOnDrag:A,panOnScroll:V,onPaneContextMenu:B,onPanZoomEnd:h,onDraggingChange:p});S.on("end",Pe);const Re=m1({panActivationKeyPressed:ae,zoomActivationKeyPressed:de,panOnDrag:A,zoomOnScroll:re,panOnScroll:V,zoomOnDoubleClick:te,zoomOnPinch:z,userSelectionActive:F,noPanClassName:C,noWheelClassName:J,lib:ce,connectionInProgress:se});S.filter(Re),te?_.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"?io:Gs).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"?io:Gs).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 q(J){S==null||S.translateExtent(J)}function ee(J){const C=!Zt(J)||J<0?0:J;S==null||S.clickDistance(C)}return{update:T,destroy:N,setViewport:b,setViewportConstrained:P,getViewport:H,scaleTo:X,scaleBy:K,setScaleExtent:ne,setTranslateExtent:q,syncViewport:$,setClickDistance:ee}}var ci;(function(t){t.Line="line",t.Handle="handle"})(ci||(ci={}));function v1({width:t,prevWidth:r,height:o,prevHeight:l,affectsX:a,affectsY:u}){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&&u&&(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 Qn(t,r){return Math.max(0,r-t)}function Kn(t,r){return Math.max(0,t-r)}function Ys(t,r,o){return Math.max(0,r-t,t-o)}function kh(t,r){return t?!r:r}function x1(t,r,o,l,a,u,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:T}=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),q=$+(y?-K:K),ee=-u[0]*b,J=-u[1]*$;let C=Ys(ne,M,k),B=Ys(q,E,T);if(d){let A=0,L=0;p&&X<0?A=Qn(N+X+ee,d[0][0]):!p&&X>0&&(A=Kn(N+ne+ee,d[1][0])),y&&K<0?L=Qn(P+K+J,d[0][1]):!y&&K>0&&(L=Kn(P+q+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=Kn(N+X,h[0][0]):!p&&X<0&&(A=Qn(N+ne,h[1][0])),y&&K>0?L=Kn(P+K,h[0][1]):!y&&K<0&&(L=Qn(P+q,h[1][1])),C=Math.max(C,A),B=Math.max(B,L)}if(a){if(m){const A=Ys(ne/H,E,T)*H;if(C=Math.max(C,A),d){let L=0;!p&&!y||p&&!y&&g?L=Kn(P+J+ne/H,d[1][1])*H:L=Qn(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=Qn(P+ne/H,h[1][1])*H:L=Kn(P+(p?X:-X)/H,h[0][1])*H,C=Math.max(C,L)}}if(v){const A=Ys(q*H,M,k)/H;if(B=Math.max(B,A),d){let L=0;!p&&!y||y&&!p&&g?L=Kn(N+q*H+ee,d[1][0])/H:L=Qn(N+(y?K:-K)*H+ee,d[0][0])/H,B=Math.max(B,L)}if(h){let L=0;!p&&!y||y&&!p&&g?L=Qn(N+q*H,h[1][0])/H:L=Kn(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>q*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:u[0]*X*(p?-1:1)+F,y:u[1]*K*(y?-1:1)+V}}const dg={width:0,height:0,x:0,y:0},w1={...dg,pointerX:0,pointerY:0,aspectRatio:1};function S1(t,r,o){const l=r.position.x+t.position.x,a=r.position.y+t.position.y,u=t.measured.width??0,d=t.measured.height??0,h=o[0]*u,p=o[1]*d;return[[l-h,a-p],[l+u-h,a+d-p]]}function _1({domNode:t,nodeId:r,getStoreItems:o,onChange:l,onEnd:a}){const u=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},T={...w1};d={boundaries:m,resizeDirection:g,keepAspectRatio:v,controlDirection:_h(y)};let N,P=null,b=[],$,H,X,K=!1;const ne=wp().on("start",q=>{const{nodeLookup:ee,transform:J,snapGrid:C,snapToGrid:B,nodeOrigin:F,paneDomNode:V}=o();if(N=ee.get(r),!N)return;P=(V==null?void 0:V.getBoundingClientRect())??null;const{xSnapped:A,ySnapped:L}=oo(q.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},T={...E,pointerX:A,pointerY:L,aspectRatio:E.width/E.height},$=void 0,H=Er(N.extent)?N.extent:void 0,N.parentId&&(N.extent==="parent"||N.expandParent)&&($=ee.get(N.parentId)),$&&N.extent==="parent"&&(H=[[0,0],[$.measured.width,$.measured.height]]),b=[],X=void 0;for(const[O,j]of ee)if(j.parentId===r&&(b.push({id:O,position:{...j.position},extent:j.extent}),j.extent==="parent"||j.expandParent)){const z=S1(j,N,j.origin??F);X?X=[[Math.min(z[0][0],X[0][0]),Math.min(z[0][1],X[0][1])],[Math.max(z[1][0],X[1][0]),Math.max(z[1][1],X[1][1])]]:X=z}S==null||S(q,{...E})}).on("drag",q=>{const{transform:ee,snapGrid:J,snapToGrid:C,nodeOrigin:B}=o(),F=oo(q.sourceEvent,{transform:ee,snapGrid:J,snapToGrid:C,containerBounds:P}),V=[];if(!N)return;const{x:A,y:L,width:O,height:j}=E,z={},re=N.origin??B,{width:te,height:ae,x:de,y:ce}=x1(T,d.controlDirection,F,d.boundaries,d.keepAspectRatio,re,H,X),Q=te!==O,se=ae!==j,he=de!==A&&Q,we=ce!==L&&se;if(!he&&!we&&!Q&&!se)return;if((he||we||re[0]===1||re[1]===1)&&(z.x=he?de:E.x,z.y=we?ce:E.y,E.x=z.x,E.y=z.y,b.length>0)){const Me=de-A,Pe=ce-L;for(const Re of b)Re.position={x:Re.position.x-Me+re[0]*(te-O),y:Re.position.y-Pe+re[1]*(ae-j)},V.push(Re)}if((Q||se)&&(z.width=Q&&(!d.resizeDirection||d.resizeDirection==="horizontal")?te:E.width,z.height=se&&(!d.resizeDirection||d.resizeDirection==="vertical")?ae:E.height,E.width=z.width,E.height=z.height),$&&N.expandParent){const Me=re[0]*(z.width??0);z.x&&z.x{K&&(M==null||M(q,{...E}),a==null||a({...E}),K=!1)});u.call(ne)}function p(){u.on(".drag",null)}return{update:h,destroy:p}}var ju={exports:{}},Mu={},Pu={exports:{}},Iu={};/** - * @license React - * use-sync-external-store-shim.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Eh;function k1(){if(Eh)return Iu;Eh=1;var t=mo();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,u=t.useLayoutEffect,d=t.useDebugValue;function h(v,g){var S=g(),_=l({inst:{value:S,getSnapshot:g}}),M=_[0].inst,k=_[1];return u(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 E1(){return Nh||(Nh=1,Pu.exports=k1()),Pu.exports}/** - * @license React - * use-sync-external-store-shim/with-selector.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Ch;function N1(){if(Ch)return Mu;Ch=1;var t=mo(),r=E1();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,u=t.useRef,d=t.useEffect,h=t.useMemo,p=t.useDebugValue;return Mu.useSyncExternalStoreWithSelector=function(y,m,v,g,S){var _=u(null);if(_.current===null){var M={hasValue:!1,value:null};_.current=M}else M=_.current;_=h(function(){function E($){if(!T){if(T=!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 T=!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 C1(){return jh||(jh=1,ju.exports=N1()),ju.exports}var j1=C1();const M1=ip(j1),P1={},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:()=>{(P1?"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},I1=t=>t?Mh(t):Mh,{useDebugValue:T1}=z0,{useSyncExternalStoreWithSelector:z1}=M1,R1=t=>t;function fg(t,r=R1,o){const l=z1(t.subscribe,t.getState,t.getServerState||t.getInitialState,r,o);return T1(l),l}const Ph=(t,r)=>{const o=I1(t),l=(a,u=r)=>fg(o,a,u);return Object.assign(l,o),l},L1=(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 Sl=W.createContext(null),A1=Sl.Provider,hg=en.error001("react");function Te(t,r){const o=W.useContext(Sl);if(o===null)throw new Error(hg);return fg(o,t,r)}function be(){const t=W.useContext(Sl);if(t===null)throw new Error(hg);return W.useMemo(()=>({getState:t.getState,setState:t.setState,subscribe:t.subscribe}),[t])}const Ih={display:"none"},$1={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",D1="react-flow__aria-live",O1=t=>t.ariaLiveMessage,b1=t=>t.ariaLabelConfig;function F1({rfId:t}){const r=Te(O1);return x.jsx("div",{id:`${D1}-${t}`,"aria-live":"assertive","aria-atomic":"true",style:$1,children:r})}function H1({rfId:t,disableKeyboardA11y:r}){const o=Te(b1);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(F1,{rfId:t})]})}const _l=W.forwardRef(({position:t="top-left",children:r,className:o,style:l,...a},u)=>{const d=`${t}`.split("-");return x.jsx("div",{className:Ke(["react-flow__panel",o,...d]),style:l,ref:u,...a,children:r})});_l.displayName="Panel";const Th="https://reactflow.dev?utm_source=attribution";function V1({proOptions:t,position:r="bottom-right"}){return t!=null&&t.hideAttribution?null:x.jsx(_l,{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 B1=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}},Xs=t=>t.id;function U1(t,r){return Ue(t.selectedNodes.map(Xs),r.selectedNodes.map(Xs))&&Ue(t.selectedEdges.map(Xs),r.selectedEdges.map(Xs))}function W1({onSelectionChange:t}){const r=be(),{selectedNodes:o,selectedEdges:l}=Te(B1,U1);return W.useEffect(()=>{const a={nodes:o,edges:l};t==null||t(a),r.getState().onSelectionChangeHandlers.forEach(u=>u(a))},[o,l,t]),null}const Y1=t=>!!t.onSelectionChangeHandlers;function X1({onSelectionChange:t}){const r=Te(Y1);return t||r?x.jsx(W1,{onSelectionChange:t}):null}const mg=[0,0],Q1={x:0,y:0,zoom:1},K1=["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=[...K1,"rfId"],G1=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:co,nodeOrigin:mg,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function q1(t){const{setNodes:r,setEdges:o,setMinZoom:l,setMaxZoom:a,setTranslateExtent:u,setNodeExtent:d,reset:h,setDefaultNodesAndEdges:p}=Te(G1,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"?u(g):v==="nodeExtent"?d(g):v==="ariaLabelConfig"?y.setState({ariaLabelConfig:Aw(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 Z1(t){var l;const[r,o]=W.useState(t==="system"?null:t);return W.useEffect(()=>{if(t!=="system"){o(t);return}const a=Lh(),u=()=>o(a!=null&&a.matches?"dark":"light");return u(),a==null||a.addEventListener("change",u),()=>{a==null||a.removeEventListener("change",u)}},[t]),r!==null?r:(l=Lh())!=null&&l.matches?"dark":"light"}const Ah=typeof document<"u"?document:null;function go(t=null,r={target:Ah,actInsideInputWithModifier:!0}){const[o,l]=W.useState(!1),a=W.useRef(!1),u=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)&&Kp(S))return!1;const M=Dh(S.code,h);if(u.current.add(S[M]),$h(d,u.current,!1)){const T=((E=(k=S.composedPath)==null?void 0:k.call(S))==null?void 0:E[0])||S.target,N=(T==null?void 0:T.nodeName)==="BUTTON"||(T==null?void 0:T.nodeName)==="A";r.preventDefault!==!1&&(a.current||!N)&&S.preventDefault(),l(!0)}},v=S=>{const _=Dh(S.code,h);$h(d,u.current,!0)?(l(!1),u.current.clear()):u.current.delete(S[_]),S.key==="Meta"&&u.current.clear(),a.current=!1},g=()=>{u.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 J1=()=>{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,u],panZoom:d}=t.getState();return d?(await d.setViewport({x:r.x??l,y:r.y??a,zoom:r.zoom??u},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:u,maxZoom:d,panZoom:h}=t.getState(),p=oc(r,l,a,u,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:u,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??u;return ko(y,l,v,m)},flowToScreenPosition:r=>{const{transform:o,domNode:l}=t.getState();if(!l)return r;const{x:a,y:u}=l.getBoundingClientRect(),d=ui(r,o);return{x:d.x+a,y:d.y+u}}}),[])};function yg(t,r){const o=[],l=new Map,a=[];for(const u of t)if(u.type==="add"){a.push(u);continue}else if(u.type==="remove"||u.type==="replace")l.set(u.id,[u]);else{const d=l.get(u.id);d?d.push(u):l.set(u.id,[u])}for(const u of r){const d=l.get(u.id);if(!d){o.push(u);continue}if(d[0].type==="remove")continue;if(d[0].type==="replace"){o.push({...d[0].item});continue}const h={...u};for(const p of d)eS(p,h);o.push(h)}return a.length&&a.forEach(u=>{u.index!==void 0?o.splice(u.index,0,{...u.item}):o.push({...u.item})}),o}function eS(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 tS(t,r){return yg(t,r)}function nS(t,r){return yg(t,r)}function yr(t,r){return{id:t,type:"select",selected:r}}function ni(t,r=new Set,o=!1){const l=[];for(const[a,u]of t){const d=r.has(a);!(u.selected===void 0&&!d)&&u.selected!==d&&(o&&(u.selected=d),l.push(yr(u.id,d)))}return l}function Oh({items:t=[],lookup:r}){var a;const o=[],l=new Map(t.map(u=>[u.id,u]));for(const[u,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:u})}for(const[u]of r)l.get(u)===void 0&&o.push({id:u,type:"remove"});return o}function bh(t){return{id:t.id,type:"remove"}}const rS=Wp();function iS(t,r,o={}){return Hw(t,r,{...o,onError:o.onError??rS})}const Fh=t=>Cw(t),oS=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(()=>sS(()=>o(a=>a+BigInt(1))));return xg(()=>{const a=l.get();a.length&&(t(a),l.reset())},[r]),l}function sS(t){let r=[];return{get:()=>r,reset:()=>{r=[]},push:o=>{r.push(o),t()}}}const wg=W.createContext(null);function lS({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:T,setNodes:N}=r.getState();E&&N(T)})},[]),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}))},[]),u=Hh(a),d=W.useMemo(()=>({nodeQueue:l,edgeQueue:u}),[]);return x.jsx(wg.Provider,{value:d,children:t})}function aS(){const t=W.useContext(wg);if(!t)throw new Error("useBatchContext must be used within a BatchProvider");return t}const uS=t=>!!t.panZoom;function fc(){const t=J1(),r=be(),o=aS(),l=Te(uS),a=W.useMemo(()=>{const u=v=>r.getState().nodeLookup.get(v),d=v=>{o.nodeQueue.push(v)},h=v=>{o.edgeQueue.push(v)},p=v=>{var E,T;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:((T=_.measured)==null?void 0:T.height)??_.height};return ho(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&&oS(k)?k:{...M,...k}}return M}))};return{getNodes:()=>r.getState().nodes.map(v=>({...v})),getNode:v=>{var g;return(g=u(v))==null?void 0:g.internals.userNode},getInternalNode:u,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:T,onDelete:N,onBeforeDelete:P}=r.getState(),{nodes:b,edges:$}=await Tw({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($),T(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 T=r.getState().nodeLookup.get(E.id);if(T&&!_&&(E.id===v.id||!T.internals.positionAbsolute))return!1;const N=ho(k?E:T),P=ul(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=ul(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 jw(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??Lw();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,cS=typeof window<"u"?window:void 0;function dS({deleteKeyCode:t,multiSelectionKeyCode:r}){const o=be(),{deleteElements:l}=fc(),a=go(t,{actInsideInputWithModifier:!1}),u=go(r,{target:cS});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:u})},[u])}function fS(t){const r=be();W.useEffect(()=>{const o=()=>{var a,u,d,h;if(!t.current||!(((u=(a=t.current).checkVisibility)==null?void 0:u.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",en.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 kl={position:"absolute",width:"100%",height:"100%",top:0,left:0},hS=t=>({userSelectionActive:t.userSelectionActive,lib:t.lib,connectionInProgress:t.connection.inProgress});function pS({onPaneContextMenu:t,zoomOnScroll:r=!0,zoomOnPinch:o=!0,panOnScroll:l=!1,panActivationKeyPressed:a,panOnScrollSpeed:u=.5,panOnScrollMode:d=wr.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:T,isControlledViewport:N,paneClickDistance:P,selectionOnDrag:b}){const $=be(),H=W.useRef(null),{userSelectionActive:X,lib:K,connectionInProgress:ne}=Te(hS,Ue),q=go(S),ee=W.useRef();fS(H);const J=W.useCallback(C=>{T==null||T({x:C[0],y:C[1],zoom:C[2]}),N||$.setState({transform:C})},[T,N]);return W.useEffect(()=>{if(H.current){ee.current=y1({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}=ee.current.getViewport();return $.setState({panZoom:ee.current,transform:[C,B,F],domNode:H.current.closest(".react-flow")}),()=>{var V;(V=ee.current)==null||V.destroy()}}},[]),W.useEffect(()=>{var C;(C=ee.current)==null||C.update({onPaneContextMenu:t,zoomOnScroll:r,zoomOnPinch:o,panOnScroll:l,panActivationKeyPressed:a,panOnScrollSpeed:u,panOnScrollMode:d,zoomOnDoubleClick:h,panOnDrag:p,zoomActivationKeyPressed:q,preventScrolling:_,noPanClassName:E,userSelectionActive:X,noWheelClassName:k,lib:K,onTransformChange:J,connectionInProgress:ne,selectionOnDrag:b,paneClickDistance:P})},[t,r,o,l,a,u,d,h,p,q,_,E,X,k,K,J,ne,b,P]),x.jsx("div",{className:"react-flow__renderer",ref:H,style:kl,children:M})}const gS=t=>({userSelectionActive:t.userSelectionActive,userSelectionRect:t.userSelectionRect});function mS(){const{userSelectionActive:t,userSelectionRect:r}=Te(gS,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))},yS=t=>({userSelectionActive:t.userSelectionActive,elementsSelectable:t.elementsSelectable,dragging:t.paneDragging,panBy:t.panBy,autoPanSpeed:t.autoPanSpeed});function vS({isSelecting:t,selectionKeyPressed:r,selectionMode:o=fo.Full,panOnDrag:l,autoPanOnSelection:a,paneClickDistance:u,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:T,elementsSelectable:N,dragging:P,panBy:b,autoPanSpeed:$}=Te(yS,Ue),H=N&&(t||T),X=W.useRef(null),K=W.useRef(),ne=W.useRef(new Set),q=W.useRef(new Set),ee=W.useRef(!1),J=W.useRef(!1),C=W.useRef({x:0,y:0}),B=W.useRef(!1),F=Q=>{if(J.current||ee.current||E.getState().connection.inProgress){J.current=!1,ee.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 Re,nt;if(Q.pointerType==="touch"&&l!==!1&&!r)return;const{domNode:se,transform:he}=E.getState();if(K.current=se==null?void 0:se.getBoundingClientRect(),!K.current)return;const we=Q.target===X.current;if(!we&&!!Q.target.closest(".nokey")||!t||!(d&&we||r)||Q.button!==0||!Q.isPrimary)return;(nt=(Re=Q.target)==null?void 0:Re.setPointerCapture)==null||nt.call(Re,Q.pointerId),J.current=!1;const{x:Ce,y:Me}=Jt(Q.nativeEvent,K.current),Pe=ko({x:Ce,y:Me},he);E.setState({userSelectionRect:{width:0,height:0,startX:Pe.x,startY:Pe.y,x:Ce,y:Me}}),we||(Q.stopPropagation(),Q.preventDefault())};function j(Q,se){const{userSelectionRect:he}=E.getState();if(!he)return;const{transform:we,nodeLookup:ve,edgeLookup:me,connectionLookup:Ce,triggerNodeChanges:Me,triggerEdgeChanges:Pe,defaultEdgeOptions:Re}=E.getState(),nt={x:he.startX,y:he.startY},{x:rt,y:Xe}=ui(nt,we),Ge={startX:nt.x,startY:nt.y,x:Qit.id)),q.current=new Set;const At=(Re==null?void 0:Re.selectable)??!0;for(const it of ne.current){const ft=Ce.get(it);if(ft)for(const{edgeId:lt}of ft.values()){const ht=me.get(lt);ht&&(ht.selectable??At)&&q.current.add(lt)}}if(!fh(Bt,ne.current)){const it=ni(ve,ne.current,!0);Me(it)}if(!fh(Lt,q.current)){const it=ni(me,q.current);Pe(it)}E.setState({userSelectionRect:Ge,userSelectionActive:!0,nodesSelectionActive:!1})}function z(){if(!a||!K.current)return;const[Q,se]=ic(C.current,K.current,$);b({x:Q,y:se}).then(he=>{if(!J.current||!he){k.current=requestAnimationFrame(z);return}const{x:we,y:ve}=C.current;j(we,ve),k.current=requestAnimationFrame(z)})}const re=()=>{cancelAnimationFrame(k.current),k.current=0,B.current=!1};W.useEffect(()=>()=>re(),[]);const te=Q=>{const{userSelectionRect:se,transform:he,resetSelectedElements:we}=E.getState();if(!K.current||!se)return;const{x:ve,y:me}=Jt(Q.nativeEvent,K.current);C.current={x:ve,y:me};const Ce=ui({x:se.startX,y:se.startY},he);if(!J.current){const Me=r?0:u;if(Math.hypot(ve-Ce.x,me-Ce.y)<=Me)return;we(),h==null||h(Q)}J.current=!0,B.current||(z(),B.current=!0),j(ve,me)},ae=Q=>{var se,he;if(!H){Q.target===X.current&&E.getState().connection.inProgress&&(ee.current=!0);return}Q.button===0&&((he=(se=Q.target)==null?void 0:se.releasePointerCapture)==null||he.call(se,Q.pointerId),!T&&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})),re())},de=Q=>{var se,he;(he=(se=Q.target)==null?void 0:se.releasePointerCapture)==null||he.call(se,Q.pointerId),re()},ce=l===!0||Array.isArray(l)&&l.includes(0);return x.jsxs("div",{className:Ke(["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?te:S,onPointerUp:ae,onPointerCancel:H?de:void 0,onPointerDownCapture:H?O:void 0,onClickCapture:H?L:void 0,onPointerLeave:_,ref:X,style:kl,children:[M,x.jsx(mS,{})]})}function Xu({id:t,store:r,unselect:o=!1,nodeRef:l}){const{addSelectedNodes:a,unselectNodesAndEdges:u,multiSelectionActive:d,nodeLookup:h,onError:p}=r.getState(),y=h.get(t);if(!y){p==null||p("012",en.error012(t));return}r.setState({nodesSelectionActive:!1}),y.selected?(o||y.selected&&d)&&(u({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:u,nodeClickDistance:d}){const h=be(),[p,y]=W.useState(!1),m=W.useRef();return W.useEffect(()=>{if(!r)return m.current=r1({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:u,nodeId:a,nodeClickDistance:d})},[o,l,r,u,t,a,d]),p}const xS=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:u,nodesDraggable:d,onError:h,updateNodePositions:p,nodeLookup:y,nodeOrigin:m}=t.getState(),v=new Map,g=xS(d),S=a?u[0]:5,_=a?u[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 T={x:E.internals.positionAbsolute.x+M,y:E.internals.positionAbsolute.y+k};a&&(T=_o(T,u));const{position:N,positionAbsolute:P}=Hp({nodeId:E.id,nextPosition:T,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),wS=hc.Provider;hc.Consumer;const kg=()=>W.useContext(hc),SS=t=>({connectOnClick:t.connectOnClick,noPanClassName:t.noPanClassName,rfId:t.rfId}),Eg=W.createContext(null);function _S({children:t}){const r=Te(SS,Ue);return x.jsx(Eg.Provider,{value:r,children:t})}function kS(){const t=W.useContext(Eg);if(!t)throw new Error("useHandleConfig must be used within a HandleConfigProvider");return t}const ES={connectingFrom:!1,connectingTo:!1,clickConnecting:!1,isPossibleEndHandle:!0,connectionInProcess:!1,clickConnectionInProcess:!1,valid:!1},NS=(t,r,o)=>l=>{const{connectionClickStartHandle:a,connectionMode:u,connection:d}=l,{fromHandle:h,toHandle:p,isValid:y}=d;if(!h&&!a)return ES;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:u===li.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 CS({type:t="source",position:r=Se.Top,isValidConnection:o,isConnectable:l=!0,isConnectableStart:a=!0,isConnectableEnd:u=!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:T,noPanClassName:N,rfId:P}=kS(),{connectingFrom:b,connectingTo:$,clickConnecting:H,isPossibleEndHandle:X,connectionInProcess:K,clickConnectionInProcess:ne,valid:q}=Te(NS(E,_,t),Ue);E||(F=(B=k.getState()).onError)==null||F.call(B,"010",en.error010());const ee=V=>{const{defaultEdgeOptions:A,onConnect:L,hasDefaultEdges:O}=k.getState(),j={...A,...V};if(O){const{edges:z,setEdges:re,onError:te}=k.getState();re(iS(j,z,{onError:te}))}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,z;return(z=(j=k.getState()).onConnectEnd)==null?void 0:z.call(j,...O)},updateConnection:L.updateConnection,onConnect:ee,isValidConnection:o||((...O)=>{var j,z;return((z=(j=k.getState()).isValidConnection)==null?void 0:z.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:z,lib:re,rfId:te,nodeLookup:ae,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||z,{connection:se,isValid:he}=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:te,doc:ce,lib:re,nodeLookup:ae});he&&se&&ee(se);const we=structuredClone(de);delete we.inProgress,we.toPosition=we.toHandle?we.toHandle.position:null,L==null||L(V,we),k.setState({connectionClickStartHandle:null})};return x.jsx("div",{"data-handleid":_,"data-nodeid":E,"data-handlepos":r,"data-id":`${P}-${E}-${_}-${t}`,className:Ke(["react-flow__handle",`react-flow__handle-${r}`,"nodrag",N,y,{source:!M,target:M,connectable:l,connectablestart:a,connectableend:u,clickconnecting:H,connectingfrom:b,connectingto:$,valid:q,connectionindicator:l&&(!K||X)&&(K||ne?u:a)}]),onMouseDown:J,onTouchStart:J,onClick:T?C:void 0,ref:S,...g,children:p})}const cl=W.memo(vg(CS));function jS({data:t,isConnectable:r,sourcePosition:o=Se.Bottom}){return x.jsxs(x.Fragment,{children:[t==null?void 0:t.label,x.jsx(cl,{type:"source",position:o,isConnectable:r})]})}function MS({data:t,isConnectable:r,targetPosition:o=Se.Top,sourcePosition:l=Se.Bottom}){return x.jsxs(x.Fragment,{children:[x.jsx(cl,{type:"target",position:o,isConnectable:r}),t==null?void 0:t.label,x.jsx(cl,{type:"source",position:l,isConnectable:r})]})}function PS(){return null}function IS({data:t,isConnectable:r,targetPosition:o=Se.Top}){return x.jsxs(x.Fragment,{children:[x.jsx(cl,{type:"target",position:o,isConnectable:r}),t==null?void 0:t.label]})}const dl={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},Bh={input:jS,default:MS,output:IS,group:PS};function TS(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 zS=t=>{const{width:r,height:o,x:l,y:a}=So(t.nodeLookup,{filter:u=>!!u.selected});return{width:Zt(r)?r:null,height:Zt(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 RS({onSelectionContextMenu:t,noPanClassName:r,disableKeyboardA11y:o}){const l=be(),{width:a,height:u,transformString:d,userSelectionActive:h}=Te(zS,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&&u!==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(dl,S.key)&&(S.preventDefault(),p({direction:dl[S.key],factor:S.shiftKey?4:1}))};return x.jsx("div",{className:Ke(["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:u}})})}const Uh=typeof window<"u"?window:void 0,LS=t=>({nodesSelectionActive:t.nodesSelectionActive,userSelectionActive:t.userSelectionActive});function Ng({children:t,onPaneClick:r,onPaneMouseEnter:o,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:u,onPaneScroll:d,paneClickDistance:h,deleteKeyCode:p,selectionKeyCode:y,selectionOnDrag:m,selectionMode:v,onSelectionStart:g,onSelectionEnd:S,multiSelectionKeyCode:_,panActivationKeyCode:M,zoomActivationKeyCode:k,elementsSelectable:E,zoomOnScroll:T,zoomOnPinch:N,panOnScroll:P,panOnScrollSpeed:b,panOnScrollMode:$,zoomOnDoubleClick:H,panOnDrag:X,autoPanOnSelection:K,defaultViewport:ne,translateExtent:q,minZoom:ee,maxZoom:J,preventScrolling:C,onSelectionContextMenu:B,noWheelClassName:F,noPanClassName:V,disableKeyboardA11y:A,onViewportChange:L,isControlledViewport:O}){const{nodesSelectionActive:j,userSelectionActive:z}=Te(LS,Ue),re=go(y,{target:Uh}),te=go(M,{target:Uh}),ae=te||X,de=te||P,ce=m&&ae!==!0,Q=re||z||ce;return dS({deleteKeyCode:p,multiSelectionKeyCode:_}),x.jsx(pS,{onPaneContextMenu:u,elementsSelectable:E,zoomOnScroll:T,zoomOnPinch:N,panOnScroll:de,panActivationKeyPressed:te,panOnScrollSpeed:b,panOnScrollMode:$,zoomOnDoubleClick:H,panOnDrag:!re&&ae,defaultViewport:ne,translateExtent:q,minZoom:ee,maxZoom:J,zoomActivationKeyCode:k,preventScrolling:C,noWheelClassName:F,noPanClassName:V,onViewportChange:L,isControlledViewport:O,paneClickDistance:h,selectionOnDrag:ce,children:x.jsxs(vS,{onSelectionStart:g,onSelectionEnd:S,onPaneClick:r,onPaneMouseEnter:o,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:u,onPaneScroll:d,panOnDrag:ae,autoPanOnSelection:K,isSelecting:!!Q,selectionMode:v,selectionKeyPressed:re,paneClickDistance:h,selectionOnDrag:ce,children:[t,j&&x.jsx(RS,{onSelectionContextMenu:B,noPanClassName:V,disableKeyboardA11y:A})]})})}Ng.displayName="FlowRenderer";const AS=W.memo(Ng),$S=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 DS(t){return Te(W.useCallback($S(t),[t]),Ue)}const OS=t=>t.updateNodeInternals;function bS(){const t=Te(OS),[r]=W.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(o=>{const l=new Map;o.forEach(a=>{const u=a.target.getAttribute("data-id");l.set(u,{id:u,nodeElement:a.target,force:!0})}),t(l)}));return W.useEffect(()=>()=>{r==null||r.disconnect()},[r]),r}function FS({node:t,nodeType:r,hasDimensions:o,resizeObserver:l}){const a=be(),u=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(()=>{u.current&&!t.hidden&&(!m||d.current!==u.current)&&(d.current&&(l==null||l.unobserve(d.current)),l==null||l.observe(u.current),d.current=u.current)},[m,t.hidden]),W.useEffect(()=>()=>{d.current&&(l==null||l.unobserve(d.current),d.current=null)},[]),W.useEffect(()=>{if(u.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:u.current,force:!0}]])))}},[t.id,r,t.sourcePosition,t.targetPosition]),u}function HS({id:t,onClick:r,onMouseEnter:o,onMouseMove:l,onMouseLeave:a,onContextMenu:u,onDoubleClick:d,nodesDraggable:h,elementsSelectable:p,nodesConnectable:y,nodesFocusable:m,resizeObserver:v,noDragClassName:g,noPanClassName:S,disableKeyboardA11y:_,rfId:M,nodeTypes:k,nodeClickDistance:E,onError:T}){const{node:N,internals:P,isParent:b}=Te(Q=>{const se=Q.nodeLookup.get(t),he=Q.parentLookup.has(t);return{node:se,internals:se.internals,isParent:he}},Ue);let $=N.type||"default",H=(k==null?void 0:k[$])||Bh[$];H===void 0&&(T==null||T("003",en.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"),q=!!(N.focusable||m&&typeof N.focusable>"u"),ee=be(),J=Yp(N),C=FS({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=nn(N),A=TS(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,z=a?Q=>a(Q,{...P.userNode}):void 0,re=u?Q=>u(Q,{...P.userNode}):void 0,te=d?Q=>d(Q,{...P.userNode}):void 0,ae=Q=>{const{selectNodesOnDrag:se,nodeDragThreshold:he}=ee.getState();K&&(!se||!X||he>0)&&Xu({id:t,store:ee,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:ee,unselect:se,nodeRef:C})}else if(X&&N.selected&&Object.prototype.hasOwnProperty.call(dl,Q.key)){Q.preventDefault();const{ariaLabelConfig:se}=ee.getState();ee.setState({ariaLiveMessage:se["node.a11yDescription.ariaLiveMessage"]({direction:Q.key.replace("Arrow","").toLowerCase(),x:~~P.positionAbsolute.x,y:~~P.positionAbsolute.y})}),F({direction:dl[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:he,autoPanOnNodeFocus:we,setCenter:ve}=ee.getState();if(!we)return;rc(new Map([[t,N]]),{x:0,y:0,width:se,height:he},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:Ke(["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:z,onContextMenu:re,onClick:ae,onDoubleClick:te,onKeyDown:q?de:void 0,tabIndex:q?0:void 0,onFocus:q?ce:void 0,role:N.ariaRole??(q?"group":void 0),"aria-roledescription":"node","aria-describedby":_?void 0:`${pg}-${M}`,"aria-label":N.ariaLabel,...N.domAttributes,children:x.jsx(wS,{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 VS=W.memo(HS);const BS=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(BS,Ue),u=DS(t.onlyRenderVisibleElements),d=bS();return x.jsx("div",{className:"react-flow__nodes",style:kl,children:u.map(h=>x.jsx(VS,{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 US=W.memo(Cg);function WS(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 u=o.nodeLookup.get(a.source),d=o.nodeLookup.get(a.target);u&&d&&Ow({sourceNode:u,targetNode:d,width:o.width,height:o.height,transform:o.transform})&&l.push(a.id)}return l},[t]),Ue)}const YS=({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"})},XS=({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={[ll.Arrow]:YS,[ll.ArrowClosed]:XS};function QS(t){const r=be();return W.useMemo(()=>{var a,u;return Object.prototype.hasOwnProperty.call(Wh,t)?Wh[t]:((u=(a=r.getState()).onError)==null||u.call(a,"009",en.error009(t)),null)},[t])}const KS=({id:t,type:r,color:o,width:l=12.5,height:a=12.5,markerUnits:u="strokeWidth",strokeWidth:d,orient:h="auto-start-reverse"})=>{const p=QS(r);return p?x.jsx("marker",{className:"react-flow__arrowhead",id:t,markerWidth:`${l}`,markerHeight:`${a}`,viewBox:"-10 -10 20 20",markerUnits:u,orient:h,refX:"0",refY:"0",children:x.jsx(p,{color:o,strokeWidth:d})}):null},jg=({defaultColor:t,rfId:r})=>{const o=Te(u=>u.edges),l=Te(u=>u.defaultEdgeOptions),a=W.useMemo(()=>Yw(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(u=>x.jsx(KS,{id:u.id,type:u.type,color:u.color,width:u.width,height:u.height,markerUnits:u.markerUnits,strokeWidth:u.strokeWidth,orient:u.orient},u.id))})}):null};jg.displayName="MarkerDefinitions";var GS=W.memo(jg);function Mg({x:t,y:r,label:o,labelStyle:l,labelShowBg:a=!0,labelBgStyle:u,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=Ke(["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:u,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 qS=W.memo(Mg);function El({path:t,labelX:r,labelY:o,label:l,labelStyle:a,labelShowBg:u,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:Ke(["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&&Zt(r)&&Zt(o)?x.jsx(qS,{x:r,y:o,label:l,labelStyle:a,labelShowBg:u,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:p}):null]})}function Yh({pos:t,x1:r,y1:o,x2:l,y2:a}){return t===Se.Left||t===Se.Right?[.5*(r+l),o]:[r,.5*(o+a)]}function Pg({sourceX:t,sourceY:r,sourcePosition:o=Se.Bottom,targetX:l,targetY:a,targetPosition:u=Se.Top}){const[d,h]=Yh({pos:o,x1:t,y1:r,x2:l,y2:a}),[p,y]=Yh({pos:u,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:u,sourcePosition:d,targetPosition:h,label:p,labelStyle:y,labelShowBg:m,labelBgStyle:v,labelBgPadding:g,labelBgBorderRadius:S,style:_,markerEnd:M,markerStart:k,interactionWidth:E})=>{const[T,N,P]=Pg({sourceX:o,sourceY:l,sourcePosition:d,targetX:a,targetY:u,targetPosition:h}),b=t.isInternal?void 0:r;return x.jsx(El,{id:b,path:T,labelX:N,labelY:P,label:p,labelStyle:y,labelShowBg:m,labelBgStyle:v,labelBgPadding:g,labelBgBorderRadius:S,style:_,markerEnd:M,markerStart:k,interactionWidth:E})})}const ZS=Ig({isInternal:!1}),Tg=Ig({isInternal:!0});ZS.displayName="SimpleBezierEdge";Tg.displayName="SimpleBezierEdgeInternal";function zg(t){return W.memo(({id:r,sourceX:o,sourceY:l,targetX:a,targetY:u,label:d,labelStyle:h,labelShowBg:p,labelBgStyle:y,labelBgPadding:m,labelBgBorderRadius:v,style:g,sourcePosition:S=Se.Bottom,targetPosition:_=Se.Top,markerEnd:M,markerStart:k,pathOptions:E,interactionWidth:T})=>{const[N,P,b]=Bu({sourceX:o,sourceY:l,sourcePosition:S,targetX:a,targetY:u,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(El,{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:T})})}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 u;return{borderRadius:0,offset:(u=o.pathOptions)==null?void 0:u.offset}},[(a=o.pathOptions)==null?void 0:a.offset])})})}const JS=Ag({isInternal:!1}),$g=Ag({isInternal:!0});JS.displayName="StepEdge";$g.displayName="StepEdgeInternal";function Dg(t){return W.memo(({id:r,sourceX:o,sourceY:l,targetX:a,targetY:u,label:d,labelStyle:h,labelShowBg:p,labelBgStyle:y,labelBgPadding:m,labelBgBorderRadius:v,style:g,markerEnd:S,markerStart:_,interactionWidth:M})=>{const[k,E,T]=eg({sourceX:o,sourceY:l,targetX:a,targetY:u}),N=t.isInternal?void 0:r;return x.jsx(El,{id:N,path:k,labelX:E,labelY:T,label:d,labelStyle:h,labelShowBg:p,labelBgStyle:y,labelBgPadding:m,labelBgBorderRadius:v,style:g,markerEnd:S,markerStart:_,interactionWidth:M})})}const e_=Dg({isInternal:!1}),Og=Dg({isInternal:!0});e_.displayName="StraightEdge";Og.displayName="StraightEdgeInternal";function bg(t){return W.memo(({id:r,sourceX:o,sourceY:l,targetX:a,targetY:u,sourcePosition:d=Se.Bottom,targetPosition:h=Se.Top,label:p,labelStyle:y,labelShowBg:m,labelBgStyle:v,labelBgPadding:g,labelBgBorderRadius:S,style:_,markerEnd:M,markerStart:k,pathOptions:E,interactionWidth:T})=>{const[N,P,b]=Zp({sourceX:o,sourceY:l,sourcePosition:d,targetX:a,targetY:u,targetPosition:h,curvature:E==null?void 0:E.curvature}),$=t.isInternal?void 0:r;return x.jsx(El,{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:T})})}const t_=bg({isInternal:!1}),Fg=bg({isInternal:!0});t_.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},n_=(t,r,o)=>o===Se.Left?t-r:o===Se.Right?t+r:t,r_=(t,r,o)=>o===Se.Top?t-r:o===Se.Bottom?t+r:t,Kh="react-flow__edgeupdater";function Gh({position:t,centerX:r,centerY:o,radius:l=10,onMouseDown:a,onMouseEnter:u,onMouseOut:d,type:h}){return x.jsx("circle",{onMouseDown:a,onMouseEnter:u,onMouseOut:d,className:Ke([Kh,`${Kh}-${h}`]),cx:n_(r,l,t),cy:r_(o,l,t),r:l,stroke:"transparent",fill:"transparent"})}function i_({isReconnectable:t,reconnectRadius:r,edge:o,sourceX:l,sourceY:a,targetX:u,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:q,cancelConnection:ee,nodeLookup:J,rfId:C,panBy:B,updateConnection:F}=_.getState(),V=b.type==="target",A=(j,z)=>{g(!1),v==null||v(j,o,b.type,z)},L=j=>y==null?void 0:y(o,j),O=(j,z)=>{g(!0),m==null||m(P,o,b.type),q==null||q(j,z)};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:ee,panBy:B,isValidConnection:(...j)=>{var z,re;return((re=(z=_.getState()).isValidConnection)==null?void 0:re.call(z,...j))??!0},onConnect:L,onConnectStart:O,onConnectEnd:(...j)=>{var z,re;return(re=(z=_.getState()).onConnectEnd)==null?void 0:re.call(z,...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"}),T=()=>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:T,onMouseOut:N,type:"source"}),(t===!0||t==="target")&&x.jsx(Gh,{position:p,centerX:u,centerY:d,radius:r,onMouseDown:E,onMouseEnter:T,onMouseOut:N,type:"target"})]})}function o_({id:t,edgesFocusable:r,edgesReconnectable:o,elementsSelectable:l,onClick:a,onDoubleClick:u,onContextMenu:d,onMouseEnter:h,onMouseMove:p,onMouseLeave:y,reconnectRadius:m,onReconnect:v,onReconnectStart:g,onReconnectEnd:S,rfId:_,edgeTypes:M,noPanClassName:k,onError:E,disableKeyboardA11y:T}){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",en.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),[q,ee]=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:z}=Te(W.useCallback(ve=>{const me=ve.nodeLookup.get(N.source),Ce=ve.nodeLookup.get(N.target);if(!me||!Ce)return Qh;const Me=Ww({id:t,sourceNode:me,targetNode:Ce,sourceHandle:N.sourceHandle||null,targetHandle:N.targetHandle||null,connectionMode:ve.connectionMode,onError:E}),Pe=Dw({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),re=W.useMemo(()=>N.markerStart?`url('#${Uu(N.markerStart,_)}')`:void 0,[N.markerStart,_]),te=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 ae=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=u?ve=>{u(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,he=y?ve=>{y(ve,{...N})}:void 0,we=ve=>{var me;if(!T&&$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:Ke(["react-flow__edge",`react-flow__edge-${b}`,N.className,k,{selected:N.selected,animated:N.animated,inactive:!K&&!a,updating:q,selectable:K}]),onClick:ae,onDoubleClick:de,onContextMenu:ce,onMouseEnter:Q,onMouseMove:se,onMouseLeave:he,onKeyDown:H?we: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:z,data:N.data,style:N.style,sourceHandleId:N.sourceHandle,targetHandleId:N.targetHandle,markerStart:re,markerEnd:te,pathOptions:"pathOptions"in N?N.pathOptions:void 0,interactionWidth:N.interactionWidth}),X&&x.jsx(i_,{edge:N,isReconnectable:X,reconnectRadius:m,onReconnect:v,onReconnectStart:g,onReconnectEnd:S,sourceX:V,sourceY:A,targetX:L,targetY:O,sourcePosition:j,targetPosition:z,setUpdateHover:ee,setReconnecting:C})]})})}var s_=W.memo(o_);const l_=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:u,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:T,onError:N}=Te(l_,Ue),P=WS(r);return x.jsxs("div",{className:"react-flow__edges",children:[x.jsx(GS,{defaultColor:t,rfId:o}),P.map(b=>x.jsx(s_,{id:b,edgesFocusable:k,edgesReconnectable:E,elementsSelectable:T,noPanClassName:a,onReconnect:u,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 a_=W.memo(Hg),qh=t=>`translate(${t[0]}px,${t[1]}px) scale(${t[2]})`;function u_({children:t}){const r=be(),o=W.useRef(null),[l]=W.useState(()=>r.getState().transform);return xg(()=>{let a=null;const u=()=>{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 u(),r.subscribe(u)},[r]),x.jsx("div",{ref:o,className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:qh(l)},children:t})}function c_(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 d_=t=>{var r;return(r=t.panZoom)==null?void 0:r.syncViewport};function f_(t){const r=Te(d_),o=be();return W.useEffect(()=>{t&&(r==null||r(t),o.setState({transform:[t.x,t.y,t.zoom]}))},[t,r]),null}function h_(t){return t.connection.inProgress?{...t.connection,to:ko(t.connection.to,t.transform)}:{...t.connection}}function p_(t){return h_}function g_(t){const r=p_();return Te(r,Ue)}const m_=t=>({nodesConnectable:t.nodesConnectable,isValid:t.connection.isValid,inProgress:t.connection.inProgress,width:t.width,height:t.height});function y_({containerStyle:t,style:r,type:o,component:l}){const{nodesConnectable:a,width:u,height:d,isValid:h,inProgress:p}=Te(m_,Ue);return!(u&&a&&p)?null:x.jsx("svg",{style:t,width:u,height:d,className:"react-flow__connectionline react-flow__container",children:x.jsx("g",{className:Ke(["react-flow__connection",bp(h)]),children:x.jsx(Vg,{style:r,type:o,CustomComponent:l,isValid:h})})})}const Vg=({style:t,type:r=qn.Bezier,CustomComponent:o,isValid:l})=>{const{inProgress:a,from:u,fromNode:d,fromHandle:h,fromPosition:p,to:y,toNode:m,toHandle:v,toPosition:g,pointer:S}=g_();if(!a)return;if(o)return x.jsx(o,{connectionLineType:r,connectionLineStyle:t,fromNode:d,fromHandle:h,fromX:u.x,fromY:u.y,toX:y.x,toY:y.y,fromPosition:p,toPosition:g,connectionStatus:bp(l),toNode:m,toHandle:v,pointer:S});let _="";const M={sourceX:u.x,sourceY:u.y,sourcePosition:p,targetX:y.x,targetY:y.y,targetPosition:g};switch(r){case qn.Bezier:[_]=Zp(M);break;case qn.SimpleBezier:[_]=Pg(M);break;case qn.Step:[_]=Bu({...M,borderRadius:0});break;case qn.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 v_={};function Zh(t=v_){W.useRef(t),be(),W.useEffect(()=>{},[t])}function x_(){be(),W.useRef(!1),W.useEffect(()=>{},[])}function Bg({nodeTypes:t,edgeTypes:r,onInit:o,onNodeClick:l,onEdgeClick:a,onNodeDoubleClick:u,onEdgeDoubleClick:d,onNodeMouseEnter:h,onNodeMouseMove:p,onNodeMouseLeave:y,onNodeContextMenu:m,onSelectionContextMenu:v,onSelectionStart:g,onSelectionEnd:S,connectionLineType:_,connectionLineStyle:M,connectionLineComponent:k,connectionLineContainerStyle:E,selectionKeyCode:T,selectionOnDrag:N,selectionMode:P,multiSelectionKeyCode:b,panActivationKeyCode:$,zoomActivationKeyCode:H,deleteKeyCode:X,onlyRenderVisibleElements:K,elementsSelectable:ne,defaultViewport:q,translateExtent:ee,minZoom:J,maxZoom:C,preventScrolling:B,defaultMarkerColor:F,zoomOnScroll:V,zoomOnPinch:A,panOnScroll:L,panOnScrollSpeed:O,panOnScrollMode:j,zoomOnDoubleClick:z,panOnDrag:re,autoPanOnSelection:te,onPaneClick:ae,onPaneMouseEnter:de,onPaneMouseMove:ce,onPaneMouseLeave:Q,onPaneScroll:se,onPaneContextMenu:he,paneClickDistance:we,nodeClickDistance:ve,onEdgeContextMenu:me,onEdgeMouseEnter:Ce,onEdgeMouseMove:Me,onEdgeMouseLeave:Pe,reconnectRadius:Re,onReconnect:nt,onReconnectStart:rt,onReconnectEnd:Xe,noDragClassName:Ge,noWheelClassName:Bt,noPanClassName:Lt,disableKeyboardA11y:At,nodeExtent:it,rfId:ft,viewport:lt,onViewportChange:ht,nodesDraggable:hn}){return Zh(t),Zh(r),x_(),c_(o),f_(lt),x.jsx(AS,{onPaneClick:ae,onPaneMouseEnter:de,onPaneMouseMove:ce,onPaneMouseLeave:Q,onPaneContextMenu:he,onPaneScroll:se,paneClickDistance:we,deleteKeyCode:X,selectionKeyCode:T,selectionOnDrag:N,selectionMode:P,onSelectionStart:g,onSelectionEnd:S,multiSelectionKeyCode:b,panActivationKeyCode:$,zoomActivationKeyCode:H,elementsSelectable:ne,zoomOnScroll:V,zoomOnPinch:A,zoomOnDoubleClick:z,panOnScroll:L,panOnScrollSpeed:O,panOnScrollMode:j,panOnDrag:re,autoPanOnSelection:te,defaultViewport:q,translateExtent:ee,minZoom:J,maxZoom:C,onSelectionContextMenu:v,preventScrolling:B,noDragClassName:Ge,noWheelClassName:Bt,noPanClassName:Lt,disableKeyboardA11y:At,onViewportChange:ht,isControlledViewport:!!lt,children:x.jsxs(u_,{children:[x.jsx(a_,{edgeTypes:r,onEdgeClick:a,onEdgeDoubleClick:d,onReconnect:nt,onReconnectStart:rt,onReconnectEnd:Xe,onlyRenderVisibleElements:K,onEdgeContextMenu:me,onEdgeMouseEnter:Ce,onEdgeMouseMove:Me,onEdgeMouseLeave:Pe,reconnectRadius:Re,defaultMarkerColor:F,noPanClassName:Lt,disableKeyboardA11y:At,rfId:ft}),x.jsx(y_,{style:M,type:_,component:k,containerStyle:E}),x.jsx("div",{className:"react-flow__edgelabel-renderer"}),x.jsx(US,{nodeTypes:t,onNodeClick:l,onNodeDoubleClick:u,onNodeMouseEnter:h,onNodeMouseMove:p,onNodeMouseLeave:y,onNodeContextMenu:m,nodeClickDistance:ve,onlyRenderVisibleElements:K,noPanClassName:Lt,noDragClassName:Ge,disableKeyboardA11y:At,nodeExtent:it,rfId:ft,nodesDraggable:hn}),x.jsx("div",{className:"react-flow__viewport-portal"})]})})}Bg.displayName="GraphView";const w_=W.memo(Bg),S_=Wp(),Jh=({nodes:t,edges:r,defaultNodes:o,defaultEdges:l,width:a,height:u,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??[],T=o??t??[],N=m??[0,0],P=v??co;rg(M,k,E);const{nodesInitialized:b}=Wu(T,S,_,{nodeOrigin:N,nodeExtent:P,zIndexMode:g});let $=[0,0,1];if(d&&a&&u){const H=So(S,{filter:q=>!!((q.width||q.initialWidth)&&(q.height||q.initialHeight))}),{x:X,y:K,zoom:ne}=oc(H,a,u,p,y,(h==null?void 0:h.padding)??.1);$=[X,K,ne]}return{rfId:"1",width:a??0,height:u??0,transform:$,nodes:T,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:co,nodeExtent:P,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:li.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:S_,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:Dp,zIndexMode:g,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},__=({nodes:t,edges:r,defaultNodes:o,defaultEdges:l,width:a,height:u,fitView:d,fitViewOptions:h,minZoom:p,maxZoom:y,nodeOrigin:m,nodeExtent:v,zIndexMode:g})=>L1((S,_)=>{async function M(){const{nodeLookup:k,panZoom:E,fitViewOptions:T,fitViewResolver:N,width:P,height:b,minZoom:$,maxZoom:H}=_();E&&(await Iw({nodes:k,width:P,height:b,panZoom:E,minZoom:$,maxZoom:H},T),N==null||N.resolve(!0),S({fitViewResolver:null}))}return{...Jh({nodes:t,edges:r,width:a,height:u,fitView:d,fitViewOptions:h,minZoom:p,maxZoom:y,nodeOrigin:m,nodeExtent:v,defaultNodes:o,defaultEdges:l,zIndexMode:g}),setNodes:k=>{const{nodeLookup:E,parentLookup:T,nodeOrigin:N,nodeExtent:P,elevateNodesOnSelect:b,fitViewQueued:$,zIndexMode:H,nodesSelectionActive:X}=_(),{nodesInitialized:K,hasSelectedNodes:ne}=Wu(k,E,T,{nodeOrigin:N,nodeExtent:P,elevateNodesOnSelect:b,checkEquality:!0,zIndexMode:H}),q=X&≠$&&K?(M(),S({nodes:k,nodesInitialized:K,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:q})):S({nodes:k,nodesInitialized:K,nodesSelectionActive:q})},setEdges:k=>{const{connectionLookup:E,edgeLookup:T}=_();rg(E,T,k),S({edges:k})},setDefaultNodesAndEdges:(k,E)=>{if(k){const{setNodes:T}=_();T(k),S({hasDefaultNodes:!0})}if(E){const{setEdges:T}=_();T(E),S({hasDefaultEdges:!0})}},updateNodeInternals:k=>{const{triggerNodeChanges:E,nodeLookup:T,parentLookup:N,domNode:P,nodeOrigin:b,nodeExtent:$,debug:H,fitViewQueued:X,zIndexMode:K}=_(),{changes:ne,updatedInternals:q}=Jw(k,T,N,P,b,$,K);q&&(Kw(T,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 T=[];let N=[];const{nodeLookup:P,triggerNodeChanges:b,connection:$,updateConnection:H,onNodesChangeMiddlewareMap:X}=_();for(const[K,ne]of k){const q=P.get(K),ee=!!(q!=null&&q.expandParent&&(q!=null&&q.parentId)&&(ne!=null&&ne.position)),J={id:K,type:"position",position:ee?{x:Math.max(0,ne.position.x),y:Math.max(0,ne.position.y)}:ne.position,dragging:E};if(q&&$.inProgress&&$.fromNode.id===q.id){const C=Nr(q,$.fromHandle,Se.Left,!0);H({...$,from:C})}ee&&q.parentId&&T.push({id:K,parentId:q.parentId,rect:{...ne.internals.positionAbsolute,width:ne.measured.width??0,height:ne.measured.height??0}}),N.push(J)}if(T.length>0){const{parentLookup:K,nodeOrigin:ne}=_(),q=dc(T,P,K,ne);N.push(...q)}for(const K of X.values())N=K(N);b(N)},triggerNodeChanges:k=>{const{onNodesChange:E,setNodes:T,nodes:N,hasDefaultNodes:P,debug:b}=_();if(k!=null&&k.length){if(P){const $=tS(k,N);T($)}b&&console.log("React Flow: trigger node changes",k),E==null||E(k)}},triggerEdgeChanges:k=>{const{onEdgesChange:E,setEdges:T,edges:N,hasDefaultEdges:P,debug:b}=_();if(k!=null&&k.length){if(P){const $=nS(k,N);T($)}b&&console.log("React Flow: trigger edge changes",k),E==null||E(k)}},addSelectedNodes:k=>{const{multiSelectionActive:E,edgeLookup:T,nodeLookup:N,triggerNodeChanges:P,triggerEdgeChanges:b}=_();if(E){const $=k.map(H=>yr(H,!0));P($);return}P(ni(N,new Set([...k]),!0)),b(ni(T))},addSelectedEdges:k=>{const{multiSelectionActive:E,edgeLookup:T,nodeLookup:N,triggerNodeChanges:P,triggerEdgeChanges:b}=_();if(E){const $=k.map(H=>yr(H,!0));b($);return}b(ni(T,new Set([...k]))),P(ni(N,new Set,!0))},unselectNodesAndEdges:({nodes:k,edges:E}={})=>{const{edges:T,nodes:N,nodeLookup:P,triggerNodeChanges:b,triggerEdgeChanges:$}=_(),H=k||N,X=E||T,K=[];for(const q of H){if(!q.selected)continue;const ee=P.get(q.id);ee&&(ee.selected=!1),K.push(yr(q.id,!1))}const ne=[];for(const q of X)q.selected&&ne.push(yr(q.id,!1));b(K),$(ne)},setMinZoom:k=>{const{panZoom:E,maxZoom:T}=_();E==null||E.setScaleExtent([k,T]),S({minZoom:k})},setMaxZoom:k=>{const{panZoom:E,minZoom:T}=_();E==null||E.setScaleExtent([T,k]),S({maxZoom:k})},setTranslateExtent:k=>{var E;(E=_().panZoom)==null||E.setTranslateExtent(k),S({translateExtent:k})},resetSelectedElements:()=>{const{edges:k,nodes:E,triggerNodeChanges:T,triggerEdgeChanges:N,elementsSelectable:P}=_();if(!P)return;const b=E.reduce((H,X)=>X.selected?[...H,yr(X.id,!1)]:H,[]),$=k.reduce((H,X)=>X.selected?[...H,yr(X.id,!1)]:H,[]);T(b),N($)},setNodeExtent:k=>{const{nodes:E,nodeLookup:T,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,T,N,{nodeOrigin:P,nodeExtent:k,elevateNodesOnSelect:b,checkEquality:!1,zIndexMode:H}),S({nodeExtent:k}))},panBy:k=>{const{transform:E,width:T,height:N,panZoom:P,translateExtent:b}=_();return e1({delta:k,panZoom:P,transform:E,translateExtent:b,width:T,height:N})},setCenter:async(k,E,T)=>{const{width:N,height:P,maxZoom:b,panZoom:$}=_();if(!$)return!1;const H=typeof(T==null?void 0:T.zoom)<"u"?T.zoom:b;return await $.setViewport({x:N/2-k*H,y:P/2-E*H,zoom:H},{duration:T==null?void 0:T.duration,ease:T==null?void 0:T.ease,interpolate:T==null?void 0:T.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:u,initialMinZoom:d,initialMaxZoom:h,initialFitViewOptions:p,fitView:y,nodeOrigin:m,nodeExtent:v,zIndexMode:g,children:S}){const[_]=W.useState(()=>__({nodes:t,edges:r,defaultNodes:o,defaultEdges:l,width:a,height:u,fitView:y,minZoom:d,maxZoom:h,fitViewOptions:p,nodeOrigin:m,nodeExtent:v,zIndexMode:g}));return x.jsx(A1,{value:_,children:x.jsx(lS,{children:x.jsx(_S,{children:S})})})}function k_({children:t,nodes:r,edges:o,defaultNodes:l,defaultEdges:a,width:u,height:d,fitView:h,fitViewOptions:p,minZoom:y,maxZoom:m,nodeOrigin:v,nodeExtent:g,zIndexMode:S}){return W.useContext(Sl)?x.jsx(x.Fragment,{children:t}):x.jsx(Ug,{initialNodes:r,initialEdges:o,defaultNodes:l,defaultEdges:a,initialWidth:u,initialHeight:d,fitView:h,initialFitViewOptions:p,initialMinZoom:y,initialMaxZoom:m,nodeOrigin:v,nodeExtent:g,zIndexMode:S,children:t})}const E_={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function N_({nodes:t,edges:r,defaultNodes:o,defaultEdges:l,className:a,nodeTypes:u,edgeTypes:d,onNodeClick:h,onEdgeClick:p,onInit:y,onMove:m,onMoveStart:v,onMoveEnd:g,onConnect:S,onConnectStart:_,onConnectEnd:M,onClickConnectStart:k,onClickConnectEnd:E,onNodeMouseEnter:T,onNodeMouseMove:N,onNodeMouseLeave:P,onNodeContextMenu:b,onNodeDoubleClick:$,onNodeDragStart:H,onNodeDrag:X,onNodeDragStop:K,onNodesDelete:ne,onEdgesDelete:q,onDelete:ee,onSelectionChange:J,onSelectionDragStart:C,onSelectionDrag:B,onSelectionDragStop:F,onSelectionContextMenu:V,onSelectionStart:A,onSelectionEnd:L,onBeforeDelete:O,connectionMode:j,connectionLineType:z=qn.Bezier,connectionLineStyle:re,connectionLineComponent:te,connectionLineContainerStyle:ae,deleteKeyCode:de="Backspace",selectionKeyCode:ce="Shift",selectionOnDrag:Q=!1,selectionMode:se=fo.Full,panActivationKeyCode:he="Space",multiSelectionKeyCode:we=po()?"Meta":"Control",zoomActivationKeyCode:ve=po()?"Meta":"Control",snapToGrid:me,snapGrid:Ce,onlyRenderVisibleElements:Me=!1,selectNodesOnDrag:Pe,nodesDraggable:Re,autoPanOnNodeFocus:nt,nodesConnectable:rt,nodesFocusable:Xe,nodeOrigin:Ge=mg,edgesFocusable:Bt,edgesReconnectable:Lt,elementsSelectable:At=!0,defaultViewport:it=Q1,minZoom:ft=.5,maxZoom:lt=2,translateExtent:ht=co,preventScrolling:hn=!0,nodeExtent:$t,defaultMarkerColor:rn="#b1b1b7",zoomOnScroll:Z=!0,zoomOnPinch:Ee=!0,panOnScroll:$e=!1,panOnScrollSpeed:Cn=.5,panOnScrollMode:mt=wr.Free,zoomOnDoubleClick:di=!0,panOnDrag:fi=!0,onPaneClick:hi,onPaneMouseEnter:pi,onPaneMouseMove:jn,onPaneMouseLeave:Mn,onPaneScroll:Eo,onPaneContextMenu:No,paneClickDistance:Co=1,nodeClickDistance:jo=0,children:Mo,onReconnect:gi,onReconnectStart:Po,onReconnectEnd:Jn,onEdgeContextMenu:mi,onEdgeDoubleClick:er,onEdgeMouseEnter:Nl,onEdgeMouseMove:tr,onEdgeMouseLeave:Cr,reconnectRadius:jr=10,onNodesChange:yi,onEdgesChange:Cl,noDragClassName:jl="nodrag",noWheelClassName:Ml="nowheel",noPanClassName:on="nopan",fitView:vi,fitViewOptions:xi,connectOnClick:Pl,attributionPosition:Io,proOptions:To,defaultEdgeOptions:zo,elevateNodesOnSelect:Ro=!0,elevateEdgesOnSelect:Il=!1,disableKeyboardA11y:Lo=!1,autoPanOnConnect:He,autoPanOnNodeDrag:Tl,autoPanOnSelection:wi=!0,autoPanSpeed:Ao,connectionRadius:Mr,isValidConnection:zl,onError:$o,style:Pr,id:Nt,nodeDragThreshold:Rl,connectionDragThreshold:Ct,viewport:Ll,onViewportChange:Al,width:$l,height:Ir,colorMode:Tr="light",debug:nr,onScroll:pn,ariaLabelConfig:Dl,zIndexMode:Do="basic",...Si},Oo){const rr=Nt||"1",ir=Z1(Tr),Ol=W.useCallback(zr=>{zr.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),pn==null||pn(zr)},[pn]);return x.jsx("div",{"data-testid":"rf__wrapper",...Si,onScroll:Ol,style:{...Pr,...E_},ref:Oo,className:Ke(["react-flow",a,ir]),id:Nt,role:"application",children:x.jsxs(k_,{nodes:t,edges:r,width:$l,height:Ir,fitView:vi,fitViewOptions:xi,minZoom:ft,maxZoom:lt,nodeOrigin:Ge,nodeExtent:$t,zIndexMode:Do,children:[x.jsx(q1,{nodes:t,edges:r,defaultNodes:o,defaultEdges:l,onConnect:S,onConnectStart:_,onConnectEnd:M,onClickConnectStart:k,onClickConnectEnd:E,nodesDraggable:Re,autoPanOnNodeFocus:nt,nodesConnectable:rt,nodesFocusable:Xe,edgesFocusable:Bt,edgesReconnectable:Lt,elementsSelectable:At,elevateNodesOnSelect:Ro,elevateEdgesOnSelect:Il,minZoom:ft,maxZoom:lt,nodeExtent:$t,onNodesChange:yi,onEdgesChange:Cl,snapToGrid:me,snapGrid:Ce,connectionMode:j,translateExtent:ht,connectOnClick:Pl,defaultEdgeOptions:zo,fitView:vi,fitViewOptions:xi,onNodesDelete:ne,onEdgesDelete:q,onDelete:ee,onNodeDragStart:H,onNodeDrag:X,onNodeDragStop:K,onSelectionDrag:B,onSelectionDragStart:C,onSelectionDragStop:F,onMove:m,onMoveStart:v,onMoveEnd:g,noPanClassName:on,nodeOrigin:Ge,rfId:rr,autoPanOnConnect:He,autoPanOnNodeDrag:Tl,autoPanSpeed:Ao,onError:$o,connectionRadius:Mr,isValidConnection:zl,selectNodesOnDrag:Pe,nodeDragThreshold:Rl,connectionDragThreshold:Ct,onBeforeDelete:O,debug:nr,ariaLabelConfig:Dl,zIndexMode:Do}),x.jsx(w_,{onInit:y,onNodeClick:h,onEdgeClick:p,onNodeMouseEnter:T,onNodeMouseMove:N,onNodeMouseLeave:P,onNodeContextMenu:b,onNodeDoubleClick:$,nodeTypes:u,edgeTypes:d,connectionLineType:z,connectionLineStyle:re,connectionLineComponent:te,connectionLineContainerStyle:ae,selectionKeyCode:ce,selectionOnDrag:Q,selectionMode:se,deleteKeyCode:de,multiSelectionKeyCode:we,panActivationKeyCode:he,zoomActivationKeyCode:ve,onlyRenderVisibleElements:Me,defaultViewport:it,translateExtent:ht,minZoom:ft,maxZoom:lt,preventScrolling:hn,zoomOnScroll:Z,zoomOnPinch:Ee,zoomOnDoubleClick:di,panOnScroll:$e,panOnScrollSpeed:Cn,panOnScrollMode:mt,panOnDrag:fi,autoPanOnSelection:wi,onPaneClick:hi,onPaneMouseEnter:pi,onPaneMouseMove:jn,onPaneMouseLeave:Mn,onPaneScroll:Eo,onPaneContextMenu:No,paneClickDistance:Co,nodeClickDistance:jo,onSelectionContextMenu:V,onSelectionStart:A,onSelectionEnd:L,onReconnect:gi,onReconnectStart:Po,onReconnectEnd:Jn,onEdgeContextMenu:mi,onEdgeDoubleClick:er,onEdgeMouseEnter:Nl,onEdgeMouseMove:tr,onEdgeMouseLeave:Cr,reconnectRadius:jr,defaultMarkerColor:rn,noDragClassName:jl,noWheelClassName:Ml,noPanClassName:on,rfId:rr,disableKeyboardA11y:Lo,nodeExtent:$t,viewport:Ll,onViewportChange:Al,nodesDraggable:Re}),x.jsx(X1,{onSelectionChange:J}),Mo,x.jsx(V1,{proOptions:To,position:Io}),x.jsx(H1,{rfId:rr,disableKeyboardA11y:Lo})]})})}var C_=vg(N_);function j_({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:Ke(["react-flow__background-pattern",o,l])})}function M_({radius:t,className:r}){return x.jsx("circle",{cx:t,cy:t,r:t,className:Ke(["react-flow__background-pattern","dots",r])})}var Zn;(function(t){t.Lines="lines",t.Dots="dots",t.Cross="cross"})(Zn||(Zn={}));const P_={[Zn.Dots]:1,[Zn.Lines]:1,[Zn.Cross]:6},I_=t=>({transform:t.transform,patternId:`pattern-${t.rfId}`});function Wg({id:t,variant:r=Zn.Dots,gap:o=20,size:l,lineWidth:a=1,offset:u=0,color:d,bgColor:h,style:p,className:y,patternClassName:m}){const v=W.useRef(null),{transform:g,patternId:S}=Te(I_,Ue),_=l||P_[r],M=r===Zn.Dots,k=r===Zn.Cross,E=Array.isArray(o)?o:[o,o],T=[E[0]*g[2]||1,E[1]*g[2]||1],N=_*g[2],P=Array.isArray(u)?u:[u,u],b=k?[N,N]:T,$=[P[0]*g[2]+b[0]/2,P[1]*g[2]+b[1]/2],H=`${S}${t||""}`;return x.jsxs("svg",{className:Ke(["react-flow__background",y]),style:{...p,...kl,"--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]%T[0],y:g[1]%T[1],width:T[0],height:T[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${$[0]},-${$[1]})`,children:M?x.jsx(M_,{radius:N/2,className:m}):x.jsx(j_,{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 T_=W.memo(Wg);function z_(){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 R_(){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 L_(){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 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 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 $_(){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 Qs({children:t,className:r,...o}){return x.jsx("button",{type:"button",className:Ke(["react-flow__controls-button",r]),...o,children:t})}const D_=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:u,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:T}=Te(D_,Ue),{zoomIn:N,zoomOut:P,fitView:b}=fc(),$=()=>{N(),u==null||u()},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(_l,{className:Ke(["react-flow__controls",ne,y]),position:v,style:t,"data-testid":"rf__controls","aria-label":S??T["controls.ariaLabel"],children:[r&&x.jsxs(x.Fragment,{children:[x.jsx(Qs,{onClick:$,className:"react-flow__controls-zoomin",title:T["controls.zoomIn.ariaLabel"],"aria-label":T["controls.zoomIn.ariaLabel"],disabled:E,children:x.jsx(z_,{})}),x.jsx(Qs,{onClick:H,className:"react-flow__controls-zoomout",title:T["controls.zoomOut.ariaLabel"],"aria-label":T["controls.zoomOut.ariaLabel"],disabled:k,children:x.jsx(R_,{})})]}),o&&x.jsx(Qs,{className:"react-flow__controls-fitview",onClick:X,title:T["controls.fitView.ariaLabel"],"aria-label":T["controls.fitView.ariaLabel"],children:x.jsx(L_,{})}),l&&x.jsx(Qs,{className:"react-flow__controls-interactive",onClick:K,title:T["controls.interactive.ariaLabel"],"aria-label":T["controls.interactive.ariaLabel"],children:M?x.jsx($_,{}):x.jsx(A_,{})}),m]})}Yg.displayName="Controls";const O_=W.memo(Yg);function b_({id:t,x:r,y:o,width:l,height:a,style:u,color:d,strokeColor:h,strokeWidth:p,className:y,borderRadius:m,shapeRendering:v,selected:g,onClick:S}){const{background:_,backgroundColor:M}=u||{},k=d||_||M;return x.jsx("rect",{className:Ke(["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 F_=W.memo(b_),H_=t=>t.nodes.map(r=>r.id),zu=t=>t instanceof Function?t:()=>t;function V_({nodeStrokeColor:t,nodeColor:r,nodeClassName:o="",nodeBorderRadius:l=5,nodeStrokeWidth:a,nodeComponent:u=F_,onClick:d}){const h=Te(H_,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(U_,{id:g,nodeColorFunc:p,nodeStrokeColorFunc:y,nodeClassNameFunc:m,nodeBorderRadius:l,nodeStrokeWidth:a,NodeComponent:u,onClick:d,shapeRendering:v},g))})}function B_({id:t,nodeColorFunc:r,nodeStrokeColorFunc:o,nodeClassNameFunc:l,nodeBorderRadius:a,nodeStrokeWidth:u,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:T}=M.internals.positionAbsolute,{width:N,height:P}=nn(k);return{node:k,x:E,y:T,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:u,shapeRendering:d,onClick:p,id:y.id})}const U_=W.memo(B_);var W_=W.memo(V_);const Y_=200,X_=150,Q_=t=>!t.hidden,K_=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(So(t.nodeLookup,{filter:Q_}),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,G_=(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 Xg({style:t,className:r,nodeStrokeColor:o,nodeColor:l,nodeClassName:a="",nodeBorderRadius:u=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:T,zoomStep:N=1,offsetScale:P=5}){const b=be(),$=W.useRef(null),{boundingRect:H,viewBB:X,rfId:K,panZoom:ne,translateExtent:q,flowWidth:ee,flowHeight:J,ariaLabelConfig:C}=Te(K_,G_),B=(t==null?void 0:t.width)??Y_,F=(t==null?void 0:t.height)??X_,V=H.width/B,A=H.height/F,L=Math.max(V,A),O=L*B,j=L*F,z=P*L,re=H.x-(O-H.width)/2-z,te=H.y-(j-H.height)/2-z,ae=O+z*2,de=j+z*2,ce=`${q_}-${K}`,Q=W.useRef(0),se=W.useRef();Q.current=L,W.useEffect(()=>{if($.current&&ne)return se.current=u1({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:q,width:ee,height:J,inversePan:T,pannable:M,zoomStep:N,zoomable:k})},[M,k,T,N,q,ee,J]);const he=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,we=_?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(_l,{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:Ke(["react-flow__minimap",r]),"data-testid":"rf__minimap",children:x.jsxs("svg",{width:B,height:F,viewBox:`${re} ${te} ${ae} ${de}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":ce,ref:$,onClick:he,children:[ve&&x.jsx("title",{id:ce,children:ve}),x.jsx(W_,{onClick:we,nodeColor:l,nodeStrokeColor:o,nodeBorderRadius:u,nodeClassName:a,nodeStrokeWidth:d,nodeComponent:h}),x.jsx("path",{className:"react-flow__minimap-mask",d:`M${re-z},${te-z}h${ae+z*2}v${de+z*2}h${-ae-z*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 Z_=W.memo(Xg),J_=t=>r=>t?`${Math.max(1/r.transform[2],1)}`:void 0,ek={[ci.Line]:"right",[ci.Handle]:"bottom-right"};function tk({nodeId:t,position:r,variant:o=ci.Handle,className:l,style:a=void 0,children:u,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 T=kg(),N=typeof t=="string"?t:T,P=be(),b=W.useRef(null),$=o===ci.Handle,H=Te(W.useCallback(J_($&&S),[$,S]),Ue),X=W.useRef(null),K=r??ek[o];W.useEffect(()=>{if(!(!b.current||!N))return X.current||(X.current=_1({domNode:b.current,nodeId:N,getStoreItems:()=>{const{nodeLookup:q,transform:ee,snapGrid:J,snapToGrid:C,nodeOrigin:B,domNode:F}=P.getState();return{nodeLookup:q,transform:ee,snapGrid:J,snapToGrid:C,nodeOrigin:B,paneDomNode:F}},onChange:(q,ee)=>{const{triggerNodeChanges:J,nodeLookup:C,parentLookup:B,nodeOrigin:F}=P.getState(),V=[],A={x:q.x,y:q.y},L=C.get(N);if(L&&L.expandParent&&L.parentId){const O=L.origin??F,j=q.width??L.measured.width??0,z=q.height??L.measured.height??0,re={id:L.id,parentId:L.parentId,rect:{width:j,height:z,...Xp({x:q.x??L.position.x,y:q.y??L.position.y},{width:j,height:z},L.parentId,C,O)}},te=dc([re],C,B,F);V.push(...te),A.x=q.x?Math.max(O[0]*j,q.x):void 0,A.y=q.y?Math.max(O[1]*z,q.y):void 0}if(A.x!==void 0&&A.y!==void 0){const O={id:N,type:"position",position:{...A}};V.push(O)}if(q.width!==void 0&&q.height!==void 0){const j={id:N,type:"dimensions",resizing:!0,setAttributes:g?g==="horizontal"?"width":"height":!0,dimensions:{width:q.width,height:q.height}};V.push(j)}for(const O of ee){const j={...O,type:"position"};V.push(j)}J(V)},onEnd:({width:q,height:ee})=>{const J={id:N,type:"dimensions",resizing:!1,dimensions:{width:q,height:ee}};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 q;(q=X.current)==null||q.destroy()}},[K,h,p,y,m,v,M,k,E,_]);const ne=K.split("-");return x.jsx("div",{className:Ke(["react-flow__resize-control","nodrag",...ne,o,l]),ref:b,style:{...a,scale:H,...d&&{[$?"backgroundColor":"borderColor"]:d}},children:u})}W.memo(tk);const nk={"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 rk(t){return nk[t]??8}function ik(t){const r=new Map;for(const l of t){const a=rk(l.type),u=r.get(a)??[];u.push(l),r.set(a,u)}const o=new Map;for(const[l,a]of r)a.sort((u,d)=>u.name.localeCompare(d.name)),a.forEach((u,d)=>{o.set(u.id,{x:l*260,y:d*108})});return o}const ok={cheap:"var(--edge-cheap)",expensive:"var(--edge-expensive)",critical:"var(--edge-critical)"};function sk({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 lk={load:sk},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,u=W.useMemo(()=>new Map(t.map(v=>[v.id,v])),[t]),d=o?u.get(o)??null:null,h=ik(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=>u.has(v.src)&&u.has(v.dst)).map(v=>({id:v.id,source:v.src,target:v.dst,animated:!a&&v.weight==="critical",style:{stroke:ok[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(C_,{nodes:p,edges:y,nodeTypes:lk,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(T_,{}),x.jsx(Z_,{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(O_,{})]})}),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 fl=[{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"}],ak="obsidian",Qg="loadpath.theme";function uk(t){return fl.some(r=>r.id===t)}function Kg(){try{const t=localStorage.getItem(Qg)||"";if(uk(t))return t}catch{}return ak}function ck(t){var r;return((r=fl.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=ck(t);try{localStorage.setItem(Qg,t)}catch{}}const rp=[{id:"review",label:"Review",testId:"tab-review",shortcut:"1",icon:V0},{id:"architecture",label:"Architecture",testId:"tab-architecture",shortcut:"2",icon:B0},{id:"graph",label:"Impact graph",testId:"tab-graph",shortcut:"3",icon:U0},{id:"prs",label:"Pull requests",testId:"tab-prs",shortcut:"4",icon:W0},{id:"settings",label:"Settings",testId:"tab-settings",shortcut:"5",icon:Y0}];function dk(){var it,ft,lt,ht,hn,$t,rn;const[t,r]=W.useState("review"),[o,l]=W.useState(localStorage.getItem("loadpath.repo")||""),[a,u]=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(""),[T,N]=W.useState(""),[P,b]=W.useState(""),[$,H]=W.useState({}),[X,K]=W.useState([]),[ne,q]=W.useState(localStorage.getItem("loadpath.scmRepo")||""),[ee,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,j]=W.useState(!1),z=W.useRef(o);z.current=o;const re=Z=>{L(Z),Gg(Z)},te=W.useRef(""),ae=Z=>{te.current=Z,N(Z)};W.useEffect(()=>{kt.settings().then(H).catch(()=>{}).finally(()=>j(!0)),kt.repos().then(Z=>S(Z.repos)).catch(()=>{})},[]);const de=()=>o.trim()?!0:(E("Point at a local repository path first."),!1);W.useEffect(()=>{if(t!=="architecture"||!o.trim())return;const Z=o;let Ee=!1;return kt.architecture(Z).then($e=>{!Ee&&z.current===Z&&v($e)}).catch(()=>{}),()=>{Ee=!0}},[t,o]);const ce=Z=>{l(Z),localStorage.setItem("loadpath.repo",Z)},Q=(Z,Ee)=>{u(Z),h(Ee),localStorage.setItem("loadpath.base",Z),localStorage.setItem("loadpath.head",Ee)},se=(Z,Ee,$e)=>{J(Z),q(Ee),localStorage.setItem("loadpath.provider",Z),localStorage.setItem("loadpath.scmRepo",Ee),$e!==void 0&&(B($e),localStorage.setItem("loadpath.prNumber",$e))},he=async(Z=o)=>{if(!Z.trim())return null;const Ee=await kt.architecture(Z);return z.current===Z&&v(Ee),Ee},we=async()=>{if(!te.current&&de()){E(""),b(""),ae("Tracing load path…"),ce(o),Q(a,d);try{const Z=await kt.review(o,a,d,!0);y(Z),M("review"),r("review"),await kt.repos().then(Ee=>S(Ee.repos)).catch(()=>{}),await he(o)}catch(Z){E(Z instanceof Error?Z.message:String(Z))}finally{ae("")}}},ve=async(Z=!0)=>{if(!te.current&&de()){E(""),b(""),ae(Z?"Indexing…":"Full reindex…"),ce(o);try{await kt.index(o,Z);const Ee=await he(o);await kt.repos().then($e=>S($e.repos)).catch(()=>{}),Ee!=null&&Ee.indexed&&(M("architecture"),r("architecture"))}catch(Ee){E(Ee instanceof Error?Ee.message:String(Ee))}finally{ae("")}}},me=async()=>{if(!te.current&&de()){E(""),b(""),ae("Detecting layout…"),ce(o);try{const Z=await kt.init(o);b(Z.message),await kt.repos().then(Ee=>S(Ee.repos)).catch(()=>{})}catch(Z){E(Z instanceof Error?Z.message:String(Z))}finally{ae("")}}},Ce=async()=>{if(p!=null&&p.markdown)try{await navigator.clipboard.writeText(p.markdown),b("Copied markdown brief")}catch(Z){E(Z instanceof Error?Z.message:String(Z))}},Me=async()=>{if(!te.current){if(!(p!=null&&p.markdown)||!ne||!C){E("Pick a pull request first (Pull requests tab), then post the brief.");return}ae("Posting Loadpath brief…");try{const Z=await kt.postComment(ee,ne,Number(C),p.markdown);b(Z.updated?"Updated the Loadpath PR comment":"Posted the Loadpath PR comment")}catch(Z){E(Z instanceof Error?Z.message:String(Z))}finally{ae("")}}},Pe=async()=>{if(!te.current){E(""),ae("Fetching pull requests…");try{const Z=await kt.prs(ee,ne);K(Z.pull_requests)}catch(Z){E(Z instanceof Error?Z.message:String(Z))}finally{ae("")}}},Re=async Z=>{Z.preventDefault();const Ee=new FormData(Z.currentTarget),$e={github_token:String(Ee.get("github_token")||""),bitbucket_token:String(Ee.get("bitbucket_token")||""),bitbucket_username:String(Ee.get("bitbucket_username")||""),ai_provider:String(Ee.get("ai_provider")||"none"),ai_api_key:String(Ee.get("ai_api_key")||""),ai_model:String(Ee.get("ai_model")||""),ai_base_url:String(Ee.get("ai_base_url")||"")},Cn=g.length?{...$e,workspaces:g.map(mt=>({path:mt.path,name:mt.name}))}:$e;try{H(await kt.saveSettings(Cn)),b("Settings saved on this machine")}catch(mt){E(mt instanceof Error?mt.message:String(mt))}},nt=async()=>{if(!(!p||te.current)){ae("Residual analysis…");try{const Z=await kt.residual(p);V(Z.note)}catch(Z){E(Z instanceof Error?Z.message:String(Z))}finally{ae("")}}},rt=W.useRef(we);rt.current=we;const Xe=W.useRef(t);Xe.current=t,W.useEffect(()=>{const Z=Ee=>{const $e=Ee.target;if($e&&($e.tagName==="INPUT"||$e.tagName==="TEXTAREA"||$e.tagName==="SELECT"||$e.isContentEditable)){Ee.key==="Escape"&&$e.blur();return}if(Ee.key==="Escape"){E(""),b("");return}const Cn=rp.find(mt=>mt.shortcut===Ee.key);if(Cn&&!Ee.metaKey&&!Ee.ctrlKey&&!Ee.altKey&&r(Cn.id),(Ee.metaKey||Ee.ctrlKey)&&Ee.key==="Enter"){if(Xe.current==="settings"||Xe.current==="prs"||te.current)return;Ee.preventDefault(),rt.current()}};return window.addEventListener("keydown",Z),()=>window.removeEventListener("keydown",Z)},[]);const Ge=W.useMemo(()=>_==="architecture"?(m==null?void 0:m.nodes)??[]:(p==null?void 0:p.nodes)??[],[_,m,p]),Bt=W.useMemo(()=>_==="architecture"?(m==null?void 0:m.edges)??[]:(p==null?void 0:p.edges)??[],[_,m,p]),Lt=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",At=((p==null?void 0:p.findings)||[]).filter(Z=>!Z.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(Z=>{const Ee=Z.icon,$e=t===Z.id;return x.jsxs("button",{type:"button","data-testid":Z.testId,className:$e?"nav-item active":"nav-item","aria-current":$e?"page":void 0,"aria-label":Z.label,onClick:()=>r(Z.id),children:[x.jsx(Ee,{}),x.jsx("span",{children:Z.label})]},Z.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:Z=>re(Z.target.value),children:fl.map(Z=>x.jsx("option",{value:Z.id,children:Z.label},Z.id))})]}),x.jsxs("div",{className:"rail-foot",children:[x.jsx("div",{className:"muted",role:"status",children:T||Lt}),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:[T?x.jsxs("div",{className:"progress",role:"status","aria-live":"polite","aria-busy":"true",children:[x.jsx("i",{}),x.jsx("span",{className:"sr-only",children:T})]}):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(Z=>Z.path===o)?o:"",onChange:Z=>{Z.target.value&&ce(Z.target.value)},children:[x.jsx("option",{value:"",children:"Indexed repos…"}),g.map(Z=>x.jsxs("option",{value:Z.path,children:[Z.name,Z.indexed?` (${Z.counts.nodes})`:""]},Z.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:Z=>l(Z.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:Z=>Q(Z.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:Z=>Q(a,Z.target.value),placeholder:"head",spellCheck:!1})]}),x.jsxs("div",{className:"topbar-actions",children:[x.jsx("button",{type:"button","data-testid":"btn-init",disabled:!!T,onClick:me,children:"Draft config"}),x.jsx("button",{type:"button","data-testid":"btn-index",disabled:!!T,onClick:()=>ve(!0),children:"Index"}),x.jsx("button",{type:"button","data-testid":"btn-review",className:"btn primary",disabled:!!T,onClick:we,children:"Review"})]})]}),x.jsxs("div",{className:"alerts",children:[k?x.jsxs("div",{className:"error","data-testid":"error",role:"alert",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,((it=p==null?void 0:p.index)!=null&&it.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,((ft=p==null?void 0:p.index)==null?void 0:ft.django_boot)==="failed"||(m==null?void 0:m.django_boot)==="failed"?x.jsx("div",{className:"banner warn","data-testid":"django-boot-failed",children:((lt=p==null?void 0:p.index)==null?void 0:lt.django_boot_detail)||(m==null?void 0:m.django_boot_detail)||"django.setup() failed"}):null,(ht=p==null?void 0:p.workspace)!=null&&ht.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(fk,{review:p,findings:At,aiNote:F,busy:!!T,onAskAi:nt,onCopy:Ce,onPost:Me}):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(hk,{architecture:m,busy:!!T,onReindex:()=>ve(!1),onReview:we}):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"]})]})]}),Ge.length?x.jsx(Ru,{nodes:Ge,edges:Bt}):x.jsx("p",{className:"empty","data-testid":"graph-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:ee,onChange:Z=>se(Z.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:Z=>se(ee,Z.target.value,C),spellCheck:!1})]}),x.jsx("button",{type:"button","data-testid":"btn-list-prs",className:"btn",disabled:!!T,onClick:Pe,children:"List PRs"})]}),X.length===0?x.jsxs("div",{className:"empty","data-testid":"pr-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(Z=>x.jsxs("article",{className:"pr","data-testid":`pr-${Z.number}`,children:[x.jsxs("h3",{children:["#",Z.number," ",Z.title]}),x.jsxs("div",{className:"pr-meta muted",children:[x.jsx("span",{className:`chip ${Z.draft?"":"open"}`,children:Z.draft?"draft":Z.state}),x.jsx("span",{children:Z.author}),x.jsxs("span",{children:[Z.source_branch," → ",Z.target_branch]})]}),x.jsxs("div",{className:"pr-actions",children:[x.jsxs("a",{href:Z.url,target:"_blank",rel:"noreferrer",children:["Open on ",Z.provider]}),x.jsx("button",{type:"button",className:"btn primary","data-testid":`pr-review-${Z.number}`,onClick:()=>{Q(Z.base_sha||Z.target_branch,Z.head_sha||Z.source_branch),se(Z.provider,Z.repo,String(Z.number)),r("review")},children:"Review this range"})]})]},`${Z.provider}-${Z.number}`))]}),t==="settings"&&O&&x.jsxs("form",{className:"settings","data-testid":"settings-form",onSubmit:Re,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:fl.map(Z=>x.jsxs("button",{type:"button",className:A===Z.id?"theme-swatch active":"theme-swatch","data-testid":`theme-${Z.id}`,onClick:()=>re(Z.id),children:[x.jsx("div",{className:"name",children:Z.label}),x.jsx("div",{className:"group",children:Z.group})]},Z.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(((hn=$.ai)==null?void 0:hn.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","data-testid":"ai-model",placeholder:"optional override",defaultValue:String((($t=$.ai)==null?void 0:$t.model)||"")}),x.jsx("label",{htmlFor:"ai_base_url",children:"Base URL"}),x.jsx("input",{id:"ai_base_url",name:"ai_base_url","data-testid":"ai-base-url",placeholder:"optional, OpenAI-compatible",defaultValue:String(((rn=$.ai)==null?void 0:rn.base_url)||"")}),x.jsx("button",{className:"btn primary",type:"submit","data-testid":"btn-save-settings",children:"Save"})]})]})]})]})]})}function fk({review:t,findings:r,aiNote:o,busy:l,onAskAi:a,onCopy:u,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:F0(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:u,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 hk({architecture:t,busy:r,onReindex:o,onReview:l}){const a=t.findings.filter(u=>!u.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 ${H0(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(u=>x.jsxs("div",{className:"muted",children:[x.jsx("strong",{children:u.name})," — ",(u.django_apps||[]).join(", ")||"no apps"," ·"," ",(u.owners||[]).join(", ")||"unowned"]},u.name))]}),x.jsxs("details",{className:"section",children:[x.jsxs("summary",{children:["Rules ",x.jsx("span",{className:"count",children:(t.rules||[]).length})]}),(t.rules||[]).map(u=>x.jsx("div",{className:"muted",children:u},u))]}),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(u=>x.jsxs("div",{className:"finding",children:[x.jsx("span",{className:`chip ${u.severity}`,children:u.severity}),u.message]},u.rule+u.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((u,d)=>d[1]-u[1]).slice(0,12).map(([u,d])=>x.jsxs("tr",{children:[x.jsx("td",{children:Qu(u)}),x.jsx("td",{children:d})]},u))})})]}),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(dk,{})})); diff --git a/src/loadpath/static/assets/index-DA_Qg5fM.css b/src/loadpath/static/assets/index-DDj-QTuJ.css similarity index 95% rename from src/loadpath/static/assets/index-DA_Qg5fM.css rename to src/loadpath/static/assets/index-DDj-QTuJ.css index e948f49..d060519 100644 --- a/src/loadpath/static/assets/index-DA_Qg5fM.css +++ b/src/loadpath/static/assets/index-DDj-QTuJ.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(--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}} +.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;max-width:calc(100% - 24px);overflow-x:hidden;overflow-wrap:break-word;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,.inspector .file,.inspector .muted{overflow-wrap:break-word}.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;max-width:100%;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;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.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-DKfAmZh8.js b/src/loadpath/static/assets/index-DKfAmZh8.js new file mode 100644 index 0000000..31320b2 --- /dev/null +++ b/src/loadpath/static/assets/index-DKfAmZh8.js @@ -0,0 +1,62 @@ +(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 u of a)if(u.type==="childList")for(const d of u.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&l(d)}).observe(document,{childList:!0,subtree:!0});function o(a){const u={};return a.integrity&&(u.integrity=a.integrity),a.referrerPolicy&&(u.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?u.credentials="include":a.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function l(a){if(a.ep)return;a.ep=!0;const u=o(a);fetch(a.href,u)}})();function op(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var mu={exports:{}},Ji={},yu={exports:{}},je={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Of;function I0(){if(Of)return je;Of=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"),u=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,z,re){this.props=j,this.context=z,this.refs=M,this.updater=re||S}k.prototype.isReactComponent={},k.prototype.setState=function(j,z){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,z,"setState")},k.prototype.forceUpdate=function(j){this.updater.enqueueForceUpdate(this,j,"forceUpdate")};function E(){}E.prototype=k.prototype;function T(j,z,re){this.props=j,this.context=z,this.refs=M,this.updater=re||S}var N=T.prototype=new E;N.constructor=T,_(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,z,re){var te,ae={},de=null,ce=null;if(z!=null)for(te in z.ref!==void 0&&(ce=z.ref),z.key!==void 0&&(de=""+z.key),z)b.call(z,te)&&!H.hasOwnProperty(te)&&(ae[te]=z[te]);var Q=arguments.length-2;if(Q===1)ae.children=re;else if(1>>1,z=A[j];if(0>>1;ja(ae,O))dea(ce,ae)?(A[j]=ce,A[de]=O,j=de):(A[j]=ae,A[te]=O,j=te);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 u=performance;t.unstable_now=function(){return u.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,T=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&&!q());){var j=v.callback;if(typeof j=="function"){v.callback=null,g=v.priorityLevel;var z=j(v.expirationTime<=L);L=t.unstable_now(),typeof z=="function"?v.callback=z:v===o(p)&&l(p),N(L)}else l(p);v=o(p)}if(v!==null)var re=!0;else{var te=o(y);te!==null&&V(P,te.startTime-L),re=!1}return re}finally{v=null,g=O,S=!1}}var $=!1,H=null,X=-1,K=5,ne=-1;function q(){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=z,r(p,A),_||S||(_=!0,F(b))),A},t.unstable_shouldYield=q,t.unstable_wrapCallback=function(A){var L=g;return function(){var O=g;g=L;try{return A.apply(this,arguments)}finally{g=O}}}})(wu)),wu}var Bf;function A0(){return Bf||(Bf=1,xu.exports=L0()),xu.exports}/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Uf;function $0(){if(Uf)return _t;Uf=1;var t=mo(),r=A0();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,c,f,w){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=s,this.attributeNamespace=c,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 T(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,T);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,T);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,T);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 c=k.hasOwnProperty(n)?k[n]:null;(c!==null?c.type!==0:s||!(2I||c[w]!==f[I]){var R=` +`+c[w].replace(" at new "," at ");return e.displayName&&R.includes("")&&(R=R.replace("",e.displayName)),R}while(1<=w&&0<=I);break}}}finally{re=!1,Error.prepareStackTrace=i}return(e=e?e.displayName||e.name:"")?z(e):""}function ae(e){switch(e.tag){case 5:return z(e.type);case 16:return z("Lazy");case 13:return z("Suspense");case 19:return z("SuspenseList");case 0:case 2:case 15:return e=te(e.type,!1),e;case 11:return e=te(e.type.render,!1),e;case 1:return e=te(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 q:return(e.displayName||"Context")+".Consumer";case ne:return(e._context.displayName||"Context")+".Provider";case ee: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 he(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 c=i.get,f=i.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return c.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 we(e){e._valueTracker||(e._valueTracker=he(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 Re(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")?rt(e,n.type,i):n.hasOwnProperty("defaultValue")&&rt(e,n.type,Q(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function nt(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 rt(e,n,i){(n!=="number"||me(e.ownerDocument)!==e)&&(i==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+i&&(e.defaultValue=""+i))}var Xe=Array.isArray;function Ge(e,n,i,s){if(e=e.options,n){n={};for(var c=0;c"+n.valueOf().toString()+"",n=ht.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});function $t(e,n){if(n){var i=e.firstChild;if(i&&i===e.lastChild&&i.nodeType===3){i.nodeValue=n;return}}e.textContent=n}var rn={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},Z=["Webkit","ms","Moz","O"];Object.keys(rn).forEach(function(e){Z.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),rn[n]=rn[e]})});function Ee(e,n,i){return n==null||typeof n=="boolean"||n===""?"":i||typeof n!="number"||n===0||rn.hasOwnProperty(e)&&rn[e]?(""+n).trim():n+"px"}function $e(e,n){e=e.style;for(var i in n)if(n.hasOwnProperty(i)){var s=i.indexOf("--")===0,c=Ee(i,n[i],s);i==="float"&&(i="cssFloat"),s?e.setProperty(i,c):e[i]=c}}var Cn=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 mt(e,n){if(n){if(Cn[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 di(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 fi=null;function hi(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var pi=null,jn=null,Mn=null;function Eo(e){if(e=Oi(e)){if(typeof pi!="function")throw Error(o(280));var n=e.stateNode;n&&(n=es(n),pi(e.stateNode,e.type,n))}}function No(e){jn?Mn?Mn.push(e):Mn=[e]:jn=e}function Co(){if(jn){var e=jn,n=Mn;if(Mn=jn=null,Eo(e),n)for(e=0;e>>=0,e===0?32:31-(Al(e)/$l|0)|0}var Ir=64,Tr=4194304;function nr(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 pn(e,n){var i=e.pendingLanes;if(i===0)return 0;var s=0,c=e.suspendedLanes,f=e.pingedLanes,w=i&268435455;if(w!==0){var I=w&~c;I!==0?s=nr(I):(f&=w,f!==0&&(s=nr(f)))}else w=i&~c,w!==0?s=nr(w):f!==0&&(s=nr(f));if(s===0)return 0;if(n!==0&&n!==s&&(n&c)===0&&(c=s&-s,f=n&-n,c>=f||c===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 ir(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 bl(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=Pi),Ic=" ",Tc=!1;function zc(e,n){switch(e){case"keyup":return Nm.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Rc(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ar=!1;function jm(e,n){switch(e){case"compositionend":return Rc(n);case"keypress":return n.which!==32?null:(Tc=!0,Ic);case"textInput":return e=n.data,e===Ic&&Tc?null:e;default:return null}}function Mm(e,n){if(Ar)return e==="compositionend"||!Gl&&zc(e,n)?(e=Ec(),Bo=Ul=Rn=null,Ar=!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=Fc(i)}}function Vc(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?Vc(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function Bc(){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 Jl(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 Dm(e){var n=Bc(),i=e.focusedElem,s=e.selectionRange;if(n!==i&&i&&i.ownerDocument&&Vc(i.ownerDocument.documentElement,i)){if(s!==null&&Jl(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 c=i.textContent.length,f=Math.min(s.start,c);s=s.end===void 0?f:Math.min(s.end,c),!e.extend&&f>s&&(c=s,s=f,f=c),c=Hc(i,f);var w=Hc(i,s);c&&w&&(e.rangeCount!==1||e.anchorNode!==c.node||e.anchorOffset!==c.offset||e.focusNode!==w.node||e.focusOffset!==w.offset)&&(n=n.createRange(),n.setStart(c.node,c.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,$r=null,ea=null,Ri=null,ta=!1;function Uc(e,n,i){var s=i.window===i?i.document:i.nodeType===9?i:i.ownerDocument;ta||$r==null||$r!==me(s)||(s=$r,"selectionStart"in s&&Jl(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}),Ri&&zi(Ri,s)||(Ri=s,s=qo(ea,"onSelect"),0Hr||(e.current=ha[Hr],ha[Hr]=null,Hr--)}function Ae(e,n){Hr++,ha[Hr]=e.current,e.current=n}var Dn={},at=$n(Dn),yt=$n(!1),sr=Dn;function Vr(e,n){var i=e.type.contextTypes;if(!i)return Dn;var s=e.stateNode;if(s&&s.__reactInternalMemoizedUnmaskedChildContext===n)return s.__reactInternalMemoizedMaskedChildContext;var c={},f;for(f in i)c[f]=n[f];return s&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=c),c}function vt(e){return e=e.childContextTypes,e!=null}function ts(){Oe(yt),Oe(at)}function od(e,n,i){if(at.current!==Dn)throw Error(o(168));Ae(at,n),Ae(yt,i)}function sd(e,n,i){var s=e.stateNode;if(n=n.childContextTypes,typeof s.getChildContext!="function")return i;s=s.getChildContext();for(var c in s)if(!(c in n))throw Error(o(108,ce(e)||"Unknown",c));return O({},i,s)}function ns(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Dn,sr=at.current,Ae(at,e),Ae(yt,yt.current),!0}function ld(e,n,i){var s=e.stateNode;if(!s)throw Error(o(169));i?(e=sd(e,n,sr),s.__reactInternalMemoizedMergedChildContext=e,Oe(yt),Oe(at),Ae(at,e)):Oe(yt),Ae(yt,i)}var mn=null,rs=!1,pa=!1;function ad(e){mn===null?mn=[e]:mn.push(e)}function Km(e){rs=!0,ad(e)}function On(){if(!pa&&mn!==null){pa=!0;var e=0,n=Le;try{var i=mn;for(Le=1;e>=w,c-=w,yn=1<<32-Ct(n)+c|i<Ne?(tt=ke,ke=null):tt=ke.sibling;var ze=ie(U,ke,Y[Ne],ue);if(ze===null){ke===null&&(ke=tt);break}e&&ke&&ze.alternate===null&&n(U,ke),D=f(ze,D,Ne),_e===null?xe=ze:_e.sibling=ze,_e=ze,ke=tt}if(Ne===Y.length)return i(U,ke),Fe&&ar(U,Ne),xe;if(ke===null){for(;NeNe?(tt=ke,ke=null):tt=ke.sibling;var Xn=ie(U,ke,ze.value,ue);if(Xn===null){ke===null&&(ke=tt);break}e&&ke&&Xn.alternate===null&&n(U,ke),D=f(Xn,D,Ne),_e===null?xe=Xn:_e.sibling=Xn,_e=Xn,ke=tt}if(ze.done)return i(U,ke),Fe&&ar(U,Ne),xe;if(ke===null){for(;!ze.done;Ne++,ze=Y.next())ze=le(U,ze.value,ue),ze!==null&&(D=f(ze,D,Ne),_e===null?xe=ze:_e.sibling=ze,_e=ze);return Fe&&ar(U,Ne),xe}for(ke=s(U,ke);!ze.done;Ne++,ze=Y.next())ze=fe(ke,U,Ne,ze.value,ue),ze!==null&&(e&&ze.alternate!==null&&ke.delete(ze.key===null?Ne:ze.key),D=f(ze,D,Ne),_e===null?xe=ze:_e.sibling=ze,_e=ze);return e&&ke.forEach(function(P0){return n(U,P0)}),Fe&&ar(U,Ne),xe}function Ye(U,D,Y,ue){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,_e=D;_e!==null;){if(_e.key===xe){if(xe=Y.type,xe===H){if(_e.tag===7){i(U,_e.sibling),D=c(_e,Y.props.children),D.return=U,U=D;break e}}else if(_e.elementType===xe||typeof xe=="object"&&xe!==null&&xe.$$typeof===F&&pd(xe)===_e.type){i(U,_e.sibling),D=c(_e,Y.props),D.ref=bi(U,_e,Y),D.return=U,U=D;break e}i(U,_e);break}else n(U,_e);_e=_e.sibling}Y.type===H?(D=mr(Y.props.children,U.mode,ue,Y.key),D.return=U,U=D):(ue=Ts(Y.type,Y.key,Y.props,null,U.mode,ue),ue.ref=bi(U,D,Y),ue.return=U,U=ue)}return w(U);case $:e:{for(_e=Y.key;D!==null;){if(D.key===_e)if(D.tag===4&&D.stateNode.containerInfo===Y.containerInfo&&D.stateNode.implementation===Y.implementation){i(U,D.sibling),D=c(D,Y.children||[]),D.return=U,U=D;break e}else{i(U,D);break}else n(U,D);D=D.sibling}D=du(Y,U.mode,ue),D.return=U,U=D}return w(U);case F:return _e=Y._init,Ye(U,D,_e(Y._payload),ue)}if(Xe(Y))return ge(U,D,Y,ue);if(L(Y))return ye(U,D,Y,ue);ls(U,Y)}return typeof Y=="string"&&Y!==""||typeof Y=="number"?(Y=""+Y,D!==null&&D.tag===6?(i(U,D.sibling),D=c(D,Y),D.return=U,U=D):(i(U,D),D=cu(Y,U.mode,ue),D.return=U,U=D),w(U)):i(U,D)}return Ye}var Yr=gd(!0),md=gd(!1),as=$n(null),us=null,Xr=null,wa=null;function Sa(){wa=Xr=us=null}function _a(e){var n=as.current;Oe(as),e._currentValue=n}function ka(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 Qr(e,n){us=e,wa=Xr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&n)!==0&&(xt=!0),e.firstContext=null)}function bt(e){var n=e._currentValue;if(wa!==e)if(e={context:e,memoizedValue:n,next:null},Xr===null){if(us===null)throw Error(o(308));Xr=e,us.dependencies={lanes:0,firstContext:e}}else Xr=Xr.next=e;return n}var ur=null;function Ea(e){ur===null?ur=[e]:ur.push(e)}function yd(e,n,i,s){var c=n.interleaved;return c===null?(i.next=i,Ea(n)):(i.next=c.next,c.next=i),n.interleaved=i,xn(e,s)}function xn(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 bn=!1;function Na(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function vd(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 wn(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function Fn(e,n,i){var s=e.updateQueue;if(s===null)return null;if(s=s.shared,(Ie&2)!==0){var c=s.pending;return c===null?n.next=n:(n.next=c.next,c.next=n),s.pending=n,xn(e,i)}return c=s.interleaved,c===null?(n.next=n,Ea(s)):(n.next=c.next,c.next=n),s.interleaved=n,xn(e,i)}function cs(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,zr(e,i)}}function xd(e,n){var i=e.updateQueue,s=e.alternate;if(s!==null&&(s=s.updateQueue,i===s)){var c=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?c=f=w:f=f.next=w,i=i.next}while(i!==null);f===null?c=f=n:f=f.next=n}else c=f=n;i={baseState:s.baseState,firstBaseUpdate:c,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 ds(e,n,i,s){var c=e.updateQueue;bn=!1;var f=c.firstBaseUpdate,w=c.lastBaseUpdate,I=c.shared.pending;if(I!==null){c.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=c.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:bn=!0}}I.callback!==null&&I.lane!==0&&(e.flags|=64,ie=c.effects,ie===null?c.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=c.shared.pending,I===null)break;ie=I,I=ie.next,ie.next=null,c.lastBaseUpdate=ie,c.shared.pending=null}}while(!0);if(oe===null&&(R=le),c.baseState=R,c.firstBaseUpdate=G,c.lastBaseUpdate=oe,n=c.shared.interleaved,n!==null){c=n;do w|=c.lane,c=c.next;while(c!==n)}else f===null&&(c.shared.lanes=0);fr|=w,e.lanes=w,e.memoizedState=le}}function wd(e,n,i){if(e=n.effects,n.effects=null,e!==null)for(n=0;ni?i:4,e(!0);var s=Ia.transition;Ia.transition={};try{e(!1),n()}finally{Le=i,Ia.transition=s}}function bd(){return Ft().memoizedState}function Jm(e,n,i){var s=Un(e);if(i={lane:s,action:i,hasEagerState:!1,eagerState:null,next:null},Fd(e))Hd(n,i);else if(i=yd(e,n,i,s),i!==null){var c=gt();Kt(i,e,s,c),Vd(i,n,s)}}function e0(e,n,i){var s=Un(e),c={lane:s,action:i,hasEagerState:!1,eagerState:null,next:null};if(Fd(e))Hd(n,c);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(c.hasEagerState=!0,c.eagerState=I,Ut(I,w)){var R=n.interleaved;R===null?(c.next=c,Ea(n)):(c.next=R.next,R.next=c),n.interleaved=c;return}}catch{}finally{}i=yd(e,n,c,s),i!==null&&(c=gt(),Kt(i,e,s,c),Vd(i,n,s))}}function Fd(e){var n=e.alternate;return e===Be||n!==null&&n===Be}function Hd(e,n){Bi=ps=!0;var i=e.pending;i===null?n.next=n:(n.next=i.next,i.next=n),e.pending=n}function Vd(e,n,i){if((i&4194240)!==0){var s=n.lanes;s&=e.pendingLanes,i|=s,n.lanes=i,zr(e,i)}}var ys={readContext:bt,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},t0={readContext:bt,useCallback:function(e,n){return an().memoizedState=[e,n===void 0?null:n],e},useContext:bt,useEffect:Td,useImperativeHandle:function(e,n,i){return i=i!=null?i.concat([e]):null,gs(4194308,4,Ld.bind(null,n,e),i)},useLayoutEffect:function(e,n){return gs(4194308,4,e,n)},useInsertionEffect:function(e,n){return gs(4,2,e,n)},useMemo:function(e,n){var i=an();return n=n===void 0?null:n,e=e(),i.memoizedState=[e,n],e},useReducer:function(e,n,i){var s=an();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=Jm.bind(null,Be,e),[s.memoizedState,e]},useRef:function(e){var n=an();return e={current:e},n.memoizedState=e},useState:Pd,useDebugValue:Da,useDeferredValue:function(e){return an().memoizedState=e},useTransition:function(){var e=Pd(!1),n=e[0];return e=Zm.bind(null,e[1]),an().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,i){var s=Be,c=an();if(Fe){if(i===void 0)throw Error(o(407));i=i()}else{if(i=n(),et===null)throw Error(o(349));(dr&30)!==0||Ed(s,n,i)}c.memoizedState=i;var f={value:i,getSnapshot:n};return c.queue=f,Td(Cd.bind(null,s,f,e),[e]),s.flags|=2048,Yi(9,Nd.bind(null,s,f,i,n),void 0,null),i},useId:function(){var e=an(),n=et.identifierPrefix;if(Fe){var i=vn,s=yn;i=(s&~(1<<32-Ct(s)-1)).toString(32)+i,n=":"+n+"R"+i,i=Ui++,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[sn]=n,e[Di]=s,uf(e,n,!1,!1),n.stateNode=e;e:{switch(w=di(i,s),i){case"dialog":De("cancel",e),De("close",e),c=s;break;case"iframe":case"object":case"embed":De("load",e),c=s;break;case"video":case"audio":for(c=0;cJr&&(n.flags|=128,s=!0,Xi(f,!1),n.lanes=4194304)}else{if(!s)if(e=fs(w),e!==null){if(n.flags|=128,s=!0,i=e.updateQueue,i!==null&&(n.updateQueue=i,n.flags|=4),Xi(f,!0),f.tail===null&&f.tailMode==="hidden"&&!w.alternate&&!Fe)return ct(n),null}else 2*He()-f.renderingStartTime>Jr&&i!==1073741824&&(n.flags|=128,s=!0,Xi(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,Ae(Ve,s?i&1|2:i&1),n):(ct(n),null);case 22:case 23:return lu(),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 u0(e,n){switch(ma(n),n.tag){case 1:return vt(n.type)&&ts(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return Kr(),Oe(yt),Oe(at),Pa(),e=n.flags,(e&65536)!==0&&(e&128)===0?(n.flags=e&-65537|128,n):null;case 5:return ja(n),null;case 13:if(Oe(Ve),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(o(340));Wr()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return Oe(Ve),null;case 4:return Kr(),null;case 10:return _a(n.type._context),null;case 22:case 23:return lu(),null;case 24:return null;default:return null}}var Ss=!1,dt=!1,c0=typeof WeakSet=="function"?WeakSet:Set,pe=null;function qr(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 Ka(e,n,i){try{i()}catch(s){We(e,n,s)}}var ff=!1;function d0(e,n){if(la=Ho,e=Bc(),Jl(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 c=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||c!==0&&le.nodeType!==3||(I=w+c),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===c&&(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(aa={focusedElem:e,selectionRange:i},Ho=!1,pe=n;pe!==null;)if(n=pe,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,pe=e;else for(;pe!==null;){n=pe;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:Yt(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(ue){We(n,n.return,ue)}if(e=n.sibling,e!==null){e.return=n.return,pe=e;break}pe=n.return}return ge=ff,ff=!1,ge}function Qi(e,n,i){var s=n.updateQueue;if(s=s!==null?s.lastEffect:null,s!==null){var c=s=s.next;do{if((c.tag&e)===e){var f=c.destroy;c.destroy=void 0,f!==void 0&&Ka(n,i,f)}c=c.next}while(c!==s)}}function _s(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 Ga(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 hf(e){var n=e.alternate;n!==null&&(e.alternate=null,hf(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[sn],delete n[Di],delete n[fa],delete n[Xm],delete n[Qm])),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 pf(e){return e.tag===5||e.tag===3||e.tag===4}function gf(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||pf(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 qa(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=Jo));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}function Za(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(Za(e,n,i),e=e.sibling;e!==null;)Za(e,n,i),e=e.sibling}var ot=null,Xt=!1;function Hn(e,n,i){for(i=i.child;i!==null;)mf(e,n,i),i=i.sibling}function mf(e,n,i){if(Nt&&typeof Nt.onCommitFiberUnmount=="function")try{Nt.onCommitFiberUnmount(Pr,i)}catch{}switch(i.tag){case 5:dt||qr(i,n);case 6:var s=ot,c=Xt;ot=null,Hn(e,n,i),ot=s,Xt=c,ot!==null&&(Xt?(e=ot,i=i.stateNode,e.nodeType===8?e.parentNode.removeChild(i):e.removeChild(i)):ot.removeChild(i.stateNode));break;case 18:ot!==null&&(Xt?(e=ot,i=i.stateNode,e.nodeType===8?da(e.parentNode,i):e.nodeType===1&&da(e,i),Ci(e)):da(ot,i.stateNode));break;case 4:s=ot,c=Xt,ot=i.stateNode.containerInfo,Xt=!0,Hn(e,n,i),ot=s,Xt=c;break;case 0:case 11:case 14:case 15:if(!dt&&(s=i.updateQueue,s!==null&&(s=s.lastEffect,s!==null))){c=s=s.next;do{var f=c,w=f.destroy;f=f.tag,w!==void 0&&((f&2)!==0||(f&4)!==0)&&Ka(i,n,w),c=c.next}while(c!==s)}Hn(e,n,i);break;case 1:if(!dt&&(qr(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)}Hn(e,n,i);break;case 21:Hn(e,n,i);break;case 22:i.mode&1?(dt=(s=dt)||i.memoizedState!==null,Hn(e,n,i),dt=s):Hn(e,n,i);break;default:Hn(e,n,i)}}function yf(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var i=e.stateNode;i===null&&(i=e.stateNode=new c0),n.forEach(function(s){var c=w0.bind(null,e,s);i.has(s)||(i.add(s),s.then(c,c))})}}function Qt(e,n){var i=n.deletions;if(i!==null)for(var s=0;sc&&(c=w),s&=~f}if(s=c,s=He()-s,s=(120>s?120:480>s?480:1080>s?1080:1920>s?1920:3e3>s?3e3:4320>s?4320:1960*h0(s/1960))-s,10e?16:e,Bn===null)var s=!1;else{if(e=Bn,Bn=null,js=0,(Ie&6)!==0)throw Error(o(331));var c=Ie;for(Ie|=4,pe=e.current;pe!==null;){var f=pe,w=f.child;if((pe.flags&16)!==0){var I=f.deletions;if(I!==null){for(var R=0;RHe()-tu?pr(e,0):eu|=i),St(e,n)}function If(e,n){n===0&&((e.mode&1)===0?n=1:(n=Tr,Tr<<=1,(Tr&130023424)===0&&(Tr=4194304)));var i=gt();e=xn(e,n),e!==null&&(ir(e,n,i),St(e,i))}function x0(e){var n=e.memoizedState,i=0;n!==null&&(i=n.retryLane),If(e,i)}function w0(e,n){var i=0;switch(e.tag){case 13:var s=e.stateNode,c=e.memoizedState;c!==null&&(i=c.retryLane);break;case 19:s=e.stateNode;break;default:throw Error(o(314))}s!==null&&s.delete(n),If(e,i)}var Tf;Tf=function(e,n,i){if(e!==null)if(e.memoizedProps!==n.pendingProps||yt.current)xt=!0;else{if((e.lanes&i)===0&&(n.flags&128)===0)return xt=!1,l0(e,n,i);xt=(e.flags&131072)!==0}else xt=!1,Fe&&(n.flags&1048576)!==0&&ud(n,os,n.index);switch(n.lanes=0,n.tag){case 2:var s=n.type;ws(e,n),e=n.pendingProps;var c=Vr(n,at.current);Qr(n,i),c=za(null,n,s,e,c,i);var f=Ra();return n.flags|=1,typeof c=="object"&&c!==null&&typeof c.render=="function"&&c.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,vt(s)?(f=!0,ns(n)):f=!1,n.memoizedState=c.state!==null&&c.state!==void 0?c.state:null,Na(n),c.updater=vs,n.stateNode=c,c._reactInternals=n,ba(n,s,e,i),n=Ba(null,n,s,!0,f,i)):(n.tag=0,Fe&&f&&ga(n),pt(null,n,c,i),n=n.child),n;case 16:s=n.elementType;e:{switch(ws(e,n),e=n.pendingProps,c=s._init,s=c(s._payload),n.type=s,c=n.tag=_0(s),e=Yt(s,e),c){case 0:n=Va(null,n,s,e,i);break e;case 1:n=nf(null,n,s,e,i);break e;case 11:n=qd(null,n,s,e,i);break e;case 14:n=Zd(null,n,s,Yt(s.type,e),i);break e}throw Error(o(306,s,""))}return n;case 0:return s=n.type,c=n.pendingProps,c=n.elementType===s?c:Yt(s,c),Va(e,n,s,c,i);case 1:return s=n.type,c=n.pendingProps,c=n.elementType===s?c:Yt(s,c),nf(e,n,s,c,i);case 3:e:{if(rf(n),e===null)throw Error(o(387));s=n.pendingProps,f=n.memoizedState,c=f.element,vd(e,n),ds(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){c=Gr(Error(o(423)),n),n=of(e,n,s,i,c);break e}else if(s!==c){c=Gr(Error(o(424)),n),n=of(e,n,s,i,c);break e}else for(Pt=An(n.stateNode.containerInfo.firstChild),Mt=n,Fe=!0,Wt=null,i=md(n,null,s,i),n.child=i;i;)i.flags=i.flags&-3|4096,i=i.sibling;else{if(Wr(),s===c){n=Sn(e,n,i);break e}pt(e,n,s,i)}n=n.child}return n;case 5:return Sd(n),e===null&&va(n),s=n.type,c=n.pendingProps,f=e!==null?e.memoizedProps:null,w=c.children,ua(s,c)?w=null:f!==null&&ua(s,f)&&(n.flags|=32),tf(e,n),pt(e,n,w,i),n.child;case 6:return e===null&&va(n),null;case 13:return sf(e,n,i);case 4:return Ca(n,n.stateNode.containerInfo),s=n.pendingProps,e===null?n.child=Yr(n,null,s,i):pt(e,n,s,i),n.child;case 11:return s=n.type,c=n.pendingProps,c=n.elementType===s?c:Yt(s,c),qd(e,n,s,c,i);case 7:return pt(e,n,n.pendingProps,i),n.child;case 8:return pt(e,n,n.pendingProps.children,i),n.child;case 12:return pt(e,n,n.pendingProps.children,i),n.child;case 10:e:{if(s=n.type._context,c=n.pendingProps,f=n.memoizedProps,w=c.value,Ae(as,s._currentValue),s._currentValue=w,f!==null)if(Ut(f.value,w)){if(f.children===c.children&&!yt.current){n=Sn(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=wn(-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),ka(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),ka(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}pt(e,n,c.children,i),n=n.child}return n;case 9:return c=n.type,s=n.pendingProps.children,Qr(n,i),c=bt(c),s=s(c),n.flags|=1,pt(e,n,s,i),n.child;case 14:return s=n.type,c=Yt(s,n.pendingProps),c=Yt(s.type,c),Zd(e,n,s,c,i);case 15:return Jd(e,n,n.type,n.pendingProps,i);case 17:return s=n.type,c=n.pendingProps,c=n.elementType===s?c:Yt(s,c),ws(e,n),n.tag=1,vt(s)?(e=!0,ns(n)):e=!1,Qr(n,i),Ud(n,s,c),ba(n,s,c,i),Ba(null,n,s,!0,e,i);case 19:return af(e,n,i);case 22:return ef(e,n,i)}throw Error(o(156,n.tag))};function zf(e,n){return zo(e,n)}function S0(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 Vt(e,n,i,s){return new S0(e,n,i,s)}function uu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function _0(e){if(typeof e=="function")return uu(e)?1:0;if(e!=null){if(e=e.$$typeof,e===ee)return 11;if(e===B)return 14}return 2}function Yn(e,n){var i=e.alternate;return i===null?(i=Vt(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 Ts(e,n,i,s,c,f){var w=2;if(s=e,typeof e=="function")uu(e)&&(w=1);else if(typeof e=="string")w=5;else e:switch(e){case H:return mr(i.children,c,f,n);case X:w=8,c|=8;break;case K:return e=Vt(12,i,n,c|2),e.elementType=K,e.lanes=f,e;case J:return e=Vt(13,i,n,c),e.elementType=J,e.lanes=f,e;case C:return e=Vt(19,i,n,c),e.elementType=C,e.lanes=f,e;case V:return zs(i,c,f,n);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ne:w=10;break e;case q:w=9;break e;case ee: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=Vt(w,i,n,c),n.elementType=e,n.type=s,n.lanes=f,n}function mr(e,n,i,s){return e=Vt(7,e,s,n),e.lanes=i,e}function zs(e,n,i,s){return e=Vt(22,e,s,n),e.elementType=V,e.lanes=i,e.stateNode={isHidden:!1},e}function cu(e,n,i){return e=Vt(6,e,null,n),e.lanes=i,e}function du(e,n,i){return n=Vt(4,e.children!==null?e.children:[],e.key,n),n.lanes=i,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function k0(e,n,i,s,c){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=rr(0),this.expirationTimes=rr(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=rr(0),this.identifierPrefix=s,this.onRecoverableError=c,this.mutableSourceEagerHydrationData=null}function fu(e,n,i,s,c,f,w,I,R){return e=new k0(e,n,i,I,R),n===1?(n=1,f===!0&&(n|=8)):n=0,f=Vt(3,null,null,n),e.current=f,f.stateNode=e,f.memoizedState={element:s,isDehydrated:i,cache:null,transitions:null,pendingSuspenseBoundaries:null},Na(f),e}function E0(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(),vu.exports=$0(),vu.exports}var Yf;function D0(){if(Yf)return bs;Yf=1;var t=sp();return bs.createRoot=t.createRoot,bs.hydrateRoot=t.hydrateRoot,bs}var O0=D0();function b0(t,r="Request failed"){const o=(t||"").trim();if(!o)return r;try{const a=JSON.parse(o).detail;if(typeof a=="string"&&a.trim())return a;if(Array.isArray(a)){const u=a.map(d=>typeof d=="string"?d:d&&typeof d=="object"&&"msg"in d?String(d.msg):"").filter(Boolean);if(u.length)return u.join("; ")}}catch{}return o}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(b0(l,o.statusText||"Request failed"))}return o.json()}const F0=["github_token","bitbucket_token","ai_api_key","ai_model","ai_base_url"],kt={health:()=>Tt("/api/health"),settings:()=>Tt("/api/settings"),saveSettings:t=>{const r={...t};for(const o of F0)r[o]===""&&delete r[o];return Tt("/api/settings",{method:"PUT",body:JSON.stringify(r)})},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 H0(t){return t.replaceAll("_"," ")}function Ku(t){return t.split(".").pop()||t}function V0(t){if(!t)return"";const r=new Date(t);return Number.isNaN(r.getTime())?t:r.toLocaleString()}function Fs(t){return t.replace(/([/\\._:@-])/g,"$1​")}function yo({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(yo,{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 U0({className:t}){return x.jsxs(yo,{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 W0({className:t}){return x.jsxs(yo,{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 Y0({className:t}){return x.jsxs(yo,{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 X0({className:t}){return x.jsxs(yo,{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 Ke(t){if(typeof t=="string"||typeof t=="number")return""+t;let r="";if(Array.isArray(t))for(let o=0,l;o{}};function pl(){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}})}Gs.prototype=pl.prototype={constructor:Gs,on:function(t,r){var o=this._,l=K0(t+"",o),a,u=-1,d=l.length;if(arguments.length<2){for(;++u0)for(var o=new Array(a),l=0,a,u;l=0&&(r=t.slice(0,o))!=="xmlns"&&(t=t.slice(o+1)),Qf.hasOwnProperty(r)?{space:Qf[r],local:t}:t}function q0(t){return function(){var r=this.ownerDocument,o=this.namespaceURI;return o===Au&&r.documentElement.namespaceURI===Au?r.createElement(t):r.createElementNS(o,t)}}function Z0(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function lp(t){var r=gl(t);return(r.local?Z0:q0)(r)}function J0(){}function Gu(t){return t==null?J0:function(){return this.querySelector(t)}}function ey(t){typeof t!="function"&&(t=Gu(t));for(var r=this._groups,o=r.length,l=new Array(o),a=0;a=N&&(N=T+1);!(b=k[N])&&++N<_;);P._next=b||null}}return d=new Rt(d,l),d._enter=h,d._exit=p,d}function wy(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}function Sy(){return new Rt(this._exit||this._groups.map(dp),this._parents)}function _y(t,r,o){var l=this.enter(),a=this,u=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?u.remove():o(u),l&&a?l.merge(a).order():a}function ky(t){for(var r=t.selection?t.selection():t,o=this._groups,l=r._groups,a=o.length,u=l.length,d=Math.min(a,u),h=new Array(a),p=0;p=0;)(d=l[a])&&(u&&d.compareDocumentPosition(u)^4&&u.parentNode.insertBefore(d,u),u=d);return this}function Ny(t){t||(t=Cy);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),u=0;ur?1:t>=r?0:NaN}function jy(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function My(){return Array.from(this)}function Py(){for(var t=this._groups,r=0,o=t.length;r1?this.each((r==null?Fy:typeof r=="function"?Vy:Hy)(t,r,o??"")):oi(this.node(),t)}function oi(t,r){return t.style.getPropertyValue(r)||fp(t).getComputedStyle(t,null).getPropertyValue(r)}function Uy(t){return function(){delete this[t]}}function Wy(t,r){return function(){this[t]=r}}function Yy(t,r){return function(){var o=r.apply(this,arguments);o==null?delete this[t]:this[t]=o}}function Xy(t,r){return arguments.length>1?this.each((r==null?Uy:typeof r=="function"?Yy:Wy)(t,r)):this.node()[t]}function hp(t){return t.trim().split(/^|\s+/)}function qu(t){return t.classList||new pp(t)}function pp(t){this._node=t,this._names=hp(t.getAttribute("class")||"")}pp.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 gp(t,r){for(var o=qu(t),l=-1,a=r.length;++l=0&&(o=r.slice(l+1),r=r.slice(0,l)),{type:r,name:o}})}function Sv(t){return function(){var r=this.__on;if(r){for(var o=0,l=-1,a=r.length,u;o()=>t;function $u(t,{sourceEvent:r,subject:o,target:l,identifier:a,active:u,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:u,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}})}$u.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function Tv(t){return!t.ctrlKey&&!t.button}function zv(){return this.parentNode}function Rv(t,r){return r??{x:t.x,y:t.y}}function Lv(){return navigator.maxTouchPoints||"ontouchstart"in this}function Sp(){var t=Tv,r=zv,o=Rv,l=Lv,a={},u=pl("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,Iv).on("touchend.drag touchcancel.drag",T).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",_,so).on("mouseup.drag",M,so),xp(P.view),Su(P),y=!1,h=P.clientX,p=P.clientY,$("start",P))}}function _(P){if(ri(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),wp(P.view,y),ri(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?Vs(r>>24&255,r>>16&255,r>>8&255,(r&255)/255):o===4?Vs(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=$v.exec(t))?new Et(r[1],r[2],r[3],1):(r=Dv.exec(t))?new Et(r[1]*255/100,r[2]*255/100,r[3]*255/100,1):(r=Ov.exec(t))?Vs(r[1],r[2],r[3],r[4]):(r=bv.exec(t))?Vs(r[1]*255/100,r[2]*255/100,r[3]*255/100,r[4]):(r=Fv.exec(t))?th(r[1],r[2]/100,r[3]/100,1):(r=Hv.exec(t))?th(r[1],r[2]/100,r[3]/100,r[4]):Kf.hasOwnProperty(t)?Zf(Kf[t]):t==="transparent"?new Et(NaN,NaN,NaN,0):null}function Zf(t){return new Et(t>>16&255,t>>8&255,t&255,1)}function Vs(t,r,o,l){return l<=0&&(t=r=o=NaN),new Et(t,r,o,l)}function Uv(t){return t instanceof xo||(t=Sr(t)),t?(t=t.rgb(),new Et(t.r,t.g,t.b,t.opacity)):new Et}function Du(t,r,o,l){return arguments.length===1?Uv(t):new Et(t,r,o,l??1)}function Et(t,r,o,l){this.r=+t,this.g=+r,this.b=+o,this.opacity=+l}Zu(Et,Du,_p(xo,{brighter(t){return t=t==null?nl:Math.pow(nl,t),new Et(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?lo:Math.pow(lo,t),new Et(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Et(xr(this.r),xr(this.g),xr(this.b),rl(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:Jf,formatHex:Jf,formatHex8:Wv,formatRgb:eh,toString:eh}));function Jf(){return`#${vr(this.r)}${vr(this.g)}${vr(this.b)}`}function Wv(){return`#${vr(this.r)}${vr(this.g)}${vr(this.b)}${vr((isNaN(this.opacity)?1:this.opacity)*255)}`}function eh(){const t=rl(this.opacity);return`${t===1?"rgb(":"rgba("}${xr(this.r)}, ${xr(this.g)}, ${xr(this.b)}${t===1?")":`, ${t})`}`}function rl(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function xr(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function vr(t){return t=xr(t),(t<16?"0":"")+t.toString(16)}function th(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 kp(t){if(t instanceof qt)return new qt(t.h,t.s,t.l,t.opacity);if(t instanceof xo||(t=Sr(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),u=Math.max(r,o,l),d=NaN,h=u-a,p=(u+a)/2;return h?(r===u?d=(o-l)/h+(o0&&p<1?0:d,new qt(d,h,p,t.opacity)}function Yv(t,r,o,l){return arguments.length===1?kp(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}Zu(qt,Yv,_p(xo,{brighter(t){return t=t==null?nl:Math.pow(nl,t),new qt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?lo:Math.pow(lo,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 Et(_u(t>=240?t-240:t+120,a,l),_u(t,a,l),_u(t<120?t+240:t-120,a,l),this.opacity)},clamp(){return new qt(nh(this.h),Bs(this.s),Bs(this.l),rl(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=rl(this.opacity);return`${t===1?"hsl(":"hsla("}${nh(this.h)}, ${Bs(this.s)*100}%, ${Bs(this.l)*100}%${t===1?")":`, ${t})`}`}}));function nh(t){return t=(t||0)%360,t<0?t+360:t}function Bs(t){return Math.max(0,Math.min(1,t||0))}function _u(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 Ju=t=>()=>t;function Xv(t,r){return function(o){return t+o*r}}function Qv(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 Kv(t){return(t=+t)==1?Ep:function(r,o){return o-r?Qv(r,o,t):Ju(isNaN(r)?o:r)}}function Ep(t,r){var o=r-t;return o?Xv(t,o):Ju(isNaN(t)?r:t)}const il=(function t(r){var o=Kv(r);function l(a,u){var d=o((a=Du(a)).r,(u=Du(u)).r),h=o(a.g,u.g),p=o(a.b,u.b),y=Ep(a.opacity,u.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 Gv(t,r){r||(r=[]);var o=t?Math.min(r.length,t.length):0,l=r.slice(),a;return function(u){for(a=0;ao&&(u=r.slice(o,u),h[d]?h[d]+=u:h[++d]=u),(l=l[0])===(a=a[0])?h[d]?h[d]+=a:h[++d]=a:(h[++d]=null,p.push({i:d,x:cn(l,a)})),o=ku.lastIndex;return o180?m+=360:m-y>180&&(y+=360),g.push({i:v.push(a(v)+"rotate(",null,l)-2,x:cn(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:cn(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:cn(y,v)},{i:M-2,x:cn(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),u(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;--si}function oh(){_r=(sl=uo.now())+ml,si=no=0;try{dx()}finally{si=0,hx(),_r=0}}function fx(){var t=uo.now(),r=t-sl;r>Mp&&(ml-=r,sl=t)}function hx(){for(var t,r=ol,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:ol=o);ro=t,Fu(l)}function Fu(t){if(!si){no&&(no=clearTimeout(no));var r=t-_r;r>24?(t<1/0&&(no=setTimeout(oh,t-uo.now()-ml)),eo&&(eo=clearInterval(eo))):(eo||(sl=uo.now(),eo=setInterval(fx,Mp)),si=1,Pp(oh))}}function sh(t,r,o){var l=new ll;return r=r==null?0:+r,l.restart(a=>{l.stop(),t(a+r)},r,o),l}var px=pl("start","end","cancel","interrupt"),gx=[],Tp=0,lh=1,Hu=2,Zs=3,ah=4,Vu=5,Js=6;function yl(t,r,o,l,a,u){var d=t.__transition;if(!d)t.__transition={};else if(o in d)return;mx(t,o,{name:r,index:l,group:a,on:px,tween:gx,time:u.time,delay:u.delay,duration:u.duration,ease:u.ease,timer:null,state:Tp})}function tc(t,r){var o=tn(t,r);if(o.state>Tp)throw new Error("too late; already scheduled");return o}function fn(t,r){var o=tn(t,r);if(o.state>Zs)throw new Error("too late; already running");return o}function tn(t,r){var o=t.__transition;if(!o||!(o=o[r]))throw new Error("transition not found");return o}function mx(t,r,o){var l=t.__transition,a;l[r]=o,o.timer=Ip(u,0,o.time);function u(y){o.state=lh,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!==lh)return p();for(m in l)if(S=l[m],S.name===o.name){if(S.state===Zs)return sh(d);S.state===ah?(S.state=Js,S.timer.stop(),S.on.call("interrupt",t,t.__data__,S.index,S.group),delete l[m]):+mHu&&l.state=0&&(r=r.slice(0,o)),!r||r==="start"})}function Yx(t,r,o){var l,a,u=Wx(r)?tc:fn;return function(){var d=u(this,t),h=d.on;h!==l&&(a=(l=h).copy()).on(r,o),d.on=a}}function Xx(t,r){var o=this._id;return arguments.length<2?tn(this.node(),o).on.on(t):this.each(Yx(o,t,r))}function Qx(t){return function(){var r=this.parentNode;for(var o in this.__transition)if(+o!==t)return;r&&r.removeChild(this)}}function Kx(){return this.on("end.remove",Qx(this._id))}function Gx(t){var r=this._name,o=this._id;typeof t!="function"&&(t=Gu(t));for(var l=this._groups,a=l.length,u=new Array(a),d=0;d()=>t;function Sw(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 En(t,r,o){this.k=t,this.x=r,this.y=o}En.prototype={constructor:En,scale:function(t){return t===1?this:new En(this.k*t,this.x,this.y)},translate:function(t,r){return t===0&r===0?this:new En(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 vl=new En(1,0,0);Ap.prototype=En.prototype;function Ap(t){for(;!t.__zoom;)if(!(t=t.parentNode))return vl;return t.__zoom}function Eu(t){t.stopImmediatePropagation()}function to(t){t.preventDefault(),t.stopImmediatePropagation()}function _w(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function kw(){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 uh(){return this.__zoom||vl}function Ew(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function Nw(){return navigator.maxTouchPoints||"ontouchstart"in this}function Cw(t,r,o){var l=t.invertX(r[0][0])-o[0][0],a=t.invertX(r[1][0])-o[1][0],u=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>u?(u+d)/2:Math.min(0,u)||Math.max(0,d))}function $p(){var t=_w,r=kw,o=Cw,l=Ew,a=Nw,u=[0,1/0],d=[[-1/0,-1/0],[1/0,1/0]],h=250,p=qs,y=pl("start","zoom","end"),m,v,g,S=500,_=150,M=0,k=10;function E(C){C.property("__zoom",uh).on("wheel.zoom",X,{passive:!1}).on("mousedown.zoom",K).on("dblclick.zoom",ne).filter(a).on("touchstart.zoom",q).on("touchmove.zoom",ee).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",uh),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),z=typeof B=="function"?B.apply(this,arguments):B;return o(N(T(L,z),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(vl.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 T(C,B){return B=Math.max(u[0],Math.min(u[1],B)),B===C.k?C:new En(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 En(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),z=F==null?P(j):typeof F=="function"?F.apply(A,L):F,re=Math.max(j[1][0]-j[0][0],j[1][1]-j[0][1]),te=A.__zoom,ae=typeof B=="function"?B.apply(A,L):B,de=p(te.invert(z).concat(re/te.k),ae.invert(z).concat(re/ae.k));return function(ce){if(ce===1)ce=ae;else{var Q=de(ce),se=re/Q[2];ce=new En(se,z[0]-Q[0]*se,z[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 Sw(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(u[0],Math.min(u[1],V.k*Math.pow(2,l.apply(this,arguments)))),L=Gt(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)],el(this),F.start()}to(C),F.wheel=setTimeout(O,_),F.zoom("mouse",o(N(T(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",z,!0).on("mouseup.zoom",re,!0),L=Gt(C,F),O=C.clientX,j=C.clientY;xp(C.view),Eu(C),V.mouse=[L,this.__zoom.invert(L)],el(this),V.start();function z(te){if(to(te),!V.moved){var ae=te.clientX-O,de=te.clientY-j;V.moved=ae*ae+de*de>M}V.event(te).zoom("mouse",o(N(V.that.__zoom,V.mouse[0]=Gt(te,F),V.mouse[1]),V.extent,d))}function re(te){A.on("mousemove.zoom mouseup.zoom",null),wp(te.view,V.moved),to(te),V.event(te).end()}}function ne(C,...B){if(t.apply(this,arguments)){var F=this.__zoom,V=Gt(C.changedTouches?C.changedTouches[0]:C,this),A=F.invert(V),L=F.k*(C.shiftKey?.5:2),O=o(N(T(F,L),V,A),r.apply(this,B),d);to(C),h>0?zt(this).transition().duration(h).call(b,O,V,C):zt(this).call(E.transform,O,V,C)}}function q(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,z;for(Eu(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.`},co=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Dp=["Enter"," ","Escape"],Op={"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 li;(function(t){t.Strict="strict",t.Loose="loose"})(li||(li={}));var wr;(function(t){t.Free="free",t.Vertical="vertical",t.Horizontal="horizontal"})(wr||(wr={}));var fo;(function(t){t.Partial="partial",t.Full="full"})(fo||(fo={}));const bp={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null,pointer:null};var qn;(function(t){t.Bezier="default",t.Straight="straight",t.Step="step",t.SmoothStep="smoothstep",t.SimpleBezier="simplebezier"})(qn||(qn={}));var al;(function(t){t.Arrow="arrow",t.ArrowClosed="arrowclosed"})(al||(al={}));var Se;(function(t){t.Left="left",t.Top="top",t.Right="right",t.Bottom="bottom"})(Se||(Se={}));const ch={[Se.Left]:Se.Right,[Se.Right]:Se.Left,[Se.Top]:Se.Bottom,[Se.Bottom]:Se.Top};function Fp(t){return t===null?null:t?"valid":"invalid"}const Hp=t=>!!t&&typeof t=="object"&&"id"in t&&"source"in t&&"target"in t,jw=t=>!!t&&typeof t=="object"&&"id"in t&&"position"in t&&!("source"in t)&&!("target"in t),rc=t=>!!t&&typeof t=="object"&&"id"in t&&"internals"in t&&!("source"in t)&&!("target"in t),wo=(t,r=[0,0])=>{const{width:o,height:l}=nn(t),a=t.origin??r,u=o*a[0],d=l*a[1];return{x:t.position.x-u,y:t.position.y-d}},Mw=(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,u)=>{const d=typeof u=="string";let h=!r.nodeLookup&&!d?u:void 0;return r.nodeLookup&&(h=d?r.nodeLookup.get(u):rc(u)?u:r.nodeLookup.get(u.id)),h?(o=!0,xl(a,ul(h,r.nodeOrigin))):a},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return o?wl(l):{x:0,y:0,width:0,height:0}},So=(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=xl(o,ul(a)),l=!0)}),l?wl(o):{x:0,y:0,width:0,height:0}},ic=(t,r,[o,l,a]=[0,0,1],u=!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:T,y:N}=g.internals.positionAbsolute,P=Wp(h,p,y,m,T,N,k,E),b=k*E,$=u&&P>0;(!g.internals.handleBounds||$||P>=b||g.dragging)&&v.push(g)}return v},Pw=(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 Iw(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 u;if(r!=null&&r.includeHiddenNodes){const{width:d,height:h}=nn(a);u=d>0&&h>0}else u=!!(a.measured.width&&a.measured.height&&!a.hidden);u&&(!l||l.has(a.id))&&o.set(a.id,a)}),o}async function Tw({nodes:t,width:r,height:o,panZoom:l,minZoom:a,maxZoom:u},d){if(t.size===0)return!0;const h=Iw(t,d),p=So(h),y=sc(p,r,o,(d==null?void 0:d.minZoom)??a,(d==null?void 0:d.maxZoom)??u,(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 Vp({nodeId:t,nextPosition:r,nodeLookup:o,nodeOrigin:l=[0,0],nodeExtent:a,onError:u}){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)u==null||u("005",en.error005());else{const{width:S,height:_}=nn(h);S&&_&&(v=[[p,y],[p+S,y+_]])}else h&&Er(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=Er(v)?kr(r,v,d.measured):r;return(d.measured.width===void 0||d.measured.height===void 0)&&(u==null||u("015",en.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 zw({nodesToRemove:t=[],edgesToRemove:r=[],nodes:o,edges:l,onBeforeDelete:a}){const u=new Set(t.map(g=>g.id)),d=[];for(const g of o){if(g.deletable===!1)continue;const S=u.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=Pw(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 ai=(t,r=0,o=1)=>Math.min(Math.max(t,r),o),kr=(t={x:0,y:0},r,o)=>({x:ai(t.x,r[0][0],r[1][0]-((o==null?void 0:o.width)??0)),y:ai(t.y,r[0][1],r[1][1]-((o==null?void 0:o.height)??0))});function Bp(t,r,o){const{width:l,height:a}=nn(o),{x:u,y:d}=o.internals.positionAbsolute;return kr(t,[[u,d],[u+l,d+a]],r)}const dh=(t,r,o)=>to?-ai(Math.abs(t-o),1,r)/r:0,oc=(t,r,o=15,l=40)=>{const a=dh(t.x,l,r.width-l)*o,u=dh(t.y,l,r.height-l)*o;return[a,u]},xl=(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)}),Bu=({x:t,y:r,width:o,height:l})=>({x:t,y:r,x2:t+o,y2:r+l}),wl=({x:t,y:r,x2:o,y2:l})=>({x:t,y:r,width:o-t,height:l-r}),ho=(t,r=[0,0])=>{var a,u;const{x:o,y:l}=rc(t)?t.internals.positionAbsolute:wo(t,r);return{x:o,y:l,width:((a=t.measured)==null?void 0:a.width)??t.width??t.initialWidth??0,height:((u=t.measured)==null?void 0:u.height)??t.height??t.initialHeight??0}},ul=(t,r=[0,0])=>{var a,u;const{x:o,y:l}=rc(t)?t.internals.positionAbsolute:wo(t,r);return{x:o,y:l,x2:o+(((a=t.measured)==null?void 0:a.width)??t.width??t.initialWidth??0),y2:l+(((u=t.measured)==null?void 0:u.height)??t.height??t.initialHeight??0)}},Up=(t,r)=>wl(xl(Bu(t),Bu(r))),Wp=(t,r,o,l,a,u,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,u+h)-Math.max(r,u));return Math.ceil(p*y)},cl=(t,r)=>Wp(t.x,t.y,t.width,t.height,r.x,r.y,r.width,r.height),fh=t=>Zt(t.width)&&Zt(t.height)&&Zt(t.x)&&Zt(t.y),Zt=t=>!isNaN(t)&&isFinite(t),Yp=(t,r)=>(o,l)=>{},_o=(t,r=[1,1])=>({x:r[0]*Math.round(t.x/r[0]),y:r[1]*Math.round(t.y/r[1])}),ko=({x:t,y:r},[o,l,a],u=!1,d=[1,1])=>{const h={x:(t-o)/a,y:(r-l)/a};return u?_o(h,d):h},ui=({x:t,y:r},[o,l,a])=>({x:t*a+o,y:r*a+l});function ti(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 Rw(t,r,o){if(typeof t=="string"||typeof t=="number"){const l=ti(t,o),a=ti(t,r);return{top:l,right:a,bottom:l,left:a,x:a*2,y:l*2}}if(typeof t=="object"){const l=ti(t.top??t.y??0,o),a=ti(t.bottom??t.y??0,o),u=ti(t.left??t.x??0,r),d=ti(t.right??t.x??0,r);return{top:l,right:d,bottom:a,left:u,x:u+d,y:l+a}}return{top:0,right:0,bottom:0,left:0,x:0,y:0}}function Lw(t,r,o,l,a,u){const{x:d,y:h}=ui(t,[r,o,l]),{x:p,y}=ui({x:t.x+t.width,y:t.y+t.height},[r,o,l]),m=a-p,v=u-y;return{left:Math.floor(d),top:Math.floor(h),right:Math.floor(m),bottom:Math.floor(v)}}const sc=(t,r,o,l,a,u)=>{const d=Rw(u,r,o),h=(r-d.x)/t.width,p=(o-d.y)/t.height,y=Math.min(h,p),m=ai(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=Lw(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}},po=()=>{var t;return typeof navigator<"u"&&((t=navigator==null?void 0:navigator.userAgent)==null?void 0:t.indexOf("Mac"))>=0};function Er(t){return t!=null&&t!=="parent"}function nn(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 Xp(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 Qp(t,r={width:0,height:0},o,l,a){const u={...t},d=l.get(o);if(d){const h=d.origin||a;u.x+=d.internals.positionAbsolute.x-(r.width??0)*h[0],u.y+=d.internals.positionAbsolute.y-(r.height??0)*h[1]}return u}function hh(t,r){if(t.size!==r.size)return!1;for(const o of t)if(!r.has(o))return!1;return!0}function Aw(){let t,r;return{promise:new Promise((l,a)=>{t=l,r=a}),resolve:t,reject:r}}function $w(t){return{...Op,...t||{}}}function oo(t,{snapGrid:r=[0,0],snapToGrid:o=!1,transform:l,containerBounds:a}){const{x:u,y:d}=Jt(t),h=ko({x:u-((a==null?void 0:a.left)??0),y:d-((a==null?void 0:a.top)??0)},l),{x:p,y}=o?_o(h,r):h;return{xSnapped:p,ySnapped:y,...h}}const lc=t=>({width:t.offsetWidth,height:t.offsetHeight}),Kp=t=>{var r;return((r=t==null?void 0:t.getRootNode)==null?void 0:r.call(t))||(window==null?void 0:window.document)},Dw=["INPUT","SELECT","TEXTAREA"];function Gp(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:Dw.includes(r.nodeName)||r.hasAttribute("contenteditable")||!!r.closest(".nokey")}const qp=t=>"clientX"in t,Jt=(t,r)=>{var u,d;const o=qp(t),l=o?t.clientX:(u=t.touches)==null?void 0:u[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)}},ph=(t,r,o,l,a)=>{const u=r.querySelectorAll(`.${t}`);return!u||!u.length?null:Array.from(u).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,...lc(d)}})};function Zp({sourceX:t,sourceY:r,targetX:o,targetY:l,sourceControlX:a,sourceControlY:u,targetControlX:d,targetControlY:h}){const p=t*.125+a*.375+d*.375+o*.125,y=r*.125+u*.375+h*.375+l*.125,m=Math.abs(p-t),v=Math.abs(y-r);return[p,y,m,v]}function Ys(t,r){return t>=0?.5*t:r*25*Math.sqrt(-t)}function gh({pos:t,x1:r,y1:o,x2:l,y2:a,c:u}){switch(t){case Se.Left:return[r-Ys(r-l,u),o];case Se.Right:return[r+Ys(l-r,u),o];case Se.Top:return[r,o-Ys(o-a,u)];case Se.Bottom:return[r,o+Ys(a-o,u)]}}function Jp({sourceX:t,sourceY:r,sourcePosition:o=Se.Bottom,targetX:l,targetY:a,targetPosition:u=Se.Top,curvature:d=.25}){const[h,p]=gh({pos:o,x1:t,y1:r,x2:l,y2:a,c:d}),[y,m]=gh({pos:u,x1:l,y1:a,x2:t,y2:r,c:d}),[v,g,S,_]=Zp({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 eg({sourceX:t,sourceY:r,targetX:o,targetY:l}){const a=Math.abs(o-t)/2,u=o0}const Fw=({source:t,sourceHandle:r,target:o,targetHandle:l})=>`xy-edge__${t}${r||""}-${o}${l||""}`,Hw=(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)),Vw=(t,r,o={})=>{var u;if(!t.source||!t.target)return(u=o.onError)==null||u.call(o,"006",en.error006()),r;const l=o.getEdgeId||Fw;let a;return Hp(t)?a={...t}:a={...t,id:l(t)},Hw(a,r)?r:(a.sourceHandle===null&&delete a.sourceHandle,a.targetHandle===null&&delete a.targetHandle,r.concat(a))};function tg({sourceX:t,sourceY:r,targetX:o,targetY:l}){const[a,u,d,h]=eg({sourceX:t,sourceY:r,targetX:o,targetY:l});return[`M ${t},${r}L ${o},${l}`,a,u,d,h]}const mh={[Se.Left]:{x:-1,y:0},[Se.Right]:{x:1,y:0},[Se.Top]:{x:0,y:-1},[Se.Bottom]:{x:0,y:1}},Bw=({source:t,sourcePosition:r=Se.Bottom,target:o})=>r===Se.Left||r===Se.Right?t.xMath.sqrt(Math.pow(r.x-t.x,2)+Math.pow(r.y-t.y,2));function Uw({source:t,sourcePosition:r=Se.Bottom,target:o,targetPosition:l=Se.Top,center:a,offset:u,stepPosition:d}){const h=mh[r],p=mh[l],y={x:t.x+h.x*u,y:t.y+h.y*u},m={x:o.x+p.x*u,y:o.y+p.y*u},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},T={x:0,y:0},[,,N,P]=eg({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<=u){const B=Math.min(u-1,u-C);h[g]===S?E[g]=(y[g]>t[g]?-1:1)*B:T[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+q.x)/2,k=_[0].y):(M=_[0].x,k=(ne.y+q.y)/2)}const b={x:y.x+E.x,y:y.y+E.y},$={x:m.x+T.x,y:m.y+T.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 Ww(t,r,o,l){const a=Math.min(yh(t,r)/2,yh(r,o)/2,l),{x:u,y:d}=r;if(t.x===u&&u===o.x||t.y===d&&d===o.y)return`L${u} ${d}`;if(t.y===d){const y=t.xo.id===r):t[0])||null}function Wu(t,r){return t?typeof t=="string"?t:`${r?`${r}__`:""}${Object.keys(t).sort().map(l=>`${l}=${t[l]}`).join("&")}`:""}function Xw(t,{id:r,defaultColor:o,defaultMarkerStart:l,defaultMarkerEnd:a}){const u=new Set;return t.reduce((d,h)=>([h.markerStart||l,h.markerEnd||a].forEach(p=>{if(p&&typeof p=="object"){const y=Wu(p,r);u.has(y)||(d.push({id:y,color:p.color||o,...p}),u.add(y))}}),d),[]).sort((d,h)=>d.id.localeCompare(h.id))}const ng=1e3,Qw=10,ac={nodeOrigin:[0,0],nodeExtent:co,elevateNodesOnSelect:!0,zIndexMode:"basic",defaults:{}},Kw={...ac,checkEquality:!0};function uc(t,r){const o={...t};for(const l in r)r[l]!==void 0&&(o[l]=r[l]);return o}function Gw(t,r,o){const l=uc(ac,o);for(const a of t.values())if(a.parentId)dc(a,t,r,l);else{const u=wo(a,l.nodeOrigin),d=Er(a.extent)?a.extent:l.nodeExtent,h=kr(u,d,nn(a));a.internals.positionAbsolute=h}}function qw(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 u={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(u):a.type==="target"&&l.push(u)}return{source:o,target:l}}function cc(t){return t==="manual"}function Yu(t,r,o,l={}){var m,v;const a=uc(Kw,l),u={i:0},d=new Map(r),h=a!=null&&a.elevateNodesOnSelect&&!cc(a.zIndexMode)?ng: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 _=wo(g,a.nodeOrigin),M=Er(g.extent)?g.extent:a.nodeExtent,k=kr(_,M,nn(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:qw(g,S),z:rg(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&&dc(S,r,o,l,u),y||(y=g.selected??!1)}return{nodesInitialized:p,hasSelectedNodes:y}}function Zw(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 dc(t,r,o,l,a){const{elevateNodesOnSelect:u,nodeOrigin:d,nodeExtent:h,zIndexMode:p}=uc(ac,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}Zw(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*Qw),a&&m.internals.rootParentIndex!==void 0&&(a.i=m.internals.rootParentIndex);const v=u&&!cc(p)?ng:0,{x:g,y:S,z:_}=Jw(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 rg(t,r,o){const l=Zt(t.zIndex)?t.zIndex:0;return cc(o)?l:l+(t.selected?r:0)}function Jw(t,r,o,l,a,u){const{x:d,y:h}=r.internals.positionAbsolute,p=nn(t),y=wo(t,o),m=Er(t.extent)?kr(y,t.extent,p):y;let v=kr({x:d+m.x,y:h+m.y},l,p);t.extent==="parent"&&(v=Bp(v,p,r));const g=rg(t,a,u),S=r.internals.z??0;return{x:v.x,y:v.y,z:S>=g?S+1:g}}function fc(t,r,o,l=[0,0]){var d;const a=[],u=new Map;for(const h of t){const p=r.get(h.parentId);if(!p)continue;const y=((d=u.get(h.parentId))==null?void 0:d.expandedRect)??ho(p),m=Up(y,h.rect);u.set(h.parentId,{expandedRect:m,parent:p})}return u.size>0&&u.forEach(({expandedRect:h,parent:p},y)=>{var N;const m=p.internals.positionAbsolute,v=nn(p),g=p.origin??l,S=h.x0||_>0||E||T)&&(a.push({id:y,type:"position",position:{x:p.position.x-S+E,y:p.position.y-_+T}}),(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=fc(g,r,o,a);y.push(...S)}return{changes:y,updatedInternals:p}}async function t1({delta:t,panZoom:r,transform:o,translateExtent:l,width:a,height:u}){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,u]],l);return!!d&&(d.x!==o[0]||d.y!==o[1]||d.k!==o[2])}function Sh(t,r,o,l,a,u){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)),u){d=`${a}-${t}-${u}`;const y=l.get(d)||new Map;l.set(d,y.set(o,r))}}function ig(t,r,o){t.clear(),r.clear();for(const l of o){const{source:a,target:u,sourceHandle:d=null,targetHandle:h=null}=l,p={edgeId:l.id,source:a,target:u,sourceHandle:d,targetHandle:h},y=`${a}-${d}--${u}-${h}`,m=`${u}-${h}--${a}-${d}`;Sh("source",p,m,t,a,d),Sh("target",p,y,t,u,h),r.set(l.id,l)}}function og(t,r){if(!t.parentId)return!1;const o=r.get(t.parentId);return o?o.selected?!0:og(o,r):!1}function _h(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 n1(t,r,o,l){const a=new Map;for(const[u,d]of t)if((d.selected||d.id===l)&&(!d.parentId||!og(d,t))&&(d.draggable||r&&typeof d.draggable>"u")){const h=t.get(u);h&&a.set(u,{id:u,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 Nu({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 u=(h=o.get(t))==null?void 0:h.internals.userNode;return[u?{...u,position:((p=r.get(t))==null?void 0:p.position)||u.position,dragging:l}:a[0],a]}function r1({dragItems:t,snapGrid:r,x:o,y:l}){const a=t.values().next().value;if(!a)return null;const u={x:o-a.distance.x,y:l-a.distance.y},d=_o(u,r);return{x:d.x-u.x,y:d.y-u.y}}function i1({onNodeMouseDown:t,getStoreItems:r,onDragStart:o,onDrag:l,onDragStop:a}){let u={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:T,handleSelector:N,domNode:P,isSelectable:b,nodeId:$,nodeClickDistance:H=0}){g=zt(P);function X({x:ee,y:J}){const{nodeLookup:C,nodeExtent:B,snapGrid:F,snapToGrid:V,nodeOrigin:A,onNodeDrag:L,onSelectionDrag:O,onError:j,updateNodePositions:z}=r();u={x:ee,y:J};let re=!1;const te=h.size>1,ae=te&&B?Bu(So(h)):null,de=te&&V?r1({dragItems:h,snapGrid:F,x:ee,y:J}):null;for(const[ce,Q]of h){if(!C.has(ce))continue;let se={x:ee-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)}:_o(se,F));let he=null;if(te&&B&&!Q.extent&&ae){const{positionAbsolute:me}=Q.internals,Ce=me.x-ae.x+B[0][0],Me=me.x+Q.measured.width-ae.x2+B[1][0],Pe=me.y-ae.y+B[0][1],Re=me.y+Q.measured.height-ae.y2+B[1][1];he=[[Ce,Pe],[Me,Re]]}const{position:we,positionAbsolute:ve}=Vp({nodeId:ce,nextPosition:se,nodeLookup:C,nodeExtent:he||B,nodeOrigin:A,onError:j});re=re||Q.position.x!==we.x||Q.position.y!==we.y,Q.position=we,Q.internals.positionAbsolute=ve}if(_=_||re,!!re&&(z(h,!0),M&&(l||L||!$&&O))){const[ce,Q]=Nu({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:ee,panBy:J,autoPanSpeed:C,autoPanOnNodeDrag:B}=r();if(!B){p=!1,cancelAnimationFrame(d);return}const[F,V]=oc(y,m,C);(F!==0||V!==0)&&(u.x=(u.x??0)-F/ee[2],u.y=(u.y??0)-V/ee[2],await J({x:F,y:V})&&X(u)),d=requestAnimationFrame(K)}function ne(ee){var te;const{nodeLookup:J,multiSelectionActive:C,nodesDraggable:B,transform:F,snapGrid:V,snapToGrid:A,selectNodesOnDrag:L,onNodeDragStart:O,onSelectionDragStart:j,unselectNodesAndEdges:z}=r();v=!0,(!L||!b)&&!C&&$&&((te=J.get($))!=null&&te.selected||z()),b&&L&&$&&(t==null||t($));const re=oo(ee.sourceEvent,{transform:F,snapGrid:V,snapToGrid:A,containerBounds:m});if(u=re,h=n1(J,B,re,$),h.size>0&&(o||O||!$&&j)){const[ae,de]=Nu({nodeId:$,dragItems:h,nodeLookup:J});o==null||o(ee.sourceEvent,h,ae,de),O==null||O(ee.sourceEvent,ae,de),$||j==null||j(ee.sourceEvent,de)}}const q=Sp().clickDistance(H).on("start",ee=>{const{domNode:J,nodeDragThreshold:C,transform:B,snapGrid:F,snapToGrid:V}=r();m=(J==null?void 0:J.getBoundingClientRect())||null,S=!1,_=!1,M=ee.sourceEvent,C===0&&ne(ee),u=oo(ee.sourceEvent,{transform:B,snapGrid:F,snapToGrid:V,containerBounds:m}),y=Jt(ee.sourceEvent,m)}).on("drag",ee=>{const{autoPanOnNodeDrag:J,transform:C,snapGrid:B,snapToGrid:F,nodeDragThreshold:V,nodeLookup:A}=r(),L=oo(ee.sourceEvent,{transform:C,snapGrid:B,snapToGrid:F,containerBounds:m});if(M=ee.sourceEvent,(ee.sourceEvent.type==="touchmove"&&ee.sourceEvent.touches.length>1||$&&!A.has($))&&(S=!0),!S){if(!p&&J&&v&&(p=!0,K()),!v){const O=Jt(ee.sourceEvent,m),j=O.x-y.x,z=O.y-y.y;Math.sqrt(j*j+z*z)>V&&ne(ee)}(u.x!==L.xSnapped||u.y!==L.ySnapped)&&h&&v&&(y=Jt(ee.sourceEvent,m),X(L))}}).on("end",ee=>{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]=Nu({nodeId:$,dragItems:h,nodeLookup:J,dragging:!1});a==null||a(ee.sourceEvent,h,V,A),B==null||B(ee.sourceEvent,V,A),$||F==null||F(ee.sourceEvent,A)}}}).filter(ee=>{const J=ee.target;return!ee.button&&(!T||!_h(J,`.${T}`,P))&&(!N||_h(J,N,P))});g.call(q)}function E(){g==null||g.on(".drag",null)}return{update:k,destroy:E}}function o1(t,r,o){const l=[],a={x:t.x-o,y:t.y-o,width:o*2,height:o*2};for(const u of r.values())cl(a,ho(u))>0&&l.push(u);return l}const s1=250;function l1(t,r,o,l){var h,p;let a=[],u=1/0;const d=o1(t,o,r+s1);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}=Nr(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 sg(t,r,o,l,a,u=!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&&u?{...p,...Nr(d,p,p.position,!0)}:p}function lg(t,r){return t||(r!=null&&r.classList.contains("target")?"target":r!=null&&r.classList.contains("source")?"source":null)}function a1(t,r){let o=null;return r?o=!0:t&&!r&&(o=!1),o}const ag=()=>!0;function u1(t,{connectionMode:r,connectionRadius:o,handleId:l,nodeId:a,edgeUpdaterType:u,isTarget:d,domNode:h,nodeLookup:p,lib:y,autoPanOnConnect:m,flowId:v,panBy:g,cancelConnection:S,onConnectStart:_,onConnect:M,onConnectEnd:k,isValidConnection:E=ag,onReconnectEnd:T,updateConnection:N,getTransform:P,getFromHandle:b,autoPanSpeed:$,dragThreshold:H=1,handleDomNode:X}){const K=Kp(t.target);let ne=0,q;const{x:ee,y:J}=Jt(t),C=lg(u,X),B=h==null?void 0:h.getBoundingClientRect();let F=!1;if(!B||!C)return;const V=sg(a,C,l,p,r);if(!V)return;let A=Jt(t,B),L=!1,O=null,j=!1,z=null;function re(){if(!m||!B)return;const[we,ve]=oc(A,B,$);g({x:we,y:ve}),ne=requestAnimationFrame(re)}const te={...V,nodeId:a,type:C,position:V.position},ae=p.get(a);let ce={inProgress:!0,isValid:null,from:Nr(ae,te,Se.Left,!0),fromHandle:te,fromPosition:te.position,fromNode:ae,to:A,toHandle:null,toPosition:ch[te.position],toNode:null,pointer:A};function Q(){F=!0,N(ce),_==null||_(t,{nodeId:a,handleId:l,handleType:C})}H===0&&Q();function se(we){if(!F){const{x:Re,y:nt}=Jt(we),rt=Re-ee,Xe=nt-J;if(!(rt*rt+Xe*Xe>H*H))return;Q()}if(!b()||!te){he(we);return}const ve=P();A=Jt(we,B),q=l1(ko(A,ve,!1,[1,1]),o,p,te),L||(re(),L=!0);const me=ug(we,{handle:q,connectionMode:r,fromNodeId:a,fromHandleId:l,fromType:d?"target":"source",isValidConnection:E,doc:K,lib:y,flowId:v,nodeLookup:p});z=me.handleDomNode,O=me.connection,j=a1(!!q,me.isValid);const Ce=p.get(a),Me=Ce?Nr(Ce,te,Se.Left,!0):ce.from,Pe={...ce,from:Me,isValid:j,to:me.toHandle&&j?ui({x:me.toHandle.x,y:me.toHandle.y},ve):A,toHandle:me.toHandle,toPosition:j&&me.toHandle?me.toHandle.position:ch[te.position],toNode:me.toHandle?p.get(me.toHandle.nodeId):null,pointer:A};N(Pe),ce=Pe}function he(we){if(!("touches"in we&&we.touches.length>0)){if(F){(q||z)&&O&&j&&(M==null||M(O));const{inProgress:ve,...me}=ce,Ce={...me,toPosition:ce.toHandle?ce.toPosition:null};k==null||k(we,Ce),u&&(T==null||T(we,Ce))}S(),cancelAnimationFrame(ne),L=!1,j=!1,O=null,z=null,K.removeEventListener("mousemove",se),K.removeEventListener("mouseup",he),K.removeEventListener("touchmove",se),K.removeEventListener("touchend",he)}}K.addEventListener("mousemove",se),K.addEventListener("mouseup",he),K.addEventListener("touchmove",se),K.addEventListener("touchend",he)}function ug(t,{handle:r,connectionMode:o,fromNodeId:l,fromHandleId:a,fromType:u,doc:d,lib:h,flowId:p,isValidConnection:y=ag,nodeLookup:m}){const v=u==="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:_}=Jt(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 T=lg(void 0,k),N=k.getAttribute("data-nodeid"),P=k.getAttribute("data-handleid"),b=k.classList.contains("connectable"),$=k.classList.contains("connectableend");if(!N||!T)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===li.Strict?v&&T==="source"||!v&&T==="target":N!==l||P!==a);E.isValid=K&&y(H),E.toHandle=sg(N,T,P,m,o,!0)}return E}const Xu={onPointerDown:u1,isValid:ug};function c1({domNode:t,panZoom:r,getTransform:o,getViewScale:l}){const a=zt(t);function u({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&&po()?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)},T=$p().on("start",k).on("zoom",v?E:null).on("zoom.wheel",g?_:null);a.call(T,{})}function d(){a.on("zoom",null)}return{update:u,destroy:d,pointer:Gt}}const Sl=t=>({x:t.x,y:t.y,zoom:t.k}),Cu=({x:t,y:r,zoom:o})=>vl.translate(t,r).scale(o),Gn=(t,r)=>t.target.closest(`.${r}`),cg=(t,r)=>r===2&&Array.isArray(t)&&t.includes(2),d1=t=>((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2,ju=(t,r=0,o=d1,l=()=>{})=>{const a=typeof r=="number"&&r>0;return a||l(),a?t.transition().duration(r).ease(o).on("end",l):t},dg=t=>{const r=t.ctrlKey&&po()?10:1;return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*r};function f1({zoomPanValues:t,noWheelClassName:r,d3Selection:o,d3Zoom:l,panOnScrollMode:a,panOnScrollSpeed:u,zoomOnPinch:d,onPanZoomStart:h,onPanZoom:p,onPanZoomEnd:y}){return m=>{if(Gn(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=Gt(m),E=dg(m),T=v*Math.pow(2,E);l.scaleTo(o,T,k,m);return}const g=m.deltaMode===1?20:1;let S=a===wr.Vertical?0:m.deltaX*g,_=a===wr.Horizontal?0:m.deltaY*g;!po()&&m.shiftKey&&a!==wr.Vertical&&(S=m.deltaY*g,_=0),l.translateBy(o,-(S/v)*u,-(_/v)*u,{internal:!0});const M=Sl(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 h1({noWheelClassName:t,preventScrolling:r,d3ZoomHandler:o}){return function(l,a){const u=l.type==="wheel",d=!r&&u&&!l.ctrlKey,h=Gn(l,t);if(l.ctrlKey&&u&&h&&l.preventDefault(),d||h)return null;l.preventDefault(),o.call(this,l,a)}}function p1({zoomPanValues:t,onDraggingChange:r,onPanZoomStart:o}){return l=>{var u,d,h;if((u=l.sourceEvent)!=null&&u.internal)return;const a=Sl(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 g1({zoomPanValues:t,panOnDrag:r,onPaneContextMenu:o,onTransformChange:l,onPanZoom:a}){return u=>{var d,h;t.usedRightMouseButton=!!(o&&cg(r,t.mouseButton??0)),(d=u.sourceEvent)!=null&&d.sync||l([u.transform.x,u.transform.y,u.transform.k]),a&&!((h=u.sourceEvent)!=null&&h.internal)&&(a==null||a(u.sourceEvent,Sl(u.transform)))}}function m1({zoomPanValues:t,panOnDrag:r,panOnScroll:o,onDraggingChange:l,onPanZoomEnd:a,onPaneContextMenu:u}){return d=>{var h;if(!((h=d.sourceEvent)!=null&&h.internal)&&(t.isZoomingOrPanning=!1,u&&cg(r,t.mouseButton??0)&&!t.usedRightMouseButton&&d.sourceEvent&&u(d.sourceEvent),t.usedRightMouseButton=!1,l(!1),a)){const p=Sl(d.transform);t.prevViewport=p,clearTimeout(t.timerId),t.timerId=setTimeout(()=>{a==null||a(d.sourceEvent,p)},o?150:0)}}}function y1({panActivationKeyPressed:t,zoomActivationKeyPressed:r,zoomOnScroll:o,zoomOnPinch:l,panOnDrag:a,panOnScroll:u,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"&&(Gn(g,`${m}-flow__node`)||Gn(g,`${m}-flow__edge`)||Gn(g,`${m}-flow__selection`)||Gn(g,`${m}-flow__nodesselection`)))return!0;if(!a&&!S&&!u&&!d&&!l||h||v&&!M||Gn(g,p)&&M||Gn(g,y)&&(!M||u&&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&&!u&&!_&&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 v1({domNode:t,minZoom:r,maxZoom:o,translateExtent:l,viewport:a,onPanZoom:u,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=$p().extent(()=>v).scaleExtent([r,o]).translateExtent(l),_=zt(t).call(S);P({x:a.x,y:a.y,zoom:ai(a.zoom,r,o)},[[0,0],[m.width,m.height]],l);const M=_.on("wheel.zoom"),k=_.on("dblclick.zoom");S.wheelDelta(dg);async function E(J,C){return _?new Promise(B=>{S==null||S.interpolate((C==null?void 0:C.interpolate)==="linear"?io:qs).transform(ju(_,C==null?void 0:C.duration,C==null?void 0:C.ease,()=>B(!0)),J)}):!1}function T({noWheelClassName:J,noPanClassName:C,onPaneContextMenu:B,userSelectionActive:F,panOnScroll:V,panOnDrag:A,panOnScrollMode:L,panOnScrollSpeed:O,preventScrolling:j,zoomOnPinch:z,zoomOnScroll:re,zoomOnDoubleClick:te,panActivationKeyPressed:ae=!1,zoomActivationKeyPressed:de,lib:ce,onTransformChange:Q,connectionInProgress:se,paneClickDistance:he,selectionOnDrag:we}){F&&!y.isZoomingOrPanning&&N();const ve=V&&!de&&!F;S.clickDistance(we?1/0:!Zt(he)||he<0?0:he);const me=ve?f1({zoomPanValues:y,noWheelClassName:J,d3Selection:_,d3Zoom:S,panOnScrollMode:L,panOnScrollSpeed:O,zoomOnPinch:z,onPanZoomStart:d,onPanZoom:u,onPanZoomEnd:h}):h1({noWheelClassName:J,preventScrolling:j,d3ZoomHandler:M});_.on("wheel.zoom",me,{passive:!1});const Ce=p1({zoomPanValues:y,onDraggingChange:p,onPanZoomStart:d});S.on("start",Ce);const Me=g1({zoomPanValues:y,panOnDrag:A,onPaneContextMenu:!!B,onPanZoom:u,onTransformChange:Q});S.on("zoom",Me);const Pe=m1({zoomPanValues:y,panOnDrag:A,panOnScroll:V,onPaneContextMenu:B,onPanZoomEnd:h,onDraggingChange:p});S.on("end",Pe);const Re=y1({panActivationKeyPressed:ae,zoomActivationKeyPressed:de,panOnDrag:A,zoomOnScroll:re,panOnScroll:V,zoomOnDoubleClick:te,zoomOnPinch:z,userSelectionActive:F,noPanClassName:C,noWheelClassName:J,lib:ce,connectionInProgress:se});S.filter(Re),te?_.on("dblclick.zoom",k):_.on("dblclick.zoom",null)}function N(){S.on("zoom",null)}async function P(J,C,B){const F=Cu(J),V=S==null?void 0:S.constrain()(F,C,B);return V&&await E(V),V}async function b(J,C){const B=Cu(J);return await E(B,C),B}function $(J){if(_){const C=Cu(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=_?Ap(_.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"?io:qs).scaleTo(ju(_,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"?io:qs).scaleBy(ju(_,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 q(J){S==null||S.translateExtent(J)}function ee(J){const C=!Zt(J)||J<0?0:J;S==null||S.clickDistance(C)}return{update:T,destroy:N,setViewport:b,setViewportConstrained:P,getViewport:H,scaleTo:X,scaleBy:K,setScaleExtent:ne,setTranslateExtent:q,syncViewport:$,setClickDistance:ee}}var ci;(function(t){t.Line="line",t.Handle="handle"})(ci||(ci={}));function x1({width:t,prevWidth:r,height:o,prevHeight:l,affectsX:a,affectsY:u}){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&&u&&(p[1]=p[1]*-1),p}function kh(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 Qn(t,r){return Math.max(0,r-t)}function Kn(t,r){return Math.max(0,t-r)}function Xs(t,r,o){return Math.max(0,r-t,t-o)}function Eh(t,r){return t?!r:r}function w1(t,r,o,l,a,u,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:T}=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),q=$+(y?-K:K),ee=-u[0]*b,J=-u[1]*$;let C=Xs(ne,M,k),B=Xs(q,E,T);if(d){let A=0,L=0;p&&X<0?A=Qn(N+X+ee,d[0][0]):!p&&X>0&&(A=Kn(N+ne+ee,d[1][0])),y&&K<0?L=Qn(P+K+J,d[0][1]):!y&&K>0&&(L=Kn(P+q+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=Kn(N+X,h[0][0]):!p&&X<0&&(A=Qn(N+ne,h[1][0])),y&&K>0?L=Kn(P+K,h[0][1]):!y&&K<0&&(L=Qn(P+q,h[1][1])),C=Math.max(C,A),B=Math.max(B,L)}if(a){if(m){const A=Xs(ne/H,E,T)*H;if(C=Math.max(C,A),d){let L=0;!p&&!y||p&&!y&&g?L=Kn(P+J+ne/H,d[1][1])*H:L=Qn(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=Qn(P+ne/H,h[1][1])*H:L=Kn(P+(p?X:-X)/H,h[0][1])*H,C=Math.max(C,L)}}if(v){const A=Xs(q*H,M,k)/H;if(B=Math.max(B,A),d){let L=0;!p&&!y||y&&!p&&g?L=Kn(N+q*H+ee,d[1][0])/H:L=Qn(N+(y?K:-K)*H+ee,d[0][0])/H,B=Math.max(B,L)}if(h){let L=0;!p&&!y||y&&!p&&g?L=Qn(N+q*H,h[1][0])/H:L=Kn(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>q*H?K=(Eh(p,y)?-X:X)/H:X=(Eh(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:u[0]*X*(p?-1:1)+F,y:u[1]*K*(y?-1:1)+V}}const fg={width:0,height:0,x:0,y:0},S1={...fg,pointerX:0,pointerY:0,aspectRatio:1};function _1(t,r,o){const l=r.position.x+t.position.x,a=r.position.y+t.position.y,u=t.measured.width??0,d=t.measured.height??0,h=o[0]*u,p=o[1]*d;return[[l-h,a-p],[l+u-h,a+d-p]]}function k1({domNode:t,nodeId:r,getStoreItems:o,onChange:l,onEnd:a}){const u=zt(t);let d={controlDirection:kh("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={...fg},T={...S1};d={boundaries:m,resizeDirection:g,keepAspectRatio:v,controlDirection:kh(y)};let N,P=null,b=[],$,H,X,K=!1;const ne=Sp().on("start",q=>{const{nodeLookup:ee,transform:J,snapGrid:C,snapToGrid:B,nodeOrigin:F,paneDomNode:V}=o();if(N=ee.get(r),!N)return;P=(V==null?void 0:V.getBoundingClientRect())??null;const{xSnapped:A,ySnapped:L}=oo(q.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},T={...E,pointerX:A,pointerY:L,aspectRatio:E.width/E.height},$=void 0,H=Er(N.extent)?N.extent:void 0,N.parentId&&(N.extent==="parent"||N.expandParent)&&($=ee.get(N.parentId)),$&&N.extent==="parent"&&(H=[[0,0],[$.measured.width,$.measured.height]]),b=[],X=void 0;for(const[O,j]of ee)if(j.parentId===r&&(b.push({id:O,position:{...j.position},extent:j.extent}),j.extent==="parent"||j.expandParent)){const z=_1(j,N,j.origin??F);X?X=[[Math.min(z[0][0],X[0][0]),Math.min(z[0][1],X[0][1])],[Math.max(z[1][0],X[1][0]),Math.max(z[1][1],X[1][1])]]:X=z}S==null||S(q,{...E})}).on("drag",q=>{const{transform:ee,snapGrid:J,snapToGrid:C,nodeOrigin:B}=o(),F=oo(q.sourceEvent,{transform:ee,snapGrid:J,snapToGrid:C,containerBounds:P}),V=[];if(!N)return;const{x:A,y:L,width:O,height:j}=E,z={},re=N.origin??B,{width:te,height:ae,x:de,y:ce}=w1(T,d.controlDirection,F,d.boundaries,d.keepAspectRatio,re,H,X),Q=te!==O,se=ae!==j,he=de!==A&&Q,we=ce!==L&&se;if(!he&&!we&&!Q&&!se)return;if((he||we||re[0]===1||re[1]===1)&&(z.x=he?de:E.x,z.y=we?ce:E.y,E.x=z.x,E.y=z.y,b.length>0)){const Me=de-A,Pe=ce-L;for(const Re of b)Re.position={x:Re.position.x-Me+re[0]*(te-O),y:Re.position.y-Pe+re[1]*(ae-j)},V.push(Re)}if((Q||se)&&(z.width=Q&&(!d.resizeDirection||d.resizeDirection==="horizontal")?te:E.width,z.height=se&&(!d.resizeDirection||d.resizeDirection==="vertical")?ae:E.height,E.width=z.width,E.height=z.height),$&&N.expandParent){const Me=re[0]*(z.width??0);z.x&&z.x{K&&(M==null||M(q,{...E}),a==null||a({...E}),K=!1)});u.call(ne)}function p(){u.on(".drag",null)}return{update:h,destroy:p}}var Mu={exports:{}},Pu={},Iu={exports:{}},Tu={};/** + * @license React + * use-sync-external-store-shim.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Nh;function E1(){if(Nh)return Tu;Nh=1;var t=mo();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,u=t.useLayoutEffect,d=t.useDebugValue;function h(v,g){var S=g(),_=l({inst:{value:S,getSnapshot:g}}),M=_[0].inst,k=_[1];return u(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 Tu.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:m,Tu}var Ch;function N1(){return Ch||(Ch=1,Iu.exports=E1()),Iu.exports}/** + * @license React + * use-sync-external-store-shim/with-selector.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var jh;function C1(){if(jh)return Pu;jh=1;var t=mo(),r=N1();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,u=t.useRef,d=t.useEffect,h=t.useMemo,p=t.useDebugValue;return Pu.useSyncExternalStoreWithSelector=function(y,m,v,g,S){var _=u(null);if(_.current===null){var M={hasValue:!1,value:null};_.current=M}else M=_.current;_=h(function(){function E($){if(!T){if(T=!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 T=!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},Pu}var Mh;function j1(){return Mh||(Mh=1,Mu.exports=C1()),Mu.exports}var M1=j1();const P1=op(M1),I1={},Ph=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:()=>{(I1?"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},T1=t=>t?Ph(t):Ph,{useDebugValue:z1}=R0,{useSyncExternalStoreWithSelector:R1}=P1,L1=t=>t;function hg(t,r=L1,o){const l=R1(t.subscribe,t.getState,t.getServerState||t.getInitialState,r,o);return z1(l),l}const Ih=(t,r)=>{const o=T1(t),l=(a,u=r)=>hg(o,a,u);return Object.assign(l,o),l},A1=(t,r)=>t?Ih(t,r):Ih;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}sp();const _l=W.createContext(null),$1=_l.Provider,pg=en.error001("react");function Te(t,r){const o=W.useContext(_l);if(o===null)throw new Error(pg);return hg(o,t,r)}function be(){const t=W.useContext(_l);if(t===null)throw new Error(pg);return W.useMemo(()=>({getState:t.getState,setState:t.setState,subscribe:t.subscribe}),[t])}const Th={display:"none"},D1={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},gg="react-flow__node-desc",mg="react-flow__edge-desc",O1="react-flow__aria-live",b1=t=>t.ariaLiveMessage,F1=t=>t.ariaLabelConfig;function H1({rfId:t}){const r=Te(b1);return x.jsx("div",{id:`${O1}-${t}`,"aria-live":"assertive","aria-atomic":"true",style:D1,children:r})}function V1({rfId:t,disableKeyboardA11y:r}){const o=Te(F1);return x.jsxs(x.Fragment,{children:[x.jsx("div",{id:`${gg}-${t}`,style:Th,children:r?o["node.a11yDescription.default"]:o["node.a11yDescription.keyboardDisabled"]}),x.jsx("div",{id:`${mg}-${t}`,style:Th,children:o["edge.a11yDescription.default"]}),!r&&x.jsx(H1,{rfId:t})]})}const kl=W.forwardRef(({position:t="top-left",children:r,className:o,style:l,...a},u)=>{const d=`${t}`.split("-");return x.jsx("div",{className:Ke(["react-flow__panel",o,...d]),style:l,ref:u,...a,children:r})});kl.displayName="Panel";const zh="https://reactflow.dev?utm_source=attribution";function B1({proOptions:t,position:r="bottom-right"}){return t!=null&&t.hideAttribution?null:x.jsx(kl,{position:r,className:"react-flow__attribution","data-message":`Please only hide this attribution when you are subscribed to React Flow Pro: ${zh}`,children:x.jsx("a",{href:zh,target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution",children:"React Flow"})})}const U1=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}},Qs=t=>t.id;function W1(t,r){return Ue(t.selectedNodes.map(Qs),r.selectedNodes.map(Qs))&&Ue(t.selectedEdges.map(Qs),r.selectedEdges.map(Qs))}function Y1({onSelectionChange:t}){const r=be(),{selectedNodes:o,selectedEdges:l}=Te(U1,W1);return W.useEffect(()=>{const a={nodes:o,edges:l};t==null||t(a),r.getState().onSelectionChangeHandlers.forEach(u=>u(a))},[o,l,t]),null}const X1=t=>!!t.onSelectionChangeHandlers;function Q1({onSelectionChange:t}){const r=Te(X1);return t||r?x.jsx(Y1,{onSelectionChange:t}):null}const yg=[0,0],K1={x:0,y:0,zoom:1},G1=["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"],Rh=[...G1,"rfId"],q1=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}),Lh={translateExtent:co,nodeOrigin:yg,minZoom:.5,maxZoom:2,elementsSelectable:!0,noPanClassName:"nopan",rfId:"1"};function Z1(t){const{setNodes:r,setEdges:o,setMinZoom:l,setMaxZoom:a,setTranslateExtent:u,setNodeExtent:d,reset:h,setDefaultNodesAndEdges:p}=Te(q1,Ue),y=be();W.useEffect(()=>(p(t.defaultNodes,t.defaultEdges),()=>{m.current=Lh,h()}),[]);const m=W.useRef(Lh);return W.useEffect(()=>{for(const v of Rh){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"?u(g):v==="nodeExtent"?d(g):v==="ariaLabelConfig"?y.setState({ariaLabelConfig:$w(g)}):v==="fitView"?y.setState({fitViewQueued:g}):v==="fitViewOptions"?y.setState({fitViewOptions:g}):y.setState({[v]:g})))}m.current=t},Rh.map(v=>t[v])),null}function Ah(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function J1(t){var l;const[r,o]=W.useState(t==="system"?null:t);return W.useEffect(()=>{if(t!=="system"){o(t);return}const a=Ah(),u=()=>o(a!=null&&a.matches?"dark":"light");return u(),a==null||a.addEventListener("change",u),()=>{a==null||a.removeEventListener("change",u)}},[t]),r!==null?r:(l=Ah())!=null&&l.matches?"dark":"light"}const $h=typeof document<"u"?document:null;function go(t=null,r={target:$h,actInsideInputWithModifier:!0}){const[o,l]=W.useState(!1),a=W.useRef(!1),u=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)??$h,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)&&Gp(S))return!1;const M=Oh(S.code,h);if(u.current.add(S[M]),Dh(d,u.current,!1)){const T=((E=(k=S.composedPath)==null?void 0:k.call(S))==null?void 0:E[0])||S.target,N=(T==null?void 0:T.nodeName)==="BUTTON"||(T==null?void 0:T.nodeName)==="A";r.preventDefault!==!1&&(a.current||!N)&&S.preventDefault(),l(!0)}},v=S=>{const _=Oh(S.code,h);Dh(d,u.current,!0)?(l(!1),u.current.clear()):u.current.delete(S[_]),S.key==="Meta"&&u.current.clear(),a.current=!1},g=()=>{u.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 Dh(t,r,o){return t.filter(l=>o||l.length===r.size).some(l=>l.every(a=>r.has(a)))}function Oh(t,r){return r.includes(t)?"code":"key"}const eS=()=>{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,u],panZoom:d}=t.getState();return d?(await d.setViewport({x:r.x??l,y:r.y??a,zoom:r.zoom??u},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:u,maxZoom:d,panZoom:h}=t.getState(),p=sc(r,l,a,u,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:u,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??u;return ko(y,l,v,m)},flowToScreenPosition:r=>{const{transform:o,domNode:l}=t.getState();if(!l)return r;const{x:a,y:u}=l.getBoundingClientRect(),d=ui(r,o);return{x:d.x+a,y:d.y+u}}}),[])};function vg(t,r){const o=[],l=new Map,a=[];for(const u of t)if(u.type==="add"){a.push(u);continue}else if(u.type==="remove"||u.type==="replace")l.set(u.id,[u]);else{const d=l.get(u.id);d?d.push(u):l.set(u.id,[u])}for(const u of r){const d=l.get(u.id);if(!d){o.push(u);continue}if(d[0].type==="remove")continue;if(d[0].type==="replace"){o.push({...d[0].item});continue}const h={...u};for(const p of d)tS(p,h);o.push(h)}return a.length&&a.forEach(u=>{u.index!==void 0?o.splice(u.index,0,{...u.item}):o.push({...u.item})}),o}function tS(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 nS(t,r){return vg(t,r)}function rS(t,r){return vg(t,r)}function yr(t,r){return{id:t,type:"select",selected:r}}function ni(t,r=new Set,o=!1){const l=[];for(const[a,u]of t){const d=r.has(a);!(u.selected===void 0&&!d)&&u.selected!==d&&(o&&(u.selected=d),l.push(yr(u.id,d)))}return l}function bh({items:t=[],lookup:r}){var a;const o=[],l=new Map(t.map(u=>[u.id,u]));for(const[u,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:u})}for(const[u]of r)l.get(u)===void 0&&o.push({id:u,type:"remove"});return o}function Fh(t){return{id:t.id,type:"remove"}}const iS=Yp();function oS(t,r,o={}){return Vw(t,r,{...o,onError:o.onError??iS})}const Hh=t=>jw(t),sS=t=>Hp(t);function xg(t){return W.forwardRef(t)}const wg=typeof window<"u"?W.useLayoutEffect:W.useEffect;function Vh(t){const[r,o]=W.useState(BigInt(0)),[l]=W.useState(()=>lS(()=>o(a=>a+BigInt(1))));return wg(()=>{const a=l.get();a.length&&(t(a),l.reset())},[r]),l}function lS(t){let r=[];return{get:()=>r,reset:()=>{r=[]},push:o=>{r.push(o),t()}}}const Sg=W.createContext(null);function aS({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=bh({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:T,setNodes:N}=r.getState();E&&N(T)})},[]),l=Vh(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(bh({items:S,lookup:g}))},[]),u=Vh(a),d=W.useMemo(()=>({nodeQueue:l,edgeQueue:u}),[]);return x.jsx(Sg.Provider,{value:d,children:t})}function uS(){const t=W.useContext(Sg);if(!t)throw new Error("useBatchContext must be used within a BatchProvider");return t}const cS=t=>!!t.panZoom;function hc(){const t=eS(),r=be(),o=uS(),l=Te(cS),a=W.useMemo(()=>{const u=v=>r.getState().nodeLookup.get(v),d=v=>{o.nodeQueue.push(v)},h=v=>{o.edgeQueue.push(v)},p=v=>{var E,T;const{nodeLookup:g,nodeOrigin:S}=r.getState(),_=Hh(v)?v:g.get(v.id),M=_.parentId?Qp(_.position,_.measured,_.parentId,g,S):_.position,k={..._,position:M,width:((E=_.measured)==null?void 0:E.width)??_.width,height:((T=_.measured)==null?void 0:T.height)??_.height};return ho(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&&Hh(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&&sS(k)?k:{...M,...k}}return M}))};return{getNodes:()=>r.getState().nodes.map(v=>({...v})),getNode:v=>{var g;return(g=u(v))==null?void 0:g.internals.userNode},getInternalNode:u,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:T,onDelete:N,onBeforeDelete:P}=r.getState(),{nodes:b,edges:$}=await zw({nodesToRemove:v,edgesToRemove:g,nodes:S,edges:_,onBeforeDelete:P}),H=$.length>0,X=b.length>0;if(H){const K=$.map(Fh);k==null||k($),T(K)}if(X){const K=b.map(Fh);M==null||M(b),E(K)}return(X||H)&&(N==null||N({nodes:b,edges:$})),{deletedNodes:b,deletedEdges:$}},getIntersectingNodes:(v,g=!0,S)=>{const _=fh(v),M=_?v:p(v),k=S!==void 0;return M?(S||r.getState().nodes).filter(E=>{const T=r.getState().nodeLookup.get(E.id);if(T&&!_&&(E.id===v.id||!T.internals.positionAbsolute))return!1;const N=ho(k?E:T),P=cl(N,M);return g&&P>0||P>=N.width*N.height||P>=M.width*M.height}):[]},isNodeIntersecting:(v,g,S=!0)=>{const M=fh(v)?v:p(v);if(!M)return!1;const k=cl(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 Mw(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??Aw();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 Bh=t=>t.selected,dS=typeof window<"u"?window:void 0;function fS({deleteKeyCode:t,multiSelectionKeyCode:r}){const o=be(),{deleteElements:l}=hc(),a=go(t,{actInsideInputWithModifier:!1}),u=go(r,{target:dS});W.useEffect(()=>{if(a){const{edges:d,nodes:h}=o.getState();l({nodes:h.filter(Bh),edges:d.filter(Bh)}),o.setState({nodesSelectionActive:!1})}},[a]),W.useEffect(()=>{o.setState({multiSelectionActive:u})},[u])}function hS(t){const r=be();W.useEffect(()=>{const o=()=>{var a,u,d,h;if(!t.current||!(((u=(a=t.current).checkVisibility)==null?void 0:u.call(a))??!0))return!1;const l=lc(t.current);(l.height===0||l.width===0)&&((h=(d=r.getState()).onError)==null||h.call(d,"004",en.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 El={position:"absolute",width:"100%",height:"100%",top:0,left:0},pS=t=>({userSelectionActive:t.userSelectionActive,lib:t.lib,connectionInProgress:t.connection.inProgress});function gS({onPaneContextMenu:t,zoomOnScroll:r=!0,zoomOnPinch:o=!0,panOnScroll:l=!1,panActivationKeyPressed:a,panOnScrollSpeed:u=.5,panOnScrollMode:d=wr.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:T,isControlledViewport:N,paneClickDistance:P,selectionOnDrag:b}){const $=be(),H=W.useRef(null),{userSelectionActive:X,lib:K,connectionInProgress:ne}=Te(pS,Ue),q=go(S),ee=W.useRef();hS(H);const J=W.useCallback(C=>{T==null||T({x:C[0],y:C[1],zoom:C[2]}),N||$.setState({transform:C})},[T,N]);return W.useEffect(()=>{if(H.current){ee.current=v1({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}=ee.current.getViewport();return $.setState({panZoom:ee.current,transform:[C,B,F],domNode:H.current.closest(".react-flow")}),()=>{var V;(V=ee.current)==null||V.destroy()}}},[]),W.useEffect(()=>{var C;(C=ee.current)==null||C.update({onPaneContextMenu:t,zoomOnScroll:r,zoomOnPinch:o,panOnScroll:l,panActivationKeyPressed:a,panOnScrollSpeed:u,panOnScrollMode:d,zoomOnDoubleClick:h,panOnDrag:p,zoomActivationKeyPressed:q,preventScrolling:_,noPanClassName:E,userSelectionActive:X,noWheelClassName:k,lib:K,onTransformChange:J,connectionInProgress:ne,selectionOnDrag:b,paneClickDistance:P})},[t,r,o,l,a,u,d,h,p,q,_,E,X,k,K,J,ne,b,P]),x.jsx("div",{className:"react-flow__renderer",ref:H,style:El,children:M})}const mS=t=>({userSelectionActive:t.userSelectionActive,userSelectionRect:t.userSelectionRect});function yS(){const{userSelectionActive:t,userSelectionRect:r}=Te(mS,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 zu=(t,r)=>o=>{o.target===r.current&&(t==null||t(o))},vS=t=>({userSelectionActive:t.userSelectionActive,elementsSelectable:t.elementsSelectable,dragging:t.paneDragging,panBy:t.panBy,autoPanSpeed:t.autoPanSpeed});function xS({isSelecting:t,selectionKeyPressed:r,selectionMode:o=fo.Full,panOnDrag:l,autoPanOnSelection:a,paneClickDistance:u,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:T,elementsSelectable:N,dragging:P,panBy:b,autoPanSpeed:$}=Te(vS,Ue),H=N&&(t||T),X=W.useRef(null),K=W.useRef(),ne=W.useRef(new Set),q=W.useRef(new Set),ee=W.useRef(!1),J=W.useRef(!1),C=W.useRef({x:0,y:0}),B=W.useRef(!1),F=Q=>{if(J.current||ee.current||E.getState().connection.inProgress){J.current=!1,ee.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 Re,nt;if(Q.pointerType==="touch"&&l!==!1&&!r)return;const{domNode:se,transform:he}=E.getState();if(K.current=se==null?void 0:se.getBoundingClientRect(),!K.current)return;const we=Q.target===X.current;if(!we&&!!Q.target.closest(".nokey")||!t||!(d&&we||r)||Q.button!==0||!Q.isPrimary)return;(nt=(Re=Q.target)==null?void 0:Re.setPointerCapture)==null||nt.call(Re,Q.pointerId),J.current=!1;const{x:Ce,y:Me}=Jt(Q.nativeEvent,K.current),Pe=ko({x:Ce,y:Me},he);E.setState({userSelectionRect:{width:0,height:0,startX:Pe.x,startY:Pe.y,x:Ce,y:Me}}),we||(Q.stopPropagation(),Q.preventDefault())};function j(Q,se){const{userSelectionRect:he}=E.getState();if(!he)return;const{transform:we,nodeLookup:ve,edgeLookup:me,connectionLookup:Ce,triggerNodeChanges:Me,triggerEdgeChanges:Pe,defaultEdgeOptions:Re}=E.getState(),nt={x:he.startX,y:he.startY},{x:rt,y:Xe}=ui(nt,we),Ge={startX:nt.x,startY:nt.y,x:Qit.id)),q.current=new Set;const At=(Re==null?void 0:Re.selectable)??!0;for(const it of ne.current){const ft=Ce.get(it);if(ft)for(const{edgeId:lt}of ft.values()){const ht=me.get(lt);ht&&(ht.selectable??At)&&q.current.add(lt)}}if(!hh(Bt,ne.current)){const it=ni(ve,ne.current,!0);Me(it)}if(!hh(Lt,q.current)){const it=ni(me,q.current);Pe(it)}E.setState({userSelectionRect:Ge,userSelectionActive:!0,nodesSelectionActive:!1})}function z(){if(!a||!K.current)return;const[Q,se]=oc(C.current,K.current,$);b({x:Q,y:se}).then(he=>{if(!J.current||!he){k.current=requestAnimationFrame(z);return}const{x:we,y:ve}=C.current;j(we,ve),k.current=requestAnimationFrame(z)})}const re=()=>{cancelAnimationFrame(k.current),k.current=0,B.current=!1};W.useEffect(()=>()=>re(),[]);const te=Q=>{const{userSelectionRect:se,transform:he,resetSelectedElements:we}=E.getState();if(!K.current||!se)return;const{x:ve,y:me}=Jt(Q.nativeEvent,K.current);C.current={x:ve,y:me};const Ce=ui({x:se.startX,y:se.startY},he);if(!J.current){const Me=r?0:u;if(Math.hypot(ve-Ce.x,me-Ce.y)<=Me)return;we(),h==null||h(Q)}J.current=!0,B.current||(z(),B.current=!0),j(ve,me)},ae=Q=>{var se,he;if(!H){Q.target===X.current&&E.getState().connection.inProgress&&(ee.current=!0);return}Q.button===0&&((he=(se=Q.target)==null?void 0:se.releasePointerCapture)==null||he.call(se,Q.pointerId),!T&&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})),re())},de=Q=>{var se,he;(he=(se=Q.target)==null?void 0:se.releasePointerCapture)==null||he.call(se,Q.pointerId),re()},ce=l===!0||Array.isArray(l)&&l.includes(0);return x.jsxs("div",{className:Ke(["react-flow__pane",{draggable:ce,dragging:P,selection:t}]),onClick:H?void 0:zu(F,X),onContextMenu:zu(V,X),onWheel:zu(A,X),onPointerEnter:H?void 0:g,onPointerMove:H?te:S,onPointerUp:ae,onPointerCancel:H?de:void 0,onPointerDownCapture:H?O:void 0,onClickCapture:H?L:void 0,onPointerLeave:_,ref:X,style:El,children:[M,x.jsx(yS,{})]})}function Qu({id:t,store:r,unselect:o=!1,nodeRef:l}){const{addSelectedNodes:a,unselectNodesAndEdges:u,multiSelectionActive:d,nodeLookup:h,onError:p}=r.getState(),y=h.get(t);if(!y){p==null||p("012",en.error012(t));return}r.setState({nodesSelectionActive:!1}),y.selected?(o||y.selected&&d)&&(u({nodes:[y],edges:[]}),requestAnimationFrame(()=>{var m;return(m=l==null?void 0:l.current)==null?void 0:m.blur()})):a([t])}function _g({nodeRef:t,disabled:r=!1,noDragClassName:o,handleSelector:l,nodeId:a,isSelectable:u,nodeClickDistance:d}){const h=be(),[p,y]=W.useState(!1),m=W.useRef();return W.useEffect(()=>{if(!r)return m.current=i1({getStoreItems:()=>h.getState(),onNodeMouseDown:v=>{Qu({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:u,nodeId:a,nodeClickDistance:d})},[o,l,r,u,t,a,d]),p}const wS=t=>r=>r.selected&&(r.draggable||t&&typeof r.draggable>"u");function kg(){const t=be();return W.useCallback(o=>{const{nodeExtent:l,snapToGrid:a,snapGrid:u,nodesDraggable:d,onError:h,updateNodePositions:p,nodeLookup:y,nodeOrigin:m}=t.getState(),v=new Map,g=wS(d),S=a?u[0]:5,_=a?u[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 T={x:E.internals.positionAbsolute.x+M,y:E.internals.positionAbsolute.y+k};a&&(T=_o(T,u));const{position:N,positionAbsolute:P}=Vp({nodeId:E.id,nextPosition:T,nodeLookup:y,nodeExtent:l,nodeOrigin:m,onError:h});E.position=N,E.internals.positionAbsolute=P,v.set(E.id,E)}p(v)},[])}const pc=W.createContext(null),SS=pc.Provider;pc.Consumer;const Eg=()=>W.useContext(pc),_S=t=>({connectOnClick:t.connectOnClick,noPanClassName:t.noPanClassName,rfId:t.rfId}),Ng=W.createContext(null);function kS({children:t}){const r=Te(_S,Ue);return x.jsx(Ng.Provider,{value:r,children:t})}function ES(){const t=W.useContext(Ng);if(!t)throw new Error("useHandleConfig must be used within a HandleConfigProvider");return t}const NS={connectingFrom:!1,connectingTo:!1,clickConnecting:!1,isPossibleEndHandle:!0,connectionInProcess:!1,clickConnectionInProcess:!1,valid:!1},CS=(t,r,o)=>l=>{const{connectionClickStartHandle:a,connectionMode:u,connection:d}=l,{fromHandle:h,toHandle:p,isValid:y}=d;if(!h&&!a)return NS;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:u===li.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 jS({type:t="source",position:r=Se.Top,isValidConnection:o,isConnectable:l=!0,isConnectableStart:a=!0,isConnectableEnd:u=!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=Eg(),{connectOnClick:T,noPanClassName:N,rfId:P}=ES(),{connectingFrom:b,connectingTo:$,clickConnecting:H,isPossibleEndHandle:X,connectionInProcess:K,clickConnectionInProcess:ne,valid:q}=Te(CS(E,_,t),Ue);E||(F=(B=k.getState()).onError)==null||F.call(B,"010",en.error010());const ee=V=>{const{defaultEdgeOptions:A,onConnect:L,hasDefaultEdges:O}=k.getState(),j={...A,...V};if(O){const{edges:z,setEdges:re,onError:te}=k.getState();re(oS(j,z,{onError:te}))}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();Xu.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,z;return(z=(j=k.getState()).onConnectEnd)==null?void 0:z.call(j,...O)},updateConnection:L.updateConnection,onConnect:ee,isValidConnection:o||((...O)=>{var j,z;return((z=(j=k.getState()).isValidConnection)==null?void 0:z.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:z,lib:re,rfId:te,nodeLookup:ae,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=Kp(V.target),Q=o||z,{connection:se,isValid:he}=Xu.isValid(V.nativeEvent,{handle:{nodeId:E,id:_,type:t},connectionMode:j,fromNodeId:O.nodeId,fromHandleId:O.id||null,fromType:O.type,isValidConnection:Q,flowId:te,doc:ce,lib:re,nodeLookup:ae});he&&se&&ee(se);const we=structuredClone(de);delete we.inProgress,we.toPosition=we.toHandle?we.toHandle.position:null,L==null||L(V,we),k.setState({connectionClickStartHandle:null})};return x.jsx("div",{"data-handleid":_,"data-nodeid":E,"data-handlepos":r,"data-id":`${P}-${E}-${_}-${t}`,className:Ke(["react-flow__handle",`react-flow__handle-${r}`,"nodrag",N,y,{source:!M,target:M,connectable:l,connectablestart:a,connectableend:u,clickconnecting:H,connectingfrom:b,connectingto:$,valid:q,connectionindicator:l&&(!K||X)&&(K||ne?u:a)}]),onMouseDown:J,onTouchStart:J,onClick:T?C:void 0,ref:S,...g,children:p})}const dl=W.memo(xg(jS));function MS({data:t,isConnectable:r,sourcePosition:o=Se.Bottom}){return x.jsxs(x.Fragment,{children:[t==null?void 0:t.label,x.jsx(dl,{type:"source",position:o,isConnectable:r})]})}function PS({data:t,isConnectable:r,targetPosition:o=Se.Top,sourcePosition:l=Se.Bottom}){return x.jsxs(x.Fragment,{children:[x.jsx(dl,{type:"target",position:o,isConnectable:r}),t==null?void 0:t.label,x.jsx(dl,{type:"source",position:l,isConnectable:r})]})}function IS(){return null}function TS({data:t,isConnectable:r,targetPosition:o=Se.Top}){return x.jsxs(x.Fragment,{children:[x.jsx(dl,{type:"target",position:o,isConnectable:r}),t==null?void 0:t.label]})}const fl={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},Uh={input:MS,default:PS,output:TS,group:IS};function zS(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 RS=t=>{const{width:r,height:o,x:l,y:a}=So(t.nodeLookup,{filter:u=>!!u.selected});return{width:Zt(r)?r:null,height:Zt(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 LS({onSelectionContextMenu:t,noPanClassName:r,disableKeyboardA11y:o}){const l=be(),{width:a,height:u,transformString:d,userSelectionActive:h}=Te(RS,Ue),p=kg(),y=W.useRef(null);W.useEffect(()=>{var S;o||(S=y.current)==null||S.focus({preventScroll:!0})},[o]);const m=!h&&a!==null&&u!==null;if(_g({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(fl,S.key)&&(S.preventDefault(),p({direction:fl[S.key],factor:S.shiftKey?4:1}))};return x.jsx("div",{className:Ke(["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:u}})})}const Wh=typeof window<"u"?window:void 0,AS=t=>({nodesSelectionActive:t.nodesSelectionActive,userSelectionActive:t.userSelectionActive});function Cg({children:t,onPaneClick:r,onPaneMouseEnter:o,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:u,onPaneScroll:d,paneClickDistance:h,deleteKeyCode:p,selectionKeyCode:y,selectionOnDrag:m,selectionMode:v,onSelectionStart:g,onSelectionEnd:S,multiSelectionKeyCode:_,panActivationKeyCode:M,zoomActivationKeyCode:k,elementsSelectable:E,zoomOnScroll:T,zoomOnPinch:N,panOnScroll:P,panOnScrollSpeed:b,panOnScrollMode:$,zoomOnDoubleClick:H,panOnDrag:X,autoPanOnSelection:K,defaultViewport:ne,translateExtent:q,minZoom:ee,maxZoom:J,preventScrolling:C,onSelectionContextMenu:B,noWheelClassName:F,noPanClassName:V,disableKeyboardA11y:A,onViewportChange:L,isControlledViewport:O}){const{nodesSelectionActive:j,userSelectionActive:z}=Te(AS,Ue),re=go(y,{target:Wh}),te=go(M,{target:Wh}),ae=te||X,de=te||P,ce=m&&ae!==!0,Q=re||z||ce;return fS({deleteKeyCode:p,multiSelectionKeyCode:_}),x.jsx(gS,{onPaneContextMenu:u,elementsSelectable:E,zoomOnScroll:T,zoomOnPinch:N,panOnScroll:de,panActivationKeyPressed:te,panOnScrollSpeed:b,panOnScrollMode:$,zoomOnDoubleClick:H,panOnDrag:!re&&ae,defaultViewport:ne,translateExtent:q,minZoom:ee,maxZoom:J,zoomActivationKeyCode:k,preventScrolling:C,noWheelClassName:F,noPanClassName:V,onViewportChange:L,isControlledViewport:O,paneClickDistance:h,selectionOnDrag:ce,children:x.jsxs(xS,{onSelectionStart:g,onSelectionEnd:S,onPaneClick:r,onPaneMouseEnter:o,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:u,onPaneScroll:d,panOnDrag:ae,autoPanOnSelection:K,isSelecting:!!Q,selectionMode:v,selectionKeyPressed:re,paneClickDistance:h,selectionOnDrag:ce,children:[t,j&&x.jsx(LS,{onSelectionContextMenu:B,noPanClassName:V,disableKeyboardA11y:A})]})})}Cg.displayName="FlowRenderer";const $S=W.memo(Cg),DS=t=>r=>t?ic(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 OS(t){return Te(W.useCallback(DS(t),[t]),Ue)}const bS=t=>t.updateNodeInternals;function FS(){const t=Te(bS),[r]=W.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(o=>{const l=new Map;o.forEach(a=>{const u=a.target.getAttribute("data-id");l.set(u,{id:u,nodeElement:a.target,force:!0})}),t(l)}));return W.useEffect(()=>()=>{r==null||r.disconnect()},[r]),r}function HS({node:t,nodeType:r,hasDimensions:o,resizeObserver:l}){const a=be(),u=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(()=>{u.current&&!t.hidden&&(!m||d.current!==u.current)&&(d.current&&(l==null||l.unobserve(d.current)),l==null||l.observe(u.current),d.current=u.current)},[m,t.hidden]),W.useEffect(()=>()=>{d.current&&(l==null||l.unobserve(d.current),d.current=null)},[]),W.useEffect(()=>{if(u.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:u.current,force:!0}]])))}},[t.id,r,t.sourcePosition,t.targetPosition]),u}function VS({id:t,onClick:r,onMouseEnter:o,onMouseMove:l,onMouseLeave:a,onContextMenu:u,onDoubleClick:d,nodesDraggable:h,elementsSelectable:p,nodesConnectable:y,nodesFocusable:m,resizeObserver:v,noDragClassName:g,noPanClassName:S,disableKeyboardA11y:_,rfId:M,nodeTypes:k,nodeClickDistance:E,onError:T}){const{node:N,internals:P,isParent:b}=Te(Q=>{const se=Q.nodeLookup.get(t),he=Q.parentLookup.has(t);return{node:se,internals:se.internals,isParent:he}},Ue);let $=N.type||"default",H=(k==null?void 0:k[$])||Uh[$];H===void 0&&(T==null||T("003",en.error003($)),$="default",H=(k==null?void 0:k.default)||Uh.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"),q=!!(N.focusable||m&&typeof N.focusable>"u"),ee=be(),J=Xp(N),C=HS({node:N,nodeType:$,hasDimensions:J,resizeObserver:v}),B=_g({nodeRef:C,disabled:N.hidden||!X,noDragClassName:g,handleSelector:N.dragHandle,nodeId:t,isSelectable:K,nodeClickDistance:E}),F=kg();if(N.hidden)return null;const V=nn(N),A=zS(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,z=a?Q=>a(Q,{...P.userNode}):void 0,re=u?Q=>u(Q,{...P.userNode}):void 0,te=d?Q=>d(Q,{...P.userNode}):void 0,ae=Q=>{const{selectNodesOnDrag:se,nodeDragThreshold:he}=ee.getState();K&&(!se||!X||he>0)&&Qu({id:t,store:ee,nodeRef:C}),r&&r(Q,{...P.userNode})},de=Q=>{if(!(Gp(Q.nativeEvent)||_)){if(Dp.includes(Q.key)&&K){const se=Q.key==="Escape";Qu({id:t,store:ee,unselect:se,nodeRef:C})}else if(X&&N.selected&&Object.prototype.hasOwnProperty.call(fl,Q.key)){Q.preventDefault();const{ariaLabelConfig:se}=ee.getState();ee.setState({ariaLiveMessage:se["node.a11yDescription.ariaLiveMessage"]({direction:Q.key.replace("Arrow","").toLowerCase(),x:~~P.positionAbsolute.x,y:~~P.positionAbsolute.y})}),F({direction:fl[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:he,autoPanOnNodeFocus:we,setCenter:ve}=ee.getState();if(!we)return;ic(new Map([[t,N]]),{x:0,y:0,width:se,height:he},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:Ke(["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:z,onContextMenu:re,onClick:ae,onDoubleClick:te,onKeyDown:q?de:void 0,tabIndex:q?0:void 0,onFocus:q?ce:void 0,role:N.ariaRole??(q?"group":void 0),"aria-roledescription":"node","aria-describedby":_?void 0:`${gg}-${M}`,"aria-label":N.ariaLabel,...N.domAttributes,children:x.jsx(SS,{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(VS);const US=t=>({nodesConnectable:t.nodesConnectable,nodesFocusable:t.nodesFocusable,elementsSelectable:t.elementsSelectable,onError:t.onError});function jg(t){const{nodesConnectable:r,nodesFocusable:o,elementsSelectable:l,onError:a}=Te(US,Ue),u=OS(t.onlyRenderVisibleElements),d=FS();return x.jsx("div",{className:"react-flow__nodes",style:El,children:u.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))})}jg.displayName="NodeRenderer";const WS=W.memo(jg);function YS(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 u=o.nodeLookup.get(a.source),d=o.nodeLookup.get(a.target);u&&d&&bw({sourceNode:u,targetNode:d,width:o.width,height:o.height,transform:o.transform})&&l.push(a.id)}return l},[t]),Ue)}const XS=({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"})},QS=({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"})},Yh={[al.Arrow]:XS,[al.ArrowClosed]:QS};function KS(t){const r=be();return W.useMemo(()=>{var a,u;return Object.prototype.hasOwnProperty.call(Yh,t)?Yh[t]:((u=(a=r.getState()).onError)==null||u.call(a,"009",en.error009(t)),null)},[t])}const GS=({id:t,type:r,color:o,width:l=12.5,height:a=12.5,markerUnits:u="strokeWidth",strokeWidth:d,orient:h="auto-start-reverse"})=>{const p=KS(r);return p?x.jsx("marker",{className:"react-flow__arrowhead",id:t,markerWidth:`${l}`,markerHeight:`${a}`,viewBox:"-10 -10 20 20",markerUnits:u,orient:h,refX:"0",refY:"0",children:x.jsx(p,{color:o,strokeWidth:d})}):null},Mg=({defaultColor:t,rfId:r})=>{const o=Te(u=>u.edges),l=Te(u=>u.defaultEdgeOptions),a=W.useMemo(()=>Xw(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(u=>x.jsx(GS,{id:u.id,type:u.type,color:u.color,width:u.width,height:u.height,markerUnits:u.markerUnits,strokeWidth:u.strokeWidth,orient:u.orient},u.id))})}):null};Mg.displayName="MarkerDefinitions";var qS=W.memo(Mg);function Pg({x:t,y:r,label:o,labelStyle:l,labelShowBg:a=!0,labelBgStyle:u,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=Ke(["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:u,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}Pg.displayName="EdgeText";const ZS=W.memo(Pg);function Nl({path:t,labelX:r,labelY:o,label:l,labelStyle:a,labelShowBg:u,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:Ke(["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&&Zt(r)&&Zt(o)?x.jsx(ZS,{x:r,y:o,label:l,labelStyle:a,labelShowBg:u,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:p}):null]})}function Xh({pos:t,x1:r,y1:o,x2:l,y2:a}){return t===Se.Left||t===Se.Right?[.5*(r+l),o]:[r,.5*(o+a)]}function Ig({sourceX:t,sourceY:r,sourcePosition:o=Se.Bottom,targetX:l,targetY:a,targetPosition:u=Se.Top}){const[d,h]=Xh({pos:o,x1:t,y1:r,x2:l,y2:a}),[p,y]=Xh({pos:u,x1:l,y1:a,x2:t,y2:r}),[m,v,g,S]=Zp({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 Tg(t){return W.memo(({id:r,sourceX:o,sourceY:l,targetX:a,targetY:u,sourcePosition:d,targetPosition:h,label:p,labelStyle:y,labelShowBg:m,labelBgStyle:v,labelBgPadding:g,labelBgBorderRadius:S,style:_,markerEnd:M,markerStart:k,interactionWidth:E})=>{const[T,N,P]=Ig({sourceX:o,sourceY:l,sourcePosition:d,targetX:a,targetY:u,targetPosition:h}),b=t.isInternal?void 0:r;return x.jsx(Nl,{id:b,path:T,labelX:N,labelY:P,label:p,labelStyle:y,labelShowBg:m,labelBgStyle:v,labelBgPadding:g,labelBgBorderRadius:S,style:_,markerEnd:M,markerStart:k,interactionWidth:E})})}const JS=Tg({isInternal:!1}),zg=Tg({isInternal:!0});JS.displayName="SimpleBezierEdge";zg.displayName="SimpleBezierEdgeInternal";function Rg(t){return W.memo(({id:r,sourceX:o,sourceY:l,targetX:a,targetY:u,label:d,labelStyle:h,labelShowBg:p,labelBgStyle:y,labelBgPadding:m,labelBgBorderRadius:v,style:g,sourcePosition:S=Se.Bottom,targetPosition:_=Se.Top,markerEnd:M,markerStart:k,pathOptions:E,interactionWidth:T})=>{const[N,P,b]=Uu({sourceX:o,sourceY:l,sourcePosition:S,targetX:a,targetY:u,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(Nl,{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:T})})}const Lg=Rg({isInternal:!1}),Ag=Rg({isInternal:!0});Lg.displayName="SmoothStepEdge";Ag.displayName="SmoothStepEdgeInternal";function $g(t){return W.memo(({id:r,...o})=>{var a;const l=t.isInternal?void 0:r;return x.jsx(Lg,{...o,id:l,pathOptions:W.useMemo(()=>{var u;return{borderRadius:0,offset:(u=o.pathOptions)==null?void 0:u.offset}},[(a=o.pathOptions)==null?void 0:a.offset])})})}const e_=$g({isInternal:!1}),Dg=$g({isInternal:!0});e_.displayName="StepEdge";Dg.displayName="StepEdgeInternal";function Og(t){return W.memo(({id:r,sourceX:o,sourceY:l,targetX:a,targetY:u,label:d,labelStyle:h,labelShowBg:p,labelBgStyle:y,labelBgPadding:m,labelBgBorderRadius:v,style:g,markerEnd:S,markerStart:_,interactionWidth:M})=>{const[k,E,T]=tg({sourceX:o,sourceY:l,targetX:a,targetY:u}),N=t.isInternal?void 0:r;return x.jsx(Nl,{id:N,path:k,labelX:E,labelY:T,label:d,labelStyle:h,labelShowBg:p,labelBgStyle:y,labelBgPadding:m,labelBgBorderRadius:v,style:g,markerEnd:S,markerStart:_,interactionWidth:M})})}const t_=Og({isInternal:!1}),bg=Og({isInternal:!0});t_.displayName="StraightEdge";bg.displayName="StraightEdgeInternal";function Fg(t){return W.memo(({id:r,sourceX:o,sourceY:l,targetX:a,targetY:u,sourcePosition:d=Se.Bottom,targetPosition:h=Se.Top,label:p,labelStyle:y,labelShowBg:m,labelBgStyle:v,labelBgPadding:g,labelBgBorderRadius:S,style:_,markerEnd:M,markerStart:k,pathOptions:E,interactionWidth:T})=>{const[N,P,b]=Jp({sourceX:o,sourceY:l,sourcePosition:d,targetX:a,targetY:u,targetPosition:h,curvature:E==null?void 0:E.curvature}),$=t.isInternal?void 0:r;return x.jsx(Nl,{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:T})})}const n_=Fg({isInternal:!1}),Hg=Fg({isInternal:!0});n_.displayName="BezierEdge";Hg.displayName="BezierEdgeInternal";const Qh={default:Hg,straight:bg,step:Dg,smoothstep:Ag,simplebezier:zg},Kh={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null,zIndex:void 0},r_=(t,r,o)=>o===Se.Left?t-r:o===Se.Right?t+r:t,i_=(t,r,o)=>o===Se.Top?t-r:o===Se.Bottom?t+r:t,Gh="react-flow__edgeupdater";function qh({position:t,centerX:r,centerY:o,radius:l=10,onMouseDown:a,onMouseEnter:u,onMouseOut:d,type:h}){return x.jsx("circle",{onMouseDown:a,onMouseEnter:u,onMouseOut:d,className:Ke([Gh,`${Gh}-${h}`]),cx:r_(r,l,t),cy:i_(o,l,t),r:l,stroke:"transparent",fill:"transparent"})}function o_({isReconnectable:t,reconnectRadius:r,edge:o,sourceX:l,sourceY:a,targetX:u,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:q,cancelConnection:ee,nodeLookup:J,rfId:C,panBy:B,updateConnection:F}=_.getState(),V=b.type==="target",A=(j,z)=>{g(!1),v==null||v(j,o,b.type,z)},L=j=>y==null?void 0:y(o,j),O=(j,z)=>{g(!0),m==null||m(P,o,b.type),q==null||q(j,z)};Xu.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:ee,panBy:B,isValidConnection:(...j)=>{var z,re;return((re=(z=_.getState()).isValidConnection)==null?void 0:re.call(z,...j))??!0},onConnect:L,onConnectStart:O,onConnectEnd:(...j)=>{var z,re;return(re=(z=_.getState()).onConnectEnd)==null?void 0:re.call(z,...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"}),T=()=>S(!0),N=()=>S(!1);return x.jsxs(x.Fragment,{children:[(t===!0||t==="source")&&x.jsx(qh,{position:h,centerX:l,centerY:a,radius:r,onMouseDown:k,onMouseEnter:T,onMouseOut:N,type:"source"}),(t===!0||t==="target")&&x.jsx(qh,{position:p,centerX:u,centerY:d,radius:r,onMouseDown:E,onMouseEnter:T,onMouseOut:N,type:"target"})]})}function s_({id:t,edgesFocusable:r,edgesReconnectable:o,elementsSelectable:l,onClick:a,onDoubleClick:u,onContextMenu:d,onMouseEnter:h,onMouseMove:p,onMouseLeave:y,reconnectRadius:m,onReconnect:v,onReconnectStart:g,onReconnectEnd:S,rfId:_,edgeTypes:M,noPanClassName:k,onError:E,disableKeyboardA11y:T}){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])||Qh[b];$===void 0&&(E==null||E("011",en.error011(b)),b="default",$=(M==null?void 0:M.default)||Qh.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),[q,ee]=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:z}=Te(W.useCallback(ve=>{const me=ve.nodeLookup.get(N.source),Ce=ve.nodeLookup.get(N.target);if(!me||!Ce)return Kh;const Me=Yw({id:t,sourceNode:me,targetNode:Ce,sourceHandle:N.sourceHandle||null,targetHandle:N.targetHandle||null,connectionMode:ve.connectionMode,onError:E}),Pe=Ow({selected:N.selected,zIndex:N.zIndex,sourceNode:me,targetNode:Ce,elevateOnSelect:ve.elevateEdgesOnSelect,zIndexMode:ve.zIndexMode});return{...Me||Kh,zIndex:Pe}},[N.source,N.target,N.sourceHandle,N.targetHandle,N.selected,N.zIndex,E]),Ue),re=W.useMemo(()=>N.markerStart?`url('#${Wu(N.markerStart,_)}')`:void 0,[N.markerStart,_]),te=W.useMemo(()=>N.markerEnd?`url('#${Wu(N.markerEnd,_)}')`:void 0,[N.markerEnd,_]);if(N.hidden||V===null||A===null||L===null||O===null)return null;const ae=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=u?ve=>{u(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,he=y?ve=>{y(ve,{...N})}:void 0,we=ve=>{var me;if(!T&&Dp.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:Ke(["react-flow__edge",`react-flow__edge-${b}`,N.className,k,{selected:N.selected,animated:N.animated,inactive:!K&&!a,updating:q,selectable:K}]),onClick:ae,onDoubleClick:de,onContextMenu:ce,onMouseEnter:Q,onMouseMove:se,onMouseLeave:he,onKeyDown:H?we: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?`${mg}-${_}`: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:z,data:N.data,style:N.style,sourceHandleId:N.sourceHandle,targetHandleId:N.targetHandle,markerStart:re,markerEnd:te,pathOptions:"pathOptions"in N?N.pathOptions:void 0,interactionWidth:N.interactionWidth}),X&&x.jsx(o_,{edge:N,isReconnectable:X,reconnectRadius:m,onReconnect:v,onReconnectStart:g,onReconnectEnd:S,sourceX:V,sourceY:A,targetX:L,targetY:O,sourcePosition:j,targetPosition:z,setUpdateHover:ee,setReconnecting:C})]})})}var l_=W.memo(s_);const a_=t=>({edgesFocusable:t.edgesFocusable,edgesReconnectable:t.edgesReconnectable,elementsSelectable:t.elementsSelectable,connectionMode:t.connectionMode,onError:t.onError});function Vg({defaultMarkerColor:t,onlyRenderVisibleElements:r,rfId:o,edgeTypes:l,noPanClassName:a,onReconnect:u,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:T,onError:N}=Te(a_,Ue),P=YS(r);return x.jsxs("div",{className:"react-flow__edges",children:[x.jsx(qS,{defaultColor:t,rfId:o}),P.map(b=>x.jsx(l_,{id:b,edgesFocusable:k,edgesReconnectable:E,elementsSelectable:T,noPanClassName:a,onReconnect:u,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))]})}Vg.displayName="EdgeRenderer";const u_=W.memo(Vg),Zh=t=>`translate(${t[0]}px,${t[1]}px) scale(${t[2]})`;function c_({children:t}){const r=be(),o=W.useRef(null),[l]=W.useState(()=>r.getState().transform);return wg(()=>{let a=null;const u=()=>{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=Zh(d)))};return u(),r.subscribe(u)},[r]),x.jsx("div",{ref:o,className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:Zh(l)},children:t})}function d_(t){const r=hc(),o=W.useRef(!1);W.useEffect(()=>{!o.current&&r.viewportInitialized&&t&&(setTimeout(()=>t(r),1),o.current=!0)},[t,r.viewportInitialized])}const f_=t=>{var r;return(r=t.panZoom)==null?void 0:r.syncViewport};function h_(t){const r=Te(f_),o=be();return W.useEffect(()=>{t&&(r==null||r(t),o.setState({transform:[t.x,t.y,t.zoom]}))},[t,r]),null}function p_(t){return t.connection.inProgress?{...t.connection,to:ko(t.connection.to,t.transform)}:{...t.connection}}function g_(t){return p_}function m_(t){const r=g_();return Te(r,Ue)}const y_=t=>({nodesConnectable:t.nodesConnectable,isValid:t.connection.isValid,inProgress:t.connection.inProgress,width:t.width,height:t.height});function v_({containerStyle:t,style:r,type:o,component:l}){const{nodesConnectable:a,width:u,height:d,isValid:h,inProgress:p}=Te(y_,Ue);return!(u&&a&&p)?null:x.jsx("svg",{style:t,width:u,height:d,className:"react-flow__connectionline react-flow__container",children:x.jsx("g",{className:Ke(["react-flow__connection",Fp(h)]),children:x.jsx(Bg,{style:r,type:o,CustomComponent:l,isValid:h})})})}const Bg=({style:t,type:r=qn.Bezier,CustomComponent:o,isValid:l})=>{const{inProgress:a,from:u,fromNode:d,fromHandle:h,fromPosition:p,to:y,toNode:m,toHandle:v,toPosition:g,pointer:S}=m_();if(!a)return;if(o)return x.jsx(o,{connectionLineType:r,connectionLineStyle:t,fromNode:d,fromHandle:h,fromX:u.x,fromY:u.y,toX:y.x,toY:y.y,fromPosition:p,toPosition:g,connectionStatus:Fp(l),toNode:m,toHandle:v,pointer:S});let _="";const M={sourceX:u.x,sourceY:u.y,sourcePosition:p,targetX:y.x,targetY:y.y,targetPosition:g};switch(r){case qn.Bezier:[_]=Jp(M);break;case qn.SimpleBezier:[_]=Ig(M);break;case qn.Step:[_]=Uu({...M,borderRadius:0});break;case qn.SmoothStep:[_]=Uu(M);break;default:[_]=tg(M)}return x.jsx("path",{d:_,fill:"none",className:"react-flow__connection-path",style:t})};Bg.displayName="ConnectionLine";const x_={};function Jh(t=x_){W.useRef(t),be(),W.useEffect(()=>{},[t])}function w_(){be(),W.useRef(!1),W.useEffect(()=>{},[])}function Ug({nodeTypes:t,edgeTypes:r,onInit:o,onNodeClick:l,onEdgeClick:a,onNodeDoubleClick:u,onEdgeDoubleClick:d,onNodeMouseEnter:h,onNodeMouseMove:p,onNodeMouseLeave:y,onNodeContextMenu:m,onSelectionContextMenu:v,onSelectionStart:g,onSelectionEnd:S,connectionLineType:_,connectionLineStyle:M,connectionLineComponent:k,connectionLineContainerStyle:E,selectionKeyCode:T,selectionOnDrag:N,selectionMode:P,multiSelectionKeyCode:b,panActivationKeyCode:$,zoomActivationKeyCode:H,deleteKeyCode:X,onlyRenderVisibleElements:K,elementsSelectable:ne,defaultViewport:q,translateExtent:ee,minZoom:J,maxZoom:C,preventScrolling:B,defaultMarkerColor:F,zoomOnScroll:V,zoomOnPinch:A,panOnScroll:L,panOnScrollSpeed:O,panOnScrollMode:j,zoomOnDoubleClick:z,panOnDrag:re,autoPanOnSelection:te,onPaneClick:ae,onPaneMouseEnter:de,onPaneMouseMove:ce,onPaneMouseLeave:Q,onPaneScroll:se,onPaneContextMenu:he,paneClickDistance:we,nodeClickDistance:ve,onEdgeContextMenu:me,onEdgeMouseEnter:Ce,onEdgeMouseMove:Me,onEdgeMouseLeave:Pe,reconnectRadius:Re,onReconnect:nt,onReconnectStart:rt,onReconnectEnd:Xe,noDragClassName:Ge,noWheelClassName:Bt,noPanClassName:Lt,disableKeyboardA11y:At,nodeExtent:it,rfId:ft,viewport:lt,onViewportChange:ht,nodesDraggable:hn}){return Jh(t),Jh(r),w_(),d_(o),h_(lt),x.jsx($S,{onPaneClick:ae,onPaneMouseEnter:de,onPaneMouseMove:ce,onPaneMouseLeave:Q,onPaneContextMenu:he,onPaneScroll:se,paneClickDistance:we,deleteKeyCode:X,selectionKeyCode:T,selectionOnDrag:N,selectionMode:P,onSelectionStart:g,onSelectionEnd:S,multiSelectionKeyCode:b,panActivationKeyCode:$,zoomActivationKeyCode:H,elementsSelectable:ne,zoomOnScroll:V,zoomOnPinch:A,zoomOnDoubleClick:z,panOnScroll:L,panOnScrollSpeed:O,panOnScrollMode:j,panOnDrag:re,autoPanOnSelection:te,defaultViewport:q,translateExtent:ee,minZoom:J,maxZoom:C,onSelectionContextMenu:v,preventScrolling:B,noDragClassName:Ge,noWheelClassName:Bt,noPanClassName:Lt,disableKeyboardA11y:At,onViewportChange:ht,isControlledViewport:!!lt,children:x.jsxs(c_,{children:[x.jsx(u_,{edgeTypes:r,onEdgeClick:a,onEdgeDoubleClick:d,onReconnect:nt,onReconnectStart:rt,onReconnectEnd:Xe,onlyRenderVisibleElements:K,onEdgeContextMenu:me,onEdgeMouseEnter:Ce,onEdgeMouseMove:Me,onEdgeMouseLeave:Pe,reconnectRadius:Re,defaultMarkerColor:F,noPanClassName:Lt,disableKeyboardA11y:At,rfId:ft}),x.jsx(v_,{style:M,type:_,component:k,containerStyle:E}),x.jsx("div",{className:"react-flow__edgelabel-renderer"}),x.jsx(WS,{nodeTypes:t,onNodeClick:l,onNodeDoubleClick:u,onNodeMouseEnter:h,onNodeMouseMove:p,onNodeMouseLeave:y,onNodeContextMenu:m,nodeClickDistance:ve,onlyRenderVisibleElements:K,noPanClassName:Lt,noDragClassName:Ge,disableKeyboardA11y:At,nodeExtent:it,rfId:ft,nodesDraggable:hn}),x.jsx("div",{className:"react-flow__viewport-portal"})]})})}Ug.displayName="GraphView";const S_=W.memo(Ug),__=Yp(),ep=({nodes:t,edges:r,defaultNodes:o,defaultEdges:l,width:a,height:u,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??[],T=o??t??[],N=m??[0,0],P=v??co;ig(M,k,E);const{nodesInitialized:b}=Yu(T,S,_,{nodeOrigin:N,nodeExtent:P,zIndexMode:g});let $=[0,0,1];if(d&&a&&u){const H=So(S,{filter:q=>!!((q.width||q.initialWidth)&&(q.height||q.initialHeight))}),{x:X,y:K,zoom:ne}=sc(H,a,u,p,y,(h==null?void 0:h.padding)??.1);$=[X,K,ne]}return{rfId:"1",width:a??0,height:u??0,transform:$,nodes:T,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:co,nodeExtent:P,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:li.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:{...bp},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:__,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:Op,zIndexMode:g,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},k_=({nodes:t,edges:r,defaultNodes:o,defaultEdges:l,width:a,height:u,fitView:d,fitViewOptions:h,minZoom:p,maxZoom:y,nodeOrigin:m,nodeExtent:v,zIndexMode:g})=>A1((S,_)=>{async function M(){const{nodeLookup:k,panZoom:E,fitViewOptions:T,fitViewResolver:N,width:P,height:b,minZoom:$,maxZoom:H}=_();E&&(await Tw({nodes:k,width:P,height:b,panZoom:E,minZoom:$,maxZoom:H},T),N==null||N.resolve(!0),S({fitViewResolver:null}))}return{...ep({nodes:t,edges:r,width:a,height:u,fitView:d,fitViewOptions:h,minZoom:p,maxZoom:y,nodeOrigin:m,nodeExtent:v,defaultNodes:o,defaultEdges:l,zIndexMode:g}),setNodes:k=>{const{nodeLookup:E,parentLookup:T,nodeOrigin:N,nodeExtent:P,elevateNodesOnSelect:b,fitViewQueued:$,zIndexMode:H,nodesSelectionActive:X}=_(),{nodesInitialized:K,hasSelectedNodes:ne}=Yu(k,E,T,{nodeOrigin:N,nodeExtent:P,elevateNodesOnSelect:b,checkEquality:!0,zIndexMode:H}),q=X&≠$&&K?(M(),S({nodes:k,nodesInitialized:K,fitViewQueued:!1,fitViewOptions:void 0,nodesSelectionActive:q})):S({nodes:k,nodesInitialized:K,nodesSelectionActive:q})},setEdges:k=>{const{connectionLookup:E,edgeLookup:T}=_();ig(E,T,k),S({edges:k})},setDefaultNodesAndEdges:(k,E)=>{if(k){const{setNodes:T}=_();T(k),S({hasDefaultNodes:!0})}if(E){const{setEdges:T}=_();T(E),S({hasDefaultEdges:!0})}},updateNodeInternals:k=>{const{triggerNodeChanges:E,nodeLookup:T,parentLookup:N,domNode:P,nodeOrigin:b,nodeExtent:$,debug:H,fitViewQueued:X,zIndexMode:K}=_(),{changes:ne,updatedInternals:q}=e1(k,T,N,P,b,$,K);q&&(Gw(T,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 T=[];let N=[];const{nodeLookup:P,triggerNodeChanges:b,connection:$,updateConnection:H,onNodesChangeMiddlewareMap:X}=_();for(const[K,ne]of k){const q=P.get(K),ee=!!(q!=null&&q.expandParent&&(q!=null&&q.parentId)&&(ne!=null&&ne.position)),J={id:K,type:"position",position:ee?{x:Math.max(0,ne.position.x),y:Math.max(0,ne.position.y)}:ne.position,dragging:E};if(q&&$.inProgress&&$.fromNode.id===q.id){const C=Nr(q,$.fromHandle,Se.Left,!0);H({...$,from:C})}ee&&q.parentId&&T.push({id:K,parentId:q.parentId,rect:{...ne.internals.positionAbsolute,width:ne.measured.width??0,height:ne.measured.height??0}}),N.push(J)}if(T.length>0){const{parentLookup:K,nodeOrigin:ne}=_(),q=fc(T,P,K,ne);N.push(...q)}for(const K of X.values())N=K(N);b(N)},triggerNodeChanges:k=>{const{onNodesChange:E,setNodes:T,nodes:N,hasDefaultNodes:P,debug:b}=_();if(k!=null&&k.length){if(P){const $=nS(k,N);T($)}b&&console.log("React Flow: trigger node changes",k),E==null||E(k)}},triggerEdgeChanges:k=>{const{onEdgesChange:E,setEdges:T,edges:N,hasDefaultEdges:P,debug:b}=_();if(k!=null&&k.length){if(P){const $=rS(k,N);T($)}b&&console.log("React Flow: trigger edge changes",k),E==null||E(k)}},addSelectedNodes:k=>{const{multiSelectionActive:E,edgeLookup:T,nodeLookup:N,triggerNodeChanges:P,triggerEdgeChanges:b}=_();if(E){const $=k.map(H=>yr(H,!0));P($);return}P(ni(N,new Set([...k]),!0)),b(ni(T))},addSelectedEdges:k=>{const{multiSelectionActive:E,edgeLookup:T,nodeLookup:N,triggerNodeChanges:P,triggerEdgeChanges:b}=_();if(E){const $=k.map(H=>yr(H,!0));b($);return}b(ni(T,new Set([...k]))),P(ni(N,new Set,!0))},unselectNodesAndEdges:({nodes:k,edges:E}={})=>{const{edges:T,nodes:N,nodeLookup:P,triggerNodeChanges:b,triggerEdgeChanges:$}=_(),H=k||N,X=E||T,K=[];for(const q of H){if(!q.selected)continue;const ee=P.get(q.id);ee&&(ee.selected=!1),K.push(yr(q.id,!1))}const ne=[];for(const q of X)q.selected&&ne.push(yr(q.id,!1));b(K),$(ne)},setMinZoom:k=>{const{panZoom:E,maxZoom:T}=_();E==null||E.setScaleExtent([k,T]),S({minZoom:k})},setMaxZoom:k=>{const{panZoom:E,minZoom:T}=_();E==null||E.setScaleExtent([T,k]),S({maxZoom:k})},setTranslateExtent:k=>{var E;(E=_().panZoom)==null||E.setTranslateExtent(k),S({translateExtent:k})},resetSelectedElements:()=>{const{edges:k,nodes:E,triggerNodeChanges:T,triggerEdgeChanges:N,elementsSelectable:P}=_();if(!P)return;const b=E.reduce((H,X)=>X.selected?[...H,yr(X.id,!1)]:H,[]),$=k.reduce((H,X)=>X.selected?[...H,yr(X.id,!1)]:H,[]);T(b),N($)},setNodeExtent:k=>{const{nodes:E,nodeLookup:T,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]||(Yu(E,T,N,{nodeOrigin:P,nodeExtent:k,elevateNodesOnSelect:b,checkEquality:!1,zIndexMode:H}),S({nodeExtent:k}))},panBy:k=>{const{transform:E,width:T,height:N,panZoom:P,translateExtent:b}=_();return t1({delta:k,panZoom:P,transform:E,translateExtent:b,width:T,height:N})},setCenter:async(k,E,T)=>{const{width:N,height:P,maxZoom:b,panZoom:$}=_();if(!$)return!1;const H=typeof(T==null?void 0:T.zoom)<"u"?T.zoom:b;return await $.setViewport({x:N/2-k*H,y:P/2-E*H,zoom:H},{duration:T==null?void 0:T.duration,ease:T==null?void 0:T.ease,interpolate:T==null?void 0:T.interpolate}),!0},cancelConnection:()=>{S({connection:{...bp}})},updateConnection:k=>{S({connection:k})},reset:()=>S({...ep()})}},Object.is);function Wg({initialNodes:t,initialEdges:r,defaultNodes:o,defaultEdges:l,initialWidth:a,initialHeight:u,initialMinZoom:d,initialMaxZoom:h,initialFitViewOptions:p,fitView:y,nodeOrigin:m,nodeExtent:v,zIndexMode:g,children:S}){const[_]=W.useState(()=>k_({nodes:t,edges:r,defaultNodes:o,defaultEdges:l,width:a,height:u,fitView:y,minZoom:d,maxZoom:h,fitViewOptions:p,nodeOrigin:m,nodeExtent:v,zIndexMode:g}));return x.jsx($1,{value:_,children:x.jsx(aS,{children:x.jsx(kS,{children:S})})})}function E_({children:t,nodes:r,edges:o,defaultNodes:l,defaultEdges:a,width:u,height:d,fitView:h,fitViewOptions:p,minZoom:y,maxZoom:m,nodeOrigin:v,nodeExtent:g,zIndexMode:S}){return W.useContext(_l)?x.jsx(x.Fragment,{children:t}):x.jsx(Wg,{initialNodes:r,initialEdges:o,defaultNodes:l,defaultEdges:a,initialWidth:u,initialHeight:d,fitView:h,initialFitViewOptions:p,initialMinZoom:y,initialMaxZoom:m,nodeOrigin:v,nodeExtent:g,zIndexMode:S,children:t})}const N_={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function C_({nodes:t,edges:r,defaultNodes:o,defaultEdges:l,className:a,nodeTypes:u,edgeTypes:d,onNodeClick:h,onEdgeClick:p,onInit:y,onMove:m,onMoveStart:v,onMoveEnd:g,onConnect:S,onConnectStart:_,onConnectEnd:M,onClickConnectStart:k,onClickConnectEnd:E,onNodeMouseEnter:T,onNodeMouseMove:N,onNodeMouseLeave:P,onNodeContextMenu:b,onNodeDoubleClick:$,onNodeDragStart:H,onNodeDrag:X,onNodeDragStop:K,onNodesDelete:ne,onEdgesDelete:q,onDelete:ee,onSelectionChange:J,onSelectionDragStart:C,onSelectionDrag:B,onSelectionDragStop:F,onSelectionContextMenu:V,onSelectionStart:A,onSelectionEnd:L,onBeforeDelete:O,connectionMode:j,connectionLineType:z=qn.Bezier,connectionLineStyle:re,connectionLineComponent:te,connectionLineContainerStyle:ae,deleteKeyCode:de="Backspace",selectionKeyCode:ce="Shift",selectionOnDrag:Q=!1,selectionMode:se=fo.Full,panActivationKeyCode:he="Space",multiSelectionKeyCode:we=po()?"Meta":"Control",zoomActivationKeyCode:ve=po()?"Meta":"Control",snapToGrid:me,snapGrid:Ce,onlyRenderVisibleElements:Me=!1,selectNodesOnDrag:Pe,nodesDraggable:Re,autoPanOnNodeFocus:nt,nodesConnectable:rt,nodesFocusable:Xe,nodeOrigin:Ge=yg,edgesFocusable:Bt,edgesReconnectable:Lt,elementsSelectable:At=!0,defaultViewport:it=K1,minZoom:ft=.5,maxZoom:lt=2,translateExtent:ht=co,preventScrolling:hn=!0,nodeExtent:$t,defaultMarkerColor:rn="#b1b1b7",zoomOnScroll:Z=!0,zoomOnPinch:Ee=!0,panOnScroll:$e=!1,panOnScrollSpeed:Cn=.5,panOnScrollMode:mt=wr.Free,zoomOnDoubleClick:di=!0,panOnDrag:fi=!0,onPaneClick:hi,onPaneMouseEnter:pi,onPaneMouseMove:jn,onPaneMouseLeave:Mn,onPaneScroll:Eo,onPaneContextMenu:No,paneClickDistance:Co=1,nodeClickDistance:jo=0,children:Mo,onReconnect:gi,onReconnectStart:Po,onReconnectEnd:Jn,onEdgeContextMenu:mi,onEdgeDoubleClick:er,onEdgeMouseEnter:Cl,onEdgeMouseMove:tr,onEdgeMouseLeave:Cr,reconnectRadius:jr=10,onNodesChange:yi,onEdgesChange:jl,noDragClassName:Ml="nodrag",noWheelClassName:Pl="nowheel",noPanClassName:on="nopan",fitView:vi,fitViewOptions:xi,connectOnClick:Il,attributionPosition:Io,proOptions:To,defaultEdgeOptions:zo,elevateNodesOnSelect:Ro=!0,elevateEdgesOnSelect:Tl=!1,disableKeyboardA11y:Lo=!1,autoPanOnConnect:He,autoPanOnNodeDrag:zl,autoPanOnSelection:wi=!0,autoPanSpeed:Ao,connectionRadius:Mr,isValidConnection:Rl,onError:$o,style:Pr,id:Nt,nodeDragThreshold:Ll,connectionDragThreshold:Ct,viewport:Al,onViewportChange:$l,width:Dl,height:Ir,colorMode:Tr="light",debug:nr,onScroll:pn,ariaLabelConfig:Ol,zIndexMode:Do="basic",...Si},Oo){const rr=Nt||"1",ir=J1(Tr),bl=W.useCallback(zr=>{zr.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),pn==null||pn(zr)},[pn]);return x.jsx("div",{"data-testid":"rf__wrapper",...Si,onScroll:bl,style:{...Pr,...N_},ref:Oo,className:Ke(["react-flow",a,ir]),id:Nt,role:"application",children:x.jsxs(E_,{nodes:t,edges:r,width:Dl,height:Ir,fitView:vi,fitViewOptions:xi,minZoom:ft,maxZoom:lt,nodeOrigin:Ge,nodeExtent:$t,zIndexMode:Do,children:[x.jsx(Z1,{nodes:t,edges:r,defaultNodes:o,defaultEdges:l,onConnect:S,onConnectStart:_,onConnectEnd:M,onClickConnectStart:k,onClickConnectEnd:E,nodesDraggable:Re,autoPanOnNodeFocus:nt,nodesConnectable:rt,nodesFocusable:Xe,edgesFocusable:Bt,edgesReconnectable:Lt,elementsSelectable:At,elevateNodesOnSelect:Ro,elevateEdgesOnSelect:Tl,minZoom:ft,maxZoom:lt,nodeExtent:$t,onNodesChange:yi,onEdgesChange:jl,snapToGrid:me,snapGrid:Ce,connectionMode:j,translateExtent:ht,connectOnClick:Il,defaultEdgeOptions:zo,fitView:vi,fitViewOptions:xi,onNodesDelete:ne,onEdgesDelete:q,onDelete:ee,onNodeDragStart:H,onNodeDrag:X,onNodeDragStop:K,onSelectionDrag:B,onSelectionDragStart:C,onSelectionDragStop:F,onMove:m,onMoveStart:v,onMoveEnd:g,noPanClassName:on,nodeOrigin:Ge,rfId:rr,autoPanOnConnect:He,autoPanOnNodeDrag:zl,autoPanSpeed:Ao,onError:$o,connectionRadius:Mr,isValidConnection:Rl,selectNodesOnDrag:Pe,nodeDragThreshold:Ll,connectionDragThreshold:Ct,onBeforeDelete:O,debug:nr,ariaLabelConfig:Ol,zIndexMode:Do}),x.jsx(S_,{onInit:y,onNodeClick:h,onEdgeClick:p,onNodeMouseEnter:T,onNodeMouseMove:N,onNodeMouseLeave:P,onNodeContextMenu:b,onNodeDoubleClick:$,nodeTypes:u,edgeTypes:d,connectionLineType:z,connectionLineStyle:re,connectionLineComponent:te,connectionLineContainerStyle:ae,selectionKeyCode:ce,selectionOnDrag:Q,selectionMode:se,deleteKeyCode:de,multiSelectionKeyCode:we,panActivationKeyCode:he,zoomActivationKeyCode:ve,onlyRenderVisibleElements:Me,defaultViewport:it,translateExtent:ht,minZoom:ft,maxZoom:lt,preventScrolling:hn,zoomOnScroll:Z,zoomOnPinch:Ee,zoomOnDoubleClick:di,panOnScroll:$e,panOnScrollSpeed:Cn,panOnScrollMode:mt,panOnDrag:fi,autoPanOnSelection:wi,onPaneClick:hi,onPaneMouseEnter:pi,onPaneMouseMove:jn,onPaneMouseLeave:Mn,onPaneScroll:Eo,onPaneContextMenu:No,paneClickDistance:Co,nodeClickDistance:jo,onSelectionContextMenu:V,onSelectionStart:A,onSelectionEnd:L,onReconnect:gi,onReconnectStart:Po,onReconnectEnd:Jn,onEdgeContextMenu:mi,onEdgeDoubleClick:er,onEdgeMouseEnter:Cl,onEdgeMouseMove:tr,onEdgeMouseLeave:Cr,reconnectRadius:jr,defaultMarkerColor:rn,noDragClassName:Ml,noWheelClassName:Pl,noPanClassName:on,rfId:rr,disableKeyboardA11y:Lo,nodeExtent:$t,viewport:Al,onViewportChange:$l,nodesDraggable:Re}),x.jsx(Q1,{onSelectionChange:J}),Mo,x.jsx(B1,{proOptions:To,position:Io}),x.jsx(V1,{rfId:rr,disableKeyboardA11y:Lo})]})})}var j_=xg(C_);function M_({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:Ke(["react-flow__background-pattern",o,l])})}function P_({radius:t,className:r}){return x.jsx("circle",{cx:t,cy:t,r:t,className:Ke(["react-flow__background-pattern","dots",r])})}var Zn;(function(t){t.Lines="lines",t.Dots="dots",t.Cross="cross"})(Zn||(Zn={}));const I_={[Zn.Dots]:1,[Zn.Lines]:1,[Zn.Cross]:6},T_=t=>({transform:t.transform,patternId:`pattern-${t.rfId}`});function Yg({id:t,variant:r=Zn.Dots,gap:o=20,size:l,lineWidth:a=1,offset:u=0,color:d,bgColor:h,style:p,className:y,patternClassName:m}){const v=W.useRef(null),{transform:g,patternId:S}=Te(T_,Ue),_=l||I_[r],M=r===Zn.Dots,k=r===Zn.Cross,E=Array.isArray(o)?o:[o,o],T=[E[0]*g[2]||1,E[1]*g[2]||1],N=_*g[2],P=Array.isArray(u)?u:[u,u],b=k?[N,N]:T,$=[P[0]*g[2]+b[0]/2,P[1]*g[2]+b[1]/2],H=`${S}${t||""}`;return x.jsxs("svg",{className:Ke(["react-flow__background",y]),style:{...p,...El,"--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]%T[0],y:g[1]%T[1],width:T[0],height:T[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${$[0]},-${$[1]})`,children:M?x.jsx(P_,{radius:N/2,className:m}):x.jsx(M_,{dimensions:b,lineWidth:a,variant:r,className:m})}),x.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${H})`})]})}Yg.displayName="Background";const z_=W.memo(Yg);function R_(){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 L_(){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 A_(){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 $_(){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 D_(){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 Ks({children:t,className:r,...o}){return x.jsx("button",{type:"button",className:Ke(["react-flow__controls-button",r]),...o,children:t})}const O_=t=>({isInteractive:t.nodesDraggable||t.nodesConnectable||t.elementsSelectable,minZoomReached:t.transform[2]<=t.minZoom,maxZoomReached:t.transform[2]>=t.maxZoom,ariaLabelConfig:t.ariaLabelConfig});function Xg({style:t,showZoom:r=!0,showFitView:o=!0,showInteractive:l=!0,fitViewOptions:a,onZoomIn:u,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:T}=Te(O_,Ue),{zoomIn:N,zoomOut:P,fitView:b}=hc(),$=()=>{N(),u==null||u()},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(kl,{className:Ke(["react-flow__controls",ne,y]),position:v,style:t,"data-testid":"rf__controls","aria-label":S??T["controls.ariaLabel"],children:[r&&x.jsxs(x.Fragment,{children:[x.jsx(Ks,{onClick:$,className:"react-flow__controls-zoomin",title:T["controls.zoomIn.ariaLabel"],"aria-label":T["controls.zoomIn.ariaLabel"],disabled:E,children:x.jsx(R_,{})}),x.jsx(Ks,{onClick:H,className:"react-flow__controls-zoomout",title:T["controls.zoomOut.ariaLabel"],"aria-label":T["controls.zoomOut.ariaLabel"],disabled:k,children:x.jsx(L_,{})})]}),o&&x.jsx(Ks,{className:"react-flow__controls-fitview",onClick:X,title:T["controls.fitView.ariaLabel"],"aria-label":T["controls.fitView.ariaLabel"],children:x.jsx(A_,{})}),l&&x.jsx(Ks,{className:"react-flow__controls-interactive",onClick:K,title:T["controls.interactive.ariaLabel"],"aria-label":T["controls.interactive.ariaLabel"],children:M?x.jsx(D_,{}):x.jsx($_,{})}),m]})}Xg.displayName="Controls";const b_=W.memo(Xg);function F_({id:t,x:r,y:o,width:l,height:a,style:u,color:d,strokeColor:h,strokeWidth:p,className:y,borderRadius:m,shapeRendering:v,selected:g,onClick:S}){const{background:_,backgroundColor:M}=u||{},k=d||_||M;return x.jsx("rect",{className:Ke(["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 H_=W.memo(F_),V_=t=>t.nodes.map(r=>r.id),Ru=t=>t instanceof Function?t:()=>t;function B_({nodeStrokeColor:t,nodeColor:r,nodeClassName:o="",nodeBorderRadius:l=5,nodeStrokeWidth:a,nodeComponent:u=H_,onClick:d}){const h=Te(V_,Ue),p=Ru(r),y=Ru(t),m=Ru(o),v=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return x.jsx(x.Fragment,{children:h.map(g=>x.jsx(W_,{id:g,nodeColorFunc:p,nodeStrokeColorFunc:y,nodeClassNameFunc:m,nodeBorderRadius:l,nodeStrokeWidth:a,NodeComponent:u,onClick:d,shapeRendering:v},g))})}function U_({id:t,nodeColorFunc:r,nodeStrokeColorFunc:o,nodeClassNameFunc:l,nodeBorderRadius:a,nodeStrokeWidth:u,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:T}=M.internals.positionAbsolute,{width:N,height:P}=nn(k);return{node:k,x:E,y:T,width:N,height:P}},Ue);return!y||y.hidden||!Xp(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:u,shapeRendering:d,onClick:p,id:y.id})}const W_=W.memo(U_);var Y_=W.memo(B_);const X_=200,Q_=150,K_=t=>!t.hidden,G_=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?Up(So(t.nodeLookup,{filter:K_}),r):r,rfId:t.rfId,panZoom:t.panZoom,translateExtent:t.translateExtent,flowWidth:t.width,flowHeight:t.height,ariaLabelConfig:t.ariaLabelConfig}},tp=(t,r)=>t.x===r.x&&t.y===r.y&&t.width===r.width&&t.height===r.height,q_=(t,r)=>tp(t.viewBB,r.viewBB)&&tp(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,Z_="react-flow__minimap-desc";function Qg({style:t,className:r,nodeStrokeColor:o,nodeColor:l,nodeClassName:a="",nodeBorderRadius:u=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:T,zoomStep:N=1,offsetScale:P=5}){const b=be(),$=W.useRef(null),{boundingRect:H,viewBB:X,rfId:K,panZoom:ne,translateExtent:q,flowWidth:ee,flowHeight:J,ariaLabelConfig:C}=Te(G_,q_),B=(t==null?void 0:t.width)??X_,F=(t==null?void 0:t.height)??Q_,V=H.width/B,A=H.height/F,L=Math.max(V,A),O=L*B,j=L*F,z=P*L,re=H.x-(O-H.width)/2-z,te=H.y-(j-H.height)/2-z,ae=O+z*2,de=j+z*2,ce=`${Z_}-${K}`,Q=W.useRef(0),se=W.useRef();Q.current=L,W.useEffect(()=>{if($.current&&ne)return se.current=c1({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:q,width:ee,height:J,inversePan:T,pannable:M,zoomStep:N,zoomable:k})},[M,k,T,N,q,ee,J]);const he=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,we=_?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(kl,{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:Ke(["react-flow__minimap",r]),"data-testid":"rf__minimap",children:x.jsxs("svg",{width:B,height:F,viewBox:`${re} ${te} ${ae} ${de}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":ce,ref:$,onClick:he,children:[ve&&x.jsx("title",{id:ce,children:ve}),x.jsx(Y_,{onClick:we,nodeColor:l,nodeStrokeColor:o,nodeBorderRadius:u,nodeClassName:a,nodeStrokeWidth:d,nodeComponent:h}),x.jsx("path",{className:"react-flow__minimap-mask",d:`M${re-z},${te-z}h${ae+z*2}v${de+z*2}h${-ae-z*2}z + M${X.x},${X.y}h${X.width}v${X.height}h${-X.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}Qg.displayName="MiniMap";const J_=W.memo(Qg),ek=t=>r=>t?`${Math.max(1/r.transform[2],1)}`:void 0,tk={[ci.Line]:"right",[ci.Handle]:"bottom-right"};function nk({nodeId:t,position:r,variant:o=ci.Handle,className:l,style:a=void 0,children:u,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 T=Eg(),N=typeof t=="string"?t:T,P=be(),b=W.useRef(null),$=o===ci.Handle,H=Te(W.useCallback(ek($&&S),[$,S]),Ue),X=W.useRef(null),K=r??tk[o];W.useEffect(()=>{if(!(!b.current||!N))return X.current||(X.current=k1({domNode:b.current,nodeId:N,getStoreItems:()=>{const{nodeLookup:q,transform:ee,snapGrid:J,snapToGrid:C,nodeOrigin:B,domNode:F}=P.getState();return{nodeLookup:q,transform:ee,snapGrid:J,snapToGrid:C,nodeOrigin:B,paneDomNode:F}},onChange:(q,ee)=>{const{triggerNodeChanges:J,nodeLookup:C,parentLookup:B,nodeOrigin:F}=P.getState(),V=[],A={x:q.x,y:q.y},L=C.get(N);if(L&&L.expandParent&&L.parentId){const O=L.origin??F,j=q.width??L.measured.width??0,z=q.height??L.measured.height??0,re={id:L.id,parentId:L.parentId,rect:{width:j,height:z,...Qp({x:q.x??L.position.x,y:q.y??L.position.y},{width:j,height:z},L.parentId,C,O)}},te=fc([re],C,B,F);V.push(...te),A.x=q.x?Math.max(O[0]*j,q.x):void 0,A.y=q.y?Math.max(O[1]*z,q.y):void 0}if(A.x!==void 0&&A.y!==void 0){const O={id:N,type:"position",position:{...A}};V.push(O)}if(q.width!==void 0&&q.height!==void 0){const j={id:N,type:"dimensions",resizing:!0,setAttributes:g?g==="horizontal"?"width":"height":!0,dimensions:{width:q.width,height:q.height}};V.push(j)}for(const O of ee){const j={...O,type:"position"};V.push(j)}J(V)},onEnd:({width:q,height:ee})=>{const J={id:N,type:"dimensions",resizing:!1,dimensions:{width:q,height:ee}};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 q;(q=X.current)==null||q.destroy()}},[K,h,p,y,m,v,M,k,E,_]);const ne=K.split("-");return x.jsx("div",{className:Ke(["react-flow__resize-control","nodrag",...ne,o,l]),ref:b,style:{...a,scale:H,...d&&{[$?"backgroundColor":"borderColor"]:d}},children:u})}W.memo(nk);const rk={"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 ik(t){return rk[t]??8}function ok(t){const r=new Map;for(const l of t){const a=ik(l.type),u=r.get(a)??[];u.push(l),r.set(a,u)}const o=new Map;for(const[l,a]of r)a.sort((u,d)=>u.name.localeCompare(d.name)),a.forEach((u,d)=>{o.set(u.id,{x:l*260,y:d*108})});return o}const sk={cheap:"var(--edge-cheap)",expensive:"var(--edge-expensive)",critical:"var(--edge-critical)"};function lk({data:t,selected:r}){return x.jsxs("div",{className:r?"lp-node selected":"lp-node",children:[x.jsx("div",{className:"t",children:Ku(t.type)}),x.jsx("div",{className:"n",title:t.name,children:t.name})]})}const ak={load:lk},np=180,rp=56;function Lu({nodes:t,edges:r}){const[o,l]=W.useState(null),a=typeof window<"u"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,u=W.useMemo(()=>new Map(t.map(v=>[v.id,v])),[t]),d=o?u.get(o)??null:null,h=ok(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:np,height:rp,style:{width:np,height:rp}})),y=r.filter(v=>u.has(v.src)&&u.has(v.dst)).map(v=>({id:v.id,source:v.src,target:v.dst,animated:!a&&v.weight==="critical",style:{stroke:sk[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(Wg,{children:x.jsxs(j_,{nodes:p,edges:y,nodeTypes:ak,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(z_,{}),x.jsx(J_,{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(b_,{})]})}),d?x.jsxs("aside",{className:"inspector","data-testid":"graph-inspector",children:[x.jsx("div",{className:"t",children:Ku(d.type)}),x.jsx("div",{className:"n",children:Fs(d.name)}),d.context?x.jsx("div",{className:"muted",children:Fs(d.context)}):null,d.file_path?x.jsx("div",{className:"file",children:Fs(`${d.file_path}${d.start_line?`:${d.start_line}`:""}`)}):null,x.jsx("div",{className:"muted",children:Fs(d.qualified_name)})]}):null]})}const hl=[{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"}],uk="obsidian",Kg="loadpath.theme";function ck(t){return hl.some(r=>r.id===t)}function Gg(){try{const t=localStorage.getItem(Kg)||"";if(ck(t))return t}catch{}return uk}function dk(t){var r;return((r=hl.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=dk(t);try{localStorage.setItem(Kg,t)}catch{}}const ip=[{id:"review",label:"Review",testId:"tab-review",shortcut:"1",icon:B0},{id:"architecture",label:"Architecture",testId:"tab-architecture",shortcut:"2",icon:U0},{id:"graph",label:"Impact graph",testId:"tab-graph",shortcut:"3",icon:W0},{id:"prs",label:"Pull requests",testId:"tab-prs",shortcut:"4",icon:Y0},{id:"settings",label:"Settings",testId:"tab-settings",shortcut:"5",icon:X0}];function fk(){var it,ft,lt,ht,hn,$t,rn;const[t,r]=W.useState("review"),[o,l]=W.useState(localStorage.getItem("loadpath.repo")||""),[a,u]=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(""),[T,N]=W.useState(""),[P,b]=W.useState(""),[$,H]=W.useState({}),[X,K]=W.useState([]),[ne,q]=W.useState(localStorage.getItem("loadpath.scmRepo")||""),[ee,J]=W.useState(localStorage.getItem("loadpath.provider")||"github"),[C,B]=W.useState(localStorage.getItem("loadpath.prNumber")||""),[F,V]=W.useState(""),[A,L]=W.useState(Gg),[O,j]=W.useState(!1),z=W.useRef(o);z.current=o;const re=Z=>{L(Z),qg(Z)},te=W.useRef(""),ae=Z=>{te.current=Z,N(Z)};W.useEffect(()=>{kt.settings().then(H).catch(()=>{}).finally(()=>j(!0)),kt.repos().then(Z=>S(Z.repos)).catch(()=>{})},[]);const de=()=>o.trim()?!0:(E("Point at a local repository path first."),!1);W.useEffect(()=>{if(t!=="architecture"||!o.trim())return;const Z=o;let Ee=!1;return kt.architecture(Z).then($e=>{!Ee&&z.current===Z&&v($e)}).catch(()=>{}),()=>{Ee=!0}},[t,o]);const ce=Z=>{l(Z),localStorage.setItem("loadpath.repo",Z)},Q=(Z,Ee)=>{u(Z),h(Ee),localStorage.setItem("loadpath.base",Z),localStorage.setItem("loadpath.head",Ee)},se=(Z,Ee,$e)=>{J(Z),q(Ee),localStorage.setItem("loadpath.provider",Z),localStorage.setItem("loadpath.scmRepo",Ee),$e!==void 0&&(B($e),localStorage.setItem("loadpath.prNumber",$e))},he=async(Z=o)=>{if(!Z.trim())return null;const Ee=await kt.architecture(Z);return z.current===Z&&v(Ee),Ee},we=async()=>{if(!te.current&&de()){E(""),b(""),ae("Tracing load path…"),ce(o),Q(a,d);try{const Z=await kt.review(o,a,d,!0);y(Z),M("review"),r("review"),await kt.repos().then(Ee=>S(Ee.repos)).catch(()=>{}),await he(o)}catch(Z){E(Z instanceof Error?Z.message:String(Z))}finally{ae("")}}},ve=async(Z=!0)=>{if(!te.current&&de()){E(""),b(""),ae(Z?"Indexing…":"Full reindex…"),ce(o);try{await kt.index(o,Z);const Ee=await he(o);await kt.repos().then($e=>S($e.repos)).catch(()=>{}),Ee!=null&&Ee.indexed&&(M("architecture"),r("architecture"))}catch(Ee){E(Ee instanceof Error?Ee.message:String(Ee))}finally{ae("")}}},me=async()=>{if(!te.current&&de()){E(""),b(""),ae("Detecting layout…"),ce(o);try{const Z=await kt.init(o);b(Z.message),await kt.repos().then(Ee=>S(Ee.repos)).catch(()=>{})}catch(Z){E(Z instanceof Error?Z.message:String(Z))}finally{ae("")}}},Ce=async()=>{if(p!=null&&p.markdown)try{await navigator.clipboard.writeText(p.markdown),b("Copied markdown brief")}catch(Z){E(Z instanceof Error?Z.message:String(Z))}},Me=async()=>{if(!te.current){if(!(p!=null&&p.markdown)||!ne||!C){E("Pick a pull request first (Pull requests tab), then post the brief.");return}ae("Posting Loadpath brief…");try{const Z=await kt.postComment(ee,ne,Number(C),p.markdown);b(Z.updated?"Updated the Loadpath PR comment":"Posted the Loadpath PR comment")}catch(Z){E(Z instanceof Error?Z.message:String(Z))}finally{ae("")}}},Pe=async()=>{if(!te.current){E(""),ae("Fetching pull requests…");try{const Z=await kt.prs(ee,ne);K(Z.pull_requests)}catch(Z){E(Z instanceof Error?Z.message:String(Z))}finally{ae("")}}},Re=async Z=>{Z.preventDefault();const Ee=new FormData(Z.currentTarget),$e={github_token:String(Ee.get("github_token")||""),bitbucket_token:String(Ee.get("bitbucket_token")||""),bitbucket_username:String(Ee.get("bitbucket_username")||""),ai_provider:String(Ee.get("ai_provider")||"none"),ai_api_key:String(Ee.get("ai_api_key")||""),ai_model:String(Ee.get("ai_model")||""),ai_base_url:String(Ee.get("ai_base_url")||"")},Cn=g.length?{...$e,workspaces:g.map(mt=>({path:mt.path,name:mt.name}))}:$e;try{H(await kt.saveSettings(Cn)),b("Settings saved on this machine")}catch(mt){E(mt instanceof Error?mt.message:String(mt))}},nt=async()=>{if(!(!p||te.current)){ae("Residual analysis…");try{const Z=await kt.residual(p);V(Z.note)}catch(Z){E(Z instanceof Error?Z.message:String(Z))}finally{ae("")}}},rt=W.useRef(we);rt.current=we;const Xe=W.useRef(t);Xe.current=t,W.useEffect(()=>{const Z=Ee=>{const $e=Ee.target;if($e&&($e.tagName==="INPUT"||$e.tagName==="TEXTAREA"||$e.tagName==="SELECT"||$e.isContentEditable)){Ee.key==="Escape"&&$e.blur();return}if(Ee.key==="Escape"){E(""),b("");return}const Cn=ip.find(mt=>mt.shortcut===Ee.key);if(Cn&&!Ee.metaKey&&!Ee.ctrlKey&&!Ee.altKey&&r(Cn.id),(Ee.metaKey||Ee.ctrlKey)&&Ee.key==="Enter"){if(Xe.current==="settings"||Xe.current==="prs"||te.current)return;Ee.preventDefault(),rt.current()}};return window.addEventListener("keydown",Z),()=>window.removeEventListener("keydown",Z)},[]);const Ge=W.useMemo(()=>_==="architecture"?(m==null?void 0:m.nodes)??[]:(p==null?void 0:p.nodes)??[],[_,m,p]),Bt=W.useMemo(()=>_==="architecture"?(m==null?void 0:m.edges)??[]:(p==null?void 0:p.edges)??[],[_,m,p]),Lt=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",At=((p==null?void 0:p.findings)||[]).filter(Z=>!Z.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"})]}),ip.map(Z=>{const Ee=Z.icon,$e=t===Z.id;return x.jsxs("button",{type:"button","data-testid":Z.testId,className:$e?"nav-item active":"nav-item","aria-current":$e?"page":void 0,"aria-label":Z.label,onClick:()=>r(Z.id),children:[x.jsx(Ee,{}),x.jsx("span",{children:Z.label})]},Z.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:Z=>re(Z.target.value),children:hl.map(Z=>x.jsx("option",{value:Z.id,children:Z.label},Z.id))})]}),x.jsxs("div",{className:"rail-foot",children:[x.jsx("div",{className:"muted",role:"status",children:T||Lt}),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:[T?x.jsxs("div",{className:"progress",role:"status","aria-live":"polite","aria-busy":"true",children:[x.jsx("i",{}),x.jsx("span",{className:"sr-only",children:T})]}):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(Z=>Z.path===o)?o:"",onChange:Z=>{Z.target.value&&ce(Z.target.value)},children:[x.jsx("option",{value:"",children:"Indexed repos…"}),g.map(Z=>x.jsxs("option",{value:Z.path,children:[Z.name,Z.indexed?` (${Z.counts.nodes})`:""]},Z.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:Z=>l(Z.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:Z=>Q(Z.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:Z=>Q(a,Z.target.value),placeholder:"head",spellCheck:!1})]}),x.jsxs("div",{className:"topbar-actions",children:[x.jsx("button",{type:"button","data-testid":"btn-init",disabled:!!T,onClick:me,children:"Draft config"}),x.jsx("button",{type:"button","data-testid":"btn-index",disabled:!!T,onClick:()=>ve(!0),children:"Index"}),x.jsx("button",{type:"button","data-testid":"btn-review",className:"btn primary",disabled:!!T,onClick:we,children:"Review"})]})]}),x.jsxs("div",{className:"alerts",children:[k?x.jsxs("div",{className:"error","data-testid":"error",role:"alert",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,((it=p==null?void 0:p.index)!=null&&it.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,((ft=p==null?void 0:p.index)==null?void 0:ft.django_boot)==="failed"||(m==null?void 0:m.django_boot)==="failed"?x.jsx("div",{className:"banner warn","data-testid":"django-boot-failed",children:((lt=p==null?void 0:p.index)==null?void 0:lt.django_boot_detail)||(m==null?void 0:m.django_boot_detail)||"django.setup() failed"}):null,(ht=p==null?void 0:p.workspace)!=null&&ht.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(hk,{review:p,findings:At,aiNote:F,busy:!!T,onAskAi:nt,onCopy:Ce,onPost:Me}):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(Lu,{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(pk,{architecture:m,busy:!!T,onReindex:()=>ve(!1),onReview:we}):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(Lu,{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"]})]})]}),Ge.length?x.jsx(Lu,{nodes:Ge,edges:Bt}):x.jsx("p",{className:"empty","data-testid":"graph-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:ee,onChange:Z=>se(Z.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:Z=>se(ee,Z.target.value,C),spellCheck:!1})]}),x.jsx("button",{type:"button","data-testid":"btn-list-prs",className:"btn",disabled:!!T,onClick:Pe,children:"List PRs"})]}),X.length===0?x.jsxs("div",{className:"empty","data-testid":"pr-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(Z=>x.jsxs("article",{className:"pr","data-testid":`pr-${Z.number}`,children:[x.jsxs("h3",{children:["#",Z.number," ",Z.title]}),x.jsxs("div",{className:"pr-meta muted",children:[x.jsx("span",{className:`chip ${Z.draft?"":"open"}`,children:Z.draft?"draft":Z.state}),x.jsx("span",{children:Z.author}),x.jsxs("span",{children:[Z.source_branch," → ",Z.target_branch]})]}),x.jsxs("div",{className:"pr-actions",children:[x.jsxs("a",{href:Z.url,target:"_blank",rel:"noreferrer",children:["Open on ",Z.provider]}),x.jsx("button",{type:"button",className:"btn primary","data-testid":`pr-review-${Z.number}`,onClick:()=>{Q(Z.base_sha||Z.target_branch,Z.head_sha||Z.source_branch),se(Z.provider,Z.repo,String(Z.number)),r("review")},children:"Review this range"})]})]},`${Z.provider}-${Z.number}`))]}),t==="settings"&&O&&x.jsxs("form",{className:"settings","data-testid":"settings-form",onSubmit:Re,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:hl.map(Z=>x.jsxs("button",{type:"button",className:A===Z.id?"theme-swatch active":"theme-swatch","data-testid":`theme-${Z.id}`,onClick:()=>re(Z.id),children:[x.jsx("div",{className:"name",children:Z.label}),x.jsx("div",{className:"group",children:Z.group})]},Z.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(((hn=$.ai)==null?void 0:hn.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","data-testid":"ai-model",placeholder:"optional override",defaultValue:String((($t=$.ai)==null?void 0:$t.model)||"")}),x.jsx("label",{htmlFor:"ai_base_url",children:"Base URL"}),x.jsx("input",{id:"ai_base_url",name:"ai_base_url","data-testid":"ai-base-url",placeholder:"optional, OpenAI-compatible",defaultValue:String(((rn=$.ai)==null?void 0:rn.base_url)||"")}),x.jsx("button",{className:"btn primary",type:"submit","data-testid":"btn-save-settings",children:"Save"})]})]})]})]})]})}function hk({review:t,findings:r,aiNote:o,busy:l,onAskAi:a,onCopy:u,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:H0(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:u,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 pk({architecture:t,busy:r,onReindex:o,onReview:l}){const a=t.findings.filter(u=>!u.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 ${V0(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(u=>x.jsxs("div",{className:"muted",children:[x.jsx("strong",{children:u.name})," — ",(u.django_apps||[]).join(", ")||"no apps"," ·"," ",(u.owners||[]).join(", ")||"unowned"]},u.name))]}),x.jsxs("details",{className:"section",children:[x.jsxs("summary",{children:["Rules ",x.jsx("span",{className:"count",children:(t.rules||[]).length})]}),(t.rules||[]).map(u=>x.jsx("div",{className:"muted",children:u},u))]}),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(u=>x.jsxs("div",{className:"finding",children:[x.jsx("span",{className:`chip ${u.severity}`,children:u.severity}),u.message]},u.rule+u.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((u,d)=>d[1]-u[1]).slice(0,12).map(([u,d])=>x.jsxs("tr",{children:[x.jsx("td",{children:Ku(u)}),x.jsx("td",{children:d})]},u))})})]}),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(Gg());O0.createRoot(document.getElementById("root")).render(x.jsx(W.StrictMode,{children:x.jsx(fk,{})})); diff --git a/src/loadpath/static/index.html b/src/loadpath/static/index.html index f2b80d2..f8652b3 100644 --- a/src/loadpath/static/index.html +++ b/src/loadpath/static/index.html @@ -17,8 +17,8 @@ - - + +
diff --git a/tests/e2e/test_ui_flows.py b/tests/e2e/test_ui_flows.py index 2338f9d..5035066 100644 --- a/tests/e2e/test_ui_flows.py +++ b/tests/e2e/test_ui_flows.py @@ -113,6 +113,19 @@ def test_ui_index_review_graph_copy_and_workspace(live_app, browser_page): inspector = page.get_by_test_id("graph-inspector") inspector.wait_for(timeout=10_000) assert inspector.inner_text().strip() + overflow = inspector.evaluate( + """el => { + const pane = el.parentElement; + const box = el.getBoundingClientRect(); + const paneBox = pane.getBoundingClientRect(); + return { + content: el.scrollWidth <= el.clientWidth + 1, + in_pane: box.right <= paneBox.right + 1 && box.left >= paneBox.left - 1, + }; + }""" + ) + assert overflow["content"], "selected-node inspector overflows horizontally" + assert overflow["in_pane"], "selected-node inspector extends outside the graph pane" page.get_by_test_id("graph-mode-architecture").click() assert page.get_by_test_id("graph-mode-architecture").get_attribute("aria-pressed") == "true" diff --git a/ui/src/ImpactGraph.tsx b/ui/src/ImpactGraph.tsx index 8089f07..0baf18e 100644 --- a/ui/src/ImpactGraph.tsx +++ b/ui/src/ImpactGraph.tsx @@ -10,7 +10,7 @@ import { type NodeMouseHandler, } from "@xyflow/react"; import "@xyflow/react/dist/style.css"; -import { typeLabel } from "./format"; +import { typeLabel, wrapHint } from "./format"; import { layoutNodes, type GraphEdge, type GraphNode } from "./types"; const WEIGHT_COLOR: Record = { @@ -23,7 +23,9 @@ function LoadNode({ data, selected }: { data: { name: string; type: string }; se return (
{typeLabel(data.type)}
-
{data.name}
+
+ {data.name} +
); } @@ -109,15 +111,16 @@ export function ImpactGraph({ nodes, edges }: { nodes: GraphNode[]; edges: Graph {selected ? ( ) : null} diff --git a/ui/src/format.test.ts b/ui/src/format.test.ts index 0da4eaa..bedaea9 100644 --- a/ui/src/format.test.ts +++ b/ui/src/format.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from "vitest"; -import { formatWhen, kindLabel, repoName, typeLabel } from "./format"; +import { formatWhen, kindLabel, repoName, typeLabel, wrapHint } from "./format"; describe("display helpers", () => { it("humanizes kinds and types", () => { @@ -13,4 +13,10 @@ describe("display helpers", () => { expect(formatWhen()).toBe(""); expect(formatWhen("2026-08-14T00:00:00Z")).toMatch(/2026/); }); + + it("inserts wrap hints after identifier separators", () => { + expect(wrapHint("tests/unit/test_django_extractors.py")).toBe( + "tests/\u200bunit/\u200btest_\u200bdjango_\u200bextractors.\u200bpy", + ); + }); }); diff --git a/ui/src/format.ts b/ui/src/format.ts index f91da65..53e1400 100644 --- a/ui/src/format.ts +++ b/ui/src/format.ts @@ -16,3 +16,8 @@ export function formatWhen(iso?: string | null): string { export function repoName(path: string): string { return path.split(/[\\/]/).filter(Boolean).pop() || path; } + +/** Soft wrap opportunities after path/identifier separators. */ +export function wrapHint(text: string): string { + return text.replace(/([/\\._:@-])/g, "$1\u200b"); +} diff --git a/ui/src/styles.css b/ui/src/styles.css index 42bacd2..ef279df 100644 --- a/ui/src/styles.css +++ b/ui/src/styles.css @@ -885,6 +885,9 @@ h2 { font-size: 13px; margin: 0; font-weight: 600; } right: 12px; z-index: 5; width: 260px; + max-width: calc(100% - 24px); + overflow-x: hidden; + overflow-wrap: break-word; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); @@ -892,6 +895,11 @@ h2 { font-size: 13px; margin: 0; font-weight: 600; } box-shadow: 0 8px 24px var(--shadow); } .inspector .t { font-size: 11px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.06em; } +.inspector .n, +.inspector .file, +.inspector .muted { + overflow-wrap: break-word; +} .inspector .n { font-weight: 600; margin: 4px 0; } .lp-node { padding: 8px 10px; @@ -899,13 +907,20 @@ h2 { font-size: 13px; margin: 0; font-weight: 600; } border: 1px solid var(--node-line); background: var(--node-bg); width: 180px; + max-width: 100%; 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; } +.lp-node .n { + font-size: 13px; + font-weight: 600; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} .lp-node.selected { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); } .type-table { width: 100%; diff --git a/ui/src/styles.test.ts b/ui/src/styles.test.ts new file mode 100644 index 0000000..00c22ce --- /dev/null +++ b/ui/src/styles.test.ts @@ -0,0 +1,40 @@ +import { readFileSync } from "node:fs"; +import { dirname, join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { afterEach, describe, expect, it } from "vitest"; + +const css = readFileSync(join(dirname(fileURLToPath(import.meta.url)), "styles.css"), "utf8"); + +function mount(html: string) { + const style = document.createElement("style"); + style.textContent = css; + document.head.appendChild(style); + document.body.innerHTML = html; +} + +describe("graph selected-node overflow", () => { + afterEach(() => { + document.head.replaceChildren(); + document.body.replaceChildren(); + }); + + it("wraps long identifiers in the selected-node inspector", () => { + mount( + ``, + ); + const inspector = document.querySelector(".inspector") as HTMLElement; + const name = document.querySelector(".inspector .n") as HTMLElement; + expect(getComputedStyle(inspector).overflowWrap).toBe("break-word"); + expect(getComputedStyle(inspector).overflowX).toBe("hidden"); + expect(getComputedStyle(inspector).maxWidth).not.toBe("none"); + expect(getComputedStyle(name).overflowWrap).toBe("break-word"); + }); + + it("ellipsizes long titles inside graph nodes", () => { + mount(`
test_index_summary_includes_contexts_and_more
`); + const name = document.querySelector(".lp-node .n") as HTMLElement; + expect(getComputedStyle(name).textOverflow).toBe("ellipsis"); + expect(getComputedStyle(name).overflow).toBe("hidden"); + expect(getComputedStyle(name).whiteSpace).toBe("nowrap"); + }); +}); diff --git a/ui/tsconfig.json b/ui/tsconfig.json index 8a35f7c..6ea08ae 100644 --- a/ui/tsconfig.json +++ b/ui/tsconfig.json @@ -17,5 +17,6 @@ "noFallthroughCasesInSwitch": true, "types": ["vite/client"] }, - "include": ["src"] + "include": ["src"], + "exclude": ["src/**/*.test.ts"] }