1?this.each((t==null?QL:typeof t=="function"?JL:ZL)(e,t,n??"")):ss(this.node(),e)}function ss(e,t){return e.style.getPropertyValue(t)||tb(e).getComputedStyle(e,null).getPropertyValue(t)}function tR(e){return function(){delete this[e]}}function nR(e,t){return function(){this[e]=t}}function rR(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function iR(e,t){return arguments.length>1?this.each((t==null?tR:typeof t=="function"?rR:nR)(e,t)):this.node()[e]}function nb(e){return e.trim().split(/^|\s+/)}function pp(e){return e.classList||new rb(e)}function rb(e){this._node=e,this._names=nb(e.getAttribute("class")||"")}rb.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function ib(e,t){for(var n=pp(e),r=-1,i=t.length;++r=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function MR(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,i=t.length,s;n()=>e;function gd(e,{sourceEvent:t,subject:n,target:r,identifier:i,active:s,x:o,y:a,dx:l,dy:u,dispatch:c}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:s,enumerable:!0,configurable:!0},x:{value:o,enumerable:!0,configurable:!0},y:{value:a,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:u,enumerable:!0,configurable:!0},_:{value:c}})}gd.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function BR(e){return!e.ctrlKey&&!e.button}function HR(){return this.parentNode}function UR(e,t){return t??{x:e.x,y:e.y}}function WR(){return navigator.maxTouchPoints||"ontouchstart"in this}function YR(){var e=BR,t=HR,n=UR,r=WR,i={},s=Su("start","drag","end"),o=0,a,l,u,c,f=0;function d(k){k.on("mousedown.drag",h).filter(r).on("touchstart.drag",w).on("touchmove.drag",m,$R).on("touchend.drag touchcancel.drag",x).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function h(k,N){if(!(c||!e.call(this,k,N))){var S=v(this,t.call(this,k,N),k,N,"mouse");S&&(nn(k.view).on("mousemove.drag",g,No).on("mouseup.drag",y,No),lb(k.view),zc(k),u=!1,a=k.clientX,l=k.clientY,S("start",k))}}function g(k){if(Bi(k),!u){var N=k.clientX-a,S=k.clientY-l;u=N*N+S*S>f}i.mouse("drag",k)}function y(k){nn(k.view).on("mousemove.drag mouseup.drag",null),ub(k.view,u),Bi(k),i.mouse("end",k)}function w(k,N){if(e.call(this,k,N)){var S=k.changedTouches,A=t.call(this,k,N),P=S.length,D,C;for(D=0;D>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?_a(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?_a(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=KR.exec(e))?new kt(t[1],t[2],t[3],1):(t=GR.exec(e))?new kt(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=XR.exec(e))?_a(t[1],t[2],t[3],t[4]):(t=QR.exec(e))?_a(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=ZR.exec(e))?fy(t[1],t[2]/100,t[3]/100,1):(t=JR.exec(e))?fy(t[1],t[2]/100,t[3]/100,t[4]):sy.hasOwnProperty(e)?ly(sy[e]):e==="transparent"?new kt(NaN,NaN,NaN,0):null}function ly(e){return new kt(e>>16&255,e>>8&255,e&255,1)}function _a(e,t,n,r){return r<=0&&(e=t=n=NaN),new kt(e,t,n,r)}function n8(e){return e instanceof Xo||(e=Po(e)),e?(e=e.rgb(),new kt(e.r,e.g,e.b,e.opacity)):new kt}function yd(e,t,n,r){return arguments.length===1?n8(e):new kt(e,t,n,r??1)}function kt(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}mp(kt,yd,cb(Xo,{brighter(e){return e=e==null?zl:Math.pow(zl,e),new kt(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?To:Math.pow(To,e),new kt(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new kt(Xr(this.r),Xr(this.g),Xr(this.b),Fl(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:uy,formatHex:uy,formatHex8:r8,formatRgb:cy,toString:cy}));function uy(){return`#${Ur(this.r)}${Ur(this.g)}${Ur(this.b)}`}function r8(){return`#${Ur(this.r)}${Ur(this.g)}${Ur(this.b)}${Ur((isNaN(this.opacity)?1:this.opacity)*255)}`}function cy(){const e=Fl(this.opacity);return`${e===1?"rgb(":"rgba("}${Xr(this.r)}, ${Xr(this.g)}, ${Xr(this.b)}${e===1?")":`, ${e})`}`}function Fl(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Xr(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Ur(e){return e=Xr(e),(e<16?"0":"")+e.toString(16)}function fy(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new rn(e,t,n,r)}function fb(e){if(e instanceof rn)return new rn(e.h,e.s,e.l,e.opacity);if(e instanceof Xo||(e=Po(e)),!e)return new rn;if(e instanceof rn)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),s=Math.max(t,n,r),o=NaN,a=s-i,l=(s+i)/2;return a?(t===s?o=(n-r)/a+(n0&&l<1?0:o,new rn(o,a,l,e.opacity)}function i8(e,t,n,r){return arguments.length===1?fb(e):new rn(e,t,n,r??1)}function rn(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}mp(rn,i8,cb(Xo,{brighter(e){return e=e==null?zl:Math.pow(zl,e),new rn(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?To:Math.pow(To,e),new rn(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new kt(Fc(e>=240?e-240:e+120,i,r),Fc(e,i,r),Fc(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new rn(dy(this.h),Ca(this.s),Ca(this.l),Fl(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=Fl(this.opacity);return`${e===1?"hsl(":"hsla("}${dy(this.h)}, ${Ca(this.s)*100}%, ${Ca(this.l)*100}%${e===1?")":`, ${e})`}`}}));function dy(e){return e=(e||0)%360,e<0?e+360:e}function Ca(e){return Math.max(0,Math.min(1,e||0))}function Fc(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const db=e=>()=>e;function s8(e,t){return function(n){return e+n*t}}function o8(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}function a8(e){return(e=+e)==1?hb:function(t,n){return n-t?o8(t,n,e):db(isNaN(t)?n:t)}}function hb(e,t){var n=t-e;return n?s8(e,n):db(isNaN(e)?t:e)}const hy=function e(t){var n=a8(t);function r(i,s){var o=n((i=yd(i)).r,(s=yd(s)).r),a=n(i.g,s.g),l=n(i.b,s.b),u=hb(i.opacity,s.opacity);return function(c){return i.r=o(c),i.g=a(c),i.b=l(c),i.opacity=u(c),i+""}}return r.gamma=e,r}(1);function tr(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var xd=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Oc=new RegExp(xd.source,"g");function l8(e){return function(){return e}}function u8(e){return function(t){return e(t)+""}}function c8(e,t){var n=xd.lastIndex=Oc.lastIndex=0,r,i,s,o=-1,a=[],l=[];for(e=e+"",t=t+"";(r=xd.exec(e))&&(i=Oc.exec(t));)(s=i.index)>n&&(s=t.slice(n,s),a[o]?a[o]+=s:a[++o]=s),(r=r[0])===(i=i[0])?a[o]?a[o]+=i:a[++o]=i:(a[++o]=null,l.push({i:o,x:tr(r,i)})),n=Oc.lastIndex;return n180?c+=360:c-u>180&&(u+=360),d.push({i:f.push(i(f)+"rotate(",null,r)-2,x:tr(u,c)})):c&&f.push(i(f)+"rotate("+c+r)}function a(u,c,f,d){u!==c?d.push({i:f.push(i(f)+"skewX(",null,r)-2,x:tr(u,c)}):c&&f.push(i(f)+"skewX("+c+r)}function l(u,c,f,d,h,g){if(u!==f||c!==d){var y=h.push(i(h)+"scale(",null,",",null,")");g.push({i:y-4,x:tr(u,f)},{i:y-2,x:tr(c,d)})}else(f!==1||d!==1)&&h.push(i(h)+"scale("+f+","+d+")")}return function(u,c){var f=[],d=[];return u=e(u),c=e(c),s(u.translateX,u.translateY,c.translateX,c.translateY,f,d),o(u.rotate,c.rotate,f,d),a(u.skewX,c.skewX,f,d),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,f,d),u=c=null,function(h){for(var g=-1,y=d.length,w;++g=0&&e._call.call(void 0,t),e=e._next;--os}function gy(){ri=(Vl=jo.now())+Cu,os=zs=0;try{w8()}finally{os=0,b8(),ri=0}}function k8(){var e=jo.now(),t=e-Vl;t>gb&&(Cu-=t,Vl=e)}function b8(){for(var e,t=Ol,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:Ol=n);Fs=e,wd(r)}function wd(e){if(!os){zs&&(zs=clearTimeout(zs));var t=e-ri;t>24?(e<1/0&&(zs=setTimeout(gy,e-jo.now()-Cu)),Ns&&(Ns=clearInterval(Ns))):(Ns||(Vl=jo.now(),Ns=setInterval(k8,gb)),os=1,yb(gy))}}function yy(e,t,n){var r=new $l;return t=t==null?0:+t,r.restart(i=>{r.stop(),e(i+t)},t,n),r}var S8=Su("start","end","cancel","interrupt"),_8=[],vb=0,xy=1,kd=2,Xa=3,vy=4,bd=5,Qa=6;function Eu(e,t,n,r,i,s){var o=e.__transition;if(!o)e.__transition={};else if(n in o)return;C8(e,n,{name:t,index:r,group:i,on:S8,tween:_8,time:s.time,delay:s.delay,duration:s.duration,ease:s.ease,timer:null,state:vb})}function yp(e,t){var n=fn(e,t);if(n.state>vb)throw new Error("too late; already scheduled");return n}function _n(e,t){var n=fn(e,t);if(n.state>Xa)throw new Error("too late; already running");return n}function fn(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function C8(e,t,n){var r=e.__transition,i;r[t]=n,n.timer=xb(s,0,n.time);function s(u){n.state=xy,n.timer.restart(o,n.delay,n.time),n.delay<=u&&o(u-n.delay)}function o(u){var c,f,d,h;if(n.state!==xy)return l();for(c in r)if(h=r[c],h.name===n.name){if(h.state===Xa)return yy(o);h.state===vy?(h.state=Qa,h.timer.stop(),h.on.call("interrupt",e,e.__data__,h.index,h.group),delete r[c]):+ckd&&r.state=0&&(t=t.slice(0,n)),!t||t==="start"})}function tz(e,t,n){var r,i,s=ez(t)?yp:_n;return function(){var o=s(this,e),a=o.on;a!==r&&(i=(r=a).copy()).on(t,n),o.on=i}}function nz(e,t){var n=this._id;return arguments.length<2?fn(this.node(),n).on.on(e):this.each(tz(n,e,t))}function rz(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function iz(){return this.on("end.remove",rz(this._id))}function sz(e){var t=this._name,n=this._id;typeof e!="function"&&(e=hp(e));for(var r=this._groups,i=r.length,s=new Array(i),o=0;o()=>e;function Pz(e,{sourceEvent:t,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function Mn(e,t,n){this.k=e,this.x=t,this.y=n}Mn.prototype={constructor:Mn,scale:function(e){return e===1?this:new Mn(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Mn(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var yr=new Mn(1,0,0);Mn.prototype;function Vc(e){e.stopImmediatePropagation()}function Ts(e){e.preventDefault(),e.stopImmediatePropagation()}function jz(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function Mz(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function wy(){return this.__zoom||yr}function Dz(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Iz(){return navigator.maxTouchPoints||"ontouchstart"in this}function Lz(e,t,n){var r=e.invertX(t[0][0])-n[0][0],i=e.invertX(t[1][0])-n[1][0],s=e.invertY(t[0][1])-n[0][1],o=e.invertY(t[1][1])-n[1][1];return e.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),o>s?(s+o)/2:Math.min(0,s)||Math.max(0,o))}function Rz(){var e=jz,t=Mz,n=Lz,r=Dz,i=Iz,s=[0,1/0],o=[[-1/0,-1/0],[1/0,1/0]],a=250,l=x8,u=Su("start","zoom","end"),c,f,d,h=500,g=150,y=0,w=10;function m(_){_.property("__zoom",wy).on("wheel.zoom",P,{passive:!1}).on("mousedown.zoom",D).on("dblclick.zoom",C).filter(i).on("touchstart.zoom",L).on("touchmove.zoom",M).on("touchend.zoom touchcancel.zoom",O).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}m.transform=function(_,R,I,V){var z=_.selection?_.selection():_;z.property("__zoom",wy),_!==z?N(_,R,I,V):z.interrupt().each(function(){S(this,arguments).event(V).start().zoom(null,typeof R=="function"?R.apply(this,arguments):R).end()})},m.scaleBy=function(_,R,I,V){m.scaleTo(_,function(){var z=this.__zoom.k,j=typeof R=="function"?R.apply(this,arguments):R;return z*j},I,V)},m.scaleTo=function(_,R,I,V){m.transform(_,function(){var z=t.apply(this,arguments),j=this.__zoom,b=I==null?k(z):typeof I=="function"?I.apply(this,arguments):I,F=j.invert(b),H=typeof R=="function"?R.apply(this,arguments):R;return n(v(x(j,H),b,F),z,o)},I,V)},m.translateBy=function(_,R,I,V){m.transform(_,function(){return n(this.__zoom.translate(typeof R=="function"?R.apply(this,arguments):R,typeof I=="function"?I.apply(this,arguments):I),t.apply(this,arguments),o)},null,V)},m.translateTo=function(_,R,I,V,z){m.transform(_,function(){var j=t.apply(this,arguments),b=this.__zoom,F=V==null?k(j):typeof V=="function"?V.apply(this,arguments):V;return n(yr.translate(F[0],F[1]).scale(b.k).translate(typeof R=="function"?-R.apply(this,arguments):-R,typeof I=="function"?-I.apply(this,arguments):-I),j,o)},V,z)};function x(_,R){return R=Math.max(s[0],Math.min(s[1],R)),R===_.k?_:new Mn(R,_.x,_.y)}function v(_,R,I){var V=R[0]-I[0]*_.k,z=R[1]-I[1]*_.k;return V===_.x&&z===_.y?_:new Mn(_.k,V,z)}function k(_){return[(+_[0][0]+ +_[1][0])/2,(+_[0][1]+ +_[1][1])/2]}function N(_,R,I,V){_.on("start.zoom",function(){S(this,arguments).event(V).start()}).on("interrupt.zoom end.zoom",function(){S(this,arguments).event(V).end()}).tween("zoom",function(){var z=this,j=arguments,b=S(z,j).event(V),F=t.apply(z,j),H=I==null?k(F):typeof I=="function"?I.apply(z,j):I,E=Math.max(F[1][0]-F[0][0],F[1][1]-F[0][1]),q=z.__zoom,X=typeof R=="function"?R.apply(z,j):R,G=l(q.invert(H).concat(E/q.k),X.invert(H).concat(E/X.k));return function(ne){if(ne===1)ne=X;else{var oe=G(ne),de=E/oe[2];ne=new Mn(de,H[0]-oe[0]*de,H[1]-oe[1]*de)}b.zoom(null,ne)}})}function S(_,R,I){return!I&&_.__zooming||new A(_,R)}function A(_,R){this.that=_,this.args=R,this.active=0,this.sourceEvent=null,this.extent=t.apply(_,R),this.taps=0}A.prototype={event:function(_){return _&&(this.sourceEvent=_),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(_,R){return this.mouse&&_!=="mouse"&&(this.mouse[1]=R.invert(this.mouse[0])),this.touch0&&_!=="touch"&&(this.touch0[1]=R.invert(this.touch0[0])),this.touch1&&_!=="touch"&&(this.touch1[1]=R.invert(this.touch1[0])),this.that.__zoom=R,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(_){var R=nn(this.that).datum();u.call(_,this.that,new Pz(_,{sourceEvent:this.sourceEvent,target:m,transform:this.that.__zoom,dispatch:u}),R)}};function P(_,...R){if(!e.apply(this,arguments))return;var I=S(this,R).event(_),V=this.__zoom,z=Math.max(s[0],Math.min(s[1],V.k*Math.pow(2,r.apply(this,arguments)))),j=yn(_);if(I.wheel)(I.mouse[0][0]!==j[0]||I.mouse[0][1]!==j[1])&&(I.mouse[1]=V.invert(I.mouse[0]=j)),clearTimeout(I.wheel);else{if(V.k===z)return;I.mouse=[j,V.invert(j)],Za(this),I.start()}Ts(_),I.wheel=setTimeout(b,g),I.zoom("mouse",n(v(x(V,z),I.mouse[0],I.mouse[1]),I.extent,o));function b(){I.wheel=null,I.end()}}function D(_,...R){if(d||!e.apply(this,arguments))return;var I=_.currentTarget,V=S(this,R,!0).event(_),z=nn(_.view).on("mousemove.zoom",H,!0).on("mouseup.zoom",E,!0),j=yn(_,I),b=_.clientX,F=_.clientY;lb(_.view),Vc(_),V.mouse=[j,this.__zoom.invert(j)],Za(this),V.start();function H(q){if(Ts(q),!V.moved){var X=q.clientX-b,G=q.clientY-F;V.moved=X*X+G*G>y}V.event(q).zoom("mouse",n(v(V.that.__zoom,V.mouse[0]=yn(q,I),V.mouse[1]),V.extent,o))}function E(q){z.on("mousemove.zoom mouseup.zoom",null),ub(q.view,V.moved),Ts(q),V.event(q).end()}}function C(_,...R){if(e.apply(this,arguments)){var I=this.__zoom,V=yn(_.changedTouches?_.changedTouches[0]:_,this),z=I.invert(V),j=I.k*(_.shiftKey?.5:2),b=n(v(x(I,j),V,z),t.apply(this,R),o);Ts(_),a>0?nn(this).transition().duration(a).call(N,b,V,_):nn(this).call(m.transform,b,V,_)}}function L(_,...R){if(e.apply(this,arguments)){var I=_.touches,V=I.length,z=S(this,R,_.changedTouches.length===V).event(_),j,b,F,H;for(Vc(_),b=0;b"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,t)=>`Couldn't create edge for ${e?"target":"source"} handle id: "${e?t.targetHandle:t.sourceHandle}", edge id: ${t.id}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`},Sb=Bn.error001();function De(e,t){const n=T.useContext(Nu);if(n===null)throw new Error(Sb);return Gk(n,e,t)}const Ke=()=>{const e=T.useContext(Nu);if(e===null)throw new Error(Sb);return T.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe,destroy:e.destroy}),[e])},Fz=e=>e.userSelectionActive?"none":"all";function _b({position:e,children:t,className:n,style:r,...i}){const s=De(Fz),o=`${e}`.split("-");return B.createElement("div",{className:gt(["react-flow__panel",n,...o]),style:{...r,pointerEvents:s},...i},t)}function Oz({proOptions:e,position:t="bottom-right"}){return e!=null&&e.hideAttribution?null:B.createElement(_b,{position:t,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://reactflow.dev/pro"},B.createElement("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution"},"React Flow"))}const Vz=({x:e,y:t,label:n,labelStyle:r={},labelShowBg:i=!0,labelBgStyle:s={},labelBgPadding:o=[2,4],labelBgBorderRadius:a=2,children:l,className:u,...c})=>{const f=T.useRef(null),[d,h]=T.useState({x:0,y:0,width:0,height:0}),g=gt(["react-flow__edge-textwrapper",u]);return T.useEffect(()=>{if(f.current){const y=f.current.getBBox();h({x:y.x,y:y.y,width:y.width,height:y.height})}},[n]),typeof n>"u"||!n?null:B.createElement("g",{transform:`translate(${e-d.width/2} ${t-d.height/2})`,className:g,visibility:d.width?"visible":"hidden",...c},i&&B.createElement("rect",{width:d.width+2*o[0],x:-o[0],y:-o[1],height:d.height+2*o[1],className:"react-flow__edge-textbg",style:s,rx:a,ry:a}),B.createElement("text",{className:"react-flow__edge-text",y:d.height/2,dy:"0.3em",ref:f,style:r},n),l)};var $z=T.memo(Vz);const vp=e=>({width:e.offsetWidth,height:e.offsetHeight}),as=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),wp=(e={x:0,y:0},t)=>({x:as(e.x,t[0][0],t[1][0]),y:as(e.y,t[0][1],t[1][1])}),ky=(e,t,n)=>en?-as(Math.abs(e-n),1,50)/50:0,Cb=(e,t)=>{const n=ky(e.x,35,t.width-35)*20,r=ky(e.y,35,t.height-35)*20;return[n,r]},Eb=e=>{var t;return((t=e.getRootNode)==null?void 0:t.call(e))||(window==null?void 0:window.document)},Bz=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),kp=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),Hz=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),by=e=>({...e.positionAbsolute||{x:0,y:0},width:e.width||0,height:e.height||0}),Sd=(e,t)=>{const n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),r=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return Math.ceil(n*r)},Uz=e=>qt(e.width)&&qt(e.height)&&qt(e.x)&&qt(e.y),qt=e=>!isNaN(e)&&isFinite(e),Re=Symbol.for("internals"),Nb=["Enter"," ","Escape"],Wz=(e,t)=>{},Yz=e=>"nativeEvent"in e;function _d(e){var i,s;const t=Yz(e)?e.nativeEvent:e,n=((s=(i=t.composedPath)==null?void 0:i.call(t))==null?void 0:s[0])||e.target;return["INPUT","SELECT","TEXTAREA"].includes(n==null?void 0:n.nodeName)||(n==null?void 0:n.hasAttribute("contenteditable"))||!!(n!=null&&n.closest(".nokey"))}const Tb=e=>"clientX"in e,xr=(e,t)=>{var s,o;const n=Tb(e),r=n?e.clientX:(s=e.touches)==null?void 0:s[0].clientX,i=n?e.clientY:(o=e.touches)==null?void 0:o[0].clientY;return{x:r-((t==null?void 0:t.left)??0),y:i-((t==null?void 0:t.top)??0)}},Bl=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0},Qo=({id:e,path:t,labelX:n,labelY:r,label:i,labelStyle:s,labelShowBg:o,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:f,markerStart:d,interactionWidth:h=20})=>B.createElement(B.Fragment,null,B.createElement("path",{id:e,style:c,d:t,fill:"none",className:"react-flow__edge-path",markerEnd:f,markerStart:d}),h&&B.createElement("path",{d:t,fill:"none",strokeOpacity:0,strokeWidth:h,className:"react-flow__edge-interaction"}),i&&qt(n)&&qt(r)?B.createElement($z,{x:n,y:r,label:i,labelStyle:s,labelShowBg:o,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u}):null);Qo.displayName="BaseEdge";function As(e,t,n){return n===void 0?n:r=>{const i=t().edges.find(s=>s.id===e);i&&n(r,{...i})}}function Ab({sourceX:e,sourceY:t,targetX:n,targetY:r}){const i=Math.abs(n-e)/2,s=n{const[w,m,x]=jb({sourceX:e,sourceY:t,sourcePosition:i,targetX:n,targetY:r,targetPosition:s});return B.createElement(Qo,{path:w,labelX:m,labelY:x,label:o,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:f,style:d,markerEnd:h,markerStart:g,interactionWidth:y})});bp.displayName="SimpleBezierEdge";const _y={[Q.Left]:{x:-1,y:0},[Q.Right]:{x:1,y:0},[Q.Top]:{x:0,y:-1},[Q.Bottom]:{x:0,y:1}},qz=({source:e,sourcePosition:t=Q.Bottom,target:n})=>t===Q.Left||t===Q.Right?e.xMath.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function Kz({source:e,sourcePosition:t=Q.Bottom,target:n,targetPosition:r=Q.Top,center:i,offset:s}){const o=_y[t],a=_y[r],l={x:e.x+o.x*s,y:e.y+o.y*s},u={x:n.x+a.x*s,y:n.y+a.y*s},c=qz({source:l,sourcePosition:t,target:u}),f=c.x!==0?"x":"y",d=c[f];let h=[],g,y;const w={x:0,y:0},m={x:0,y:0},[x,v,k,N]=Ab({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(o[f]*a[f]===-1){g=i.x??x,y=i.y??v;const A=[{x:g,y:l.y},{x:g,y:u.y}],P=[{x:l.x,y},{x:u.x,y}];o[f]===d?h=f==="x"?A:P:h=f==="x"?P:A}else{const A=[{x:l.x,y:u.y}],P=[{x:u.x,y:l.y}];if(f==="x"?h=o.x===d?P:A:h=o.y===d?A:P,t===r){const O=Math.abs(e[f]-n[f]);if(O<=s){const _=Math.min(s-1,s-O);o[f]===d?w[f]=(l[f]>e[f]?-1:1)*_:m[f]=(u[f]>n[f]?-1:1)*_}}if(t!==r){const O=f==="x"?"y":"x",_=o[f]===a[O],R=l[O]>u[O],I=l[O]=M?(g=(D.x+C.x)/2,y=h[0].y):(g=h[0].x,y=(D.y+C.y)/2)}return[[e,{x:l.x+w.x,y:l.y+w.y},...h,{x:u.x+m.x,y:u.y+m.y},n],g,y,k,N]}function Gz(e,t,n,r){const i=Math.min(Cy(e,t)/2,Cy(t,n)/2,r),{x:s,y:o}=t;if(e.x===s&&s===n.x||e.y===o&&o===n.y)return`L${s} ${o}`;if(e.y===o){const u=e.x{let v="";return x>0&&x{const[m,x,v]=Cd({sourceX:e,sourceY:t,sourcePosition:f,targetX:n,targetY:r,targetPosition:d,borderRadius:y==null?void 0:y.borderRadius,offset:y==null?void 0:y.offset});return B.createElement(Qo,{path:m,labelX:x,labelY:v,label:i,labelStyle:s,labelShowBg:o,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:h,markerStart:g,interactionWidth:w})});Tu.displayName="SmoothStepEdge";const Sp=T.memo(e=>{var t;return B.createElement(Tu,{...e,pathOptions:T.useMemo(()=>{var n;return{borderRadius:0,offset:(n=e.pathOptions)==null?void 0:n.offset}},[(t=e.pathOptions)==null?void 0:t.offset])})});Sp.displayName="StepEdge";function Xz({sourceX:e,sourceY:t,targetX:n,targetY:r}){const[i,s,o,a]=Ab({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,i,s,o,a]}const _p=T.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,label:i,labelStyle:s,labelShowBg:o,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:f,markerStart:d,interactionWidth:h})=>{const[g,y,w]=Xz({sourceX:e,sourceY:t,targetX:n,targetY:r});return B.createElement(Qo,{path:g,labelX:y,labelY:w,label:i,labelStyle:s,labelShowBg:o,labelBgStyle:a,labelBgPadding:l,labelBgBorderRadius:u,style:c,markerEnd:f,markerStart:d,interactionWidth:h})});_p.displayName="StraightEdge";function Ta(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function Ey({pos:e,x1:t,y1:n,x2:r,y2:i,c:s}){switch(e){case Q.Left:return[t-Ta(t-r,s),n];case Q.Right:return[t+Ta(r-t,s),n];case Q.Top:return[t,n-Ta(n-i,s)];case Q.Bottom:return[t,n+Ta(i-n,s)]}}function Mb({sourceX:e,sourceY:t,sourcePosition:n=Q.Bottom,targetX:r,targetY:i,targetPosition:s=Q.Top,curvature:o=.25}){const[a,l]=Ey({pos:n,x1:e,y1:t,x2:r,y2:i,c:o}),[u,c]=Ey({pos:s,x1:r,y1:i,x2:e,y2:t,c:o}),[f,d,h,g]=Pb({sourceX:e,sourceY:t,targetX:r,targetY:i,sourceControlX:a,sourceControlY:l,targetControlX:u,targetControlY:c});return[`M${e},${t} C${a},${l} ${u},${c} ${r},${i}`,f,d,h,g]}const Hl=T.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:i=Q.Bottom,targetPosition:s=Q.Top,label:o,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:f,style:d,markerEnd:h,markerStart:g,pathOptions:y,interactionWidth:w})=>{const[m,x,v]=Mb({sourceX:e,sourceY:t,sourcePosition:i,targetX:n,targetY:r,targetPosition:s,curvature:y==null?void 0:y.curvature});return B.createElement(Qo,{path:m,labelX:x,labelY:v,label:o,labelStyle:a,labelShowBg:l,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:f,style:d,markerEnd:h,markerStart:g,interactionWidth:w})});Hl.displayName="BezierEdge";const Cp=T.createContext(null),Qz=Cp.Provider;Cp.Consumer;const Zz=()=>T.useContext(Cp),Jz=e=>"id"in e&&"source"in e&&"target"in e,e6=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`reactflow__edge-${e}${t||""}-${n}${r||""}`,Ed=(e,t)=>typeof e>"u"?"":typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(r=>`${r}=${e[r]}`).join("&")}`,t6=(e,t)=>t.some(n=>n.source===e.source&&n.target===e.target&&(n.sourceHandle===e.sourceHandle||!n.sourceHandle&&!e.sourceHandle)&&(n.targetHandle===e.targetHandle||!n.targetHandle&&!e.targetHandle)),n6=(e,t)=>{if(!e.source||!e.target)return t;let n;return Jz(e)?n={...e}:n={...e,id:e6(e)},t6(n,t)?t:t.concat(n)},Nd=({x:e,y:t},[n,r,i],s,[o,a])=>{const l={x:(e-n)/i,y:(t-r)/i};return s?{x:o*Math.round(l.x/o),y:a*Math.round(l.y/a)}:l},Db=({x:e,y:t},[n,r,i])=>({x:e*i+n,y:t*i+r}),Ui=(e,t=[0,0])=>{if(!e)return{x:0,y:0,positionAbsolute:{x:0,y:0}};const n=(e.width??0)*t[0],r=(e.height??0)*t[1],i={x:e.position.x-n,y:e.position.y-r};return{...i,positionAbsolute:e.positionAbsolute?{x:e.positionAbsolute.x-n,y:e.positionAbsolute.y-r}:i}},Ep=(e,t=[0,0])=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const n=e.reduce((r,i)=>{const{x:s,y:o}=Ui(i,t).positionAbsolute;return Bz(r,kp({x:s,y:o,width:i.width||0,height:i.height||0}))},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return Hz(n)},Ib=(e,t,[n,r,i]=[0,0,1],s=!1,o=!1,a=[0,0])=>{const l={x:(t.x-n)/i,y:(t.y-r)/i,width:t.width/i,height:t.height/i},u=[];return e.forEach(c=>{const{width:f,height:d,selectable:h=!0,hidden:g=!1}=c;if(o&&!h||g)return!1;const{positionAbsolute:y}=Ui(c,a),w={x:y.x,y:y.y,width:f||0,height:d||0},m=Sd(l,w),x=typeof f>"u"||typeof d>"u"||f===null||d===null,v=s&&m>0,k=(f||0)*(d||0);(x||v||m>=k||c.dragging)&&u.push(c)}),u},Lb=(e,t)=>{const n=e.map(r=>r.id);return t.filter(r=>n.includes(r.source)||n.includes(r.target))},Rb=(e,t,n,r,i,s=.1)=>{const o=t/(e.width*(1+s)),a=n/(e.height*(1+s)),l=Math.min(o,a),u=as(l,r,i),c=e.x+e.width/2,f=e.y+e.height/2,d=t/2-c*u,h=n/2-f*u;return{x:d,y:h,zoom:u}},Fr=(e,t=0)=>e.transition().duration(t);function Ny(e,t,n,r){return(t[n]||[]).reduce((i,s)=>{var o,a;return`${e.id}-${s.id}-${n}`!==r&&i.push({id:s.id||null,type:n,nodeId:e.id,x:(((o=e.positionAbsolute)==null?void 0:o.x)??0)+s.x+s.width/2,y:(((a=e.positionAbsolute)==null?void 0:a.y)??0)+s.y+s.height/2}),i},[])}function r6(e,t,n,r,i,s){const{x:o,y:a}=xr(e),u=t.elementsFromPoint(o,a).find(g=>g.classList.contains("react-flow__handle"));if(u){const g=u.getAttribute("data-nodeid");if(g){const y=Np(void 0,u),w=u.getAttribute("data-handleid"),m=s({nodeId:g,id:w,type:y});if(m){const x=i.find(v=>v.nodeId===g&&v.type===y&&v.id===w);return{handle:{id:w,type:y,nodeId:g,x:(x==null?void 0:x.x)||n.x,y:(x==null?void 0:x.y)||n.y},validHandleResult:m}}}}let c=[],f=1/0;if(i.forEach(g=>{const y=Math.sqrt((g.x-n.x)**2+(g.y-n.y)**2);if(y<=r){const w=s(g);y<=f&&(yg.isValid),h=c.some(({handle:g})=>g.type==="target");return c.find(({handle:g,validHandleResult:y})=>h?g.type==="target":d?y.isValid:!0)||c[0]}const i6={source:null,target:null,sourceHandle:null,targetHandle:null},zb=()=>({handleDomNode:null,isValid:!1,connection:i6,endHandle:null});function Fb(e,t,n,r,i,s,o){const a=i==="target",l=o.querySelector(`.react-flow__handle[data-id="${e==null?void 0:e.nodeId}-${e==null?void 0:e.id}-${e==null?void 0:e.type}"]`),u={...zb(),handleDomNode:l};if(l){const c=Np(void 0,l),f=l.getAttribute("data-nodeid"),d=l.getAttribute("data-handleid"),h=l.classList.contains("connectable"),g=l.classList.contains("connectableend"),y={source:a?f:n,sourceHandle:a?d:r,target:a?n:f,targetHandle:a?r:d};u.connection=y,h&&g&&(t===ii.Strict?a&&c==="source"||!a&&c==="target":f!==n||d!==r)&&(u.endHandle={nodeId:f,handleId:d,type:c},u.isValid=s(y))}return u}function s6({nodes:e,nodeId:t,handleId:n,handleType:r}){return e.reduce((i,s)=>{if(s[Re]){const{handleBounds:o}=s[Re];let a=[],l=[];o&&(a=Ny(s,o,"source",`${t}-${n}-${r}`),l=Ny(s,o,"target",`${t}-${n}-${r}`)),i.push(...a,...l)}return i},[])}function Np(e,t){return e||(t!=null&&t.classList.contains("target")?"target":t!=null&&t.classList.contains("source")?"source":null)}function $c(e){e==null||e.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function o6(e,t){let n=null;return t?n="valid":e&&!t&&(n="invalid"),n}function Ob({event:e,handleId:t,nodeId:n,onConnect:r,isTarget:i,getState:s,setState:o,isValidConnection:a,edgeUpdaterType:l,onReconnectEnd:u}){const c=Eb(e.target),{connectionMode:f,domNode:d,autoPanOnConnect:h,connectionRadius:g,onConnectStart:y,panBy:w,getNodes:m,cancelConnection:x}=s();let v=0,k;const{x:N,y:S}=xr(e),A=c==null?void 0:c.elementFromPoint(N,S),P=Np(l,A),D=d==null?void 0:d.getBoundingClientRect();if(!D||!P)return;let C,L=xr(e,D),M=!1,O=null,_=!1,R=null;const I=s6({nodes:m(),nodeId:n,handleId:t,handleType:P}),V=()=>{if(!h)return;const[b,F]=Cb(L,D);w({x:b,y:F}),v=requestAnimationFrame(V)};o({connectionPosition:L,connectionStatus:null,connectionNodeId:n,connectionHandleId:t,connectionHandleType:P,connectionStartHandle:{nodeId:n,handleId:t,type:P},connectionEndHandle:null}),y==null||y(e,{nodeId:n,handleId:t,handleType:P});function z(b){const{transform:F}=s();L=xr(b,D);const{handle:H,validHandleResult:E}=r6(b,c,Nd(L,F,!1,[1,1]),g,I,q=>Fb(q,f,n,t,i?"target":"source",a,c));if(k=H,M||(V(),M=!0),R=E.handleDomNode,O=E.connection,_=E.isValid,o({connectionPosition:k&&_?Db({x:k.x,y:k.y},F):L,connectionStatus:o6(!!k,_),connectionEndHandle:E.endHandle}),!k&&!_&&!R)return $c(C);O.source!==O.target&&R&&($c(C),C=R,R.classList.add("connecting","react-flow__handle-connecting"),R.classList.toggle("valid",_),R.classList.toggle("react-flow__handle-valid",_))}function j(b){var F,H;(k||R)&&O&&_&&(r==null||r(O)),(H=(F=s()).onConnectEnd)==null||H.call(F,b),l&&(u==null||u(b)),$c(C),x(),cancelAnimationFrame(v),M=!1,_=!1,O=null,R=null,c.removeEventListener("mousemove",z),c.removeEventListener("mouseup",j),c.removeEventListener("touchmove",z),c.removeEventListener("touchend",j)}c.addEventListener("mousemove",z),c.addEventListener("mouseup",j),c.addEventListener("touchmove",z),c.addEventListener("touchend",j)}const Ty=()=>!0,a6=e=>({connectionStartHandle:e.connectionStartHandle,connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName}),l6=(e,t,n)=>r=>{const{connectionStartHandle:i,connectionEndHandle:s,connectionClickStartHandle:o}=r;return{connecting:(i==null?void 0:i.nodeId)===e&&(i==null?void 0:i.handleId)===t&&(i==null?void 0:i.type)===n||(s==null?void 0:s.nodeId)===e&&(s==null?void 0:s.handleId)===t&&(s==null?void 0:s.type)===n,clickConnecting:(o==null?void 0:o.nodeId)===e&&(o==null?void 0:o.handleId)===t&&(o==null?void 0:o.type)===n}},Vb=T.forwardRef(({type:e="source",position:t=Q.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:i=!0,isConnectableEnd:s=!0,id:o,onConnect:a,children:l,className:u,onMouseDown:c,onTouchStart:f,...d},h)=>{var D,C;const g=o||null,y=e==="target",w=Ke(),m=Zz(),{connectOnClick:x,noPanClassName:v}=De(a6,Oe),{connecting:k,clickConnecting:N}=De(l6(m,g,e),Oe);m||(C=(D=w.getState()).onError)==null||C.call(D,"010",Bn.error010());const S=L=>{const{defaultEdgeOptions:M,onConnect:O,hasDefaultEdges:_}=w.getState(),R={...M,...L};if(_){const{edges:I,setEdges:V}=w.getState();V(n6(R,I))}O==null||O(R),a==null||a(R)},A=L=>{if(!m)return;const M=Tb(L);i&&(M&&L.button===0||!M)&&Ob({event:L,handleId:g,nodeId:m,onConnect:S,isTarget:y,getState:w.getState,setState:w.setState,isValidConnection:n||w.getState().isValidConnection||Ty}),M?c==null||c(L):f==null||f(L)},P=L=>{const{onClickConnectStart:M,onClickConnectEnd:O,connectionClickStartHandle:_,connectionMode:R,isValidConnection:I}=w.getState();if(!m||!_&&!i)return;if(!_){M==null||M(L,{nodeId:m,handleId:g,handleType:e}),w.setState({connectionClickStartHandle:{nodeId:m,type:e,handleId:g}});return}const V=Eb(L.target),z=n||I||Ty,{connection:j,isValid:b}=Fb({nodeId:m,id:g,type:e},R,_.nodeId,_.handleId||null,_.type,z,V);b&&S(j),O==null||O(L),w.setState({connectionClickStartHandle:null})};return B.createElement("div",{"data-handleid":g,"data-nodeid":m,"data-handlepos":t,"data-id":`${m}-${g}-${e}`,className:gt(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",v,u,{source:!y,target:y,connectable:r,connectablestart:i,connectableend:s,connecting:N,connectionindicator:r&&(i&&!k||s&&k)}]),onMouseDown:A,onTouchStart:A,onClick:x?P:void 0,ref:h,...d},l)});Vb.displayName="Handle";var ls=T.memo(Vb);const $b=({data:e,isConnectable:t,targetPosition:n=Q.Top,sourcePosition:r=Q.Bottom})=>B.createElement(B.Fragment,null,B.createElement(ls,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label,B.createElement(ls,{type:"source",position:r,isConnectable:t}));$b.displayName="DefaultNode";var Td=T.memo($b);const Bb=({data:e,isConnectable:t,sourcePosition:n=Q.Bottom})=>B.createElement(B.Fragment,null,e==null?void 0:e.label,B.createElement(ls,{type:"source",position:n,isConnectable:t}));Bb.displayName="InputNode";var Hb=T.memo(Bb);const Ub=({data:e,isConnectable:t,targetPosition:n=Q.Top})=>B.createElement(B.Fragment,null,B.createElement(ls,{type:"target",position:n,isConnectable:t}),e==null?void 0:e.label);Ub.displayName="OutputNode";var Wb=T.memo(Ub);const Tp=()=>null;Tp.displayName="GroupNode";const u6=e=>({selectedNodes:e.getNodes().filter(t=>t.selected),selectedEdges:e.edges.filter(t=>t.selected).map(t=>({...t}))}),Aa=e=>e.id;function c6(e,t){return Oe(e.selectedNodes.map(Aa),t.selectedNodes.map(Aa))&&Oe(e.selectedEdges.map(Aa),t.selectedEdges.map(Aa))}const Yb=T.memo(({onSelectionChange:e})=>{const t=Ke(),{selectedNodes:n,selectedEdges:r}=De(u6,c6);return T.useEffect(()=>{const i={nodes:n,edges:r};e==null||e(i),t.getState().onSelectionChange.forEach(s=>s(i))},[n,r,e]),null});Yb.displayName="SelectionListener";const f6=e=>!!e.onSelectionChange;function d6({onSelectionChange:e}){const t=De(f6);return e||t?B.createElement(Yb,{onSelectionChange:e}):null}const h6=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset});function di(e,t){T.useEffect(()=>{typeof e<"u"&&t(e)},[e])}function ae(e,t,n){T.useEffect(()=>{typeof t<"u"&&n({[e]:t})},[t])}const p6=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:i,onConnectStart:s,onConnectEnd:o,onClickConnectStart:a,onClickConnectEnd:l,nodesDraggable:u,nodesConnectable:c,nodesFocusable:f,edgesFocusable:d,edgesUpdatable:h,elevateNodesOnSelect:g,minZoom:y,maxZoom:w,nodeExtent:m,onNodesChange:x,onEdgesChange:v,elementsSelectable:k,connectionMode:N,snapGrid:S,snapToGrid:A,translateExtent:P,connectOnClick:D,defaultEdgeOptions:C,fitView:L,fitViewOptions:M,onNodesDelete:O,onEdgesDelete:_,onNodeDrag:R,onNodeDragStart:I,onNodeDragStop:V,onSelectionDrag:z,onSelectionDragStart:j,onSelectionDragStop:b,noPanClassName:F,nodeOrigin:H,rfId:E,autoPanOnConnect:q,autoPanOnNodeDrag:X,onError:G,connectionRadius:ne,isValidConnection:oe,nodeDragThreshold:de})=>{const{setNodes:le,setEdges:Ee,setDefaultNodesAndEdges:lt,setMinZoom:Nt,setMaxZoom:yt,setTranslateExtent:Ie,setNodeExtent:Tt,reset:ye}=De(h6,Oe),Z=Ke();return T.useEffect(()=>{const et=r==null?void 0:r.map(dn=>({...dn,...C}));return lt(n,et),()=>{ye()}},[]),ae("defaultEdgeOptions",C,Z.setState),ae("connectionMode",N,Z.setState),ae("onConnect",i,Z.setState),ae("onConnectStart",s,Z.setState),ae("onConnectEnd",o,Z.setState),ae("onClickConnectStart",a,Z.setState),ae("onClickConnectEnd",l,Z.setState),ae("nodesDraggable",u,Z.setState),ae("nodesConnectable",c,Z.setState),ae("nodesFocusable",f,Z.setState),ae("edgesFocusable",d,Z.setState),ae("edgesUpdatable",h,Z.setState),ae("elementsSelectable",k,Z.setState),ae("elevateNodesOnSelect",g,Z.setState),ae("snapToGrid",A,Z.setState),ae("snapGrid",S,Z.setState),ae("onNodesChange",x,Z.setState),ae("onEdgesChange",v,Z.setState),ae("connectOnClick",D,Z.setState),ae("fitViewOnInit",L,Z.setState),ae("fitViewOnInitOptions",M,Z.setState),ae("onNodesDelete",O,Z.setState),ae("onEdgesDelete",_,Z.setState),ae("onNodeDrag",R,Z.setState),ae("onNodeDragStart",I,Z.setState),ae("onNodeDragStop",V,Z.setState),ae("onSelectionDrag",z,Z.setState),ae("onSelectionDragStart",j,Z.setState),ae("onSelectionDragStop",b,Z.setState),ae("noPanClassName",F,Z.setState),ae("nodeOrigin",H,Z.setState),ae("rfId",E,Z.setState),ae("autoPanOnConnect",q,Z.setState),ae("autoPanOnNodeDrag",X,Z.setState),ae("onError",G,Z.setState),ae("connectionRadius",ne,Z.setState),ae("isValidConnection",oe,Z.setState),ae("nodeDragThreshold",de,Z.setState),di(e,le),di(t,Ee),di(y,Nt),di(w,yt),di(P,Ie),di(m,Tt),null},Ay={display:"none"},m6={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},qb="react-flow__node-desc",Kb="react-flow__edge-desc",g6="react-flow__aria-live",y6=e=>e.ariaLiveMessage;function x6({rfId:e}){const t=De(y6);return B.createElement("div",{id:`${g6}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:m6},t)}function v6({rfId:e,disableKeyboardA11y:t}){return B.createElement(B.Fragment,null,B.createElement("div",{id:`${qb}-${e}`,style:Ay},"Press enter or space to select a node.",!t&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "),B.createElement("div",{id:`${Kb}-${e}`,style:Ay},"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."),!t&&B.createElement(x6,{rfId:e}))}var Io=(e=null,t={actInsideInputWithModifier:!0})=>{const[n,r]=T.useState(!1),i=T.useRef(!1),s=T.useRef(new Set([])),[o,a]=T.useMemo(()=>{if(e!==null){const u=(Array.isArray(e)?e:[e]).filter(f=>typeof f=="string").map(f=>f.split("+")),c=u.reduce((f,d)=>f.concat(...d),[]);return[u,c]}return[[],[]]},[e]);return T.useEffect(()=>{const l=typeof document<"u"?document:null,u=(t==null?void 0:t.target)||l;if(e!==null){const c=h=>{if(i.current=h.ctrlKey||h.metaKey||h.shiftKey,(!i.current||i.current&&!t.actInsideInputWithModifier)&&_d(h))return!1;const y=jy(h.code,a);s.current.add(h[y]),Py(o,s.current,!1)&&(h.preventDefault(),r(!0))},f=h=>{if((!i.current||i.current&&!t.actInsideInputWithModifier)&&_d(h))return!1;const y=jy(h.code,a);Py(o,s.current,!0)?(r(!1),s.current.clear()):s.current.delete(h[y]),h.key==="Meta"&&s.current.clear(),i.current=!1},d=()=>{s.current.clear(),r(!1)};return u==null||u.addEventListener("keydown",c),u==null||u.addEventListener("keyup",f),window.addEventListener("blur",d),()=>{u==null||u.removeEventListener("keydown",c),u==null||u.removeEventListener("keyup",f),window.removeEventListener("blur",d)}}},[e,r]),n};function Py(e,t,n){return e.filter(r=>n||r.length===t.size).some(r=>r.every(i=>t.has(i)))}function jy(e,t){return t.includes(e)?"code":"key"}function Gb(e,t,n,r){var a,l;const i=e.parentNode||e.parentId;if(!i)return n;const s=t.get(i),o=Ui(s,r);return Gb(s,t,{x:(n.x??0)+o.x,y:(n.y??0)+o.y,z:(((a=s[Re])==null?void 0:a.z)??0)>(n.z??0)?((l=s[Re])==null?void 0:l.z)??0:n.z??0},r)}function Xb(e,t,n){e.forEach(r=>{var s;const i=r.parentNode||r.parentId;if(i&&!e.has(i))throw new Error(`Parent node ${i} not found`);if(i||n!=null&&n[r.id]){const{x:o,y:a,z:l}=Gb(r,e,{...r.position,z:((s=r[Re])==null?void 0:s.z)??0},t);r.positionAbsolute={x:o,y:a},r[Re].z=l,n!=null&&n[r.id]&&(r[Re].isParent=!0)}})}function Bc(e,t,n,r){const i=new Map,s={},o=r?1e3:0;return e.forEach(a=>{var h;const l=(qt(a.zIndex)?a.zIndex:0)+(a.selected?o:0),u=t.get(a.id),c={...a,positionAbsolute:{x:a.position.x,y:a.position.y}},f=a.parentNode||a.parentId;f&&(s[f]=!0);const d=(u==null?void 0:u.type)&&(u==null?void 0:u.type)!==a.type;Object.defineProperty(c,Re,{enumerable:!1,value:{handleBounds:d||(h=u==null?void 0:u[Re])==null?void 0:h.handleBounds,z:l}}),i.set(a.id,c)}),Xb(i,n,s),i}function Qb(e,t={}){const{getNodes:n,width:r,height:i,minZoom:s,maxZoom:o,d3Zoom:a,d3Selection:l,fitViewOnInitDone:u,fitViewOnInit:c,nodeOrigin:f}=e(),d=t.initial&&!u&&c;if(a&&l&&(d||!t.initial)){const g=n().filter(w=>{var x;const m=t.includeHiddenNodes?w.width&&w.height:!w.hidden;return(x=t.nodes)!=null&&x.length?m&&t.nodes.some(v=>v.id===w.id):m}),y=g.every(w=>w.width&&w.height);if(g.length>0&&y){const w=Ep(g,f),{x:m,y:x,zoom:v}=Rb(w,r,i,t.minZoom??s,t.maxZoom??o,t.padding??.1),k=yr.translate(m,x).scale(v);return typeof t.duration=="number"&&t.duration>0?a.transform(Fr(l,t.duration),k):a.transform(l,k),!0}}return!1}function w6(e,t){return e.forEach(n=>{const r=t.get(n.id);r&&t.set(r.id,{...r,[Re]:r[Re],selected:n.selected})}),new Map(t)}function k6(e,t){return t.map(n=>{const r=e.find(i=>i.id===n.id);return r&&(n.selected=r.selected),n})}function Pa({changedNodes:e,changedEdges:t,get:n,set:r}){const{nodeInternals:i,edges:s,onNodesChange:o,onEdgesChange:a,hasDefaultNodes:l,hasDefaultEdges:u}=n();e!=null&&e.length&&(l&&r({nodeInternals:w6(e,i)}),o==null||o(e)),t!=null&&t.length&&(u&&r({edges:k6(t,s)}),a==null||a(t))}const hi=()=>{},b6={zoomIn:hi,zoomOut:hi,zoomTo:hi,getZoom:()=>1,setViewport:hi,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:hi,fitBounds:hi,project:e=>e,screenToFlowPosition:e=>e,flowToScreenPosition:e=>e,viewportInitialized:!1},S6=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection}),_6=()=>{const e=Ke(),{d3Zoom:t,d3Selection:n}=De(S6,Oe);return T.useMemo(()=>n&&t?{zoomIn:i=>t.scaleBy(Fr(n,i==null?void 0:i.duration),1.2),zoomOut:i=>t.scaleBy(Fr(n,i==null?void 0:i.duration),1/1.2),zoomTo:(i,s)=>t.scaleTo(Fr(n,s==null?void 0:s.duration),i),getZoom:()=>e.getState().transform[2],setViewport:(i,s)=>{const[o,a,l]=e.getState().transform,u=yr.translate(i.x??o,i.y??a).scale(i.zoom??l);t.transform(Fr(n,s==null?void 0:s.duration),u)},getViewport:()=>{const[i,s,o]=e.getState().transform;return{x:i,y:s,zoom:o}},fitView:i=>Qb(e.getState,i),setCenter:(i,s,o)=>{const{width:a,height:l,maxZoom:u}=e.getState(),c=typeof(o==null?void 0:o.zoom)<"u"?o.zoom:u,f=a/2-i*c,d=l/2-s*c,h=yr.translate(f,d).scale(c);t.transform(Fr(n,o==null?void 0:o.duration),h)},fitBounds:(i,s)=>{const{width:o,height:a,minZoom:l,maxZoom:u}=e.getState(),{x:c,y:f,zoom:d}=Rb(i,o,a,l,u,(s==null?void 0:s.padding)??.1),h=yr.translate(c,f).scale(d);t.transform(Fr(n,s==null?void 0:s.duration),h)},project:i=>{const{transform:s,snapToGrid:o,snapGrid:a}=e.getState();return console.warn("[DEPRECATED] `project` is deprecated. Instead use `screenToFlowPosition`. There is no need to subtract the react flow bounds anymore! https://reactflow.dev/api-reference/types/react-flow-instance#screen-to-flow-position"),Nd(i,s,o,a)},screenToFlowPosition:i=>{const{transform:s,snapToGrid:o,snapGrid:a,domNode:l}=e.getState();if(!l)return i;const{x:u,y:c}=l.getBoundingClientRect(),f={x:i.x-u,y:i.y-c};return Nd(f,s,o,a)},flowToScreenPosition:i=>{const{transform:s,domNode:o}=e.getState();if(!o)return i;const{x:a,y:l}=o.getBoundingClientRect(),u=Db(i,s);return{x:u.x+a,y:u.y+l}},viewportInitialized:!0}:b6,[t,n])};function Au(){const e=_6(),t=Ke(),n=T.useCallback(()=>t.getState().getNodes().map(y=>({...y})),[]),r=T.useCallback(y=>t.getState().nodeInternals.get(y),[]),i=T.useCallback(()=>{const{edges:y=[]}=t.getState();return y.map(w=>({...w}))},[]),s=T.useCallback(y=>{const{edges:w=[]}=t.getState();return w.find(m=>m.id===y)},[]),o=T.useCallback(y=>{const{getNodes:w,setNodes:m,hasDefaultNodes:x,onNodesChange:v}=t.getState(),k=w(),N=typeof y=="function"?y(k):y;if(x)m(N);else if(v){const S=N.length===0?k.map(A=>({type:"remove",id:A.id})):N.map(A=>({item:A,type:"reset"}));v(S)}},[]),a=T.useCallback(y=>{const{edges:w=[],setEdges:m,hasDefaultEdges:x,onEdgesChange:v}=t.getState(),k=typeof y=="function"?y(w):y;if(x)m(k);else if(v){const N=k.length===0?w.map(S=>({type:"remove",id:S.id})):k.map(S=>({item:S,type:"reset"}));v(N)}},[]),l=T.useCallback(y=>{const w=Array.isArray(y)?y:[y],{getNodes:m,setNodes:x,hasDefaultNodes:v,onNodesChange:k}=t.getState();if(v){const S=[...m(),...w];x(S)}else if(k){const N=w.map(S=>({item:S,type:"add"}));k(N)}},[]),u=T.useCallback(y=>{const w=Array.isArray(y)?y:[y],{edges:m=[],setEdges:x,hasDefaultEdges:v,onEdgesChange:k}=t.getState();if(v)x([...m,...w]);else if(k){const N=w.map(S=>({item:S,type:"add"}));k(N)}},[]),c=T.useCallback(()=>{const{getNodes:y,edges:w=[],transform:m}=t.getState(),[x,v,k]=m;return{nodes:y().map(N=>({...N})),edges:w.map(N=>({...N})),viewport:{x,y:v,zoom:k}}},[]),f=T.useCallback(({nodes:y,edges:w})=>{const{nodeInternals:m,getNodes:x,edges:v,hasDefaultNodes:k,hasDefaultEdges:N,onNodesDelete:S,onEdgesDelete:A,onNodesChange:P,onEdgesChange:D}=t.getState(),C=(y||[]).map(R=>R.id),L=(w||[]).map(R=>R.id),M=x().reduce((R,I)=>{const V=I.parentNode||I.parentId,z=!C.includes(I.id)&&V&&R.find(b=>b.id===V);return(typeof I.deletable=="boolean"?I.deletable:!0)&&(C.includes(I.id)||z)&&R.push(I),R},[]),O=v.filter(R=>typeof R.deletable=="boolean"?R.deletable:!0),_=O.filter(R=>L.includes(R.id));if(M||_){const R=Lb(M,O),I=[..._,...R],V=I.reduce((z,j)=>(z.includes(j.id)||z.push(j.id),z),[]);if((N||k)&&(N&&t.setState({edges:v.filter(z=>!V.includes(z.id))}),k&&(M.forEach(z=>{m.delete(z.id)}),t.setState({nodeInternals:new Map(m)}))),V.length>0&&(A==null||A(I),D&&D(V.map(z=>({id:z,type:"remove"})))),M.length>0&&(S==null||S(M),P)){const z=M.map(j=>({id:j.id,type:"remove"}));P(z)}}},[]),d=T.useCallback(y=>{const w=Uz(y),m=w?null:t.getState().nodeInternals.get(y.id);return!w&&!m?[null,null,w]:[w?y:by(m),m,w]},[]),h=T.useCallback((y,w=!0,m)=>{const[x,v,k]=d(y);return x?(m||t.getState().getNodes()).filter(N=>{if(!k&&(N.id===v.id||!N.positionAbsolute))return!1;const S=by(N),A=Sd(S,x);return w&&A>0||A>=x.width*x.height}):[]},[]),g=T.useCallback((y,w,m=!0)=>{const[x]=d(y);if(!x)return!1;const v=Sd(x,w);return m&&v>0||v>=x.width*x.height},[]);return T.useMemo(()=>({...e,getNodes:n,getNode:r,getEdges:i,getEdge:s,setNodes:o,setEdges:a,addNodes:l,addEdges:u,toObject:c,deleteElements:f,getIntersectingNodes:h,isNodeIntersecting:g}),[e,n,r,i,s,o,a,l,u,c,f,h,g])}const C6={actInsideInputWithModifier:!1};var E6=({deleteKeyCode:e,multiSelectionKeyCode:t})=>{const n=Ke(),{deleteElements:r}=Au(),i=Io(e,C6),s=Io(t);T.useEffect(()=>{if(i){const{edges:o,getNodes:a}=n.getState(),l=a().filter(c=>c.selected),u=o.filter(c=>c.selected);r({nodes:l,edges:u}),n.setState({nodesSelectionActive:!1})}},[i]),T.useEffect(()=>{n.setState({multiSelectionActive:s})},[s])};function N6(e){const t=Ke();T.useEffect(()=>{let n;const r=()=>{var s,o;if(!e.current)return;const i=vp(e.current);(i.height===0||i.width===0)&&((o=(s=t.getState()).onError)==null||o.call(s,"004",Bn.error004())),t.setState({width:i.width||500,height:i.height||500})};return r(),window.addEventListener("resize",r),e.current&&(n=new ResizeObserver(()=>r()),n.observe(e.current)),()=>{window.removeEventListener("resize",r),n&&e.current&&n.unobserve(e.current)}},[])}const Ap={position:"absolute",width:"100%",height:"100%",top:0,left:0},T6=(e,t)=>e.x!==t.x||e.y!==t.y||e.zoom!==t.k,ja=e=>({x:e.x,y:e.y,zoom:e.k}),pi=(e,t)=>e.target.closest(`.${t}`),My=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),Dy=e=>{const t=e.ctrlKey&&Bl()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t},A6=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection,d3ZoomHandler:e.d3ZoomHandler,userSelectionActive:e.userSelectionActive}),P6=({onMove:e,onMoveStart:t,onMoveEnd:n,onPaneContextMenu:r,zoomOnScroll:i=!0,zoomOnPinch:s=!0,panOnScroll:o=!1,panOnScrollSpeed:a=.5,panOnScrollMode:l=Wr.Free,zoomOnDoubleClick:u=!0,elementsSelectable:c,panOnDrag:f=!0,defaultViewport:d,translateExtent:h,minZoom:g,maxZoom:y,zoomActivationKeyCode:w,preventScrolling:m=!0,children:x,noWheelClassName:v,noPanClassName:k})=>{const N=T.useRef(),S=Ke(),A=T.useRef(!1),P=T.useRef(!1),D=T.useRef(null),C=T.useRef({x:0,y:0,zoom:0}),{d3Zoom:L,d3Selection:M,d3ZoomHandler:O,userSelectionActive:_}=De(A6,Oe),R=Io(w),I=T.useRef(0),V=T.useRef(!1),z=T.useRef();return N6(D),T.useEffect(()=>{if(D.current){const j=D.current.getBoundingClientRect(),b=Rz().scaleExtent([g,y]).translateExtent(h),F=nn(D.current).call(b),H=yr.translate(d.x,d.y).scale(as(d.zoom,g,y)),E=[[0,0],[j.width,j.height]],q=b.constrain()(H,E,h);b.transform(F,q),b.wheelDelta(Dy),S.setState({d3Zoom:b,d3Selection:F,d3ZoomHandler:F.on("wheel.zoom"),transform:[q.x,q.y,q.k],domNode:D.current.closest(".react-flow")})}},[]),T.useEffect(()=>{M&&L&&(o&&!R&&!_?M.on("wheel.zoom",j=>{if(pi(j,v))return!1;j.preventDefault(),j.stopImmediatePropagation();const b=M.property("__zoom").k||1;if(j.ctrlKey&&s){const oe=yn(j),de=Dy(j),le=b*Math.pow(2,de);L.scaleTo(M,le,oe,j);return}const F=j.deltaMode===1?20:1;let H=l===Wr.Vertical?0:j.deltaX*F,E=l===Wr.Horizontal?0:j.deltaY*F;!Bl()&&j.shiftKey&&l!==Wr.Vertical&&(H=j.deltaY*F,E=0),L.translateBy(M,-(H/b)*a,-(E/b)*a,{internal:!0});const q=ja(M.property("__zoom")),{onViewportChangeStart:X,onViewportChange:G,onViewportChangeEnd:ne}=S.getState();clearTimeout(z.current),V.current||(V.current=!0,t==null||t(j,q),X==null||X(q)),V.current&&(e==null||e(j,q),G==null||G(q),z.current=setTimeout(()=>{n==null||n(j,q),ne==null||ne(q),V.current=!1},150))},{passive:!1}):typeof O<"u"&&M.on("wheel.zoom",function(j,b){if(!m&&j.type==="wheel"&&!j.ctrlKey||pi(j,v))return null;j.preventDefault(),O.call(this,j,b)},{passive:!1}))},[_,o,l,M,L,O,R,s,m,v,t,e,n]),T.useEffect(()=>{L&&L.on("start",j=>{var H,E;if(!j.sourceEvent||j.sourceEvent.internal)return null;I.current=(H=j.sourceEvent)==null?void 0:H.button;const{onViewportChangeStart:b}=S.getState(),F=ja(j.transform);A.current=!0,C.current=F,((E=j.sourceEvent)==null?void 0:E.type)==="mousedown"&&S.setState({paneDragging:!0}),b==null||b(F),t==null||t(j.sourceEvent,F)})},[L,t]),T.useEffect(()=>{L&&(_&&!A.current?L.on("zoom",null):_||L.on("zoom",j=>{var F;const{onViewportChange:b}=S.getState();if(S.setState({transform:[j.transform.x,j.transform.y,j.transform.k]}),P.current=!!(r&&My(f,I.current??0)),(e||b)&&!((F=j.sourceEvent)!=null&&F.internal)){const H=ja(j.transform);b==null||b(H),e==null||e(j.sourceEvent,H)}}))},[_,L,e,f,r]),T.useEffect(()=>{L&&L.on("end",j=>{if(!j.sourceEvent||j.sourceEvent.internal)return null;const{onViewportChangeEnd:b}=S.getState();if(A.current=!1,S.setState({paneDragging:!1}),r&&My(f,I.current??0)&&!P.current&&r(j.sourceEvent),P.current=!1,(n||b)&&T6(C.current,j.transform)){const F=ja(j.transform);C.current=F,clearTimeout(N.current),N.current=setTimeout(()=>{b==null||b(F),n==null||n(j.sourceEvent,F)},o?150:0)}})},[L,o,f,n,r]),T.useEffect(()=>{L&&L.filter(j=>{const b=R||i,F=s&&j.ctrlKey;if((f===!0||Array.isArray(f)&&f.includes(1))&&j.button===1&&j.type==="mousedown"&&(pi(j,"react-flow__node")||pi(j,"react-flow__edge")))return!0;if(!f&&!b&&!o&&!u&&!s||_||!u&&j.type==="dblclick"||pi(j,v)&&j.type==="wheel"||pi(j,k)&&(j.type!=="wheel"||o&&j.type==="wheel"&&!R)||!s&&j.ctrlKey&&j.type==="wheel"||!b&&!o&&!F&&j.type==="wheel"||!f&&(j.type==="mousedown"||j.type==="touchstart")||Array.isArray(f)&&!f.includes(j.button)&&j.type==="mousedown")return!1;const H=Array.isArray(f)&&f.includes(j.button)||!j.button||j.button<=1;return(!j.ctrlKey||j.type==="wheel")&&H})},[_,L,i,s,o,u,f,c,R]),B.createElement("div",{className:"react-flow__renderer",ref:D,style:Ap},x)},j6=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function M6(){const{userSelectionActive:e,userSelectionRect:t}=De(j6,Oe);return e&&t?B.createElement("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}function Iy(e,t){const n=t.parentNode||t.parentId,r=e.find(i=>i.id===n);if(r){const i=t.position.x+t.width-r.width,s=t.position.y+t.height-r.height;if(i>0||s>0||t.position.x<0||t.position.y<0){if(r.style={...r.style},r.style.width=r.style.width??r.width,r.style.height=r.style.height??r.height,i>0&&(r.style.width+=i),s>0&&(r.style.height+=s),t.position.x<0){const o=Math.abs(t.position.x);r.position.x=r.position.x-o,r.style.width+=o,t.position.x=0}if(t.position.y<0){const o=Math.abs(t.position.y);r.position.y=r.position.y-o,r.style.height+=o,t.position.y=0}r.width=r.style.width,r.height=r.style.height}}}function Zb(e,t){if(e.some(r=>r.type==="reset"))return e.filter(r=>r.type==="reset").map(r=>r.item);const n=e.filter(r=>r.type==="add").map(r=>r.item);return t.reduce((r,i)=>{const s=e.filter(a=>a.id===i.id);if(s.length===0)return r.push(i),r;const o={...i};for(const a of s)if(a)switch(a.type){case"select":{o.selected=a.selected;break}case"position":{typeof a.position<"u"&&(o.position=a.position),typeof a.positionAbsolute<"u"&&(o.positionAbsolute=a.positionAbsolute),typeof a.dragging<"u"&&(o.dragging=a.dragging),o.expandParent&&Iy(r,o);break}case"dimensions":{typeof a.dimensions<"u"&&(o.width=a.dimensions.width,o.height=a.dimensions.height),typeof a.updateStyle<"u"&&(o.style={...o.style||{},...a.dimensions}),typeof a.resizing=="boolean"&&(o.resizing=a.resizing),o.expandParent&&Iy(r,o);break}case"remove":return r}return r.push(o),r},n)}function Jb(e,t){return Zb(e,t)}function D6(e,t){return Zb(e,t)}const nr=(e,t)=>({id:e,type:"select",selected:t});function Di(e,t){return e.reduce((n,r)=>{const i=t.includes(r.id);return!r.selected&&i?(r.selected=!0,n.push(nr(r.id,!0))):r.selected&&!i&&(r.selected=!1,n.push(nr(r.id,!1))),n},[])}const Hc=(e,t)=>n=>{n.target===t.current&&(e==null||e(n))},I6=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging}),e2=T.memo(({isSelecting:e,selectionMode:t=Mo.Full,panOnDrag:n,onSelectionStart:r,onSelectionEnd:i,onPaneClick:s,onPaneContextMenu:o,onPaneScroll:a,onPaneMouseEnter:l,onPaneMouseMove:u,onPaneMouseLeave:c,children:f})=>{const d=T.useRef(null),h=Ke(),g=T.useRef(0),y=T.useRef(0),w=T.useRef(),{userSelectionActive:m,elementsSelectable:x,dragging:v}=De(I6,Oe),k=()=>{h.setState({userSelectionActive:!1,userSelectionRect:null}),g.current=0,y.current=0},N=O=>{s==null||s(O),h.getState().resetSelectedElements(),h.setState({nodesSelectionActive:!1})},S=O=>{if(Array.isArray(n)&&(n!=null&&n.includes(2))){O.preventDefault();return}o==null||o(O)},A=a?O=>a(O):void 0,P=O=>{const{resetSelectedElements:_,domNode:R}=h.getState();if(w.current=R==null?void 0:R.getBoundingClientRect(),!x||!e||O.button!==0||O.target!==d.current||!w.current)return;const{x:I,y:V}=xr(O,w.current);_(),h.setState({userSelectionRect:{width:0,height:0,startX:I,startY:V,x:I,y:V}}),r==null||r(O)},D=O=>{const{userSelectionRect:_,nodeInternals:R,edges:I,transform:V,onNodesChange:z,onEdgesChange:j,nodeOrigin:b,getNodes:F}=h.getState();if(!e||!w.current||!_)return;h.setState({userSelectionActive:!0,nodesSelectionActive:!1});const H=xr(O,w.current),E=_.startX??0,q=_.startY??0,X={..._,x:H.xle.id),de=ne.map(le=>le.id);if(g.current!==de.length){g.current=de.length;const le=Di(G,de);le.length&&(z==null||z(le))}if(y.current!==oe.length){y.current=oe.length;const le=Di(I,oe);le.length&&(j==null||j(le))}h.setState({userSelectionRect:X})},C=O=>{if(O.button!==0)return;const{userSelectionRect:_}=h.getState();!m&&_&&O.target===d.current&&(N==null||N(O)),h.setState({nodesSelectionActive:g.current>0}),k(),i==null||i(O)},L=O=>{m&&(h.setState({nodesSelectionActive:g.current>0}),i==null||i(O)),k()},M=x&&(e||m);return B.createElement("div",{className:gt(["react-flow__pane",{dragging:v,selection:e}]),onClick:M?void 0:Hc(N,d),onContextMenu:Hc(S,d),onWheel:Hc(A,d),onMouseEnter:M?void 0:l,onMouseDown:M?P:void 0,onMouseMove:M?D:u,onMouseUp:M?C:void 0,onMouseLeave:M?L:c,ref:d,style:Ap},f,B.createElement(M6,null))});e2.displayName="Pane";function t2(e,t){const n=e.parentNode||e.parentId;if(!n)return!1;const r=t.get(n);return r?r.selected?!0:t2(r,t):!1}function Ly(e,t,n){let r=e;do{if(r!=null&&r.matches(t))return!0;if(r===n.current)return!1;r=r.parentElement}while(r);return!1}function L6(e,t,n,r){return Array.from(e.values()).filter(i=>(i.selected||i.id===r)&&(!i.parentNode||i.parentId||!t2(i,e))&&(i.draggable||t&&typeof i.draggable>"u")).map(i=>{var s,o;return{id:i.id,position:i.position||{x:0,y:0},positionAbsolute:i.positionAbsolute||{x:0,y:0},distance:{x:n.x-(((s=i.positionAbsolute)==null?void 0:s.x)??0),y:n.y-(((o=i.positionAbsolute)==null?void 0:o.y)??0)},delta:{x:0,y:0},extent:i.extent,parentNode:i.parentNode||i.parentId,parentId:i.parentNode||i.parentId,width:i.width,height:i.height,expandParent:i.expandParent}})}function R6(e,t){return!t||t==="parent"?t:[t[0],[t[1][0]-(e.width||0),t[1][1]-(e.height||0)]]}function n2(e,t,n,r,i=[0,0],s){const o=R6(e,e.extent||r);let a=o;const l=e.parentNode||e.parentId;if(e.extent==="parent"&&!e.expandParent)if(l&&e.width&&e.height){const f=n.get(l),{x:d,y:h}=Ui(f,i).positionAbsolute;a=f&&qt(d)&&qt(h)&&qt(f.width)&&qt(f.height)?[[d+e.width*i[0],h+e.height*i[1]],[d+f.width-e.width+e.width*i[0],h+f.height-e.height+e.height*i[1]]]:a}else s==null||s("005",Bn.error005()),a=o;else if(e.extent&&l&&e.extent!=="parent"){const f=n.get(l),{x:d,y:h}=Ui(f,i).positionAbsolute;a=[[e.extent[0][0]+d,e.extent[0][1]+h],[e.extent[1][0]+d,e.extent[1][1]+h]]}let u={x:0,y:0};if(l){const f=n.get(l);u=Ui(f,i).positionAbsolute}const c=a&&a!=="parent"?wp(t,a):t;return{position:{x:c.x-u.x,y:c.y-u.y},positionAbsolute:c}}function Uc({nodeId:e,dragItems:t,nodeInternals:n}){const r=t.map(i=>({...n.get(i.id),position:i.position,positionAbsolute:i.positionAbsolute}));return[e?r.find(i=>i.id===e):r[0],r]}const Ry=(e,t,n,r)=>{const i=t.querySelectorAll(e);if(!i||!i.length)return null;const s=Array.from(i),o=t.getBoundingClientRect(),a={x:o.width*r[0],y:o.height*r[1]};return s.map(l=>{const u=l.getBoundingClientRect();return{id:l.getAttribute("data-handleid"),position:l.getAttribute("data-handlepos"),x:(u.left-o.left-a.x)/n,y:(u.top-o.top-a.y)/n,...vp(l)}})};function Ps(e,t,n){return n===void 0?n:r=>{const i=t().nodeInternals.get(e);i&&n(r,{...i})}}function Ad({id:e,store:t,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:i,unselectNodesAndEdges:s,multiSelectionActive:o,nodeInternals:a,onError:l}=t.getState(),u=a.get(e);if(!u){l==null||l("012",Bn.error012(e));return}t.setState({nodesSelectionActive:!1}),u.selected?(n||u.selected&&o)&&(s({nodes:[u],edges:[]}),requestAnimationFrame(()=>{var c;return(c=r==null?void 0:r.current)==null?void 0:c.blur()})):i([e])}function z6(){const e=Ke();return T.useCallback(({sourceEvent:n})=>{const{transform:r,snapGrid:i,snapToGrid:s}=e.getState(),o=n.touches?n.touches[0].clientX:n.clientX,a=n.touches?n.touches[0].clientY:n.clientY,l={x:(o-r[0])/r[2],y:(a-r[1])/r[2]};return{xSnapped:s?i[0]*Math.round(l.x/i[0]):l.x,ySnapped:s?i[1]*Math.round(l.y/i[1]):l.y,...l}},[])}function Wc(e){return(t,n,r)=>e==null?void 0:e(t,r)}function r2({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:i,isSelectable:s,selectNodesOnDrag:o}){const a=Ke(),[l,u]=T.useState(!1),c=T.useRef([]),f=T.useRef({x:null,y:null}),d=T.useRef(0),h=T.useRef(null),g=T.useRef({x:0,y:0}),y=T.useRef(null),w=T.useRef(!1),m=T.useRef(!1),x=T.useRef(!1),v=z6();return T.useEffect(()=>{if(e!=null&&e.current){const k=nn(e.current),N=({x:P,y:D})=>{const{nodeInternals:C,onNodeDrag:L,onSelectionDrag:M,updateNodePositions:O,nodeExtent:_,snapGrid:R,snapToGrid:I,nodeOrigin:V,onError:z}=a.getState();f.current={x:P,y:D};let j=!1,b={x:0,y:0,x2:0,y2:0};if(c.current.length>1&&_){const H=Ep(c.current,V);b=kp(H)}if(c.current=c.current.map(H=>{const E={x:P-H.distance.x,y:D-H.distance.y};I&&(E.x=R[0]*Math.round(E.x/R[0]),E.y=R[1]*Math.round(E.y/R[1]));const q=[[_[0][0],_[0][1]],[_[1][0],_[1][1]]];c.current.length>1&&_&&!H.extent&&(q[0][0]=H.positionAbsolute.x-b.x+_[0][0],q[1][0]=H.positionAbsolute.x+(H.width??0)-b.x2+_[1][0],q[0][1]=H.positionAbsolute.y-b.y+_[0][1],q[1][1]=H.positionAbsolute.y+(H.height??0)-b.y2+_[1][1]);const X=n2(H,E,C,q,V,z);return j=j||H.position.x!==X.position.x||H.position.y!==X.position.y,H.position=X.position,H.positionAbsolute=X.positionAbsolute,H}),!j)return;O(c.current,!0,!0),u(!0);const F=i?L:Wc(M);if(F&&y.current){const[H,E]=Uc({nodeId:i,dragItems:c.current,nodeInternals:C});F(y.current,H,E)}},S=()=>{if(!h.current)return;const[P,D]=Cb(g.current,h.current);if(P!==0||D!==0){const{transform:C,panBy:L}=a.getState();f.current.x=(f.current.x??0)-P/C[2],f.current.y=(f.current.y??0)-D/C[2],L({x:P,y:D})&&N(f.current)}d.current=requestAnimationFrame(S)},A=P=>{var V;const{nodeInternals:D,multiSelectionActive:C,nodesDraggable:L,unselectNodesAndEdges:M,onNodeDragStart:O,onSelectionDragStart:_}=a.getState();m.current=!0;const R=i?O:Wc(_);(!o||!s)&&!C&&i&&((V=D.get(i))!=null&&V.selected||M()),i&&s&&o&&Ad({id:i,store:a,nodeRef:e});const I=v(P);if(f.current=I,c.current=L6(D,L,I,i),R&&c.current){const[z,j]=Uc({nodeId:i,dragItems:c.current,nodeInternals:D});R(P.sourceEvent,z,j)}};if(t)k.on(".drag",null);else{const P=YR().on("start",D=>{const{domNode:C,nodeDragThreshold:L}=a.getState();L===0&&A(D),x.current=!1;const M=v(D);f.current=M,h.current=(C==null?void 0:C.getBoundingClientRect())||null,g.current=xr(D.sourceEvent,h.current)}).on("drag",D=>{var O,_;const C=v(D),{autoPanOnNodeDrag:L,nodeDragThreshold:M}=a.getState();if(D.sourceEvent.type==="touchmove"&&D.sourceEvent.touches.length>1&&(x.current=!0),!x.current){if(!w.current&&m.current&&L&&(w.current=!0,S()),!m.current){const R=C.xSnapped-(((O=f==null?void 0:f.current)==null?void 0:O.x)??0),I=C.ySnapped-(((_=f==null?void 0:f.current)==null?void 0:_.y)??0);Math.sqrt(R*R+I*I)>M&&A(D)}(f.current.x!==C.xSnapped||f.current.y!==C.ySnapped)&&c.current&&m.current&&(y.current=D.sourceEvent,g.current=xr(D.sourceEvent,h.current),N(C))}}).on("end",D=>{if(!(!m.current||x.current)&&(u(!1),w.current=!1,m.current=!1,cancelAnimationFrame(d.current),c.current)){const{updateNodePositions:C,nodeInternals:L,onNodeDragStop:M,onSelectionDragStop:O}=a.getState(),_=i?M:Wc(O);if(C(c.current,!1,!1),_){const[R,I]=Uc({nodeId:i,dragItems:c.current,nodeInternals:L});_(D.sourceEvent,R,I)}}}).filter(D=>{const C=D.target;return!D.button&&(!n||!Ly(C,`.${n}`,e))&&(!r||Ly(C,r,e))});return k.call(P),()=>{k.on(".drag",null)}}}},[e,t,n,r,s,a,i,o,v]),l}function i2(){const e=Ke();return T.useCallback(n=>{const{nodeInternals:r,nodeExtent:i,updateNodePositions:s,getNodes:o,snapToGrid:a,snapGrid:l,onError:u,nodesDraggable:c}=e.getState(),f=o().filter(x=>x.selected&&(x.draggable||c&&typeof x.draggable>"u")),d=a?l[0]:5,h=a?l[1]:5,g=n.isShiftPressed?4:1,y=n.x*d*g,w=n.y*h*g,m=f.map(x=>{if(x.positionAbsolute){const v={x:x.positionAbsolute.x+y,y:x.positionAbsolute.y+w};a&&(v.x=l[0]*Math.round(v.x/l[0]),v.y=l[1]*Math.round(v.y/l[1]));const{positionAbsolute:k,position:N}=n2(x,v,r,i,void 0,u);x.position=N,x.positionAbsolute=k}return x});s(m,!0,!1)},[])}const Wi={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var js=e=>{const t=({id:n,type:r,data:i,xPos:s,yPos:o,xPosOrigin:a,yPosOrigin:l,selected:u,onClick:c,onMouseEnter:f,onMouseMove:d,onMouseLeave:h,onContextMenu:g,onDoubleClick:y,style:w,className:m,isDraggable:x,isSelectable:v,isConnectable:k,isFocusable:N,selectNodesOnDrag:S,sourcePosition:A,targetPosition:P,hidden:D,resizeObserver:C,dragHandle:L,zIndex:M,isParent:O,noDragClassName:_,noPanClassName:R,initialized:I,disableKeyboardA11y:V,ariaLabel:z,rfId:j,hasHandleBounds:b})=>{const F=Ke(),H=T.useRef(null),E=T.useRef(null),q=T.useRef(A),X=T.useRef(P),G=T.useRef(r),ne=v||x||c||f||d||h,oe=i2(),de=Ps(n,F.getState,f),le=Ps(n,F.getState,d),Ee=Ps(n,F.getState,h),lt=Ps(n,F.getState,g),Nt=Ps(n,F.getState,y),yt=ye=>{const{nodeDragThreshold:Z}=F.getState();if(v&&(!S||!x||Z>0)&&Ad({id:n,store:F,nodeRef:H}),c){const et=F.getState().nodeInternals.get(n);et&&c(ye,{...et})}},Ie=ye=>{if(!_d(ye)&&!V)if(Nb.includes(ye.key)&&v){const Z=ye.key==="Escape";Ad({id:n,store:F,unselect:Z,nodeRef:H})}else x&&u&&Object.prototype.hasOwnProperty.call(Wi,ye.key)&&(F.setState({ariaLiveMessage:`Moved selected node ${ye.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~s}, y: ${~~o}`}),oe({x:Wi[ye.key].x,y:Wi[ye.key].y,isShiftPressed:ye.shiftKey}))};T.useEffect(()=>()=>{E.current&&(C==null||C.unobserve(E.current),E.current=null)},[]),T.useEffect(()=>{if(H.current&&!D){const ye=H.current;(!I||!b||E.current!==ye)&&(E.current&&(C==null||C.unobserve(E.current)),C==null||C.observe(ye),E.current=ye)}},[D,I,b]),T.useEffect(()=>{const ye=G.current!==r,Z=q.current!==A,et=X.current!==P;H.current&&(ye||Z||et)&&(ye&&(G.current=r),Z&&(q.current=A),et&&(X.current=P),F.getState().updateNodeDimensions([{id:n,nodeElement:H.current,forceUpdate:!0}]))},[n,r,A,P]);const Tt=r2({nodeRef:H,disabled:D||!x,noDragClassName:_,handleSelector:L,nodeId:n,isSelectable:v,selectNodesOnDrag:S});return D?null:B.createElement("div",{className:gt(["react-flow__node",`react-flow__node-${r}`,{[R]:x},m,{selected:u,selectable:v,parent:O,dragging:Tt}]),ref:H,style:{zIndex:M,transform:`translate(${a}px,${l}px)`,pointerEvents:ne?"all":"none",visibility:I?"visible":"hidden",...w},"data-id":n,"data-testid":`rf__node-${n}`,onMouseEnter:de,onMouseMove:le,onMouseLeave:Ee,onContextMenu:lt,onClick:yt,onDoubleClick:Nt,onKeyDown:N?Ie:void 0,tabIndex:N?0:void 0,role:N?"button":void 0,"aria-describedby":V?void 0:`${qb}-${j}`,"aria-label":z},B.createElement(Qz,{value:n},B.createElement(e,{id:n,data:i,type:r,xPos:s,yPos:o,selected:u,isConnectable:k,sourcePosition:A,targetPosition:P,dragging:Tt,dragHandle:L,zIndex:M})))};return t.displayName="NodeWrapper",T.memo(t)};const F6=e=>{const t=e.getNodes().filter(n=>n.selected);return{...Ep(t,e.nodeOrigin),transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`,userSelectionActive:e.userSelectionActive}};function O6({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){const r=Ke(),{width:i,height:s,x:o,y:a,transformString:l,userSelectionActive:u}=De(F6,Oe),c=i2(),f=T.useRef(null);if(T.useEffect(()=>{var g;n||(g=f.current)==null||g.focus({preventScroll:!0})},[n]),r2({nodeRef:f}),u||!i||!s)return null;const d=e?g=>{const y=r.getState().getNodes().filter(w=>w.selected);e(g,y)}:void 0,h=g=>{Object.prototype.hasOwnProperty.call(Wi,g.key)&&c({x:Wi[g.key].x,y:Wi[g.key].y,isShiftPressed:g.shiftKey})};return B.createElement("div",{className:gt(["react-flow__nodesselection","react-flow__container",t]),style:{transform:l}},B.createElement("div",{ref:f,className:"react-flow__nodesselection-rect",onContextMenu:d,tabIndex:n?void 0:-1,onKeyDown:n?void 0:h,style:{width:i,height:s,top:a,left:o}}))}var V6=T.memo(O6);const $6=e=>e.nodesSelectionActive,s2=({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:s,onPaneScroll:o,deleteKeyCode:a,onMove:l,onMoveStart:u,onMoveEnd:c,selectionKeyCode:f,selectionOnDrag:d,selectionMode:h,onSelectionStart:g,onSelectionEnd:y,multiSelectionKeyCode:w,panActivationKeyCode:m,zoomActivationKeyCode:x,elementsSelectable:v,zoomOnScroll:k,zoomOnPinch:N,panOnScroll:S,panOnScrollSpeed:A,panOnScrollMode:P,zoomOnDoubleClick:D,panOnDrag:C,defaultViewport:L,translateExtent:M,minZoom:O,maxZoom:_,preventScrolling:R,onSelectionContextMenu:I,noWheelClassName:V,noPanClassName:z,disableKeyboardA11y:j})=>{const b=De($6),F=Io(f),H=Io(m),E=H||C,q=H||S,X=F||d&&E!==!0;return E6({deleteKeyCode:a,multiSelectionKeyCode:w}),B.createElement(P6,{onMove:l,onMoveStart:u,onMoveEnd:c,onPaneContextMenu:s,elementsSelectable:v,zoomOnScroll:k,zoomOnPinch:N,panOnScroll:q,panOnScrollSpeed:A,panOnScrollMode:P,zoomOnDoubleClick:D,panOnDrag:!F&&E,defaultViewport:L,translateExtent:M,minZoom:O,maxZoom:_,zoomActivationKeyCode:x,preventScrolling:R,noWheelClassName:V,noPanClassName:z},B.createElement(e2,{onSelectionStart:g,onSelectionEnd:y,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:i,onPaneContextMenu:s,onPaneScroll:o,panOnDrag:E,isSelecting:!!X,selectionMode:h},e,b&&B.createElement(V6,{onSelectionContextMenu:I,noPanClassName:z,disableKeyboardA11y:j})))};s2.displayName="FlowRenderer";var B6=T.memo(s2);function H6(e){return De(T.useCallback(n=>e?Ib(n.nodeInternals,{x:0,y:0,width:n.width,height:n.height},n.transform,!0):n.getNodes(),[e]))}function U6(e){const t={input:js(e.input||Hb),default:js(e.default||Td),output:js(e.output||Wb),group:js(e.group||Tp)},n={},r=Object.keys(e).filter(i=>!["input","default","output","group"].includes(i)).reduce((i,s)=>(i[s]=js(e[s]||Td),i),n);return{...t,...r}}const W6=({x:e,y:t,width:n,height:r,origin:i})=>!n||!r?{x:e,y:t}:i[0]<0||i[1]<0||i[0]>1||i[1]>1?{x:e,y:t}:{x:e-n*i[0],y:t-r*i[1]},Y6=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,updateNodeDimensions:e.updateNodeDimensions,onError:e.onError}),o2=e=>{const{nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:i,updateNodeDimensions:s,onError:o}=De(Y6,Oe),a=H6(e.onlyRenderVisibleElements),l=T.useRef(),u=T.useMemo(()=>{if(typeof ResizeObserver>"u")return null;const c=new ResizeObserver(f=>{const d=f.map(h=>({id:h.target.getAttribute("data-id"),nodeElement:h.target,forceUpdate:!0}));s(d)});return l.current=c,c},[]);return T.useEffect(()=>()=>{var c;(c=l==null?void 0:l.current)==null||c.disconnect()},[]),B.createElement("div",{className:"react-flow__nodes",style:Ap},a.map(c=>{var N,S,A;let f=c.type||"default";e.nodeTypes[f]||(o==null||o("003",Bn.error003(f)),f="default");const d=e.nodeTypes[f]||e.nodeTypes.default,h=!!(c.draggable||t&&typeof c.draggable>"u"),g=!!(c.selectable||i&&typeof c.selectable>"u"),y=!!(c.connectable||n&&typeof c.connectable>"u"),w=!!(c.focusable||r&&typeof c.focusable>"u"),m=e.nodeExtent?wp(c.positionAbsolute,e.nodeExtent):c.positionAbsolute,x=(m==null?void 0:m.x)??0,v=(m==null?void 0:m.y)??0,k=W6({x,y:v,width:c.width??0,height:c.height??0,origin:e.nodeOrigin});return B.createElement(d,{key:c.id,id:c.id,className:c.className,style:c.style,type:f,data:c.data,sourcePosition:c.sourcePosition||Q.Bottom,targetPosition:c.targetPosition||Q.Top,hidden:c.hidden,xPos:x,yPos:v,xPosOrigin:k.x,yPosOrigin:k.y,selectNodesOnDrag:e.selectNodesOnDrag,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,selected:!!c.selected,isDraggable:h,isSelectable:g,isConnectable:y,isFocusable:w,resizeObserver:u,dragHandle:c.dragHandle,zIndex:((N=c[Re])==null?void 0:N.z)??0,isParent:!!((S=c[Re])!=null&&S.isParent),noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,initialized:!!c.width&&!!c.height,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,ariaLabel:c.ariaLabel,hasHandleBounds:!!((A=c[Re])!=null&&A.handleBounds)})}))};o2.displayName="NodeRenderer";var q6=T.memo(o2);const K6=(e,t,n)=>n===Q.Left?e-t:n===Q.Right?e+t:e,G6=(e,t,n)=>n===Q.Top?e-t:n===Q.Bottom?e+t:e,zy="react-flow__edgeupdater",Fy=({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:i,onMouseEnter:s,onMouseOut:o,type:a})=>B.createElement("circle",{onMouseDown:i,onMouseEnter:s,onMouseOut:o,className:gt([zy,`${zy}-${a}`]),cx:K6(t,r,e),cy:G6(n,r,e),r,stroke:"transparent",fill:"transparent"}),X6=()=>!0;var mi=e=>{const t=({id:n,className:r,type:i,data:s,onClick:o,onEdgeDoubleClick:a,selected:l,animated:u,label:c,labelStyle:f,labelShowBg:d,labelBgStyle:h,labelBgPadding:g,labelBgBorderRadius:y,style:w,source:m,target:x,sourceX:v,sourceY:k,targetX:N,targetY:S,sourcePosition:A,targetPosition:P,elementsSelectable:D,hidden:C,sourceHandleId:L,targetHandleId:M,onContextMenu:O,onMouseEnter:_,onMouseMove:R,onMouseLeave:I,reconnectRadius:V,onReconnect:z,onReconnectStart:j,onReconnectEnd:b,markerEnd:F,markerStart:H,rfId:E,ariaLabel:q,isFocusable:X,isReconnectable:G,pathOptions:ne,interactionWidth:oe,disableKeyboardA11y:de})=>{const le=T.useRef(null),[Ee,lt]=T.useState(!1),[Nt,yt]=T.useState(!1),Ie=Ke(),Tt=T.useMemo(()=>`url('#${Ed(H,E)}')`,[H,E]),ye=T.useMemo(()=>`url('#${Ed(F,E)}')`,[F,E]);if(C)return null;const Z=xe=>{var Xe;const{edges:He,addSelectedEdges:Ge,unselectNodesAndEdges:At,multiSelectionActive:Pt}=Ie.getState(),Te=He.find(ut=>ut.id===n);Te&&(D&&(Ie.setState({nodesSelectionActive:!1}),Te.selected&&Pt?(At({nodes:[],edges:[Te]}),(Xe=le.current)==null||Xe.blur()):Ge([n])),o&&o(xe,Te))},et=As(n,Ie.getState,a),dn=As(n,Ie.getState,O),Tr=As(n,Ie.getState,_),Wn=As(n,Ie.getState,R),Yn=As(n,Ie.getState,I),Qt=(xe,He)=>{if(xe.button!==0)return;const{edges:Ge,isValidConnection:At}=Ie.getState(),Pt=He?x:m,Te=(He?M:L)||null,Xe=He?"target":"source",ut=At||X6,Pu=He,ps=Ge.find(Ar=>Ar.id===n);yt(!0),j==null||j(xe,ps,Xe);const ju=Ar=>{yt(!1),b==null||b(Ar,ps,Xe)};Ob({event:xe,handleId:Te,nodeId:Pt,onConnect:Ar=>z==null?void 0:z(ps,Ar),isTarget:Pu,getState:Ie.getState,setState:Ie.setState,isValidConnection:ut,edgeUpdaterType:Xe,onReconnectEnd:ju})},qn=xe=>Qt(xe,!0),$=xe=>Qt(xe,!1),Y=()=>lt(!0),ee=()=>lt(!1),ie=!D&&!o,he=xe=>{var He;if(!de&&Nb.includes(xe.key)&&D){const{unselectNodesAndEdges:Ge,addSelectedEdges:At,edges:Pt}=Ie.getState();xe.key==="Escape"?((He=le.current)==null||He.blur(),Ge({edges:[Pt.find(Xe=>Xe.id===n)]})):At([n])}};return B.createElement("g",{className:gt(["react-flow__edge",`react-flow__edge-${i}`,r,{selected:l,animated:u,inactive:ie,updating:Ee}]),onClick:Z,onDoubleClick:et,onContextMenu:dn,onMouseEnter:Tr,onMouseMove:Wn,onMouseLeave:Yn,onKeyDown:X?he:void 0,tabIndex:X?0:void 0,role:X?"button":"img","data-testid":`rf__edge-${n}`,"aria-label":q===null?void 0:q||`Edge from ${m} to ${x}`,"aria-describedby":X?`${Kb}-${E}`:void 0,ref:le},!Nt&&B.createElement(e,{id:n,source:m,target:x,selected:l,animated:u,label:c,labelStyle:f,labelShowBg:d,labelBgStyle:h,labelBgPadding:g,labelBgBorderRadius:y,data:s,style:w,sourceX:v,sourceY:k,targetX:N,targetY:S,sourcePosition:A,targetPosition:P,sourceHandleId:L,targetHandleId:M,markerStart:Tt,markerEnd:ye,pathOptions:ne,interactionWidth:oe}),G&&B.createElement(B.Fragment,null,(G==="source"||G===!0)&&B.createElement(Fy,{position:A,centerX:v,centerY:k,radius:V,onMouseDown:qn,onMouseEnter:Y,onMouseOut:ee,type:"source"}),(G==="target"||G===!0)&&B.createElement(Fy,{position:P,centerX:N,centerY:S,radius:V,onMouseDown:$,onMouseEnter:Y,onMouseOut:ee,type:"target"})))};return t.displayName="EdgeWrapper",T.memo(t)};function Q6(e){const t={default:mi(e.default||Hl),straight:mi(e.bezier||_p),step:mi(e.step||Sp),smoothstep:mi(e.step||Tu),simplebezier:mi(e.simplebezier||bp)},n={},r=Object.keys(e).filter(i=>!["default","bezier"].includes(i)).reduce((i,s)=>(i[s]=mi(e[s]||Hl),i),n);return{...t,...r}}function Oy(e,t,n=null){const r=((n==null?void 0:n.x)||0)+t.x,i=((n==null?void 0:n.y)||0)+t.y,s=(n==null?void 0:n.width)||t.width,o=(n==null?void 0:n.height)||t.height;switch(e){case Q.Top:return{x:r+s/2,y:i};case Q.Right:return{x:r+s,y:i+o/2};case Q.Bottom:return{x:r+s/2,y:i+o};case Q.Left:return{x:r,y:i+o/2}}}function Vy(e,t){return e?e.length===1||!t?e[0]:t&&e.find(n=>n.id===t)||null:null}const Z6=(e,t,n,r,i,s)=>{const o=Oy(n,e,t),a=Oy(s,r,i);return{sourceX:o.x,sourceY:o.y,targetX:a.x,targetY:a.y}};function J6({sourcePos:e,targetPos:t,sourceWidth:n,sourceHeight:r,targetWidth:i,targetHeight:s,width:o,height:a,transform:l}){const u={x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x+n,t.x+i),y2:Math.max(e.y+r,t.y+s)};u.x===u.x2&&(u.x2+=1),u.y===u.y2&&(u.y2+=1);const c=kp({x:(0-l[0])/l[2],y:(0-l[1])/l[2],width:o/l[2],height:a/l[2]}),f=Math.max(0,Math.min(c.x2,u.x2)-Math.max(c.x,u.x)),d=Math.max(0,Math.min(c.y2,u.y2)-Math.max(c.y,u.y));return Math.ceil(f*d)>0}function $y(e){var r,i,s,o,a;const t=((r=e==null?void 0:e[Re])==null?void 0:r.handleBounds)||null,n=t&&(e==null?void 0:e.width)&&(e==null?void 0:e.height)&&typeof((i=e==null?void 0:e.positionAbsolute)==null?void 0:i.x)<"u"&&typeof((s=e==null?void 0:e.positionAbsolute)==null?void 0:s.y)<"u";return[{x:((o=e==null?void 0:e.positionAbsolute)==null?void 0:o.x)||0,y:((a=e==null?void 0:e.positionAbsolute)==null?void 0:a.y)||0,width:(e==null?void 0:e.width)||0,height:(e==null?void 0:e.height)||0},t,!!n]}const eF=[{level:0,isMaxLevel:!0,edges:[]}];function tF(e,t,n=!1){let r=-1;const i=e.reduce((o,a)=>{var c,f;const l=qt(a.zIndex);let u=l?a.zIndex:0;if(n){const d=t.get(a.target),h=t.get(a.source),g=a.selected||(d==null?void 0:d.selected)||(h==null?void 0:h.selected),y=Math.max(((c=h==null?void 0:h[Re])==null?void 0:c.z)||0,((f=d==null?void 0:d[Re])==null?void 0:f.z)||0,1e3);u=(l?a.zIndex:0)+(g?y:0)}return o[u]?o[u].push(a):o[u]=[a],r=u>r?u:r,o},{}),s=Object.entries(i).map(([o,a])=>{const l=+o;return{edges:a,level:l,isMaxLevel:l===r}});return s.length===0?eF:s}function nF(e,t,n){const r=De(T.useCallback(i=>e?i.edges.filter(s=>{const o=t.get(s.source),a=t.get(s.target);return(o==null?void 0:o.width)&&(o==null?void 0:o.height)&&(a==null?void 0:a.width)&&(a==null?void 0:a.height)&&J6({sourcePos:o.positionAbsolute||{x:0,y:0},targetPos:a.positionAbsolute||{x:0,y:0},sourceWidth:o.width,sourceHeight:o.height,targetWidth:a.width,targetHeight:a.height,width:i.width,height:i.height,transform:i.transform})}):i.edges,[e,t]));return tF(r,t,n)}const rF=({color:e="none",strokeWidth:t=1})=>B.createElement("polyline",{style:{stroke:e,strokeWidth:t},strokeLinecap:"round",strokeLinejoin:"round",fill:"none",points:"-5,-4 0,0 -5,4"}),iF=({color:e="none",strokeWidth:t=1})=>B.createElement("polyline",{style:{stroke:e,fill:e,strokeWidth:t},strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"}),By={[Do.Arrow]:rF,[Do.ArrowClosed]:iF};function sF(e){const t=Ke();return T.useMemo(()=>{var i,s;return Object.prototype.hasOwnProperty.call(By,e)?By[e]:((s=(i=t.getState()).onError)==null||s.call(i,"009",Bn.error009(e)),null)},[e])}const oF=({id:e,type:t,color:n,width:r=12.5,height:i=12.5,markerUnits:s="strokeWidth",strokeWidth:o,orient:a="auto-start-reverse"})=>{const l=sF(t);return l?B.createElement("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${r}`,markerHeight:`${i}`,viewBox:"-10 -10 20 20",markerUnits:s,orient:a,refX:"0",refY:"0"},B.createElement(l,{color:n,strokeWidth:o})):null},aF=({defaultColor:e,rfId:t})=>n=>{const r=[];return n.edges.reduce((i,s)=>([s.markerStart,s.markerEnd].forEach(o=>{if(o&&typeof o=="object"){const a=Ed(o,t);r.includes(a)||(i.push({id:a,color:o.color||e,...o}),r.push(a))}}),i),[]).sort((i,s)=>i.id.localeCompare(s.id))},a2=({defaultColor:e,rfId:t})=>{const n=De(T.useCallback(aF({defaultColor:e,rfId:t}),[e,t]),(r,i)=>!(r.length!==i.length||r.some((s,o)=>s.id!==i[o].id)));return B.createElement("defs",null,n.map(r=>B.createElement(oF,{id:r.id,key:r.id,type:r.type,color:r.color,width:r.width,height:r.height,markerUnits:r.markerUnits,strokeWidth:r.strokeWidth,orient:r.orient})))};a2.displayName="MarkerDefinitions";var lF=T.memo(a2);const uF=e=>({nodesConnectable:e.nodesConnectable,edgesFocusable:e.edgesFocusable,edgesUpdatable:e.edgesUpdatable,elementsSelectable:e.elementsSelectable,width:e.width,height:e.height,connectionMode:e.connectionMode,nodeInternals:e.nodeInternals,onError:e.onError}),l2=({defaultMarkerColor:e,onlyRenderVisibleElements:t,elevateEdgesOnSelect:n,rfId:r,edgeTypes:i,noPanClassName:s,onEdgeContextMenu:o,onEdgeMouseEnter:a,onEdgeMouseMove:l,onEdgeMouseLeave:u,onEdgeClick:c,onEdgeDoubleClick:f,onReconnect:d,onReconnectStart:h,onReconnectEnd:g,reconnectRadius:y,children:w,disableKeyboardA11y:m})=>{const{edgesFocusable:x,edgesUpdatable:v,elementsSelectable:k,width:N,height:S,connectionMode:A,nodeInternals:P,onError:D}=De(uF,Oe),C=nF(t,P,n);return N?B.createElement(B.Fragment,null,C.map(({level:L,edges:M,isMaxLevel:O})=>B.createElement("svg",{key:L,style:{zIndex:L},width:N,height:S,className:"react-flow__edges react-flow__container"},O&&B.createElement(lF,{defaultColor:e,rfId:r}),B.createElement("g",null,M.map(_=>{const[R,I,V]=$y(P.get(_.source)),[z,j,b]=$y(P.get(_.target));if(!V||!b)return null;let F=_.type||"default";i[F]||(D==null||D("011",Bn.error011(F)),F="default");const H=i[F]||i.default,E=A===ii.Strict?j.target:(j.target??[]).concat(j.source??[]),q=Vy(I.source,_.sourceHandle),X=Vy(E,_.targetHandle),G=(q==null?void 0:q.position)||Q.Bottom,ne=(X==null?void 0:X.position)||Q.Top,oe=!!(_.focusable||x&&typeof _.focusable>"u"),de=_.reconnectable||_.updatable,le=typeof d<"u"&&(de||v&&typeof de>"u");if(!q||!X)return D==null||D("008",Bn.error008(q,_)),null;const{sourceX:Ee,sourceY:lt,targetX:Nt,targetY:yt}=Z6(R,q,G,z,X,ne);return B.createElement(H,{key:_.id,id:_.id,className:gt([_.className,s]),type:F,data:_.data,selected:!!_.selected,animated:!!_.animated,hidden:!!_.hidden,label:_.label,labelStyle:_.labelStyle,labelShowBg:_.labelShowBg,labelBgStyle:_.labelBgStyle,labelBgPadding:_.labelBgPadding,labelBgBorderRadius:_.labelBgBorderRadius,style:_.style,source:_.source,target:_.target,sourceHandleId:_.sourceHandle,targetHandleId:_.targetHandle,markerEnd:_.markerEnd,markerStart:_.markerStart,sourceX:Ee,sourceY:lt,targetX:Nt,targetY:yt,sourcePosition:G,targetPosition:ne,elementsSelectable:k,onContextMenu:o,onMouseEnter:a,onMouseMove:l,onMouseLeave:u,onClick:c,onEdgeDoubleClick:f,onReconnect:d,onReconnectStart:h,onReconnectEnd:g,reconnectRadius:y,rfId:r,ariaLabel:_.ariaLabel,isFocusable:oe,isReconnectable:le,pathOptions:"pathOptions"in _?_.pathOptions:void 0,interactionWidth:_.interactionWidth,disableKeyboardA11y:m})})))),w):null};l2.displayName="EdgeRenderer";var cF=T.memo(l2);const fF=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function dF({children:e}){const t=De(fF);return B.createElement("div",{className:"react-flow__viewport react-flow__container",style:{transform:t}},e)}function hF(e){const t=Au(),n=T.useRef(!1);T.useEffect(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}const pF={[Q.Left]:Q.Right,[Q.Right]:Q.Left,[Q.Top]:Q.Bottom,[Q.Bottom]:Q.Top},u2=({nodeId:e,handleType:t,style:n,type:r=sr.Bezier,CustomComponent:i,connectionStatus:s})=>{var S,A,P;const{fromNode:o,handleId:a,toX:l,toY:u,connectionMode:c}=De(T.useCallback(D=>({fromNode:D.nodeInternals.get(e),handleId:D.connectionHandleId,toX:(D.connectionPosition.x-D.transform[0])/D.transform[2],toY:(D.connectionPosition.y-D.transform[1])/D.transform[2],connectionMode:D.connectionMode}),[e]),Oe),f=(S=o==null?void 0:o[Re])==null?void 0:S.handleBounds;let d=f==null?void 0:f[t];if(c===ii.Loose&&(d=d||(f==null?void 0:f[t==="source"?"target":"source"])),!o||!d)return null;const h=a?d.find(D=>D.id===a):d[0],g=h?h.x+h.width/2:(o.width??0)/2,y=h?h.y+h.height/2:o.height??0,w=(((A=o.positionAbsolute)==null?void 0:A.x)??0)+g,m=(((P=o.positionAbsolute)==null?void 0:P.y)??0)+y,x=h==null?void 0:h.position,v=x?pF[x]:null;if(!x||!v)return null;if(i)return B.createElement(i,{connectionLineType:r,connectionLineStyle:n,fromNode:o,fromHandle:h,fromX:w,fromY:m,toX:l,toY:u,fromPosition:x,toPosition:v,connectionStatus:s});let k="";const N={sourceX:w,sourceY:m,sourcePosition:x,targetX:l,targetY:u,targetPosition:v};return r===sr.Bezier?[k]=Mb(N):r===sr.Step?[k]=Cd({...N,borderRadius:0}):r===sr.SmoothStep?[k]=Cd(N):r===sr.SimpleBezier?[k]=jb(N):k=`M${w},${m} ${l},${u}`,B.createElement("path",{d:k,fill:"none",className:"react-flow__connection-path",style:n})};u2.displayName="ConnectionLine";const mF=e=>({nodeId:e.connectionNodeId,handleType:e.connectionHandleType,nodesConnectable:e.nodesConnectable,connectionStatus:e.connectionStatus,width:e.width,height:e.height});function gF({containerStyle:e,style:t,type:n,component:r}){const{nodeId:i,handleType:s,nodesConnectable:o,width:a,height:l,connectionStatus:u}=De(mF,Oe);return!(i&&s&&a&&o)?null:B.createElement("svg",{style:e,width:a,height:l,className:"react-flow__edges react-flow__connectionline react-flow__container"},B.createElement("g",{className:gt(["react-flow__connection",u])},B.createElement(u2,{nodeId:i,handleType:s,style:t,type:n,CustomComponent:r,connectionStatus:u})))}function Hy(e,t){return T.useRef(null),Ke(),T.useMemo(()=>t(e),[e])}const c2=({nodeTypes:e,edgeTypes:t,onMove:n,onMoveStart:r,onMoveEnd:i,onInit:s,onNodeClick:o,onEdgeClick:a,onNodeDoubleClick:l,onEdgeDoubleClick:u,onNodeMouseEnter:c,onNodeMouseMove:f,onNodeMouseLeave:d,onNodeContextMenu:h,onSelectionContextMenu:g,onSelectionStart:y,onSelectionEnd:w,connectionLineType:m,connectionLineStyle:x,connectionLineComponent:v,connectionLineContainerStyle:k,selectionKeyCode:N,selectionOnDrag:S,selectionMode:A,multiSelectionKeyCode:P,panActivationKeyCode:D,zoomActivationKeyCode:C,deleteKeyCode:L,onlyRenderVisibleElements:M,elementsSelectable:O,selectNodesOnDrag:_,defaultViewport:R,translateExtent:I,minZoom:V,maxZoom:z,preventScrolling:j,defaultMarkerColor:b,zoomOnScroll:F,zoomOnPinch:H,panOnScroll:E,panOnScrollSpeed:q,panOnScrollMode:X,zoomOnDoubleClick:G,panOnDrag:ne,onPaneClick:oe,onPaneMouseEnter:de,onPaneMouseMove:le,onPaneMouseLeave:Ee,onPaneScroll:lt,onPaneContextMenu:Nt,onEdgeContextMenu:yt,onEdgeMouseEnter:Ie,onEdgeMouseMove:Tt,onEdgeMouseLeave:ye,onReconnect:Z,onReconnectStart:et,onReconnectEnd:dn,reconnectRadius:Tr,noDragClassName:Wn,noWheelClassName:Yn,noPanClassName:Qt,elevateEdgesOnSelect:qn,disableKeyboardA11y:$,nodeOrigin:Y,nodeExtent:ee,rfId:ie})=>{const he=Hy(e,U6),xe=Hy(t,Q6);return hF(s),B.createElement(B6,{onPaneClick:oe,onPaneMouseEnter:de,onPaneMouseMove:le,onPaneMouseLeave:Ee,onPaneContextMenu:Nt,onPaneScroll:lt,deleteKeyCode:L,selectionKeyCode:N,selectionOnDrag:S,selectionMode:A,onSelectionStart:y,onSelectionEnd:w,multiSelectionKeyCode:P,panActivationKeyCode:D,zoomActivationKeyCode:C,elementsSelectable:O,onMove:n,onMoveStart:r,onMoveEnd:i,zoomOnScroll:F,zoomOnPinch:H,zoomOnDoubleClick:G,panOnScroll:E,panOnScrollSpeed:q,panOnScrollMode:X,panOnDrag:ne,defaultViewport:R,translateExtent:I,minZoom:V,maxZoom:z,onSelectionContextMenu:g,preventScrolling:j,noDragClassName:Wn,noWheelClassName:Yn,noPanClassName:Qt,disableKeyboardA11y:$},B.createElement(dF,null,B.createElement(cF,{edgeTypes:xe,onEdgeClick:a,onEdgeDoubleClick:u,onlyRenderVisibleElements:M,onEdgeContextMenu:yt,onEdgeMouseEnter:Ie,onEdgeMouseMove:Tt,onEdgeMouseLeave:ye,onReconnect:Z,onReconnectStart:et,onReconnectEnd:dn,reconnectRadius:Tr,defaultMarkerColor:b,noPanClassName:Qt,elevateEdgesOnSelect:!!qn,disableKeyboardA11y:$,rfId:ie},B.createElement(gF,{style:x,type:m,component:v,containerStyle:k})),B.createElement("div",{className:"react-flow__edgelabel-renderer"}),B.createElement(q6,{nodeTypes:he,onNodeClick:o,onNodeDoubleClick:l,onNodeMouseEnter:c,onNodeMouseMove:f,onNodeMouseLeave:d,onNodeContextMenu:h,selectNodesOnDrag:_,onlyRenderVisibleElements:M,noPanClassName:Qt,noDragClassName:Wn,disableKeyboardA11y:$,nodeOrigin:Y,nodeExtent:ee,rfId:ie})))};c2.displayName="GraphView";var yF=T.memo(c2);const Pd=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Xn={rfId:"1",width:0,height:0,transform:[0,0,1],nodeInternals:new Map,edges:[],onNodesChange:null,onEdgesChange:null,hasDefaultNodes:!1,hasDefaultEdges:!1,d3Zoom:null,d3Selection:null,d3ZoomHandler:void 0,minZoom:.5,maxZoom:2,translateExtent:Pd,nodeExtent:Pd,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:ii.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:[0,0],nodeDragThreshold:0,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesUpdatable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,fitViewOnInit:!1,fitViewOnInitDone:!1,fitViewOnInitOptions:void 0,onSelectionChange:[],multiSelectionActive:!1,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,connectionRadius:20,onError:Wz,isValidConnection:void 0},xF=()=>iL((e,t)=>({...Xn,setNodes:n=>{const{nodeInternals:r,nodeOrigin:i,elevateNodesOnSelect:s}=t();e({nodeInternals:Bc(n,r,i,s)})},getNodes:()=>Array.from(t().nodeInternals.values()),setEdges:n=>{const{defaultEdgeOptions:r={}}=t();e({edges:n.map(i=>({...r,...i}))})},setDefaultNodesAndEdges:(n,r)=>{const i=typeof n<"u",s=typeof r<"u",o=i?Bc(n,new Map,t().nodeOrigin,t().elevateNodesOnSelect):new Map;e({nodeInternals:o,edges:s?r:[],hasDefaultNodes:i,hasDefaultEdges:s})},updateNodeDimensions:n=>{const{onNodesChange:r,nodeInternals:i,fitViewOnInit:s,fitViewOnInitDone:o,fitViewOnInitOptions:a,domNode:l,nodeOrigin:u}=t(),c=l==null?void 0:l.querySelector(".react-flow__viewport");if(!c)return;const f=window.getComputedStyle(c),{m22:d}=new window.DOMMatrixReadOnly(f.transform),h=n.reduce((y,w)=>{const m=i.get(w.id);if(m!=null&&m.hidden)i.set(m.id,{...m,[Re]:{...m[Re],handleBounds:void 0}});else if(m){const x=vp(w.nodeElement);!!(x.width&&x.height&&(m.width!==x.width||m.height!==x.height||w.forceUpdate))&&(i.set(m.id,{...m,[Re]:{...m[Re],handleBounds:{source:Ry(".source",w.nodeElement,d,u),target:Ry(".target",w.nodeElement,d,u)}},...x}),y.push({id:m.id,type:"dimensions",dimensions:x}))}return y},[]);Xb(i,u);const g=o||s&&!o&&Qb(t,{initial:!0,...a});e({nodeInternals:new Map(i),fitViewOnInitDone:g}),(h==null?void 0:h.length)>0&&(r==null||r(h))},updateNodePositions:(n,r=!0,i=!1)=>{const{triggerNodeChanges:s}=t(),o=n.map(a=>{const l={id:a.id,type:"position",dragging:i};return r&&(l.positionAbsolute=a.positionAbsolute,l.position=a.position),l});s(o)},triggerNodeChanges:n=>{const{onNodesChange:r,nodeInternals:i,hasDefaultNodes:s,nodeOrigin:o,getNodes:a,elevateNodesOnSelect:l}=t();if(n!=null&&n.length){if(s){const u=Jb(n,a()),c=Bc(u,i,o,l);e({nodeInternals:c})}r==null||r(n)}},addSelectedNodes:n=>{const{multiSelectionActive:r,edges:i,getNodes:s}=t();let o,a=null;r?o=n.map(l=>nr(l,!0)):(o=Di(s(),n),a=Di(i,[])),Pa({changedNodes:o,changedEdges:a,get:t,set:e})},addSelectedEdges:n=>{const{multiSelectionActive:r,edges:i,getNodes:s}=t();let o,a=null;r?o=n.map(l=>nr(l,!0)):(o=Di(i,n),a=Di(s(),[])),Pa({changedNodes:a,changedEdges:o,get:t,set:e})},unselectNodesAndEdges:({nodes:n,edges:r}={})=>{const{edges:i,getNodes:s}=t(),o=n||s(),a=r||i,l=o.map(c=>(c.selected=!1,nr(c.id,!1))),u=a.map(c=>nr(c.id,!1));Pa({changedNodes:l,changedEdges:u,get:t,set:e})},setMinZoom:n=>{const{d3Zoom:r,maxZoom:i}=t();r==null||r.scaleExtent([n,i]),e({minZoom:n})},setMaxZoom:n=>{const{d3Zoom:r,minZoom:i}=t();r==null||r.scaleExtent([i,n]),e({maxZoom:n})},setTranslateExtent:n=>{var r;(r=t().d3Zoom)==null||r.translateExtent(n),e({translateExtent:n})},resetSelectedElements:()=>{const{edges:n,getNodes:r}=t(),s=r().filter(a=>a.selected).map(a=>nr(a.id,!1)),o=n.filter(a=>a.selected).map(a=>nr(a.id,!1));Pa({changedNodes:s,changedEdges:o,get:t,set:e})},setNodeExtent:n=>{const{nodeInternals:r}=t();r.forEach(i=>{i.positionAbsolute=wp(i.position,n)}),e({nodeExtent:n,nodeInternals:new Map(r)})},panBy:n=>{const{transform:r,width:i,height:s,d3Zoom:o,d3Selection:a,translateExtent:l}=t();if(!o||!a||!n.x&&!n.y)return!1;const u=yr.translate(r[0]+n.x,r[1]+n.y).scale(r[2]),c=[[0,0],[i,s]],f=o==null?void 0:o.constrain()(u,c,l);return o.transform(a,f),r[0]!==f.x||r[1]!==f.y||r[2]!==f.k},cancelConnection:()=>e({connectionNodeId:Xn.connectionNodeId,connectionHandleId:Xn.connectionHandleId,connectionHandleType:Xn.connectionHandleType,connectionStatus:Xn.connectionStatus,connectionStartHandle:Xn.connectionStartHandle,connectionEndHandle:Xn.connectionEndHandle}),reset:()=>e({...Xn})}),Object.is),Pp=({children:e})=>{const t=T.useRef(null);return t.current||(t.current=xF()),B.createElement(zz,{value:t.current},e)};Pp.displayName="ReactFlowProvider";const f2=({children:e})=>T.useContext(Nu)?B.createElement(B.Fragment,null,e):B.createElement(Pp,null,e);f2.displayName="ReactFlowWrapper";const vF={input:Hb,default:Td,output:Wb,group:Tp},wF={default:Hl,straight:_p,step:Sp,smoothstep:Tu,simplebezier:bp},kF=[0,0],bF=[15,15],SF={x:0,y:0,zoom:1},_F={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},d2=T.forwardRef(({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:i,nodeTypes:s=vF,edgeTypes:o=wF,onNodeClick:a,onEdgeClick:l,onInit:u,onMove:c,onMoveStart:f,onMoveEnd:d,onConnect:h,onConnectStart:g,onConnectEnd:y,onClickConnectStart:w,onClickConnectEnd:m,onNodeMouseEnter:x,onNodeMouseMove:v,onNodeMouseLeave:k,onNodeContextMenu:N,onNodeDoubleClick:S,onNodeDragStart:A,onNodeDrag:P,onNodeDragStop:D,onNodesDelete:C,onEdgesDelete:L,onSelectionChange:M,onSelectionDragStart:O,onSelectionDrag:_,onSelectionDragStop:R,onSelectionContextMenu:I,onSelectionStart:V,onSelectionEnd:z,connectionMode:j=ii.Strict,connectionLineType:b=sr.Bezier,connectionLineStyle:F,connectionLineComponent:H,connectionLineContainerStyle:E,deleteKeyCode:q="Backspace",selectionKeyCode:X="Shift",selectionOnDrag:G=!1,selectionMode:ne=Mo.Full,panActivationKeyCode:oe="Space",multiSelectionKeyCode:de=Bl()?"Meta":"Control",zoomActivationKeyCode:le=Bl()?"Meta":"Control",snapToGrid:Ee=!1,snapGrid:lt=bF,onlyRenderVisibleElements:Nt=!1,selectNodesOnDrag:yt=!0,nodesDraggable:Ie,nodesConnectable:Tt,nodesFocusable:ye,nodeOrigin:Z=kF,edgesFocusable:et,edgesUpdatable:dn,elementsSelectable:Tr,defaultViewport:Wn=SF,minZoom:Yn=.5,maxZoom:Qt=2,translateExtent:qn=Pd,preventScrolling:$=!0,nodeExtent:Y,defaultMarkerColor:ee="#b1b1b7",zoomOnScroll:ie=!0,zoomOnPinch:he=!0,panOnScroll:xe=!1,panOnScrollSpeed:He=.5,panOnScrollMode:Ge=Wr.Free,zoomOnDoubleClick:At=!0,panOnDrag:Pt=!0,onPaneClick:Te,onPaneMouseEnter:Xe,onPaneMouseMove:ut,onPaneMouseLeave:Pu,onPaneScroll:ps,onPaneContextMenu:ju,children:Dp,onEdgeContextMenu:Ar,onEdgeDoubleClick:y2,onEdgeMouseEnter:x2,onEdgeMouseMove:v2,onEdgeMouseLeave:w2,onEdgeUpdate:k2,onEdgeUpdateStart:b2,onEdgeUpdateEnd:S2,onReconnect:_2,onReconnectStart:C2,onReconnectEnd:E2,reconnectRadius:N2=10,edgeUpdaterRadius:T2=10,onNodesChange:A2,onEdgesChange:P2,noDragClassName:j2="nodrag",noWheelClassName:M2="nowheel",noPanClassName:Ip="nopan",fitView:D2=!1,fitViewOptions:I2,connectOnClick:L2=!0,attributionPosition:R2,proOptions:z2,defaultEdgeOptions:F2,elevateNodesOnSelect:O2=!0,elevateEdgesOnSelect:V2=!1,disableKeyboardA11y:Lp=!1,autoPanOnConnect:$2=!0,autoPanOnNodeDrag:B2=!0,connectionRadius:H2=20,isValidConnection:U2,onError:W2,style:Y2,id:Rp,nodeDragThreshold:q2,...K2},G2)=>{const Mu=Rp||"1";return B.createElement("div",{...K2,style:{...Y2,..._F},ref:G2,className:gt(["react-flow",i]),"data-testid":"rf__wrapper",id:Rp},B.createElement(f2,null,B.createElement(yF,{onInit:u,onMove:c,onMoveStart:f,onMoveEnd:d,onNodeClick:a,onEdgeClick:l,onNodeMouseEnter:x,onNodeMouseMove:v,onNodeMouseLeave:k,onNodeContextMenu:N,onNodeDoubleClick:S,nodeTypes:s,edgeTypes:o,connectionLineType:b,connectionLineStyle:F,connectionLineComponent:H,connectionLineContainerStyle:E,selectionKeyCode:X,selectionOnDrag:G,selectionMode:ne,deleteKeyCode:q,multiSelectionKeyCode:de,panActivationKeyCode:oe,zoomActivationKeyCode:le,onlyRenderVisibleElements:Nt,selectNodesOnDrag:yt,defaultViewport:Wn,translateExtent:qn,minZoom:Yn,maxZoom:Qt,preventScrolling:$,zoomOnScroll:ie,zoomOnPinch:he,zoomOnDoubleClick:At,panOnScroll:xe,panOnScrollSpeed:He,panOnScrollMode:Ge,panOnDrag:Pt,onPaneClick:Te,onPaneMouseEnter:Xe,onPaneMouseMove:ut,onPaneMouseLeave:Pu,onPaneScroll:ps,onPaneContextMenu:ju,onSelectionContextMenu:I,onSelectionStart:V,onSelectionEnd:z,onEdgeContextMenu:Ar,onEdgeDoubleClick:y2,onEdgeMouseEnter:x2,onEdgeMouseMove:v2,onEdgeMouseLeave:w2,onReconnect:_2??k2,onReconnectStart:C2??b2,onReconnectEnd:E2??S2,reconnectRadius:N2??T2,defaultMarkerColor:ee,noDragClassName:j2,noWheelClassName:M2,noPanClassName:Ip,elevateEdgesOnSelect:V2,rfId:Mu,disableKeyboardA11y:Lp,nodeOrigin:Z,nodeExtent:Y}),B.createElement(p6,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:h,onConnectStart:g,onConnectEnd:y,onClickConnectStart:w,onClickConnectEnd:m,nodesDraggable:Ie,nodesConnectable:Tt,nodesFocusable:ye,edgesFocusable:et,edgesUpdatable:dn,elementsSelectable:Tr,elevateNodesOnSelect:O2,minZoom:Yn,maxZoom:Qt,nodeExtent:Y,onNodesChange:A2,onEdgesChange:P2,snapToGrid:Ee,snapGrid:lt,connectionMode:j,translateExtent:qn,connectOnClick:L2,defaultEdgeOptions:F2,fitView:D2,fitViewOptions:I2,onNodesDelete:C,onEdgesDelete:L,onNodeDragStart:A,onNodeDrag:P,onNodeDragStop:D,onSelectionDrag:_,onSelectionDragStart:O,onSelectionDragStop:R,noPanClassName:Ip,nodeOrigin:Z,rfId:Mu,autoPanOnConnect:$2,autoPanOnNodeDrag:B2,onError:W2,connectionRadius:H2,isValidConnection:U2,nodeDragThreshold:q2}),B.createElement(d6,{onSelectionChange:M}),Dp,B.createElement(Oz,{proOptions:z2,position:R2}),B.createElement(v6,{rfId:Mu,disableKeyboardA11y:Lp})))});d2.displayName="ReactFlow";function h2(e){return t=>{const[n,r]=T.useState(t),i=T.useCallback(s=>r(o=>e(s,o)),[]);return[n,r,i]}}const CF=h2(Jb),EF=h2(D6);function NF(){return B.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},B.createElement("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"}))}function TF(){return B.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},B.createElement("path",{d:"M0 0h32v4.2H0z"}))}function AF(){return B.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30"},B.createElement("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 PF(){return B.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},B.createElement("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 jF(){return B.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},B.createElement("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"}))}const Os=({children:e,className:t,...n})=>B.createElement("button",{type:"button",className:gt(["react-flow__controls-button",t]),...n},e);Os.displayName="ControlButton";const MF=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom}),p2=({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:i,onZoomIn:s,onZoomOut:o,onFitView:a,onInteractiveChange:l,className:u,children:c,position:f="bottom-left"})=>{const d=Ke(),[h,g]=T.useState(!1),{isInteractive:y,minZoomReached:w,maxZoomReached:m}=De(MF,Oe),{zoomIn:x,zoomOut:v,fitView:k}=Au();if(T.useEffect(()=>{g(!0)},[]),!h)return null;const N=()=>{x(),s==null||s()},S=()=>{v(),o==null||o()},A=()=>{k(i),a==null||a()},P=()=>{d.setState({nodesDraggable:!y,nodesConnectable:!y,elementsSelectable:!y}),l==null||l(!y)};return B.createElement(_b,{className:gt(["react-flow__controls",u]),position:f,style:e,"data-testid":"rf__controls"},t&&B.createElement(B.Fragment,null,B.createElement(Os,{onClick:N,className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:m},B.createElement(NF,null)),B.createElement(Os,{onClick:S,className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:w},B.createElement(TF,null))),n&&B.createElement(Os,{className:"react-flow__controls-fitview",onClick:A,title:"fit view","aria-label":"fit view"},B.createElement(AF,null)),r&&B.createElement(Os,{className:"react-flow__controls-interactive",onClick:P,title:"toggle interactivity","aria-label":"toggle interactivity"},y?B.createElement(jF,null):B.createElement(PF,null)),c)};p2.displayName="Controls";var DF=T.memo(p2),un;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(un||(un={}));function IF({color:e,dimensions:t,lineWidth:n}){return B.createElement("path",{stroke:e,strokeWidth:n,d:`M${t[0]/2} 0 V${t[1]} M0 ${t[1]/2} H${t[0]}`})}function LF({color:e,radius:t}){return B.createElement("circle",{cx:t,cy:t,r:t,fill:e})}const RF={[un.Dots]:"#91919a",[un.Lines]:"#eee",[un.Cross]:"#e2e2e2"},zF={[un.Dots]:1,[un.Lines]:1,[un.Cross]:6},FF=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function m2({id:e,variant:t=un.Dots,gap:n=20,size:r,lineWidth:i=1,offset:s=2,color:o,style:a,className:l}){const u=T.useRef(null),{transform:c,patternId:f}=De(FF,Oe),d=o||RF[t],h=r||zF[t],g=t===un.Dots,y=t===un.Cross,w=Array.isArray(n)?n:[n,n],m=[w[0]*c[2]||1,w[1]*c[2]||1],x=h*c[2],v=y?[x,x]:m,k=g?[x/s,x/s]:[v[0]/s,v[1]/s];return B.createElement("svg",{className:gt(["react-flow__background",l]),style:{...a,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:u,"data-testid":"rf__background"},B.createElement("pattern",{id:f+e,x:c[0]%m[0],y:c[1]%m[1],width:m[0],height:m[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${k[0]},-${k[1]})`},g?B.createElement(LF,{color:d,radius:x/s}):B.createElement(IF,{dimensions:v,color:d,lineWidth:i})),B.createElement("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${f+e})`}))}m2.displayName="Background";var OF=T.memo(m2);const Uy={pending:{bg:"linear-gradient(135deg, rgba(30,41,59,0.9) 0%, rgba(51,65,85,0.85) 100%)",border:"rgba(148, 163, 184, 0.4)",text:"#cbd5e1",shadow:"rgba(148, 163, 184, 0.5)",glow:"0 0 20px rgba(148, 163, 184, 0.3), 0 0 30px rgba(148, 163, 184, 0.15)"},running:{bg:"linear-gradient(135deg, rgba(6,182,212,0.2) 0%, rgba(14,165,233,0.15) 50%, rgba(12,74,110,0.85) 100%)",border:"rgba(56, 189, 248, 0.6)",text:"#bae6fd",shadow:"rgba(56, 189, 248, 0.7)",glow:"0 0 25px rgba(56, 189, 248, 0.4), 0 0 35px rgba(6, 182, 212, 0.25), inset 0 0 20px rgba(56, 189, 248, 0.08)"},completed:{bg:"linear-gradient(135deg, rgba(16,185,129,0.2) 0%, rgba(74,222,128,0.12) 50%, rgba(20,83,45,0.85) 100%)",border:"rgba(74, 222, 128, 0.6)",text:"#bbf7d0",shadow:"rgba(74, 222, 128, 0.7)",glow:"0 0 25px rgba(74, 222, 128, 0.4), 0 0 35px rgba(16, 185, 129, 0.25), inset 0 0 20px rgba(74, 222, 128, 0.08)"},failed:{bg:"linear-gradient(135deg, rgba(239,68,68,0.2) 0%, rgba(248,113,113,0.12) 50%, rgba(127,29,29,0.85) 100%)",border:"rgba(248, 113, 113, 0.6)",text:"#fecaca",shadow:"rgba(248, 113, 113, 0.7)",glow:"0 0 25px rgba(248, 113, 113, 0.4), 0 0 35px rgba(239, 68, 68, 0.25), inset 0 0 20px rgba(248, 113, 113, 0.08)"},skipped:{bg:"linear-gradient(135deg, rgba(250,204,21,0.2) 0%, rgba(253,224,71,0.12) 50%, rgba(113,63,18,0.85) 100%)",border:"rgba(250, 204, 21, 0.6)",text:"#fef3c7",shadow:"rgba(250, 204, 21, 0.7)",glow:"0 0 25px rgba(250, 204, 21, 0.4), 0 0 35px rgba(250, 204, 21, 0.25), inset 0 0 20px rgba(250, 204, 21, 0.08)"}},VF=e=>{if(!e)return p.jsx(Gs,{className:"h-4 w-4"});const t=e.toLowerCase();return t==="running"||t==="in_progress"?p.jsx(Vo,{className:"h-4 w-4 animate-spin"}):t==="completed"||t==="success"||t==="finish"?p.jsx(Kr,{className:"h-4 w-4"}):t==="failed"||t==="error"?p.jsx($o,{className:"h-4 w-4"}):t==="pending"||t==="waiting"?p.jsx(au,{className:"h-4 w-4 animate-pulse"}):t==="skipped"?p.jsx(Gs,{className:"h-4 w-4"}):p.jsx(Gs,{className:"h-4 w-4"})},$F={star:({data:e})=>{const t=Uy[e.status??"pending"]??Uy.pending,n=VF(e.status);return p.jsxs("div",{className:"relative w-[280px]",children:[p.jsx(ls,{type:"target",position:Q.Left,style:{opacity:0}}),p.jsx(ls,{type:"source",position:Q.Right,style:{opacity:0}}),p.jsxs("div",{className:"rounded-2xl border-2 px-5 py-4 text-left shadow-2xl backdrop-blur-sm transition-all duration-300 hover:scale-105",style:{background:t.bg,borderColor:t.border,boxShadow:`${t.glow}, 0 8px 32px rgba(0,0,0,0.4), inset 0 1px 2px rgba(255,255,255,0.1)`},children:[p.jsx("div",{className:"absolute -top-2 -right-2 flex items-center justify-center rounded-full border-2 p-1.5 shadow-lg transition-all duration-300",style:{background:t.bg,borderColor:t.border,color:t.text,boxShadow:`0 0 15px ${t.shadow}, 0 0 8px ${t.border}`},children:n}),p.jsx("div",{className:"absolute top-0 left-0 right-0 h-[1px] opacity-50",style:{background:`linear-gradient(90deg, transparent 0%, ${t.border} 50%, transparent 100%)`}}),p.jsx("div",{className:"text-xl font-semibold uppercase tracking-wider mb-2 drop-shadow-[0_2px_4px_rgba(0,0,0,0.5)]",style:{color:t.text,opacity:.85},children:e.taskId}),p.jsx("div",{className:"text-2xl font-bold leading-snug drop-shadow-[0_2px_8px_rgba(0,0,0,0.6)]",style:{color:t.text},children:e.label}),p.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-[1px] opacity-30",style:{background:`linear-gradient(90deg, transparent 0%, ${t.border} 50%, transparent 100%)`}})]})]})}},BF=(e,t)=>{const n=new Set(e.map(y=>y.id)),r=new Map,i=new Map,s=new Map,o=new Map;e.forEach(y=>{r.set(y.id,0),i.set(y.id,0),s.set(y.id,[]),o.set(y.id,[])}),t.forEach(y=>{var w,m;!n.has(y.source)||!n.has(y.target)||(r.set(y.target,(r.get(y.target)??0)+1),i.set(y.source,(i.get(y.source)??0)+1),(w=s.get(y.source))==null||w.push(y.target),(m=o.get(y.target))==null||m.push(y.source))});const a=[],l=new Map;r.forEach((y,w)=>{y===0&&(a.push(w),l.set(w,0))});const u=new Map(r);for(;a.length>0;){const y=a.shift(),w=l.get(y)??0;(s.get(y)??[]).forEach(m=>{const x=Math.max(l.get(m)??0,w+1);l.set(m,x);const v=(u.get(m)??0)-1;u.set(m,v),v===0&&a.push(m)})}e.forEach(y=>{l.has(y.id)||l.set(y.id,0)});const c=new Map;e.forEach(y=>{const w=l.get(y.id)??0;c.has(w)||c.set(w,[]),c.get(w).push(y)});const f=500,d=200,h=-100,g=new Map;return Array.from(c.entries()).sort(([y],[w])=>y-w).forEach(([y,w])=>{const m=w.sort((k,N)=>{const S=o.get(k.id)??[],A=o.get(N.id)??[];if(S.length>0&&A.length>0){const P=S.reduce((C,L)=>{const M=g.get(L);return C+((M==null?void 0:M.y)??0)},0)/S.length,D=A.reduce((C,L)=>{const M=g.get(L);return C+((M==null?void 0:M.y)??0)},0)/A.length;return P-D}return S.length>0?S.reduce((D,C)=>{const L=g.get(C);return D+((L==null?void 0:L.y)??0)},0)/S.length:A.length>0?-(A.reduce((D,C)=>{const L=g.get(C);return D+((L==null?void 0:L.y)??0)},0)/A.length):k.label.localeCompare(N.label)}),x=m.length,v=d+Math.min(x*15,150);if(y===0){const k=(x-1)*v,N=k>0?-(k/2):0;m.forEach((S,A)=>{g.set(S.id,{x:h+y*f,y:N+A*v})})}else{const k=new Map;m.forEach(N=>{const S=o.get(N.id)??[],A=S.length>0?S.reduce((D,C)=>{const L=g.get(C);return D+((L==null?void 0:L.y)??0)},0)/S.length:0,P=Math.round(A/10)*10;k.has(P)||k.set(P,[]),k.get(P).push(N)}),k.forEach((N,S)=>{const A=N.length;if(A===1)g.set(N[0].id,{x:h+y*f,y:S});else{const P=(A-1)*v,D=S-P/2;N.forEach((C,L)=>{g.set(C.id,{x:h+y*f,y:D+L*v})})}})}}),g},Wy=(e,t)=>{const n=BF(e,t);return e.map(r=>{const i=n.get(r.id)??{x:0,y:0};return{id:r.id,type:"star",data:{label:r.label,status:r.status,taskId:r.id},position:i,draggable:!1,connectable:!1,sourcePosition:Q.Right,targetPosition:Q.Left}})},Yy=e=>e.map(t=>{const n=t.isSatisfied===!1?{color:"rgba(248, 113, 113, 0.7)",glowColor:"rgba(239, 68, 68, 0.5)",markerColor:"rgba(248, 113, 113, 0.9)"}:t.isSatisfied===!0?{color:"rgba(74, 222, 128, 0.7)",glowColor:"rgba(16, 185, 129, 0.5)",markerColor:"rgba(74, 222, 128, 0.9)"}:{color:"rgba(56, 189, 248, 0.7)",glowColor:"rgba(6, 182, 212, 0.5)",markerColor:"rgba(56, 189, 248, 0.9)"};return{id:t.id,source:t.source,target:t.target,type:"default",animated:t.isSatisfied===!1,style:{stroke:n.color,strokeWidth:2.5,filter:`drop-shadow(0 0 2px ${n.glowColor})`},markerEnd:{type:Do.Arrow,color:n.markerColor,width:20,height:20,strokeWidth:2}}}),HF=({nodes:e,edges:t,onSelectNode:n})=>{const[r,i,s]=CF(Wy(e,t)),[o,a,l]=EF(Yy(t)),{setViewport:u}=Au(),c=T.useRef(!1);return T.useEffect(()=>{i(Wy(e,t)),a(Yy(t))},[t,e,a,i]),T.useEffect(()=>{r.length>0&&!c.current&&setTimeout(()=>{const f=Math.min(...r.map(D=>D.position.x)),d=Math.max(...r.map(D=>D.position.x)),h=Math.min(...r.map(D=>D.position.y)),g=Math.max(...r.map(D=>D.position.y)),y=d-f+280,w=g-h+180,m=document.querySelector(".react-flow"),x=(m==null?void 0:m.clientWidth)||800,v=(m==null?void 0:m.clientHeight)||600,k=x*.95/y,N=v*.9/w,S=Math.max(Math.min(k,N,1.5),.45),A=-f*S+30,P=(v-w*S)/2-h*S;u({x:A,y:P,zoom:S}),c.current=!0},150)},[r,u]),p.jsxs(d2,{nodes:r,edges:o,nodeTypes:$F,onNodesChange:s,onEdgesChange:l,fitView:!1,defaultViewport:{x:-50,y:0,zoom:.6},minZoom:.1,maxZoom:2,onNodeClick:(f,d)=>n==null?void 0:n(d.id),panOnScroll:!0,zoomOnScroll:!0,nodesDraggable:!1,nodesConnectable:!1,edgesFocusable:!1,elementsSelectable:!0,proOptions:{hideAttribution:!0},className:"rounded-2xl border border-white/5 bg-black/40",style:{height:"100%",minHeight:260},defaultEdgeOptions:{type:"default",animated:!1,style:{strokeWidth:2.5}},children:[p.jsx(DF,{showInteractive:!1,position:"bottom-left"}),p.jsx(OF,{gap:28,size:1.8,color:"rgba(100, 116, 139, 0.2)"})]})},UF=e=>p.jsx(Pp,{children:p.jsx(HF,{...e})}),WF=({constellation:e,onBack:t})=>{var S;const n=((S=e.metadata)==null?void 0:S.statistics)||{},r=n.task_status_counts||{},i=n.total_tasks||e.statistics.total,s=n.total_dependencies||0,o=r.completed||0,a=r.failed||0,l=r.running||0,u=r.pending||0,c=r.ready||0,f=o+a,d=f>0?o/f*100:0,h=n.execution_duration,g=h!=null?`${h.toFixed(2)}s`:"N/A",y=n.critical_path_length,w=n.total_work,m=n.parallelism_ratio,x=A=>{if(!A)return"N/A";try{const P=new Date(A);return new Intl.DateTimeFormat("en-US",{hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(P)}catch{return"N/A"}},v=x(n.created_at),k=x(n.execution_start_time),N=x(n.execution_end_time);return p.jsxs("div",{className:"flex h-full flex-col gap-4 overflow-y-auto p-1",children:[p.jsxs("div",{className:"flex items-center gap-3",children:[p.jsxs("button",{onClick:t,className:"flex items-center gap-2 rounded-full border border-white/10 bg-black/30 px-3 py-2 text-xs text-slate-200 transition hover:border-white/30 hover:bg-black/40",children:[p.jsx(lv,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Back to DAG"]}),p.jsx("div",{className:"text-sm font-semibold text-white",children:"Execution Summary"})]}),p.jsx("div",{className:"rounded-2xl border border-emerald-400/30 bg-gradient-to-br from-emerald-500/10 to-cyan-500/10 p-4",children:p.jsxs("div",{className:"flex items-center justify-between",children:[p.jsxs("div",{children:[p.jsx("div",{className:"text-xs uppercase tracking-[0.2em] text-slate-400",children:"Success Rate"}),p.jsx("div",{className:"mt-1 text-3xl font-bold text-emerald-300",children:f>0?`${d.toFixed(1)}%`:"N/A"}),p.jsxs("div",{className:"mt-1 text-xs text-slate-400",children:[o," of ",f," completed tasks"]})]}),p.jsx(qC,{className:"h-10 w-10 text-emerald-400/40","aria-hidden":!0})]})}),p.jsxs("div",{className:"grid grid-cols-4 gap-2 text-center",children:[p.jsxs("div",{className:"rounded-xl border border-white/10 bg-white/5 px-2 py-2",children:[p.jsx("div",{className:"text-[9px] uppercase tracking-[0.2em] text-slate-400",children:"Total"}),p.jsx("div",{className:"mt-0.5 text-lg font-bold text-white",children:i})]}),p.jsxs("div",{className:"rounded-xl border border-white/10 bg-white/5 px-2 py-2",children:[p.jsx("div",{className:"text-[9px] uppercase tracking-[0.2em] text-slate-400",children:"Pending"}),p.jsx("div",{className:"mt-0.5 text-lg font-bold text-slate-300",children:u})]}),p.jsxs("div",{className:"rounded-xl border border-white/10 bg-white/5 px-2 py-2",children:[p.jsx("div",{className:"text-[9px] uppercase tracking-[0.2em] text-slate-400",children:"Running"}),p.jsx("div",{className:"mt-0.5 text-lg font-bold text-cyan-300",children:l})]}),p.jsxs("div",{className:"rounded-xl border border-white/10 bg-white/5 px-2 py-2",children:[p.jsx("div",{className:"text-[9px] uppercase tracking-[0.2em] text-slate-400",children:"Done"}),p.jsx("div",{className:"mt-0.5 text-lg font-bold text-emerald-300",children:o})]})]}),p.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[p.jsxs("div",{className:"rounded-2xl border border-white/10 bg-white/5 p-4",children:[p.jsxs("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.2em] text-slate-400",children:[p.jsx(Kr,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Completed"]}),p.jsx("div",{className:"mt-2 text-2xl font-bold text-emerald-300",children:o}),p.jsxs("div",{className:"mt-1 text-xs text-slate-500",children:[i>0?`${(o/i*100).toFixed(0)}%`:"0%"," of total"]})]}),p.jsxs("div",{className:"rounded-2xl border border-white/10 bg-white/5 p-4",children:[p.jsxs("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.2em] text-slate-400",children:[p.jsx($o,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Failed"]}),p.jsx("div",{className:"mt-2 text-2xl font-bold text-rose-300",children:a}),p.jsxs("div",{className:"mt-1 text-xs text-slate-500",children:[i>0?`${(a/i*100).toFixed(0)}%`:"0%"," of total"]})]}),p.jsxs("div",{className:"rounded-2xl border border-white/10 bg-white/5 p-4",children:[p.jsxs("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.2em] text-slate-400",children:[p.jsx(au,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Running"]}),p.jsx("div",{className:"mt-2 text-2xl font-bold text-cyan-300",children:l}),p.jsx("div",{className:"mt-1 text-xs text-slate-500",children:"Active execution"})]}),p.jsxs("div",{className:"rounded-2xl border border-white/10 bg-white/5 p-4",children:[p.jsxs("div",{className:"flex items-center gap-2 text-xs uppercase tracking-[0.2em] text-slate-400",children:[p.jsx(IC,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Pending"]}),p.jsx("div",{className:"mt-2 text-2xl font-bold text-slate-300",children:u}),p.jsx("div",{className:"mt-1 text-xs text-slate-500",children:"Awaiting execution"})]})]}),(s>0||c>0)&&p.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[c>0&&p.jsxs("div",{className:"rounded-2xl border border-yellow-400/30 bg-yellow-500/10 p-4",children:[p.jsx("div",{className:"text-xs uppercase tracking-[0.2em] text-slate-400",children:"Ready"}),p.jsx("div",{className:"mt-2 text-2xl font-bold text-yellow-300",children:c}),p.jsx("div",{className:"mt-1 text-xs text-slate-500",children:"Can be executed"})]}),s>0&&p.jsxs("div",{className:"rounded-2xl border border-white/10 bg-white/5 p-4",children:[p.jsx("div",{className:"text-xs uppercase tracking-[0.2em] text-slate-400",children:"Dependencies"}),p.jsx("div",{className:"mt-2 text-2xl font-bold text-slate-300",children:s}),p.jsx("div",{className:"mt-1 text-xs text-slate-500",children:"Total links"})]})]}),m!=null&&p.jsxs("div",{className:"rounded-2xl border border-purple-400/30 bg-gradient-to-br from-purple-500/10 to-blue-500/10 p-4",children:[p.jsx("div",{className:"text-xs font-semibold uppercase tracking-[0.2em] text-slate-400 mb-3",children:"Parallelism Analysis"}),p.jsxs("div",{className:"grid grid-cols-3 gap-4 text-center",children:[p.jsxs("div",{children:[p.jsx("div",{className:"text-xs text-slate-400",children:"Critical Path"}),p.jsx("div",{className:"mt-1 text-xl font-bold text-purple-300",children:y!=null?Number(y).toFixed(2):"N/A"})]}),p.jsxs("div",{children:[p.jsx("div",{className:"text-xs text-slate-400",children:"Total Work"}),p.jsx("div",{className:"mt-1 text-xl font-bold text-blue-300",children:w!=null?Number(w).toFixed(2):"N/A"})]}),p.jsxs("div",{children:[p.jsx("div",{className:"text-xs text-slate-400",children:"Ratio"}),p.jsx("div",{className:"mt-1 text-xl font-bold text-cyan-300",children:m?`${m.toFixed(2)}x`:"N/A"})]})]})]}),p.jsxs("div",{className:"rounded-2xl border border-white/10 bg-white/5 p-4",children:[p.jsx("div",{className:"text-xs font-semibold uppercase tracking-[0.2em] text-slate-400 mb-3",children:"Execution Timeline"}),p.jsxs("div",{className:"space-y-2 text-xs",children:[p.jsxs("div",{className:"flex justify-between",children:[p.jsx("span",{className:"text-slate-400",children:"Created:"}),p.jsx("span",{className:"font-mono text-slate-200",children:v})]}),p.jsxs("div",{className:"flex justify-between",children:[p.jsx("span",{className:"text-slate-400",children:"Started:"}),p.jsx("span",{className:"font-mono text-slate-200",children:k})]}),e.status==="completed"&&p.jsxs("div",{className:"flex justify-between",children:[p.jsx("span",{className:"text-slate-400",children:"Ended:"}),p.jsx("span",{className:"font-mono text-slate-200",children:N})]}),p.jsxs("div",{className:"flex justify-between border-t border-white/10 pt-2 mt-2",children:[p.jsx("span",{className:"text-slate-400 font-semibold",children:"Duration:"}),p.jsx("span",{className:"font-mono text-emerald-300 font-semibold",children:g})]})]})]}),e.metadata&&Object.keys(e.metadata).length>0&&p.jsxs("div",{className:"rounded-2xl border border-white/10 bg-white/5 p-4",children:[p.jsx("div",{className:"text-xs font-semibold uppercase tracking-[0.2em] text-slate-400 mb-3",children:"Additional Information"}),p.jsxs("div",{className:"space-y-2 text-xs",children:[e.description&&p.jsxs("div",{children:[p.jsx("span",{className:"text-slate-400",children:"Description:"}),p.jsx("div",{className:"mt-1 text-slate-200",children:e.description})]}),e.metadata.display_name&&p.jsxs("div",{className:"flex justify-between",children:[p.jsx("span",{className:"text-slate-400",children:"Name:"}),p.jsx("span",{className:"text-slate-200",children:e.metadata.display_name})]})]})]})]})},YF={pending:"text-slate-300",running:"text-cyan-300",completed:"text-emerald-300",failed:"text-rose-300"},qF=({constellation:e,onSelectTask:t,variant:n="standalone"})=>{const[r,i]=T.useState(!1);if(!e)return p.jsxs("div",{className:me("flex h-full flex-col items-center justify-center gap-3 rounded-3xl p-8 text-center text-sm text-slate-300",n==="standalone"?"glass-card":"border border-white/5 bg-black/30"),children:[p.jsx(BC,{className:"h-6 w-6","aria-hidden":!0}),p.jsx("div",{children:"No active constellation yet."}),p.jsx("div",{className:"text-xs text-slate-500",children:"Launch a request to generate a TaskConstellation."})]});const s=YF[e.status]||"text-slate-300",o=me("flex h-full flex-col gap-4 rounded-3xl p-5",n==="standalone"?"glass-card":"border border-white/5 bg-black/30",n==="embedded"&&"max-h-[420px]"),a=me("flex-1 overflow-hidden rounded-3xl border border-white/5 bg-black/30",n==="embedded"?"h-[260px]":"h-[320px]"),l=e.status==="completed"||e.status==="failed";return p.jsxs("div",{className:o,children:[p.jsxs("div",{className:"flex items-center justify-between gap-4",children:[p.jsxs("div",{className:"flex items-center gap-2 text-xs text-slate-400",children:[p.jsx(YC,{className:"h-3 w-3","aria-hidden":!0}),p.jsxs("span",{children:[e.taskIds.length," tasks"]}),p.jsx("span",{className:"mx-1",children:"β’"}),p.jsx("span",{className:s,children:e.status})]}),l&&p.jsxs("button",{onClick:()=>i(!r),className:me("flex items-center gap-2 rounded-full border border-white/10 px-3 py-1.5 text-xs transition",r?"bg-emerald-500/20 border-emerald-400/40 text-emerald-300":"bg-black/30 text-slate-300 hover:border-white/30 hover:bg-black/40"),title:"View execution summary",children:[p.jsx(NC,{className:"h-3.5 w-3.5","aria-hidden":!0}),"Stats"]})]}),p.jsx("div",{className:a,children:r?p.jsx(WF,{constellation:e,onBack:()=>i(!1)}):p.jsx(UF,{nodes:e.dag.nodes,edges:e.dag.edges,onSelectNode:t})})]})},KF=e=>{const t=e.toLowerCase();return t==="running"||t==="in_progress"?p.jsx(Vo,{className:"h-3.5 w-3.5 animate-spin text-cyan-300","aria-hidden":!0}):t==="completed"||t==="success"||t==="finish"?p.jsx(PC,{className:"h-3.5 w-3.5 text-emerald-300","aria-hidden":!0}):t==="failed"||t==="error"?p.jsx($o,{className:"h-3.5 w-3.5 text-rose-400","aria-hidden":!0}):t==="pending"||t==="waiting"?p.jsx(au,{className:"h-3.5 w-3.5 animate-pulse text-slate-300","aria-hidden":!0}):t==="skipped"?p.jsx(Gs,{className:"h-3.5 w-3.5 text-amber-300","aria-hidden":!0}):p.jsx(Gs,{className:"h-3.5 w-3.5 text-slate-300","aria-hidden":!0})},GF=["all","pending","running","completed","failed"],XF={all:"All",pending:"Pending",running:"Running",completed:"Completed",failed:"Failed"},QF=({tasks:e,activeTaskId:t,onSelectTask:n})=>{const[r,i]=T.useState("all"),s=T.useMemo(()=>{const o={running:0,pending:1,failed:2,completed:3,skipped:4};return e.filter(a=>r==="all"||a.status===r).sort((a,l)=>{const u=(o[a.status]??99)-(o[l.status]??99);return u!==0?u:(a.name||a.id).localeCompare(l.name||l.id)})},[r,e]);return p.jsxs("div",{className:"flex h-full flex-col gap-3 text-xs text-slate-200",children:[p.jsx("div",{className:"flex items-center justify-between",children:p.jsx("div",{className:"flex items-center gap-1 rounded-full border border-white/10 bg-black/30 px-2 py-1",children:GF.map(o=>p.jsx("button",{type:"button",onClick:()=>i(o),className:me("rounded-full px-2 py-1 text-[10px] uppercase tracking-[0.18em]",r===o?"bg-gradient-to-r from-galaxy-blue/40 to-galaxy-purple/40 text-white":"text-slate-400"),children:XF[o]},o))})}),p.jsx("div",{className:"flex-1 space-y-2 overflow-y-auto",children:s.length===0?p.jsx("div",{className:"flex flex-col items-center gap-2 rounded-2xl border border-dashed border-white/10 bg-white/5 p-6 text-center text-xs text-slate-400",children:"No tasks match this filter yet."}):s.map(o=>{const a=KF(o.status);return p.jsxs("button",{type:"button",onClick:()=>n(o.id),className:me("w-full rounded-2xl border px-3 py-3 text-left transition",t===o.id?"border-galaxy-blue/60 bg-galaxy-blue/15 shadow-glow":"border-white/10 bg-white/5 hover:border-white/25 hover:bg-white/10"),children:[p.jsxs("div",{className:"flex items-center justify-between gap-3 text-xs text-slate-200",children:[p.jsxs("div",{className:"flex items-center gap-2",children:[a,p.jsx("span",{className:"font-medium text-white",children:o.name||o.id})]}),p.jsx("div",{className:"text-[10px] uppercase tracking-[0.18em] text-slate-400",children:o.status})]}),p.jsx("div",{className:"mt-1 text-[11px] text-slate-400",children:o.deviceId?`device: ${o.deviceId}`:"No device assigned"})]},o.id)})})]})},Ma=e=>{if(!e)return"β
";try{return JSON.stringify(e,null,2)}catch{return String(e)}},ZF=e=>e.length?p.jsx("ul",{className:"space-y-2 text-xs",children:e.map(t=>p.jsxs("li",{className:me("rounded-xl border px-3 py-2",t.level==="error"?"border-rose-400/40 bg-rose-500/10 text-rose-100":"border-white/10 bg-white/5 text-slate-200"),children:[p.jsxs("div",{className:"flex items-center justify-between text-[10px] uppercase tracking-[0.18em] text-slate-400",children:[p.jsx("span",{children:t.level}),p.jsx("span",{children:new Date(t.timestamp).toLocaleTimeString()})]}),p.jsx("div",{className:"mt-1 text-xs",children:t.message})]},t.id))}):p.jsx("div",{className:"text-xs text-slate-400",children:"No logs streamed yet."}),JF=({task:e,onBack:t})=>{const n=Ce(o=>o.setActiveTask);if(!e)return p.jsx("div",{className:"flex h-full flex-col items-center justify-center gap-3 text-center text-sm text-slate-300",children:"Select a task to inspect details."});const r=()=>{sn().send({type:"task_retry",taskId:e.id,constellationId:e.constellationId,timestamp:Date.now()})},i=()=>{sn().send({type:"task_skip",taskId:e.id,constellationId:e.constellationId,timestamp:Date.now()})},s=()=>{t?t():n(null)};return p.jsxs("div",{className:"flex h-full flex-col gap-4 text-xs text-slate-200",children:[p.jsxs("div",{className:"flex items-center justify-between",children:[p.jsxs("div",{className:"flex items-center gap-3",children:[p.jsxs("button",{type:"button",onClick:s,className:"inline-flex items-center gap-1 rounded-full border border-white/10 bg-gradient-to-r from-white/8 to-white/5 px-3 py-2 text-xs text-slate-100 shadow-[0_2px_8px_rgba(0,0,0,0.2),inset_0_1px_1px_rgba(255,255,255,0.08)] transition-all hover:border-white/25 hover:shadow-[0_4px_12px_rgba(0,0,0,0.25),0_0_15px_rgba(15,123,255,0.15)]",title:"Back to task list",children:[p.jsx(lv,{className:"h-3 w-3","aria-hidden":!0}),"Back"]}),p.jsxs("div",{children:[p.jsx("div",{className:"text-xs uppercase tracking-[0.25em] text-slate-400",children:"Task Detail"}),p.jsx("div",{className:"text-lg font-semibold text-white drop-shadow-[0_0_8px_rgba(255,255,255,0.3)]",children:e.name||e.id}),p.jsxs("div",{className:"text-[11px] text-slate-400",children:["Status: ",e.status]})]})]}),p.jsxs("div",{className:"flex items-center gap-2",children:[p.jsxs("button",{type:"button",onClick:r,className:"inline-flex items-center gap-2 rounded-full border border-white/10 bg-gradient-to-r from-white/8 to-white/5 px-3 py-2 text-xs text-slate-100 shadow-[0_2px_8px_rgba(0,0,0,0.2),inset_0_1px_1px_rgba(255,255,255,0.08)] transition-all hover:border-emerald-400/40 hover:shadow-[0_4px_12px_rgba(0,0,0,0.25),0_0_15px_rgba(16,185,129,0.2)]",children:[p.jsx(VC,{className:"h-3 w-3","aria-hidden":!0}),"Retry"]}),p.jsxs("button",{type:"button",onClick:i,className:"inline-flex items-center gap-2 rounded-full border border-white/10 bg-gradient-to-r from-white/8 to-white/5 px-3 py-2 text-xs text-slate-100 shadow-[0_2px_8px_rgba(0,0,0,0.2),inset_0_1px_1px_rgba(255,255,255,0.08)] transition-all hover:border-amber-400/40 hover:shadow-[0_4px_12px_rgba(0,0,0,0.25),0_0_15px_rgba(245,158,11,0.2)]",children:[p.jsx(HC,{className:"h-3 w-3","aria-hidden":!0}),"Skip"]})]})]}),p.jsxs("div",{className:"grid gap-3 text-[11px] text-slate-300",children:[p.jsxs("div",{className:"rounded-2xl border border-white/10 bg-gradient-to-br from-white/8 to-white/4 px-3 py-2 shadow-[0_2px_8px_rgba(0,0,0,0.2),inset_0_1px_1px_rgba(255,255,255,0.06)]",children:[p.jsxs("div",{children:["Device: ",e.deviceId||"not assigned"]}),p.jsxs("div",{children:["Started: ",e.startedAt?new Date(e.startedAt).toLocaleTimeString():"β"]}),p.jsxs("div",{children:["Completed: ",e.completedAt?new Date(e.completedAt).toLocaleTimeString():"β"]})]}),p.jsxs("div",{className:"rounded-2xl border border-white/10 bg-gradient-to-br from-white/8 to-white/4 px-3 py-2 shadow-[0_2px_8px_rgba(0,0,0,0.2),inset_0_1px_1px_rgba(255,255,255,0.06)]",children:[p.jsx("div",{className:"mb-1 text-[10px] uppercase tracking-[0.18em] text-slate-400",children:"Dependencies"}),p.jsx("div",{children:e.dependencies.length?e.dependencies.join(", "):"None"})]}),e.error&&p.jsxs("div",{className:"rounded-2xl border border-rose-400/40 bg-gradient-to-r from-rose-500/15 to-rose-600/10 px-3 py-2 text-rose-100 shadow-[0_0_20px_rgba(244,63,94,0.2),inset_0_1px_2px_rgba(255,255,255,0.1)]",children:["Error: ",e.error]})]}),p.jsxs("div",{className:"grid grid-cols-1 gap-3",children:[p.jsxs("div",{className:"rounded-2xl border border-white/10 bg-gradient-to-br from-black/50 to-black/30 shadow-[0_4px_16px_rgba(0,0,0,0.3),inset_0_1px_1px_rgba(255,255,255,0.05)]",children:[p.jsxs("div",{className:"flex items-center justify-between border-b border-white/10 bg-white/5 px-3 py-2 text-[10px] uppercase tracking-[0.18em] text-slate-400",children:["Input",p.jsxs("button",{type:"button",className:"inline-flex items-center gap-1 text-[10px] text-slate-400 transition hover:text-slate-200",onClick:()=>{navigator!=null&&navigator.clipboard&&navigator.clipboard.writeText(Ma(e.input))},children:[p.jsx(Km,{className:"h-3 w-3","aria-hidden":!0})," Copy"]})]}),p.jsx("pre",{className:"max-h-60 overflow-auto px-3 py-3 text-[11px] text-slate-200",children:Ma(e.input)})]}),p.jsxs("div",{className:"rounded-2xl border border-white/10 bg-gradient-to-br from-black/50 to-black/30 shadow-[0_4px_16px_rgba(0,0,0,0.3),inset_0_1px_1px_rgba(255,255,255,0.05)]",children:[p.jsxs("div",{className:"flex items-center justify-between border-b border-white/10 bg-white/5 px-3 py-2 text-[10px] uppercase tracking-[0.18em] text-slate-400",children:["Output",p.jsxs("button",{type:"button",className:"inline-flex items-center gap-1 text-[10px] text-slate-400 transition hover:text-slate-200",onClick:()=>{navigator!=null&&navigator.clipboard&&navigator.clipboard.writeText(Ma(e.output||e.result))},children:[p.jsx(Km,{className:"h-3 w-3","aria-hidden":!0})," Copy"]})]}),p.jsx("pre",{className:"max-h-60 overflow-auto px-3 py-3 text-[11px] text-slate-200",children:Ma(e.output||e.result)})]})]}),p.jsxs("div",{className:"flex-1 overflow-y-auto rounded-2xl border border-white/10 bg-gradient-to-br from-black/50 to-black/30 px-3 py-3 shadow-[0_4px_16px_rgba(0,0,0,0.3),inset_0_1px_1px_rgba(255,255,255,0.05)]",children:[p.jsx("div",{className:"mb-2 text-[10px] uppercase tracking-[0.18em] text-slate-400",children:"Logs"}),ZF(e.logs)]})]})},qy={pending:"bg-slate-500/20 text-slate-300 border-slate-400/30",running:"bg-cyan-500/20 text-cyan-300 border-cyan-400/40",executing:"bg-cyan-500/20 text-cyan-300 border-cyan-400/40",completed:"bg-emerald-500/20 text-emerald-300 border-emerald-400/40",failed:"bg-rose-500/20 text-rose-300 border-rose-400/40"},Ky=()=>{const{constellations:e,tasks:t,ui:n,setActiveConstellation:r,setActiveTask:i}=Ce(f=>({constellations:f.constellations,tasks:f.tasks,ui:f.ui,setActiveConstellation:f.setActiveConstellation,setActiveTask:f.setActiveTask}),Oe),s=T.useMemo(()=>Object.values(e).sort((f,d)=>(d.updatedAt??0)-(f.updatedAt??0)),[e]),o=T.useMemo(()=>{const f=Object.values(e).sort((h,g)=>(h.createdAt??0)-(g.createdAt??0)),d={};return f.forEach((h,g)=>{d[h.id]=g+1}),d},[e]);T.useEffect(()=>{!n.activeConstellationId&&s.length>0&&r(s[0].id)},[s,r,n.activeConstellationId]);const a=n.activeConstellationId?e[n.activeConstellationId]:s[0],l=T.useMemo(()=>a?a.taskIds.map(f=>t[f]).filter(f=>!!f):[],[a,t]),u=n.activeTaskId?t[n.activeTaskId]:void 0,c=f=>{const d=f.target.value;r(d||null)};return p.jsxs("div",{className:"flex h-full w-full flex-col gap-3",children:[p.jsxs("div",{className:"flex flex-1 min-h-0 flex-col gap-3 rounded-[28px] border border-white/10 bg-gradient-to-br from-[rgba(11,30,45,0.88)] via-[rgba(8,20,35,0.85)] to-[rgba(6,15,28,0.88)] p-4 overflow-hidden shadow-[0_8px_32px_rgba(0,0,0,0.4),0_2px_8px_rgba(147,51,234,0.12),inset_0_1px_1px_rgba(255,255,255,0.08)] ring-1 ring-inset ring-white/5",children:[p.jsxs("div",{className:"flex items-center justify-between flex-shrink-0",children:[p.jsxs("div",{className:"flex items-center gap-3",children:[p.jsx(FC,{className:"h-5 w-5 text-purple-400 drop-shadow-[0_0_8px_rgba(147,51,234,0.5)]","aria-hidden":!0}),p.jsx("div",{className:"font-heading text-xl font-semibold tracking-tight text-white",children:"Constellation Overview"}),a&&p.jsx("span",{className:me("rounded-full border px-3 py-1.5 text-xs font-semibold uppercase tracking-wider shadow-[0_2px_8px_rgba(0,0,0,0.2),inset_0_1px_1px_rgba(255,255,255,0.1)]",qy[a.status]||qy.pending),children:a.status})]}),p.jsxs("select",{value:(a==null?void 0:a.id)||"",onChange:c,className:"rounded-full border border-white/5 bg-gradient-to-r from-black/30 to-black/20 px-3 py-1.5 text-xs text-slate-200 shadow-[inset_0_2px_8px_rgba(0,0,0,0.3)] focus:border-white/15 focus:outline-none focus:ring-1 focus:ring-white/10",children:[s.map(f=>p.jsxs("option",{value:f.id,children:["Request ",o[f.id]||"?"]},f.id)),s.length===0&&p.jsx("option",{value:"",children:"No constellations"})]})]}),p.jsx("div",{className:"flex-1 min-h-0 overflow-hidden",children:p.jsx(qF,{constellation:a,onSelectTask:f=>i(f),variant:"embedded"})})]}),p.jsx("div",{className:"flex flex-1 min-h-0 flex-col gap-3 rounded-[28px] border border-white/10 bg-gradient-to-br from-[rgba(11,30,45,0.88)] via-[rgba(8,20,35,0.85)] to-[rgba(6,15,28,0.88)] p-4 overflow-hidden shadow-[0_8px_32px_rgba(0,0,0,0.4),0_2px_8px_rgba(6,182,212,0.12),inset_0_1px_1px_rgba(255,255,255,0.08)] ring-1 ring-inset ring-white/5",children:u?p.jsx(JF,{task:u,onBack:()=>i(null)}):p.jsxs(p.Fragment,{children:[p.jsx("div",{className:"flex items-center justify-between flex-shrink-0",children:p.jsxs("div",{className:"flex items-center gap-2",children:[p.jsx(UC,{className:"h-5 w-5 text-cyan-400 drop-shadow-[0_0_8px_rgba(6,182,212,0.5)]","aria-hidden":!0}),p.jsx("div",{className:"font-heading text-xl font-semibold tracking-tight text-white",children:"TaskStar List"})]})}),p.jsx("div",{className:"flex-1 min-h-0 overflow-hidden",children:p.jsx(QF,{tasks:l,activeTaskId:n.activeTaskId,onSelectTask:f=>i(f)})})]})})]})},eO=e=>{const t=["white","blue","yellow","orange","red"],n=[.35,.3,.2,.1,.05];return Array.from({length:e},(r,i)=>{const s=Math.random();let o=0,a="white";for(let l=0;lArray.from({length:e},(t,n)=>({id:`shooting-${n}`,top:Math.random()*60+10,left:Math.random()*80,width:Math.random()*100+120,opacity:Math.random()*.3+.3})),nO=()=>{const e=T.useMemo(()=>eO(40),[]),t=T.useMemo(()=>tO(3),[]);return p.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.map(n=>p.jsx("span",{className:"star-static","data-color":n.color,style:{left:`${n.left}%`,top:`${n.top}%`,width:`${n.size}rem`,height:`${n.size}rem`,opacity:n.opacity},"aria-hidden":!0},n.id)),t.map(n=>p.jsx("span",{className:"shooting-star-static",style:{top:`${n.top}%`,left:`${n.left}%`,width:`${n.width}px`,opacity:n.opacity},"aria-hidden":!0},n.id))]})},Gy={connecting:{label:"Connecting",color:"text-cyan-300"},connected:{label:"Connected",color:"text-emerald-300"},reconnecting:{label:"Reconnecting",color:"text-amber-300"},disconnected:{label:"Disconnected",color:"text-rose-300"},idle:{label:"Idle",color:"text-slate-400"}},rO=()=>{const{session:e,connectionStatus:t,ui:n,toggleLeftDrawer:r,toggleRightDrawer:i}=Ce(o=>({session:o.session,connectionStatus:o.connectionStatus,ui:o.ui,toggleLeftDrawer:o.toggleLeftDrawer,toggleRightDrawer:o.toggleRightDrawer}),Oe);T.useEffect(()=>{const o=document.documentElement,a=document.body;e.highContrast?(o.classList.add("high-contrast"),a.classList.add("high-contrast")):(o.classList.remove("high-contrast"),a.classList.remove("high-contrast"))},[e.highContrast]);const s=Gy[t]??Gy.idle;return p.jsxs("div",{className:"relative min-h-screen w-full text-white galaxy-bg",children:[p.jsx("div",{className:"pointer-events-none absolute inset-0",children:p.jsx(nO,{})}),p.jsx("header",{className:"relative z-20 border-b border-white/5 bg-transparent",children:p.jsxs("div",{className:"mx-auto flex max-w-[2560px] items-center justify-between gap-4 px-4 sm:px-6 lg:px-8 py-3",children:[p.jsxs("div",{className:"flex items-center gap-2 lg:hidden",children:[p.jsx("button",{onClick:()=>r(),className:"rounded-lg border border-white/10 bg-white/5 p-2 text-slate-300 transition hover:bg-white/10 hover:text-white","aria-label":"Toggle left sidebar",children:p.jsx(OC,{className:"h-5 w-5"})}),p.jsx("button",{onClick:()=>i(),className:"rounded-lg border border-white/10 bg-white/5 p-2 text-slate-300 transition hover:bg-white/10 hover:text-white","aria-label":"Toggle right sidebar",children:p.jsx(RC,{className:"h-5 w-5"})})]}),p.jsxs("div",{className:"flex items-center gap-2",children:[p.jsx("div",{className:"relative",children:p.jsx("img",{src:"/logo3.png",alt:"UFO3 logo",className:"relative h-12 w-12 sm:h-16 sm:w-16 lg:h-20 lg:w-20 drop-shadow-[0_0_20px_rgba(6,182,212,0.3)]"})}),p.jsx("div",{className:"hidden sm:block",children:p.jsxs("h1",{className:"font-heading text-xl sm:text-2xl lg:text-3xl font-bold tracking-tighter drop-shadow-[0_2px_12px_rgba(0,0,0,0.5)]",children:[p.jsx("span",{className:"text-transparent bg-clip-text bg-gradient-to-r from-cyan-300 via-white to-purple-300",children:"UFO"}),p.jsx("sup",{className:"text-sm sm:text-base lg:text-lg font-semibold text-transparent bg-clip-text bg-gradient-to-r from-cyan-300 via-white to-purple-300 ml-0.5",children:"3"}),p.jsx("span",{className:"ml-2 lg:ml-3 text-base sm:text-lg lg:text-xl font-normal tracking-wide text-transparent bg-clip-text bg-gradient-to-r from-cyan-200 via-purple-200 to-cyan-200 hidden md:inline",children:"Weaving the Digital Agent Galaxy"})]})})]}),p.jsxs("div",{className:"flex items-center gap-3 sm:gap-4 rounded-full border border-white/10 bg-gradient-to-br from-[rgba(11,30,45,0.88)] to-[rgba(8,15,28,0.85)] px-3 sm:px-5 py-2 sm:py-2.5 shadow-[0_4px_16px_rgba(0,0,0,0.3),0_1px_4px_rgba(15,123,255,0.1),inset_0_1px_1px_rgba(255,255,255,0.06)] ring-1 ring-inset ring-white/5",children:[p.jsx("span",{className:`h-2 w-2 sm:h-2.5 sm:w-2.5 rounded-full shadow-neon ${t==="connected"?"bg-emerald-400 animate-pulse":t==="reconnecting"?"bg-amber-400 animate-pulse":"bg-rose-400"}`}),p.jsxs("div",{className:"flex flex-col leading-tight",children:[p.jsx("span",{className:`text-[10px] sm:text-xs font-medium uppercase tracking-[0.2em] ${s.color}`,children:s.label}),p.jsx("span",{className:"text-[9px] sm:text-[11px] text-slate-400/80",children:e.displayName})]})]})]})}),p.jsxs("main",{className:"relative z-10 mx-auto flex h-[calc(100vh-94px)] max-w-[2560px] gap-4 px-4 sm:px-6 lg:px-8 pb-6 pt-1",children:[n.showLeftDrawer&&p.jsxs("div",{className:"fixed inset-0 z-50 lg:hidden",children:[p.jsx("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:()=>r(!1)}),p.jsxs("div",{className:"absolute left-0 top-0 h-full w-80 max-w-[85vw] bg-[#0a0e1a] shadow-2xl animate-slide-in-left",children:[p.jsxs("div",{className:"flex items-center justify-between border-b border-white/10 p-4",children:[p.jsx("h2",{className:"text-lg font-semibold text-white",children:"Devices"}),p.jsx("button",{onClick:()=>r(!1),className:"rounded-lg p-1.5 text-slate-400 transition hover:bg-white/5 hover:text-white",children:p.jsx(Vi,{className:"h-5 w-5"})})]}),p.jsx("div",{className:"h-[calc(100%-64px)] overflow-y-auto",children:p.jsx(ty,{})})]})]}),n.showRightDrawer&&p.jsxs("div",{className:"fixed inset-0 z-50 lg:hidden",children:[p.jsx("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm",onClick:()=>i(!1)}),p.jsxs("div",{className:"absolute right-0 top-0 h-full w-96 max-w-[90vw] bg-[#0a0e1a] shadow-2xl animate-slide-in-right",children:[p.jsxs("div",{className:"flex items-center justify-between border-b border-white/10 p-4",children:[p.jsx("h2",{className:"text-lg font-semibold text-white",children:"Constellation"}),p.jsx("button",{onClick:()=>i(!1),className:"rounded-lg p-1.5 text-slate-400 transition hover:bg-white/5 hover:text-white",children:p.jsx(Vi,{className:"h-5 w-5"})})]}),p.jsx("div",{className:"h-[calc(100%-64px)] overflow-y-auto",children:p.jsx(Ky,{})})]})]}),p.jsx("div",{className:"hidden xl:flex xl:w-72 2xl:w-80",children:p.jsx(ty,{})}),p.jsx("div",{className:"flex min-w-0 flex-1 flex-col",children:p.jsx(HI,{})}),p.jsx("div",{className:"hidden lg:flex lg:w-[520px] xl:w-[560px] 2xl:w-[640px]",children:p.jsx(Ky,{})})]}),p.jsx(eL,{})]})},jp=sn();jp.onStatusChange(e=>{const t=Ce.getState();switch(e){case"connected":t.setConnectionStatus("connected");break;case"connecting":t.setConnectionStatus("connecting");break;case"reconnecting":t.setConnectionStatus("reconnecting");break;case"disconnected":t.setConnectionStatus("disconnected");break}});const ro=e=>e!=null&&e.timestamp?Math.round(e.timestamp*1e3):Date.now(),Yc=e=>{if(!e)return;const t=Date.parse(e);return Number.isNaN(t)?void 0:t},Yi=e=>{try{const t={...e};if(t.thought&&typeof t.thought=="string"&&t.thought.length>100){let r=100;const i=[". ",`.
+`,"! ",`!
+`,"? ",`?
+`];for(const s of i){const o=t.thought.lastIndexOf(s,100);if(o>100*.7){r=o+s.length;break}}t.thought=t.thought.substring(0,r).trim()+`... [Truncated: ${t.thought.length} chars total]`}return JSON.stringify(t,null,2)}catch(t){return console.error("Failed to stringify payload",t),String(e)}},iO=e=>e.map(t=>`- ${typeof t=="string"?t:Yi(t)}`).join(`
+`),sO=e=>{if(!e)return"Agent responded.";if(typeof e=="string"){if(e.length>100){let r=100;const i=[". ",`.
+`,"! ",`!
+`,"? ",`?
+`];for(const o of i){const a=e.lastIndexOf(o,100);if(a>100*.7){r=a+o.length;break}}return`${e.substring(0,r).trim()}...
+
+_[Truncated: ${e.length} chars total]_`}return e}const t=[];if(e.thought){const n=String(e.thought),r=100;if(n.length>r){let i=r;const s=[". ",`.
+`,"! ",`!
+`,"? ",`?
+`];for(const a of s){const l=n.lastIndexOf(a,r);if(l>r*.7){i=l+a.length;break}}const o=n.substring(0,i).trim();t.push(`**π Thought**
+${o}...
+
+_[Truncated: ${n.length} chars total]_`)}else t.push(`**π Thought**
+${n}`)}if(e.plan){const n=Array.isArray(e.plan)?iO(e.plan):e.plan;t.push(`**π Plan**
+${n}`)}return e.actions_summary&&t.push(`**β‘ Actions Summary**
+${e.actions_summary}`),e.response&&t.push(`${e.response}`),e.final_response&&t.push(`${e.final_response}`),t.length===0&&e.message&&t.push(String(e.message)),t.length===0&&t.push(Yi(e)),t.join(`
+
+`)},oO=e=>e?Array.isArray(e.actions)?e.actions.map((n,r)=>{const i=n.description||n.name||`Action ${r+1}`,s=n.target_device_id?` _(device: ${n.target_device_id})_`:"";return`**${i}**${s}
+${Yi(n.parameters??n)}`}).join(`
+
+`):e.action_type||e.name?`**${e.action_type||e.name}**
+${Yi(e)}`:Yi(e):"Action executed.",g2=e=>{var n;const t=e.data||{};return t.constellation||t.updated_constellation||t.new_constellation||((n=e.output_data)==null?void 0:n.constellation)||null},Mp=e=>{var l,u;const t=g2(e);if(!t)return;const n=Ce.getState(),r=t.constellation_id||e.constellation_id||n.ensureSession(),i=t.dependencies||{},s=[];t.tasks&&Object.entries(t.tasks).forEach(([c,f])=>{const d=f,h=d.task_id||c;s.push({id:h,constellationId:r,name:d.name||h,description:d.description,status:d.status,deviceId:d.target_device_id||d.device_id,input:d.input,output:d.output,result:d.result,error:d.error,startedAt:Yc(d.started_at),completedAt:Yc(d.completed_at),logs:Array.isArray(d.logs)?d.logs.map((g,y)=>({id:`${h}-log-${y}`,timestamp:Date.now(),level:g.level||"info",message:g.message||Yi(g),payload:g.payload})):[]})}),n.bulkUpsertTasks(r,s,i);const o=s.map(c=>({id:c.id,label:c.name||c.id,status:c.status,deviceId:c.deviceId})),a=Object.entries(i).flatMap(([c,f])=>Array.isArray(f)?f.map(d=>({id:`${d}->${c}`,source:d,target:c})):[]);n.upsertConstellation({id:r,name:t.name||r,status:t.state||e.constellation_state||"running",description:t.description,metadata:{...t.metadata||{},statistics:t.statistics,execution_start_time:(l=t.metadata)==null?void 0:l.execution_start_time,execution_end_time:(u=t.metadata)==null?void 0:u.execution_end_time},createdAt:Yc(t.created_at),taskIds:s.map(c=>c.id),dag:{nodes:o,edges:a}})},jd=e=>{Ce.getState().pushNotification({id:ts(),timestamp:Date.now(),read:!1,...e})},aO=e=>{var s,o,a;const t=Ce.getState();if(t.ui.isTaskStopped){console.log("β οΈ Ignoring agent response - task was stopped by user");return}const n=t.ensureSession(((s=e.data)==null?void 0:s.session_id)||null),r=sO(e.output_data);t.addMessage({id:ts(),sessionId:n,role:"assistant",kind:"response",author:e.agent_name||"Galaxy Agent",content:r,payload:e.output_data,timestamp:ro(e),agentName:e.agent_name}),Mp(e);const i=(a=(o=e.output_data)==null?void 0:o.status)==null?void 0:a.toLowerCase();(i==="finish"||i==="fail")&&t.setTaskRunning(!1)},lO=e=>{var i,s;const t=Ce.getState();if(t.ui.isTaskStopped){console.log("β οΈ Ignoring agent action - task was stopped by user");return}const n=t.ensureSession(((i=e.data)==null?void 0:i.session_id)||null),r=oO(e.output_data);t.addMessage({id:ts(),sessionId:n,role:"assistant",kind:"action",author:e.agent_name||"Galaxy Agent",content:r,payload:e.output_data,timestamp:ro(e),agentName:e.agent_name,actionType:(s=e.output_data)==null?void 0:s.action_type})},uO=e=>{var i,s,o,a,l,u,c,f,d,h;const t=Ce.getState(),n=e.constellation_id||((i=e.data)==null?void 0:i.constellation_id)||((s=g2(e))==null?void 0:s.constellation_id);if(!e.task_id||!n)return;const r={status:e.status,result:e.result??((o=e.data)==null?void 0:o.result),error:e.error??((a=e.data)==null?void 0:a.error)??null,deviceId:((l=e.data)==null?void 0:l.device_id)??((u=e.data)==null?void 0:u.deviceId)};if(e.event_type==="task_completed"&&(r.completedAt=ro(e)),e.event_type==="task_started"&&(r.startedAt=ro(e)),t.updateTask(e.task_id,r),(c=e.data)!=null&&c.log_entry){const g=e.data.log_entry;t.appendTaskLog(e.task_id,g)}else(f=e.data)!=null&&f.message&&t.appendTaskLog(e.task_id,{id:`${e.task_id}-${e.event_type}-${Date.now()}`,timestamp:ro(e),level:e.event_type==="task_failed"?"error":"info",message:e.data.message,payload:e.data});e.event_type==="task_failed"&&jd({severity:"error",title:`Task ${e.task_id} failed`,description:((d=e.error)==null?void 0:d.toString())||"A task reported a failure.",source:n}),(e.event_type==="task_completed"||e.event_type==="task_failed")&&((h=e.data)!=null&&h.constellation)&&(Mp(e),console.log(`π Updated constellation from ${e.event_type} event`))},cO=e=>{if(Mp(e),e.event_type==="constellation_started"){const t=Ce.getState(),n=e.constellation_id;n&&(Object.keys(t.constellations).forEach(r=>{r.startsWith("temp-")&&(t.removeConstellation(r),console.log(`ποΈ Removed temporary constellation: ${r}`))}),t.setActiveConstellation(n),console.log(`π Auto-switched to new constellation: ${n}`))}e.event_type==="constellation_completed"&&jd({severity:"success",title:"Constellation completed",description:`Constellation ${e.constellation_id||""} finished execution successfully.`,source:e.constellation_id}),e.event_type==="constellation_failed"&&jd({severity:"error",title:"Constellation failed",description:`Constellation ${e.constellation_id||""} reported a failure.`,source:e.constellation_id})},fO=e=>{var a,l,u,c,f;console.log("π± Device event received:",{event_type:e.event_type,device_id:e.device_id,device_status:e.device_status,device_info_status:(a=e.device_info)==null?void 0:a.status,full_event:e});const t=Ce.getState(),n=e.all_devices||((l=e.data)==null?void 0:l.all_devices);n&&e.event_type==="device_snapshot"&&t.setDevicesFromSnapshot(n);const r=e.device_info||((u=e.data)==null?void 0:u.device_info)||{},i=e.device_id||r.device_id||((c=e.data)==null?void 0:c.device_id)||null;if(!i)return;const{statusChanged:s,previousStatus:o}=t.upsertDevice({id:i,name:r.device_id||i,status:e.device_status||r.status,os:r.os,serverUrl:r.server_url,capabilities:r.capabilities,metadata:r.metadata,lastHeartbeat:r.last_heartbeat,connectionAttempts:r.connection_attempts,maxRetries:r.max_retries,currentTaskId:r.current_task_id,tags:(f=r.metadata)==null?void 0:f.tags,metrics:r.metrics});console.log("π± Device upserted:",{deviceId:i,statusChanged:s,previousStatus:o,newStatus:e.device_status||r.status}),window.setTimeout(()=>{Ce.getState().clearDeviceHighlight(i)},4e3)},dO=e=>{var n;const t=e.type||e.event_type;if(t==="reset_acknowledged"){console.log("β
Session reset acknowledged:",e),Ce.getState().pushNotification({id:`reset-${Date.now()}`,title:"Session Reset",description:e.message||"Session has been reset successfully",severity:"success",timestamp:Date.now(),read:!1});return}if(t==="next_session_acknowledged"){console.log("β
Next session acknowledged:",e),Ce.getState().pushNotification({id:`next-session-${Date.now()}`,title:"New Session",description:e.message||"New session created successfully",severity:"success",timestamp:Date.now(),read:!1});return}if(t==="stop_acknowledged"){console.log("β
Task stop acknowledged:",e),Ce.getState().pushNotification({id:`stop-task-${Date.now()}`,title:"Task Stopped",description:e.message||"Task stopped and new session created",severity:"info",timestamp:Date.now(),read:!1});return}if((n=e.event_type)!=null&&n.startsWith("device_")){fO(e);return}switch(e.event_type){case"agent_response":aO(e);break;case"agent_action":lO(e);break;case"constellation_started":case"constellation_modified":case"constellation_completed":case"constellation_failed":cO(e);break;case"task_started":case"task_completed":case"task_failed":uO(e);break}};jp.connect().catch(e=>{console.error("β Failed to connect to Galaxy WebSocket server:",e),Ce.getState().setConnectionStatus("disconnected")});jp.onEvent(e=>{Ce.getState().addEventToLog(e),dO(e)});qc.createRoot(document.getElementById("root")).render(p.jsx(B.StrictMode,{children:p.jsx(rO,{})}));
diff --git a/galaxy/webui/frontend/dist/index.html b/galaxy/webui/frontend/dist/index.html
index a96301be4..f5faf1617 100644
--- a/galaxy/webui/frontend/dist/index.html
+++ b/galaxy/webui/frontend/dist/index.html
@@ -8,8 +8,8 @@
π Galaxy WebUI - Weaving the Digital Agent Galaxy
-
-
+
+
diff --git a/galaxy/webui/frontend/src/components/devices/AddDeviceModal.tsx b/galaxy/webui/frontend/src/components/devices/AddDeviceModal.tsx
new file mode 100644
index 000000000..2d8aa90c3
--- /dev/null
+++ b/galaxy/webui/frontend/src/components/devices/AddDeviceModal.tsx
@@ -0,0 +1,475 @@
+import React, { useState, useCallback, useMemo } from 'react';
+import { X, Plus, Loader2 } from 'lucide-react';
+import clsx from 'clsx';
+
+interface AddDeviceModalProps {
+ isOpen: boolean;
+ onClose: () => void;
+ onSubmit: (device: DeviceFormData) => Promise;
+ existingDeviceIds: string[];
+}
+
+export interface DeviceFormData {
+ device_id: string;
+ server_url: string;
+ os: string;
+ capabilities: string[];
+ metadata?: Record